From 0ed2d3c95309ecf5905ec06624fc68955fdbd2d0 Mon Sep 17 00:00:00 2001 From: Zach Eveland Date: Tue, 10 Jan 2012 16:29:47 -0500 Subject: renamed DiskLoader to Caterina (after Leonardo's mom) --- bootloaders/caterina/Caterina-Leonardo.hex | 115 +++++++ bootloaders/caterina/Makefile | 105 ++++++ bootloaders/caterina/src/Caterina.cpp | 251 ++++++++++++++ bootloaders/caterina/src/Platform.h | 49 +++ bootloaders/caterina/src/USBCore.cpp | 510 +++++++++++++++++++++++++++++ bootloaders/caterina/src/USBCore.h | 246 ++++++++++++++ bootloaders/caterina/src/USBDesc.cpp | 83 +++++ bootloaders/caterina/src/USBDesc.h | 60 ++++ 8 files changed, 1419 insertions(+) create mode 100644 bootloaders/caterina/Caterina-Leonardo.hex create mode 100644 bootloaders/caterina/Makefile create mode 100644 bootloaders/caterina/src/Caterina.cpp create mode 100644 bootloaders/caterina/src/Platform.h create mode 100644 bootloaders/caterina/src/USBCore.cpp create mode 100644 bootloaders/caterina/src/USBCore.h create mode 100644 bootloaders/caterina/src/USBDesc.cpp create mode 100644 bootloaders/caterina/src/USBDesc.h (limited to 'bootloaders/caterina') diff --git a/bootloaders/caterina/Caterina-Leonardo.hex b/bootloaders/caterina/Caterina-Leonardo.hex new file mode 100644 index 0000000..95ca57b --- /dev/null +++ b/bootloaders/caterina/Caterina-Leonardo.hex @@ -0,0 +1,115 @@ +:1078000011241FBECFEFDAE0DEBFCDBFF5C04101CE +:1078100042144505560455026403740300001E9586 +:1078200087020110030000C1808106C0FF0A000C1E +:10783000A10185037508150026FF00954009018107 +:1078400002954009029102C0040309041A033000A2 +:1078500030003000300030003000300030003100A7 +:1078600037003000310038034100720064007500B9 +:1078700069006E006F0020004C0065006F006E0014 +:107880006100720064006F00200062006F006F00F2 +:1078900074006C006F0061006400650072001803E2 +:1078A000410072006400750069006E006F002000E6 +:1078B0004C004C0043001201000202000040412332 +:1078C000300000010002030109024B0002010080A8 +:1078D00032080B000202020100090400000102024A +:1078E0000000052400100105240101010424020206 +:1078F000052406000107058103100040090401006A +:10790000020A00000007050202400000070583028A +:107910004000000020918A0130918B012C5F3F4F85 +:1079200030938B0120938A01C901892F992786956D +:10793000982F803418F08FE7891B982F990F921792 +:1079400010F447980895479A08955D9A289A81E01F +:107950008093E0001092E200EE27FF27099408953B +:1079600028E088E190E00FB6F894A8958093600035 +:107970000FBE20936000FFCF0F931F93CF93DF9331 +:10798000982FEB01042F10E088E76030780730F47F +:1079900011E083E0FB0180935700E895892F68E0B0 +:1079A00071E0402F06D1112311F107B600FCFDCF85 +:1079B000402F4695FE01A8E0B1E020E031E009C08B +:1079C0008D919D910C0130935700E89511243296CA +:1079D0002F5F2417A8F385E0FE0180935700E895F8 +:1079E00007B600FCFDCF81E180935700E895DF9159 +:1079F000CF911F910F91089584B794B7977F94BF4B +:107A000098E10FB6F89490936000109260000FBE5A +:107A10005D9A289A479883FF08C0E0E0F0E08591DE +:107A200094918F5F9F4F09F090DF3F9A209A559A6B +:107A300090E8909361001092610081E885BF95BF46 +:107A40009FD084E18093880180E180938901E0E008 +:107A5000F0E0859194918F5F9F4F19F081E08093C2 +:107A60008F01EE24FF24BB24B39454EFC52E51E0C4 +:107A7000D52E0DD2082F8EE098E7FC012491319687 +:107A800002964491201711F02223B9F71092910128 +:107A90001092900182E068E071E08BD0013479F4BB +:107AA000609108016058633028F0683111F064E09B +:107AB00001C063E0C62FD0E0CF5DD7480EC00635C9 +:107AC00071F480910801803311F011E022C080919F +:107AD0000A01C82FD0E0C25ED74811E022C00537A6 +:107AE00021F413E0CEE1D8E71CC0053539F4E0906D +:107AF0000801F0900901EE0CFF1C0AC0043631F4B5 +:107B000082E0B7014091090137DF02C0043721F05C +:107B100010E0C5E2D8E705C010910901E701E10EC8 +:107B2000F11CB5D18097B1F483E068E871E041E0E1 +:107B300050E059D0112329F0412F50E083E8BE01D5 +:107B400052D083E469E871E041E050E04CD0013567 +:107B500009F08FCFD0929101C0929001B0928F0125 +:107B6000EE24FF2486CFFC01289884E680938D01C3 +:107B700004C08091F100819361506623D1F708958C +:107B8000109291011092900110928E0110928F012B +:107B900081E08093D70080EA8093D80082E189BD9C +:107BA00009B400FEFDCF80E98093D8001092E00078 +:107BB0000895FB018093E90024E69BE611C08091C3 +:107BC000E80085FFFCCF289820938D018091F1007B +:107BD00081938091E80085FD02C09093E8004150B8 +:107BE000442369F70895982FFB01282F207287708E +:107BF0008093E90064E63AE317C08091E80085FFCE +:107C0000FCCF97FF02C0849101C080813196211181 +:107C100080E05D9860938C018093F1008091E80092 +:107C200085FD02C03093E800415050408FEF4F3F38 +:107C3000580719F796FF03C08AE38093E800089578 +:107C400080919301813299F45D9884E680938C0150 +:107C500020E030E003C080818093F100F901E05022 +:107C6000FF4F2F5F3F4F28303105A9F714C08032F6 +:107C700061F48091E80082FFFCCF80E091E067E052 +:107C800072DF8BEF8093E80006C0823221F480918E +:107C900094018093070181E00895809195018232DB +:107CA00019F420E030E024C0813019F426EB38E7E5 +:107CB0001FC0823029F48BE490E028EC38E71BC029 +:107CC000833009F048C080919401882319F428E496 +:107CD00038E70EC0823019F426E638E709C0833051 +:107CE00019F42CE438E704C08130A9F52EE938E70F +:107CF000F901849190E04091980150919901BC0163 +:107D00004817590708F4BA0190918C0140E050E0FF +:107D1000AEEF8091E8008570E1F38091E80082FD8C +:107D200016C0F901E40FF51F4F5F5F4FE4915D98B6 +:107D3000E093F100842F8F7311F4A093E80094E690 +:107D40004617570730F390938C0181E00895909384 +:107D50008C0180E0089580E008951092E900809100 +:107D6000E80083FF61C082E991E068E0FCDE82EF19 +:107D70008093E8008091920187FF05C08091E80020 +:107D800080FFFCCF03C08EEF8093E80080919301C9 +:107D9000853051F48091E80080FFFCCF8091940100 +:107DA00080688093E30039C08930E1F480919401C8 +:107DB00080938E01E7E2F8E791E031E026E39093CB +:107DC000E9003093EB0084918093EC002093ED0068 +:107DD0009F5F3196943099F78EE78093EA00109276 +:107DE000EA001BC0883049F490918E015D9884E6CA +:107DF00080938C019093F10010C0882339F45D9832 +:107E000084E680938C011092F10007C0863011F453 +:107E100044DF01C015DF882321F08EEF8093E80056 +:107E2000089581E28093EB0008958091E100109223 +:107E3000E100282F83FF0CC01092E90081E08093BD +:107E4000EB001092EC0082E38093ED0010928E0123 +:107E500022FF1CC080918C01882331F081508093D7 +:107E60008C01882309F45D9A80918D01882331F07B +:107E7000815080938D01882309F4289A80918F0185 +:107E8000882321F4109291011092900108951F937C +:107E9000CF93DF9312E0C0E9D1E05FDFC6DF10933C +:107EA000E9008091E80085FF13C0289884E680935C +:107EB0008D019091F1008091E80085FD03C08BE673 +:107EC0008093E800892F90E0DF91CF911F91089572 +:107ED00080919001909191010197909391018093ED +:107EE00090018091900190919101892B09F438DDE6 +:0A7EF000CE010197F1F70EDDD0CFAF +:087EFA0000E10000000000009F +:040000030000780081 +:00000001FF diff --git a/bootloaders/caterina/Makefile b/bootloaders/caterina/Makefile new file mode 100644 index 0000000..4bb41c8 --- /dev/null +++ b/bootloaders/caterina/Makefile @@ -0,0 +1,105 @@ +############################################################################### +# Makefile for Caterina (formerly DiskLoader) +############################################################################### + +## General Flags +PROJECT = Caterina +TARGET = Caterina.elf +CC = avr-gcc + +# BOARD2 +MCU = atmega32u4 +AVR_FREQ = 16000000L + +# Specify the Arduino model using the assigned PID. This is used by Descriptors.c +# to set PID and product descriptor string + +# Arduino Leonardo bootloader PID +ARDUINO_MODEL_PID = 0x0030 +# Arduino Micro bootloader PID +#ARDUINO_MODEL_PID = 0x0031 + +# Change if your programmer is different +AVRDUDE_PROGRAMMER = avrispmkII +AVRDUDE_PORT = usb + +# program name should not be changed... +PROGRAM = Caterina + +AVRDUDE = avrdude +AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) -p $(MCU) + +## Options common to compile, link and assembly rules +COMMON = -mmcu=$(MCU) + +override CFLAGS = -g -Wall -Os -mmcu=$(MCU) -DF_CPU=$(AVR_FREQ) -DARDUINO_MODEL_PID=$(ARDUINO_MODEL_PID) $(DEFS) -ffunction-sections -gdwarf-2 -fdata-sections -fno-split-wide-types + +## Assembly specific flags +ASMFLAGS = $(COMMON) +ASMFLAGS += $(CFLAGS) +ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2 + +## Linker flags +LDFLAGS = $(COMMON) +LDFLAGS += -Wl,-gc-sections,-Map=Caterina.map,--section-start=.text=0x7800,--relax +LDFLAGS += -nodefaultlibs -nostartfiles + +## Intel Hex file production flags +HEX_EEPROM_FLAGS = -j .eeprom +HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load" +HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings + +## Objects explicitly added by the user +LINKONLYOBJECTS = + +MODULES := . +SRC_DIR := $(addprefix src/,$(MODULES)) +BUILD_DIR := $(addprefix build/,$(MODULES)) + +SRC := $(foreach sdir,$(SRC_DIR),$(wildcard $(sdir)/*.cpp)) +OBJ := $(patsubst src/%.cpp,build/%.o,$(SRC)) +DEP := $(OBJ:%.o=%.d) +INCLUDES := $(addprefix -I,$(SRC_DIR)) + +vpath %.cpp $(SRC_DIR) + +.PHONY: all checkdirs clean + +all: checkdirs $(TARGET) Caterina.hex Caterina.lss size + +-include $(DEP) + +checkdirs: $(BUILD_DIR) + +$(BUILD_DIR): + @mkdir -p $@ + +clean: + @rm -rf build/ + @rm -f *.hex + @rm -f *.elf + @rm -f *.lss + @rm -f *.map + +define make-goal +$1/%.o: %.cpp + $(CC) $(INCLUDES) $(CFLAGS) -c $$< -MD -o $$@ +endef + +$(foreach bdir,$(BUILD_DIR),$(eval $(call make-goal,$(bdir)))) + +$(TARGET): $(OBJ) + $(CC) $(LDFLAGS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) $^ -o $@ + +%.hex: $(TARGET) + avr-objcopy -O ihex $(HEX_FLASH_FLAGS) $< $@ + +%.lss: $(TARGET) + avr-objdump -h -S $< > $@ + +size: $(TARGET) + @echo +# @avr-size -C --mcu=${MCU} ${TARGET}.elf + +program: $(TARGET).hex + $(AVRDUDE) $(AVRDUDE_FLAGS) -B 1 -u -U flash:w:$(TARGET).hex \ No newline at end of file diff --git a/bootloaders/caterina/src/Caterina.cpp b/bootloaders/caterina/src/Caterina.cpp new file mode 100644 index 0000000..7ef6fa8 --- /dev/null +++ b/bootloaders/caterina/src/Caterina.cpp @@ -0,0 +1,251 @@ + + +#include "Platform.h" + +// This bootloader creates a composite Serial device +// +// The serial interface supports a STK500v1 protocol that is very similar to optiboot +// +// The bootloader will timeout and start the firmware after a few hundred milliseconds +// if a usb connection is not detected. +// +// The tweakier code is to keep the bootloader below 2k (no interrupt table, for example) + +extern "C" +void entrypoint(void) __attribute__ ((naked)) __attribute__ ((section (".vectors"))); +void entrypoint(void) +{ + asm volatile ( + "eor r1, r1\n" // Zero register + "out 0x3F, r1\n" // SREG + "ldi r28, 0xFF\n" + "ldi r29, 0x0A\n" + "out 0x3E, r29\n" // SPH + "out 0x3D, r28\n" // SPL + "rjmp main" // Stack is all set up, start the main code + ::); +} + +uint8_t _flashbuf[128]; +uint8_t _inSync; +uint8_t _ok; +extern volatile uint8_t _ejected; +extern volatile uint16_t _timeout; + +void Program(uint8_t ep, uint16_t page, uint8_t count) +{ + uint8_t write = page < 30*1024; // Don't write over firmware please + if (write) + boot_page_erase(page); + + Recv(ep,_flashbuf,count); // Read while page is erasing + + if (!write) + return; + + boot_spm_busy_wait(); // Wait until the memory is erased. + + count >>= 1; + uint16_t* p = (uint16_t*)page; + uint16_t* b = (uint16_t*)_flashbuf; + for (uint8_t i = 0; i < count; i++) + boot_page_fill(p++, b[i]); + + boot_page_write(page); + boot_spm_busy_wait(); + boot_rww_enable (); +} + +void StartSketch(); +int USBGetChar(); +#define getch USBGetChar + +#define HW_VER 0x02 +#define SW_MAJOR 0x01 +#define SW_MINOR 0x10 + +#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' + +extern const uint8_t _readSize[] PROGMEM; +const uint8_t _readSize[] = +{ + STK_GET_PARAMETER, 1, + STK_SET_DEVICE, 20, + STK_SET_DEVICE_EXT, 5, + STK_UNIVERSAL, 4, + STK_LOAD_ADDRESS, 2, + STK_PROG_PAGE, 3, + STK_READ_PAGE, 3, + 0,0 +}; + +extern const uint8_t _consts[] PROGMEM; +const uint8_t _consts[] = +{ + SIGNATURE_0, + SIGNATURE_1, + SIGNATURE_2, + HW_VER, // Hardware version + SW_MAJOR, // Software major version + SW_MINOR, // Software minor version + 0x03, // Unknown but seems to be required by avr studio 3.56 + 0x00, // +}; + + +void USBInit(void); +int main(void) __attribute__ ((naked)); + +// STK500v1 main loop, very similar to optiboot in protocol and implementation +int main() +{ + uint8_t MCUSR_state = MCUSR; // store the reason for the reset + MCUSR &= ~(1 << WDRF); // must clear the watchdog reset flag before disabling and reenabling WDT + wdt_disable(); + TX_LED_OFF(); + RX_LED_OFF(); + L_LED_OFF(); + if (MCUSR_state & (1< 2) + i = (i == 0x18) ? 3 : 4; // 0x80:HW_VER,0x81:SW_MAJOR,0x82:SW_MINOR,0x18:3 or 0 + pgm = _consts + i + 3; + send = 1; + } + + else if (STK_UNIVERSAL == cmd) + { + if (packet[0] == 0x30) + pgm = _consts + packet[2]; // read signature + send = 1; + } + + // Read signature bytes + else if (STK_READ_SIGN == cmd) + { + pgm = _consts; + send = 3; + } + + else if (STK_LOAD_ADDRESS == cmd) + { + address = *((uint16_t*)packet); // word addresses + address += address; + } + + else if (STK_PROG_PAGE == cmd) + { + Program(CDC_RX,address,packet[1]); + } + + else if (STK_READ_PAGE == cmd) + { + send = packet[1]; + pgm = (const uint8_t*)address; + address += send; // not sure of this is required + } + + // Check sync + if (getch() != ' ') + break; + Transfer(CDC_TX,&_inSync,1); + + // Send result + if (send) + Transfer(CDC_TX|TRANSFER_PGM,pgm,send); // All from pgm memory + + // Send ok + Transfer(CDC_TX|TRANSFER_RELEASE,&_ok,1); + + if (cmd == 'Q') + break; + } + _timeout = 500; // wait a moment before exiting the bootloader - may need to finish responding to 'Q' for example + _ejected = 1; + } +} + +// Nice breathing LED indicates we are in the firmware +uint16_t _pulse; +void LEDPulse() +{ + _pulse += 4; + uint8_t p = _pulse >> 9; + if (p > 63) + p = 127-p; + p += p; + if (((uint8_t)_pulse) > p) + L_LED_OFF(); + else + L_LED_ON(); +} + +void StartSketch() +{ + TX_LED_OFF(); // switch off the RX and TX LEDs before starting the user sketch + RX_LED_OFF(); + UDCON = 1; // Detach USB + UDIEN = 0; + asm volatile ( // Reset vector to run firmware + "clr r30\n" + "clr r31\n" + "ijmp\n" + ::); +} + +void Reset() +{ + wdt_enable(WDTO_15MS); // reset the microcontroller to reinitialize all IO and other registers + for (;;) + ; +} diff --git a/bootloaders/caterina/src/Platform.h b/bootloaders/caterina/src/Platform.h new file mode 100644 index 0000000..9d18e80 --- /dev/null +++ b/bootloaders/caterina/src/Platform.h @@ -0,0 +1,49 @@ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n)) +#define DISABLE_JTAG() MCUCR = (1 << JTD) | (1 << IVCE) | (0 << PUD); MCUCR = (1 << JTD) | (0 << IVSEL) | (0 << IVCE) | (0 << PUD); + +#define USB_PID_LEONARDO_BOOTLOADER 0x0030 +#define USB_PID_MICRO_BOOTLOADER 0x0031 +#define USB_VID 0x2341 // arduino LLC vid +#define USB_PID ARDUINO_MODEL_PID // passed in by Makefile - 0x0034 for Leonardo, 0x0035 for MIcro + +#define USB_SERIAL_STRING '0','0','0','0','0','0','0','0','1','7','0','1' + +#define OEM_NAME 'l','e','o','n','a','r','d','o' // 8 chars +#define BOARD_INIT() DDRC |= (1<<7); DDRB |= (1<<0); DDRD |= (1<<5); CPU_PRESCALE(0); DISABLE_JTAG(); +#define L_LED_OFF() PORTC &= ~(1<<7) +#define L_LED_ON() 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) + +#define TRANSFER_PGM 0x80 +#define TRANSFER_RELEASE 0x40 +#define TRANSFER_ZERO 0x20 + +void Transfer(uint8_t ep, const uint8_t* data, int len); +void Recv(uint8_t ep, uint8_t* dst, uint8_t len); +void Program(uint8_t ep, uint16_t page, uint8_t count); + +/* HID is not fully-supported in the bootloader - can be enabled + for testing, but note the descriptor report and other parts are + not complete */ +//#define HID_ENABLED + +#include "USBCore.h" +#include "USBDesc.h" + + diff --git a/bootloaders/caterina/src/USBCore.cpp b/bootloaders/caterina/src/USBCore.cpp new file mode 100644 index 0000000..ac5d081 --- /dev/null +++ b/bootloaders/caterina/src/USBCore.cpp @@ -0,0 +1,510 @@ + + +/* Copyright (c) 2010, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#include "Platform.h" + +#define CDC_TX CDC_ENDPOINT_IN +#define CDC_RX CDC_ENDPOINT_OUT + +#define EP_TYPE_CONTROL 0x00 +#define EP_TYPE_BULK_IN 0x81 +#define EP_TYPE_BULK_OUT 0x80 +#define EP_TYPE_INTERRUPT_IN 0xC1 +#define EP_TYPE_INTERRUPT_OUT 0xC0 +#define EP_TYPE_ISOCHRONOUS_IN 0x41 +#define EP_TYPE_ISOCHRONOUS_OUT 0x40 + +/** Pulse generation counters to keep track of the number of milliseconds remaining for each pulse type */ +#define TX_RX_LED_PULSE_MS 100 +uint8_t TxLEDPulse; /**< Milliseconds remaining for data Tx LED pulse */ +uint8_t RxLEDPulse; /**< Milliseconds remaining for data Rx LED pulse */ + +void Reset(); + +//================================================================== +//================================================================== + +typedef struct +{ + uint32_t dwDTERate; + uint8_t bCharFormat; + uint8_t bParityType; + uint8_t bDataBits; + uint8_t lineState; +} LineInfo; + +static volatile LineInfo _usbLineInfo = { 57600, 0x00, 0x00, 0x00, 0x00 }; + +//================================================================== +//================================================================== + +// 4 bytes of RAM +volatile uint8_t _usbConfiguration; +volatile uint8_t _ejected; +volatile uint16_t _timeout; + +static inline void WaitIN(void) +{ + while (!(UEINTX & (1<> 8) + +#define RAWHID_USAGE_PAGE 0xFFC0 +#define RAWHID_USAGE 0x0C00 +#define RAWHID_TX_SIZE 64 +#define RAWHID_RX_SIZE 64 + +const uint8_t _rawHID[] = +{ + // RAW HID + 0x06, LSB(RAWHID_USAGE_PAGE), MSB(RAWHID_USAGE_PAGE), // 30 + 0x0A, LSB(RAWHID_USAGE), MSB(RAWHID_USAGE), + + 0xA1, 0x01, // Collection 0x01 + 0x85, 0x03, // REPORT_ID (3) + 0x75, 0x08, // report size = 8 bits + 0x15, 0x00, // logical minimum = 0 + 0x26, 0xFF, 0x00, // logical maximum = 255 + + 0x95, 64, // report count TX + 0x09, 0x01, // usage + 0x81, 0x02, // Input (array) + + 0x95, 64, // report count RX + 0x09, 0x02, // usage + 0x91, 0x02, // Output (array) + 0xC0 // end collection +}; + +uint8_t _cdcComposite = 0; + +bool SendDescriptor() +{ + Setup& setup = _setup; + uint16_t desc_length = 0; + const uint8_t* desc_addr = 0; + + uint8_t t = setup.wValueH; + if (0x22 == t) + { +#ifdef HID_ENABLED + desc_addr = _rawHID; + desc_length = sizeof(desc_length); +#endif + } else if (USB_DEVICE_DESCRIPTOR_TYPE == t) + { + desc_addr = (const uint8_t*)&USB_DeviceDescriptor; + } + else if (USB_CONFIGURATION_DESCRIPTOR_TYPE == t) + { + desc_addr = (const uint8_t*)&USB_ConfigDescriptor; + desc_length = sizeof(USB_ConfigDescriptor); + } + else if (USB_STRING_DESCRIPTOR_TYPE == t) + { + if (setup.wValueL == 0) + desc_addr = (const uint8_t*)&STRING_LANGUAGE; + else if (setup.wValueL == IPRODUCT) + desc_addr = (const uint8_t*)&STRING_IPRODUCT; + else if (setup.wValueL == ISERIAL) + desc_addr = (const uint8_t*)&STRING_SERIAL; + else if (setup.wValueL == IMANUFACTURER) + desc_addr = (const uint8_t*)&STRING_IMANUFACTURER; + else + return false; + } else + return false; + + if (desc_length == 0) + desc_length = pgm_read_byte(desc_addr); + if (setup.wLength < desc_length) + desc_length = setup.wLength; + + // Send descriptor + // EP0 is 64 bytes long + // RWAL and FIFOCON don't work on EP0 + uint16_t n = 0; + do + { + if (!WaitForINOrOUT()) + return false; + Send8(pgm_read_byte(&desc_addr[n++])); + uint8_t clr = n & 0x3F; + if (!clr) + ClearIN(); // Fifo is full, release this packet + } while (n < desc_length); + return true; +} + +void USBSetupInterrupt() +{ + SetEP(0); + if (!ReceivedSetupInt()) + return; + + Setup& setup = _setup; // global saves ~30 bytes + Recv((uint8_t*)&setup,8); + ClearSetupInt(); + + if (setup.bmRequestType & DEVICETOHOST) + WaitIN(); + else + ClearIN(); + + bool ok = true; + uint8_t r = setup.bRequest; + if (SET_ADDRESS == r) + { + WaitIN(); + UDADDR = setup.wValueL | (1<> 8) & 0xFF) + +#define CDC_V1_10 0x0110 +#define CDC_COMMUNICATION_INTERFACE_CLASS 0x02 + +#define CDC_CALL_MANAGEMENT 0x01 +#define CDC_ABSTRACT_CONTROL_MODEL 0x02 +#define CDC_HEADER 0x00 +#define CDC_ABSTRACT_CONTROL_MANAGEMENT 0x02 +#define CDC_UNION 0x06 +#define CDC_CS_INTERFACE 0x24 +#define CDC_CS_ENDPOINT 0x25 +#define CDC_DATA_INTERFACE_CLASS 0x0A + + +// Device +typedef struct { + uint8_t len; // 18 + uint8_t dtype; // 1 USB_DEVICE_DESCRIPTOR_TYPE + uint16_t usbVersion; // 0x200 + uint8_t deviceClass; + uint8_t deviceSubClass; + uint8_t deviceProtocol; + uint8_t packetSize0; // Packet 0 + uint16_t idVendor; + uint16_t idProduct; + uint16_t deviceVersion; // 0x100 + uint8_t iManufacturer; + uint8_t iProduct; + uint8_t iSerialNumber; + uint8_t bNumConfigurations; +} DeviceDescriptor; + +// Config +typedef struct { + uint8_t len; // 9 + uint8_t dtype; // 2 + uint16_t clen; // total length + uint8_t numInterfaces; + uint8_t config; + uint8_t iconfig; + uint8_t attributes; + uint8_t maxPower; +} ConfigDescriptor; + +// String + +// Interface +typedef struct +{ + uint8_t len; // 9 + uint8_t dtype; // 4 + uint8_t number; + uint8_t alternate; + uint8_t numEndpoints; + uint8_t interfaceClass; + uint8_t interfaceSubClass; + uint8_t protocol; + uint8_t iInterface; +} InterfaceDescriptor; + +// Endpoint +typedef struct +{ + uint8_t len; // 7 + uint8_t dtype; // 5 + uint8_t addr; + uint8_t attr; + uint16_t packetSize; + uint8_t interval; +} EndpointDescriptor; + +// Interface Association Descriptor +// Used to bind 2 interfaces together in CDC compostite device +typedef struct +{ + uint8_t len; // 8 + uint8_t dtype; // 11 + uint8_t firstInterface; + uint8_t interfaceCount; + uint8_t functionClass; + uint8_t funtionSubClass; + uint8_t functionProtocol; + uint8_t iInterface; +} IADDescriptor; + +// CDC CS interface descriptor +typedef struct +{ + uint8_t len; // 5 + uint8_t dtype; // 0x24 + uint8_t subtype; + uint8_t d0; + uint8_t d1; +} CDCCSInterfaceDescriptor; + +typedef struct +{ + uint8_t len; // 4 + uint8_t dtype; // 0x24 + uint8_t subtype; + uint8_t d0; +} CDCCSInterfaceDescriptor4; + +typedef struct +{ + IADDescriptor iad; // Only needed on compound device + + // Control + InterfaceDescriptor cif; // + CDCCSInterfaceDescriptor header; + CDCCSInterfaceDescriptor callManagement; + CDCCSInterfaceDescriptor4 controlManagement; + CDCCSInterfaceDescriptor functionalDescriptor; + EndpointDescriptor cifin; + + // Data + InterfaceDescriptor dif; + EndpointDescriptor in; + EndpointDescriptor out; +} CDCDescriptor; + +typedef struct +{ + uint8_t len; // 9 + uint8_t dtype; // 0x21 + uint8_t addr; + uint8_t versionL; // 0x101 + uint8_t versionH; // 0x101 + uint8_t country; + uint8_t desctype; // 0x22 report + uint8_t descLenL; + uint8_t descLenH; +} HIDDescDescriptor; + +typedef struct +{ + InterfaceDescriptor hid; + HIDDescDescriptor desc; + EndpointDescriptor in; +} HIDDescriptor; + +#define D_DEVICE(_class,_subClass,_proto,_packetSize0,_vid,_pid,_version,_im,_ip,_is,_configs) \ + { 18, 1, 0x200, _class,_subClass,_proto,_packetSize0,_vid,_pid,_version,_im,_ip,_is,_configs } + +#define D_CONFIG(_totalLength,_interfaces) \ + { 9, 2, _totalLength,_interfaces, 1, 0, USB_CONFIG_BUS_POWERED, USB_CONFIG_POWER_MA(100) } + +#define D_INTERFACE(_n,_numEndpoints,_class,_subClass,_protocol) \ + { 9, 4, _n, 0, _numEndpoints, _class,_subClass, _protocol, 0 } + +#define D_ENDPOINT(_addr,_attr,_packetSize, _interval) \ + { 7, 5, _addr,_attr,_packetSize, _interval } + +#define D_IAD(_firstInterface, _count, _class, _subClass, _protocol) \ + { 8, 11, _firstInterface, _count, _class, _subClass, _protocol, 0 } + +#define D_HIDREPORT(_descriptorLength) \ + { 9, 0x21, 0x1, 0x1, 0, 1, 0x22, _descriptorLength, 0 } + +#define D_CDCCS(_subtype,_d0,_d1) { 5, 0x24, _subtype, _d0, _d1 } +#define D_CDCCS4(_subtype,_d0) { 4, 0x24, _subtype, _d0 } + +#endif \ No newline at end of file diff --git a/bootloaders/caterina/src/USBDesc.cpp b/bootloaders/caterina/src/USBDesc.cpp new file mode 100644 index 0000000..a634d4d --- /dev/null +++ b/bootloaders/caterina/src/USBDesc.cpp @@ -0,0 +1,83 @@ + + +/* Copyright (c) 2011, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#include "Platform.h" + +//==================================================================================================== +//==================================================================================================== +// Actual device descriptors + +const uint16_t STRING_LANGUAGE[2] = { + (3<<8) | (2+2), + 0x0409 // English +}; + +const uint16_t STRING_SERIAL[13] = { + (3<<8) | (2+2*12), + USB_SERIAL_STRING +}; + +const uint16_t STRING_IPRODUCT[28] = { + (3<<8) | (2+2*27), +#if USB_PID == USB_PID_LEONARDO_BOOTLOADER + 'A','r','d','u','i','n','o',' ','L','e','o','n','a','r','d','o',' ','b','o','o','t','l','o','a','d','e','r' +#elif USB_PID == USB_PID_MICRO_BOOTLOADER + 'A','r','d','u','i','n','o',' ','M','i','c','r','o',' ','b','o','o','t','l','o','a','d','e','r',' ',' ',' ' +#endif +}; + +const uint16_t STRING_IMANUFACTURER[12] = { + (3<<8) | (2+2*11), + 'A','r','d','u','i','n','o',' ','L','L','C' +}; + + +DeviceDescriptor USB_DeviceDescriptor = D_DEVICE(0X02,0X00,0X00,64,USB_VID,USB_PID,0x100,0,IPRODUCT,ISERIAL,1); + +Config USB_ConfigDescriptor = +{ + D_CONFIG(sizeof(Config),INTERFACE_COUNT), + + // CDC + { + D_IAD(0,2,CDC_COMMUNICATION_INTERFACE_CLASS,CDC_ABSTRACT_CONTROL_MODEL,1), + + // CDC communication interface + D_INTERFACE(CDC_ACM_INTERFACE,1,CDC_COMMUNICATION_INTERFACE_CLASS,CDC_ABSTRACT_CONTROL_MODEL,0), + D_CDCCS(CDC_HEADER,0x10,0x01), // Header (1.10 bcd) + D_CDCCS(CDC_CALL_MANAGEMENT,1,1), // Device handles call management + D_CDCCS4(CDC_ABSTRACT_CONTROL_MANAGEMENT,2), // SET_LINE_CODING, GET_LINE_CODING, SET_CONTROL_LINE_STATE supported + D_CDCCS(CDC_UNION,CDC_ACM_INTERFACE,CDC_DATA_INTERFACE), // Communication interface is master, data interface is slave 0 + D_ENDPOINT(USB_ENDPOINT_IN (CDC_ENDPOINT_ACM),USB_ENDPOINT_TYPE_INTERRUPT,0x10,0x40), + + // CDC data interface + D_INTERFACE(CDC_DATA_INTERFACE,2,CDC_DATA_INTERFACE_CLASS,0,0), + D_ENDPOINT(USB_ENDPOINT_OUT(CDC_ENDPOINT_OUT),USB_ENDPOINT_TYPE_BULK,0x40,0), + D_ENDPOINT(USB_ENDPOINT_IN (CDC_ENDPOINT_IN ),USB_ENDPOINT_TYPE_BULK,0x40,0) + }, + +#ifdef HID_ENABLED + // HID + { + D_INTERFACE(HID_INTERFACE,1,3,0,0), + D_HIDREPORT(30), + D_ENDPOINT(USB_ENDPOINT_IN (HID_ENDPOINT_INT),USB_ENDPOINT_TYPE_INTERRUPT,0x40,0x40) + } +#endif +}; + diff --git a/bootloaders/caterina/src/USBDesc.h b/bootloaders/caterina/src/USBDesc.h new file mode 100644 index 0000000..fa962e9 --- /dev/null +++ b/bootloaders/caterina/src/USBDesc.h @@ -0,0 +1,60 @@ + + +/* Copyright (c) 2011, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#ifndef HID_ENABLED // HID is NOT enabled + #define CDC_ACM_INTERFACE 0 // CDC ACM + #define CDC_DATA_INTERFACE 1 // CDC Data + #define CDC_ENDPOINT_ACM 1 + #define CDC_ENDPOINT_OUT 2 + #define CDC_ENDPOINT_IN 3 + #define INTERFACE_COUNT 2 // 2 for CDC +#else // HID is enabled + #define CDC_ACM_INTERFACE 0 // CDC ACM + #define CDC_DATA_INTERFACE 1 // CDC Data + #define CDC_ENDPOINT_ACM 1 + #define CDC_ENDPOINT_OUT 2 + #define CDC_ENDPOINT_IN 3 + #define HID_INTERFACE 2 // HID Interface + #define HID_ENDPOINT_INT 4 + #define INTERFACE_COUNT 3 // 2 for CDC + 1 for hid +#endif + +typedef struct +{ + ConfigDescriptor config; + CDCDescriptor cdc; +#ifdef HID_ENABLED + HIDDescriptor hid; +#endif +} Config; + +extern Config USB_ConfigDescriptor PROGMEM; +extern DeviceDescriptor USB_DeviceDescriptor PROGMEM; +extern DeviceDescriptor USB_DeviceDescriptorA PROGMEM; + +extern const uint16_t STRING_LANGUAGE[2] PROGMEM; +extern const uint16_t STRING_IPRODUCT[28] PROGMEM; +extern const uint16_t STRING_IMANUFACTURER[12] PROGMEM; +extern const uint16_t STRING_SERIAL[13] PROGMEM; + +#define IMANUFACTURER 1 +#define IPRODUCT 2 +#define ISERIAL 3 + +#define CDC_TX CDC_ENDPOINT_IN +#define CDC_RX CDC_ENDPOINT_OUT \ No newline at end of file -- cgit v1.2.3-18-g5258 From 29e4d73a55b1ba5782d9a1491ab9e1c1331a6b8a Mon Sep 17 00:00:00 2001 From: Zach Eveland Date: Tue, 10 Jan 2012 17:04:32 -0500 Subject: reenabled HID to force Leonardo bootloader to enumerate as a composite device --- bootloaders/caterina/Caterina-Leonardo.hex | 226 +++++++++++++++-------------- bootloaders/caterina/src/Platform.h | 2 +- 2 files changed, 115 insertions(+), 113 deletions(-) (limited to 'bootloaders/caterina') diff --git a/bootloaders/caterina/Caterina-Leonardo.hex b/bootloaders/caterina/Caterina-Leonardo.hex index 95ca57b..c882f7f 100644 --- a/bootloaders/caterina/Caterina-Leonardo.hex +++ b/bootloaders/caterina/Caterina-Leonardo.hex @@ -1,115 +1,117 @@ -:1078000011241FBECFEFDAE0DEBFCDBFF5C04101CE +:1078000011241FBECFEFDAE0DEBFCDBF02C14101C0 :1078100042144505560455026403740300001E9586 -:1078200087020110030000C1808106C0FF0A000C1E -:10783000A10185037508150026FF00954009018107 -:1078400002954009029102C0040309041A033000A2 -:1078500030003000300030003000300030003100A7 -:1078600037003000310038034100720064007500B9 -:1078700069006E006F0020004C0065006F006E0014 -:107880006100720064006F00200062006F006F00F2 -:1078900074006C006F0061006400650072001803E2 -:1078A000410072006400750069006E006F002000E6 -:1078B0004C004C0043001201000202000040412332 -:1078C000300000010002030109024B0002010080A8 -:1078D00032080B000202020100090400000102024A -:1078E0000000052400100105240101010424020206 -:1078F000052406000107058103100040090401006A -:10790000020A00000007050202400000070583028A -:107910004000000020918A0130918B012C5F3F4F85 -:1079200030938B0120938A01C901892F992786956D -:10793000982F803418F08FE7891B982F990F921792 -:1079400010F447980895479A08955D9A289A81E01F -:107950008093E0001092E200EE27FF27099408953B -:1079600028E088E190E00FB6F894A8958093600035 -:107970000FBE20936000FFCF0F931F93CF93DF9331 -:10798000982FEB01042F10E088E76030780730F47F -:1079900011E083E0FB0180935700E895892F68E0B0 -:1079A00071E0402F06D1112311F107B600FCFDCF85 -:1079B000402F4695FE01A8E0B1E020E031E009C08B -:1079C0008D919D910C0130935700E89511243296CA -:1079D0002F5F2417A8F385E0FE0180935700E895F8 -:1079E00007B600FCFDCF81E180935700E895DF9159 -:1079F000CF911F910F91089584B794B7977F94BF4B -:107A000098E10FB6F89490936000109260000FBE5A -:107A10005D9A289A479883FF08C0E0E0F0E08591DE -:107A200094918F5F9F4F09F090DF3F9A209A559A6B -:107A300090E8909361001092610081E885BF95BF46 -:107A40009FD084E18093880180E180938901E0E008 -:107A5000F0E0859194918F5F9F4F19F081E08093C2 -:107A60008F01EE24FF24BB24B39454EFC52E51E0C4 -:107A7000D52E0DD2082F8EE098E7FC012491319687 -:107A800002964491201711F02223B9F71092910128 -:107A90001092900182E068E071E08BD0013479F4BB -:107AA000609108016058633028F0683111F064E09B -:107AB00001C063E0C62FD0E0CF5DD7480EC00635C9 -:107AC00071F480910801803311F011E022C080919F -:107AD0000A01C82FD0E0C25ED74811E022C00537A6 -:107AE00021F413E0CEE1D8E71CC0053539F4E0906D -:107AF0000801F0900901EE0CFF1C0AC0043631F4B5 -:107B000082E0B7014091090137DF02C0043721F05C -:107B100010E0C5E2D8E705C010910901E701E10EC8 -:107B2000F11CB5D18097B1F483E068E871E041E0E1 -:107B300050E059D0112329F0412F50E083E8BE01D5 -:107B400052D083E469E871E041E050E04CD0013567 -:107B500009F08FCFD0929101C0929001B0928F0125 -:107B6000EE24FF2486CFFC01289884E680938D01C3 -:107B700004C08091F100819361506623D1F708958C -:107B8000109291011092900110928E0110928F012B -:107B900081E08093D70080EA8093D80082E189BD9C -:107BA00009B400FEFDCF80E98093D8001092E00078 -:107BB0000895FB018093E90024E69BE611C08091C3 -:107BC000E80085FFFCCF289820938D018091F1007B -:107BD00081938091E80085FD02C09093E8004150B8 -:107BE000442369F70895982FFB01282F207287708E -:107BF0008093E90064E63AE317C08091E80085FFCE -:107C0000FCCF97FF02C0849101C080813196211181 -:107C100080E05D9860938C018093F1008091E80092 -:107C200085FD02C03093E800415050408FEF4F3F38 -:107C3000580719F796FF03C08AE38093E800089578 -:107C400080919301813299F45D9884E680938C0150 -:107C500020E030E003C080818093F100F901E05022 -:107C6000FF4F2F5F3F4F28303105A9F714C08032F6 -:107C700061F48091E80082FFFCCF80E091E067E052 -:107C800072DF8BEF8093E80006C0823221F480918E -:107C900094018093070181E00895809195018232DB -:107CA00019F420E030E024C0813019F426EB38E7E5 -:107CB0001FC0823029F48BE490E028EC38E71BC029 -:107CC000833009F048C080919401882319F428E496 -:107CD00038E70EC0823019F426E638E709C0833051 -:107CE00019F42CE438E704C08130A9F52EE938E70F -:107CF000F901849190E04091980150919901BC0163 -:107D00004817590708F4BA0190918C0140E050E0FF -:107D1000AEEF8091E8008570E1F38091E80082FD8C -:107D200016C0F901E40FF51F4F5F5F4FE4915D98B6 -:107D3000E093F100842F8F7311F4A093E80094E690 -:107D40004617570730F390938C0181E00895909384 -:107D50008C0180E0089580E008951092E900809100 -:107D6000E80083FF61C082E991E068E0FCDE82EF19 -:107D70008093E8008091920187FF05C08091E80020 -:107D800080FFFCCF03C08EEF8093E80080919301C9 -:107D9000853051F48091E80080FFFCCF8091940100 -:107DA00080688093E30039C08930E1F480919401C8 -:107DB00080938E01E7E2F8E791E031E026E39093CB -:107DC000E9003093EB0084918093EC002093ED0068 -:107DD0009F5F3196943099F78EE78093EA00109276 -:107DE000EA001BC0883049F490918E015D9884E6CA -:107DF00080938C019093F10010C0882339F45D9832 -:107E000084E680938C011092F10007C0863011F453 -:107E100044DF01C015DF882321F08EEF8093E80056 -:107E2000089581E28093EB0008958091E100109223 -:107E3000E100282F83FF0CC01092E90081E08093BD -:107E4000EB001092EC0082E38093ED0010928E0123 -:107E500022FF1CC080918C01882331F081508093D7 -:107E60008C01882309F45D9A80918D01882331F07B -:107E7000815080938D01882309F4289A80918F0185 -:107E8000882321F4109291011092900108951F937C -:107E9000CF93DF9312E0C0E9D1E05FDFC6DF10933C -:107EA000E9008091E80085FF13C0289884E680935C -:107EB0008D019091F1008091E80085FD03C08BE673 -:107EC0008093E800892F90E0DF91CF911F91089572 -:107ED00080919001909191010197909391018093ED -:107EE00090018091900190919101892B09F438DDE6 -:0A7EF000CE010197F1F70EDDD0CFAF -:087EFA0000E10000000000009F +:1078200087020110030000C18081C106C0FF0A0069 +:107830000CA10185037508150026FF00954009017C +:107840008102954009029102C0040309041A033021 +:1078500000300030003000300030003000300031A7 +:1078600000370030003100380341007200640075B9 +:107870000069006E006F0020004C0065006F006E14 +:10788000006100720064006F00200062006F006FF2 +:107890000074006C006F00610064006500720018E5 +:1078A00003410072006400750069006E006F0020E3 +:1078B000004C004C00430012010002020000404155 +:1078C00023300000010002030109026400030100EB +:1078D0008032080B000202020100090400000102CC +:1078E0000200000524001001052401010104240206 +:1078F0000205240600010705810310004009040168 +:1079000000020A000000070502024000000705838C +:1079100002400000090402000103000000092101E7 +:10792000010001221E000705840340004000209151 +:107930008A0130918B012C5F3F4F30938B01209354 +:107940008A01C901892F99278695982F803418F0CC +:107950008FE7891B982F990F921710F44798089575 +:10796000479A08955D9A289A81E08093E0001092EA +:10797000E200EE27FF270994089528E088E190E0CF +:107980000FB6F894A895809360000FBE2093600016 +:10799000FFCF0F931F93CF93DF93982FEB01042F0B +:1079A00010E088E76030780730F411E083E0FB01F5 +:1079B00080935700E895892F68E071E0402F06D149 +:1079C000112311F107B600FCFDCF402F4695FE01B3 +:1079D000A8E0B1E020E031E009C08D919D910C015B +:1079E00030935700E895112432962F5F2417A8F39F +:1079F00085E0FE0180935700E89507B600FCFDCFB7 +:107A000081E180935700E895DF91CF911F910F910D +:107A1000089584B794B7977F94BF98E10FB6F89410 +:107A200090936000109260000FBE5D9A289A47986C +:107A300083FF08C0E0E0F0E0859194918F5F9F4F55 +:107A400009F090DF3F9A209A559A90E89093610050 +:107A50001092610081E885BF95BF9FD084E180933B +:107A6000880180E180938901E0E0F0E085919491C4 +:107A70008F5F9F4F19F081E080938F01EE24FF24E8 +:107A8000BB24B39454EFC52E51E0D52E10D2082F4D +:107A90008EE098E7FC0124913196029644912017DC +:107AA00011F02223B9F7109291011092900182E017 +:107AB00068E071E08BD0013479F46091080160587E +:107AC000633028F0683111F064E001C063E0C62F34 +:107AD000D0E0CF5DD7480EC0063571F48091080123 +:107AE000803311F011E022C080910A01C82FD0E04C +:107AF000C25ED74811E022C0053721F413E0CEE181 +:107B0000D8E71CC0053539F4E0900801F090090170 +:107B1000EE0CFF1C0AC0043631F482E0B70140913C +:107B2000090137DF02C0043721F010E0C5E2D8E7D1 +:107B300005C010910901E701E10EF11CB8D1809751 +:107B4000B1F483E068E871E041E050E059D01123DE +:107B500029F0412F50E083E8BE0152D083E469E868 +:107B600071E041E050E04CD0013509F08FCFD09268 +:107B70009101C0929001B0928F01EE24FF2486CF34 +:107B8000FC01289884E680938D0104C08091F10067 +:107B9000819361506623D1F708951092910110925C +:107BA000900110928E0110928F0181E08093D70096 +:107BB00080EA8093D80082E189BD09B400FEFDCF40 +:107BC00080E98093D8001092E0000895FB01809333 +:107BD000E90024E69BE611C08091E80085FFFCCF18 +:107BE000289820938D018091F10081938091E80085 +:107BF00085FD02C09093E8004150442369F7089541 +:107C0000982FFB01282F207287708093E90064E68B +:107C10003AE317C08091E80085FFFCCF97FF02C0D0 +:107C2000849101C080813196211180E05D9860933C +:107C30008C018093F1008091E80085FD02C03093B3 +:107C4000E800415050408FEF4F3F580719F796FF1B +:107C500003C08AE38093E800089580919301813204 +:107C600099F45D9884E680938C0120E030E003C0B5 +:107C700080818093F100F901E050FF4F2F5F3F4F6B +:107C800028303105A9F714C0803261F48091E800F2 +:107C900082FFFCCF80E091E067E072DF8BEF8093A2 +:107CA000E80006C0823221F480919401809307019C +:107CB00081E0089580919501823219F1813009F4B3 +:107CC00056C0823029F484E690E029EC38E71DC0E4 +:107CD000833009F04AC080919401882319F429E483 +:107CE00038E747C0823019F427E638E742C08330CE +:107CF00019F42DE438E73DC08130B9F52FE938E7B4 +:107D000038C082E090E02BE238E740919801509132 +:107D10009901BC014817590708F4BA0190918C01E8 +:107D200040E050E0AEEF8091E8008570E1F3809193 +:107D3000E80082FD16C0F901E40FF51F4F5F5F4FA9 +:107D4000E4915D98E093F100842F8F7311F4A09378 +:107D5000E80094E64617570730F390938C0181E0D2 +:107D6000089590938C0180E0089580E0089527EBBA +:107D700038E7F901849190E0C8CF1092E900809132 +:107D8000E80083FF61C082E991E068E0F9DE82EFFC +:107D90008093E8008091920187FF05C08091E80000 +:107DA00080FFFCCF03C08EEF8093E80080919301A9 +:107DB000853051F48091E80080FFFCCF80919401E0 +:107DC00080688093E30039C08930E1F480919401A8 +:107DD00080938E01E7E2F8E791E031E026E39093AB +:107DE000E9003093EB0084918093EC002093ED0048 +:107DF0009F5F3196953099F78EE78093EA00109255 +:107E0000EA001BC0883049F490918E015D9884E6A9 +:107E100080938C019093F10010C0882339F45D9811 +:107E200084E680938C011092F10007C0863011F433 +:107E300041DF01C012DF882321F08EEF8093E8003C +:107E4000089581E28093EB0008958091E100109203 +:107E5000E100282F83FF0CC01092E90081E080939D +:107E6000EB001092EC0082E38093ED0010928E0103 +:107E700022FF1CC080918C01882331F081508093B7 +:107E80008C01882309F45D9A80918D01882331F05B +:107E9000815080938D01882309F4289A80918F0165 +:107EA000882321F4109291011092900108951F935C +:107EB000CF93DF9312E0C0E9D1E05FDFC6DF10931C +:107EC000E9008091E80085FF13C0289884E680933C +:107ED0008D019091F1008091E80085FD03C08BE653 +:107EE0008093E800892F90E0DF91CF911F91089552 +:107EF00080919001909191010197909391018093CD +:107F000090018091900190919101892B09F435DDC8 +:0A7F1000CE010197F1F70BDDD0CF91 +:087F1A0000E10000000000007E :040000030000780081 :00000001FF diff --git a/bootloaders/caterina/src/Platform.h b/bootloaders/caterina/src/Platform.h index 9d18e80..37c26de 100644 --- a/bootloaders/caterina/src/Platform.h +++ b/bootloaders/caterina/src/Platform.h @@ -41,7 +41,7 @@ void Program(uint8_t ep, uint16_t page, uint8_t count); /* HID is not fully-supported in the bootloader - can be enabled for testing, but note the descriptor report and other parts are not complete */ -//#define HID_ENABLED +#define HID_ENABLED #include "USBCore.h" #include "USBDesc.h" -- cgit v1.2.3-18-g5258 From 385679caf2e6ad9502b5fe16f594225b8e82f890 Mon Sep 17 00:00:00 2001 From: Zach Eveland Date: Tue, 10 Jan 2012 20:52:57 -0500 Subject: restored composite and non-composite device descriptors (removed in 4b05c3fc7529477fb7031d42103c15b50a6b58be) Windows wants to see both types of device descriptors. --- bootloaders/caterina/Caterina-Leonardo.hex | 219 +++++++++++++++-------------- bootloaders/caterina/src/Platform.h | 2 +- bootloaders/caterina/src/USBCore.cpp | 4 +- bootloaders/caterina/src/USBDesc.cpp | 4 +- 4 files changed, 117 insertions(+), 112 deletions(-) (limited to 'bootloaders/caterina') diff --git a/bootloaders/caterina/Caterina-Leonardo.hex b/bootloaders/caterina/Caterina-Leonardo.hex index c882f7f..44a452e 100644 --- a/bootloaders/caterina/Caterina-Leonardo.hex +++ b/bootloaders/caterina/Caterina-Leonardo.hex @@ -1,117 +1,120 @@ -:1078000011241FBECFEFDAE0DEBFCDBF02C14101C0 +:1078000011241FBECFEFDAE0DEBFCDBF0BC14101B7 :1078100042144505560455026403740300001E9586 :1078200087020110030000C18081C106C0FF0A0069 :107830000CA10185037508150026FF00954009017C :107840008102954009029102C0040309041A033021 :1078500000300030003000300030003000300031A7 -:1078600000370030003100380341007200640075B9 -:107870000069006E006F0020004C0065006F006E14 -:10788000006100720064006F00200062006F006FF2 -:107890000074006C006F00610064006500720018E5 +:107860000037003000310038030000000000000045 +:107870000000000000000000000000000000000008 +:1078800000000000000000000000000000000000F8 +:1078900000000000000000000000000000000018D0 :1078A00003410072006400750069006E006F0020E3 :1078B000004C004C00430012010002020000404155 -:1078C00023300000010002030109026400030100EB -:1078D0008032080B000202020100090400000102CC -:1078E0000200000524001001052401010104240206 -:1078F0000205240600010705810310004009040168 -:1079000000020A000000070502024000000705838C -:1079100002400000090402000103000000092101E7 -:10792000010001221E000705840340004000209151 -:107930008A0130918B012C5F3F4F30938B01209354 -:107940008A01C901892F99278695982F803418F0CC -:107950008FE7891B982F990F921710F44798089575 -:10796000479A08955D9A289A81E08093E0001092EA -:10797000E200EE27FF270994089528E088E190E0CF -:107980000FB6F894A895809360000FBE2093600016 -:10799000FFCF0F931F93CF93DF93982FEB01042F0B -:1079A00010E088E76030780730F411E083E0FB01F5 -:1079B00080935700E895892F68E071E0402F06D149 -:1079C000112311F107B600FCFDCF402F4695FE01B3 -:1079D000A8E0B1E020E031E009C08D919D910C015B -:1079E00030935700E895112432962F5F2417A8F39F -:1079F00085E0FE0180935700E89507B600FCFDCFB7 -:107A000081E180935700E895DF91CF911F910F910D -:107A1000089584B794B7977F94BF98E10FB6F89410 -:107A200090936000109260000FBE5D9A289A47986C -:107A300083FF08C0E0E0F0E0859194918F5F9F4F55 -:107A400009F090DF3F9A209A559A90E89093610050 -:107A50001092610081E885BF95BF9FD084E180933B -:107A6000880180E180938901E0E0F0E085919491C4 -:107A70008F5F9F4F19F081E080938F01EE24FF24E8 -:107A8000BB24B39454EFC52E51E0D52E10D2082F4D -:107A90008EE098E7FC0124913196029644912017DC -:107AA00011F02223B9F7109291011092900182E017 -:107AB00068E071E08BD0013479F46091080160587E -:107AC000633028F0683111F064E001C063E0C62F34 -:107AD000D0E0CF5DD7480EC0063571F48091080123 -:107AE000803311F011E022C080910A01C82FD0E04C -:107AF000C25ED74811E022C0053721F413E0CEE181 -:107B0000D8E71CC0053539F4E0900801F090090170 -:107B1000EE0CFF1C0AC0043631F482E0B70140913C -:107B2000090137DF02C0043721F010E0C5E2D8E7D1 -:107B300005C010910901E701E10EF11CB8D1809751 -:107B4000B1F483E068E871E041E050E059D01123DE -:107B500029F0412F50E083E8BE0152D083E469E868 -:107B600071E041E050E04CD0013509F08FCFD09268 -:107B70009101C0929001B0928F01EE24FF2486CF34 -:107B8000FC01289884E680938D0104C08091F10067 -:107B9000819361506623D1F708951092910110925C -:107BA000900110928E0110928F0181E08093D70096 -:107BB00080EA8093D80082E189BD09B400FEFDCF40 -:107BC00080E98093D8001092E0000895FB01809333 -:107BD000E90024E69BE611C08091E80085FFFCCF18 -:107BE000289820938D018091F10081938091E80085 -:107BF00085FD02C09093E8004150442369F7089541 -:107C0000982FFB01282F207287708093E90064E68B -:107C10003AE317C08091E80085FFFCCF97FF02C0D0 -:107C2000849101C080813196211180E05D9860933C -:107C30008C018093F1008091E80085FD02C03093B3 -:107C4000E800415050408FEF4F3F580719F796FF1B -:107C500003C08AE38093E800089580919301813204 -:107C600099F45D9884E680938C0120E030E003C0B5 -:107C700080818093F100F901E050FF4F2F5F3F4F6B -:107C800028303105A9F714C0803261F48091E800F2 -:107C900082FFFCCF80E091E067E072DF8BEF8093A2 -:107CA000E80006C0823221F480919401809307019C -:107CB00081E0089580919501823219F1813009F4B3 -:107CC00056C0823029F484E690E029EC38E71DC0E4 -:107CD000833009F04AC080919401882319F429E483 -:107CE00038E747C0823019F427E638E742C08330CE -:107CF00019F42DE438E73DC08130B9F52FE938E7B4 -:107D000038C082E090E02BE238E740919801509132 -:107D10009901BC014817590708F4BA0190918C01E8 -:107D200040E050E0AEEF8091E8008570E1F3809193 -:107D3000E80082FD16C0F901E40FF51F4F5F5F4FA9 -:107D4000E4915D98E093F100842F8F7311F4A09378 -:107D5000E80094E64617570730F390938C0181E0D2 -:107D6000089590938C0180E0089580E0089527EBBA -:107D700038E7F901849190E0C8CF1092E900809132 -:107D8000E80083FF61C082E991E068E0F9DE82EFFC -:107D90008093E8008091920187FF05C08091E80000 -:107DA00080FFFCCF03C08EEF8093E80080919301A9 -:107DB000853051F48091E80080FFFCCF80919401E0 -:107DC00080688093E30039C08930E1F480919401A8 -:107DD00080938E01E7E2F8E791E031E026E39093AB -:107DE000E9003093EB0084918093EC002093ED0048 -:107DF0009F5F3196953099F78EE78093EA00109255 -:107E0000EA001BC0883049F490918E015D9884E6A9 -:107E100080938C019093F10010C0882339F45D9811 -:107E200084E680938C011092F10007C0863011F433 -:107E300041DF01C012DF882321F08EEF8093E8003C -:107E4000089581E28093EB0008958091E100109203 -:107E5000E100282F83FF0CC01092E90081E080939D -:107E6000EB001092EC0082E38093ED0010928E0103 -:107E700022FF1CC080918C01882331F081508093B7 -:107E80008C01882309F45D9A80918D01882331F05B -:107E9000815080938D01882309F4289A80918F0165 -:107EA000882321F4109291011092900108951F935C -:107EB000CF93DF9312E0C0E9D1E05FDFC6DF10931C -:107EC000E9008091E80085FF13C0289884E680933C -:107ED0008D019091F1008091E80085FD03C08BE653 -:107EE0008093E800892F90E0DF91CF911F91089552 -:107EF00080919001909191010197909391018093CD -:107F000090018091900190919101892B09F435DDC8 -:0A7F1000CE010197F1F70BDDD0CF91 -:087F1A0000E10000000000007E +:1078C0002330000001000203011201000200000049 +:1078D000404123300000010002030109026400035B +:1078E00001008032080B00020202010009040000BE +:1078F0000102020000052400100105240101010419 +:107900002402020524060001070581031000400936 +:10791000040100020A0000000705020240000007FF +:107920000583024000000904020001030000000971 +:107930002101010001221E000705840340004000D0 +:1079400020918A0130918B012C5F3F4F30938B0146 +:1079500020938A01C901892F99278695982F803411 +:1079600018F08FE7891B982F990F921710F44798FA +:107970000895479A08955D9A289A81E08093E000DF +:107980001092E200EE27FF270994089528E088E18D +:1079900090E00FB6F894A895809360000FBE2093F6 +:1079A0006000FFCF0F931F93CF93DF93982FEB01CE +:1079B000042F10E088E76030780730F411E083E0AE +:1079C000FB0180935700E895892F68E071E0402F14 +:1079D00006D1112311F107B600FCFDCF402F4695CB +:1079E000FE01A8E0B1E020E031E009C08D919D9159 +:1079F0000C0130935700E895112432962F5F24171D +:107A0000A8F385E0FE0180935700E89507B600FCD7 +:107A1000FDCF81E180935700E895DF91CF911F91D1 +:107A20000F91089584B794B7977F94BF98E10FB6EC +:107A3000F89490936000109260000FBE5D9A289AAF +:107A4000479883FF08C0E0E0F0E0859194918F5F54 +:107A50009F4F09F090DF3F9A209A559A90E89093B3 +:107A600061001092610081E885BF95BF9FD084E1DD +:107A70008093880180E180938901E0E0F0E08591C6 +:107A800094918F5F9F4F19F081E080938F01EE24D6 +:107A9000FF24BB24B39454EFC52E51E0D52E1FD242 +:107AA000082F8EE098E7FC012491319602964491CC +:107AB000201711F02223B9F7109291011092900132 +:107AC00082E068E071E08BD0013479F460910801C4 +:107AD0006058633028F0683111F064E001C063E061 +:107AE000C62FD0E0CF5DD7480EC0063571F4809127 +:107AF0000801803311F011E022C080910A01C82FE3 +:107B0000D0E0C25ED74811E022C0053721F413E06F +:107B1000CEE1D8E71CC0053539F4E0900801F090BB +:107B20000901EE0CFF1C0AC0043631F482E0B701F3 +:107B30004091090137DF02C0043721F010E0C5E2AF +:107B4000D8E705C010910901E701E10EF11CC7D18A +:107B50008097B1F483E068E871E041E050E059D0EB +:107B6000112329F0412F50E083E8BE0152D083E475 +:107B700069E871E041E050E04CD0013509F08FCF69 +:107B8000D0929101C0929001B0928F01EE24FF2417 +:107B900086CFFC01289884E680938D0104C08091F3 +:107BA000F100819361506623D1F7089510929101FD +:107BB0001092900110928E0110928F0181E08093BB +:107BC000D70080EA8093D80082E189BD09B400FE25 +:107BD000FDCF80E98093D8001092E0000895FB016A +:107BE0008093E90024E69BE611C08091E80085FFC0 +:107BF000FCCF289820938D018091F1008193809192 +:107C0000E80085FD02C09093E8004150442369F7E5 +:107C10000895982FFB01282F207287708093E90028 +:107C200064E63AE317C08091E80085FFFCCF97FF38 +:107C300002C0849101C080813196211180E05D985D +:107C400060938C018093F1008091E80085FD02C073 +:107C50003093E800415050408FEF4F3F580719F7DD +:107C600096FF03C08AE38093E80008958091930112 +:107C7000813299F45D9884E680938C0120E030E0B5 +:107C800003C080818093F100F901E050FF4F2F5F26 +:107C90003F4F28303105A9F714C0803261F480913C +:107CA000E80082FFFCCF80E091E067E072DF8BEFBD +:107CB0008093E80006C0823221F480919401809381 +:107CC000070181E0089520919501223291F1213040 +:107CD00081F48091980190919901089711F4209373 +:107CE0009A0180919A01882309F059C029EC38E75C +:107CF00058C0223029F484E690E02BED38E71DC00F +:107D0000233009F04AC080919401882319F429E4B2 +:107D100038E747C0823019F427E638E742C083309D +:107D200019F42DE438E73DC08130B9F52FE938E783 +:107D300038C082E090E02BE238E740919801509102 +:107D40009901BC014817590708F4BA0190918C01B8 +:107D500040E050E0AEEF8091E8008570E1F3809163 +:107D6000E80082FD16C0F901E40FF51F4F5F5F4F79 +:107D7000E4915D98E093F100842F8F7311F4A09348 +:107D8000E80094E64617570730F390938C0181E0A2 +:107D9000089590938C0180E0089580E0089527EB8A +:107DA00038E7F901849190E0C8CF1092E900809102 +:107DB000E80083FF61C082E991E068E0EADE82EFDB +:107DC0008093E8008091920187FF05C08091E800D0 +:107DD00080FFFCCF03C08EEF8093E8008091930179 +:107DE000853051F48091E80080FFFCCF80919401B0 +:107DF00080688093E30039C08930E1F48091940178 +:107E000080938E01E7E2F8E791E031E026E390937A +:107E1000E9003093EB0084918093EC002093ED0017 +:107E20009F5F3196953099F78EE78093EA00109224 +:107E3000EA001BC0883049F490918E015D9884E679 +:107E400080938C019093F10010C0882339F45D98E1 +:107E500084E680938C011092F10007C0863011F403 +:107E600032DF01C003DF882321F08EEF8093E8002A +:107E7000089581E28093EB0008958091E1001092D3 +:107E8000E100282F83FF0CC01092E90081E080936D +:107E9000EB001092EC0082E38093ED0010928E01D3 +:107EA00022FF1CC080918C01882331F08150809387 +:107EB0008C01882309F45D9A80918D01882331F02B +:107EC000815080938D01882309F4289A80918F0135 +:107ED000882321F4109291011092900108951F932C +:107EE000CF93DF9312E0C0E9D1E05FDFC6DF1093EC +:107EF000E9008091E80085FF13C0289884E680930C +:107F00008D019091F1008091E80085FD03C08BE622 +:107F10008093E800892F90E0DF91CF911F91089521 +:107F2000809190019091910101979093910180939C +:107F300090018091900190919101892B09F426DDA7 +:0A7F4000CE010197F1F7FCDCD0CF71 +:087F4A0000E10000000000004E :040000030000780081 :00000001FF diff --git a/bootloaders/caterina/src/Platform.h b/bootloaders/caterina/src/Platform.h index 37c26de..75e5bc3 100644 --- a/bootloaders/caterina/src/Platform.h +++ b/bootloaders/caterina/src/Platform.h @@ -14,7 +14,7 @@ #define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n)) #define DISABLE_JTAG() MCUCR = (1 << JTD) | (1 << IVCE) | (0 << PUD); MCUCR = (1 << JTD) | (0 << IVSEL) | (0 << IVCE) | (0 << PUD); -#define USB_PID_LEONARDO_BOOTLOADER 0x0030 +#define USB_PID_LEONARDO_BOOTLOADER 0x008D #define USB_PID_MICRO_BOOTLOADER 0x0031 #define USB_VID 0x2341 // arduino LLC vid #define USB_PID ARDUINO_MODEL_PID // passed in by Makefile - 0x0034 for Leonardo, 0x0035 for MIcro diff --git a/bootloaders/caterina/src/USBCore.cpp b/bootloaders/caterina/src/USBCore.cpp index ac5d081..0eecacc 100644 --- a/bootloaders/caterina/src/USBCore.cpp +++ b/bootloaders/caterina/src/USBCore.cpp @@ -363,7 +363,9 @@ bool SendDescriptor() #endif } else if (USB_DEVICE_DESCRIPTOR_TYPE == t) { - desc_addr = (const uint8_t*)&USB_DeviceDescriptor; + if (setup.wLength == 8) + _cdcComposite = 1; + desc_addr = _cdcComposite ? (const uint8_t*)&USB_DeviceDescriptorA : (const uint8_t*)&USB_DeviceDescriptor; } else if (USB_CONFIGURATION_DESCRIPTOR_TYPE == t) { diff --git a/bootloaders/caterina/src/USBDesc.cpp b/bootloaders/caterina/src/USBDesc.cpp index a634d4d..a84f3be 100644 --- a/bootloaders/caterina/src/USBDesc.cpp +++ b/bootloaders/caterina/src/USBDesc.cpp @@ -46,8 +46,8 @@ const uint16_t STRING_IMANUFACTURER[12] = { 'A','r','d','u','i','n','o',' ','L','L','C' }; - -DeviceDescriptor USB_DeviceDescriptor = D_DEVICE(0X02,0X00,0X00,64,USB_VID,USB_PID,0x100,0,IPRODUCT,ISERIAL,1); +DeviceDescriptor USB_DeviceDescriptorA = D_DEVICE(0X02,0X00,0X00,64,USB_VID,USB_PID,0x100,0,IPRODUCT,ISERIAL,1); +DeviceDescriptor USB_DeviceDescriptor = D_DEVICE(0x00,0x00,0x00,64,USB_VID,USB_PID,0x100,0,IPRODUCT,ISERIAL,1); Config USB_ConfigDescriptor = { -- cgit v1.2.3-18-g5258 From 73b46de27bb78a7aeb2066cde86a44bd313a8382 Mon Sep 17 00:00:00 2001 From: Zach Eveland Date: Tue, 10 Jan 2012 21:23:01 -0500 Subject: made Leonardo and Micro bootloader PIDs same as sketch PIDs --- bootloaders/caterina/Caterina-Leonardo.hex | 12 ++++++------ bootloaders/caterina/Makefile | 4 ++-- bootloaders/caterina/src/Platform.h | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) (limited to 'bootloaders/caterina') diff --git a/bootloaders/caterina/Caterina-Leonardo.hex b/bootloaders/caterina/Caterina-Leonardo.hex index 44a452e..ea2af98 100644 --- a/bootloaders/caterina/Caterina-Leonardo.hex +++ b/bootloaders/caterina/Caterina-Leonardo.hex @@ -4,14 +4,14 @@ :107830000CA10185037508150026FF00954009017C :107840008102954009029102C0040309041A033021 :1078500000300030003000300030003000300031A7 -:107860000037003000310038030000000000000045 -:107870000000000000000000000000000000000008 -:1078800000000000000000000000000000000000F8 -:1078900000000000000000000000000000000018D0 +:1078600000370030003100380341007200640075B9 +:107870000069006E006F0020004C0065006F006E14 +:10788000006100720064006F00200062006F006FF2 +:107890000074006C006F00610064006500720018E5 :1078A00003410072006400750069006E006F0020E3 :1078B000004C004C00430012010002020000404155 -:1078C0002330000001000203011201000200000049 -:1078D000404123300000010002030109026400035B +:1078C0002334000001000203011201000200000045 +:1078D0004041233400000100020301090264000357 :1078E00001008032080B00020202010009040000BE :1078F0000102020000052400100105240101010419 :107900002402020524060001070581031000400936 diff --git a/bootloaders/caterina/Makefile b/bootloaders/caterina/Makefile index 4bb41c8..8075a56 100644 --- a/bootloaders/caterina/Makefile +++ b/bootloaders/caterina/Makefile @@ -15,9 +15,9 @@ AVR_FREQ = 16000000L # to set PID and product descriptor string # Arduino Leonardo bootloader PID -ARDUINO_MODEL_PID = 0x0030 +ARDUINO_MODEL_PID = 0x0034 # Arduino Micro bootloader PID -#ARDUINO_MODEL_PID = 0x0031 +#ARDUINO_MODEL_PID = 0x0035 # Change if your programmer is different AVRDUDE_PROGRAMMER = avrispmkII diff --git a/bootloaders/caterina/src/Platform.h b/bootloaders/caterina/src/Platform.h index 75e5bc3..26c1114 100644 --- a/bootloaders/caterina/src/Platform.h +++ b/bootloaders/caterina/src/Platform.h @@ -14,8 +14,8 @@ #define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n)) #define DISABLE_JTAG() MCUCR = (1 << JTD) | (1 << IVCE) | (0 << PUD); MCUCR = (1 << JTD) | (0 << IVSEL) | (0 << IVCE) | (0 << PUD); -#define USB_PID_LEONARDO_BOOTLOADER 0x008D -#define USB_PID_MICRO_BOOTLOADER 0x0031 +#define USB_PID_LEONARDO_BOOTLOADER 0x0034 +#define USB_PID_MICRO_BOOTLOADER 0x0035 #define USB_VID 0x2341 // arduino LLC vid #define USB_PID ARDUINO_MODEL_PID // passed in by Makefile - 0x0034 for Leonardo, 0x0035 for MIcro -- cgit v1.2.3-18-g5258 From 53e51de832189a30a2a6e9fae77d0f58a3616ccc Mon Sep 17 00:00:00 2001 From: Zach Eveland Date: Thu, 8 Mar 2012 13:47:42 -0500 Subject: removed old version of Leonardo's caterina bootloader, replaced with LUFA-based caterina --- bootloaders/caterina/Caterina-Leonardo.hex | 120 ----- bootloaders/caterina/Caterina.c | 698 ++++++++++++++++++++++++ bootloaders/caterina/Caterina.h | 99 ++++ bootloaders/caterina/Caterina.hex | 256 +++++++++ bootloaders/caterina/Descriptors.c | 265 ++++++++++ bootloaders/caterina/Descriptors.h | 139 +++++ bootloaders/caterina/Makefile | 822 +++++++++++++++++++++++++---- bootloaders/caterina/src/Caterina.cpp | 251 --------- bootloaders/caterina/src/Platform.h | 49 -- bootloaders/caterina/src/USBCore.cpp | 512 ------------------ bootloaders/caterina/src/USBCore.h | 246 --------- bootloaders/caterina/src/USBDesc.cpp | 83 --- bootloaders/caterina/src/USBDesc.h | 60 --- 13 files changed, 2174 insertions(+), 1426 deletions(-) delete mode 100644 bootloaders/caterina/Caterina-Leonardo.hex create mode 100755 bootloaders/caterina/Caterina.c create mode 100755 bootloaders/caterina/Caterina.h create mode 100644 bootloaders/caterina/Caterina.hex create mode 100755 bootloaders/caterina/Descriptors.c create mode 100755 bootloaders/caterina/Descriptors.h mode change 100644 => 100755 bootloaders/caterina/Makefile delete mode 100644 bootloaders/caterina/src/Caterina.cpp delete mode 100644 bootloaders/caterina/src/Platform.h delete mode 100644 bootloaders/caterina/src/USBCore.cpp delete mode 100644 bootloaders/caterina/src/USBCore.h delete mode 100644 bootloaders/caterina/src/USBDesc.cpp delete mode 100644 bootloaders/caterina/src/USBDesc.h (limited to 'bootloaders/caterina') diff --git a/bootloaders/caterina/Caterina-Leonardo.hex b/bootloaders/caterina/Caterina-Leonardo.hex deleted file mode 100644 index ea2af98..0000000 --- a/bootloaders/caterina/Caterina-Leonardo.hex +++ /dev/null @@ -1,120 +0,0 @@ -:1078000011241FBECFEFDAE0DEBFCDBF0BC14101B7 -:1078100042144505560455026403740300001E9586 -:1078200087020110030000C18081C106C0FF0A0069 -:107830000CA10185037508150026FF00954009017C -:107840008102954009029102C0040309041A033021 -:1078500000300030003000300030003000300031A7 -:1078600000370030003100380341007200640075B9 -:107870000069006E006F0020004C0065006F006E14 -:10788000006100720064006F00200062006F006FF2 -:107890000074006C006F00610064006500720018E5 -:1078A00003410072006400750069006E006F0020E3 -:1078B000004C004C00430012010002020000404155 -:1078C0002334000001000203011201000200000045 -:1078D0004041233400000100020301090264000357 -:1078E00001008032080B00020202010009040000BE -:1078F0000102020000052400100105240101010419 -:107900002402020524060001070581031000400936 -:10791000040100020A0000000705020240000007FF -:107920000583024000000904020001030000000971 -:107930002101010001221E000705840340004000D0 -:1079400020918A0130918B012C5F3F4F30938B0146 -:1079500020938A01C901892F99278695982F803411 -:1079600018F08FE7891B982F990F921710F44798FA -:107970000895479A08955D9A289A81E08093E000DF -:107980001092E200EE27FF270994089528E088E18D -:1079900090E00FB6F894A895809360000FBE2093F6 -:1079A0006000FFCF0F931F93CF93DF93982FEB01CE -:1079B000042F10E088E76030780730F411E083E0AE -:1079C000FB0180935700E895892F68E071E0402F14 -:1079D00006D1112311F107B600FCFDCF402F4695CB -:1079E000FE01A8E0B1E020E031E009C08D919D9159 -:1079F0000C0130935700E895112432962F5F24171D -:107A0000A8F385E0FE0180935700E89507B600FCD7 -:107A1000FDCF81E180935700E895DF91CF911F91D1 -:107A20000F91089584B794B7977F94BF98E10FB6EC -:107A3000F89490936000109260000FBE5D9A289AAF -:107A4000479883FF08C0E0E0F0E0859194918F5F54 -:107A50009F4F09F090DF3F9A209A559A90E89093B3 -:107A600061001092610081E885BF95BF9FD084E1DD -:107A70008093880180E180938901E0E0F0E08591C6 -:107A800094918F5F9F4F19F081E080938F01EE24D6 -:107A9000FF24BB24B39454EFC52E51E0D52E1FD242 -:107AA000082F8EE098E7FC012491319602964491CC -:107AB000201711F02223B9F7109291011092900132 -:107AC00082E068E071E08BD0013479F460910801C4 -:107AD0006058633028F0683111F064E001C063E061 -:107AE000C62FD0E0CF5DD7480EC0063571F4809127 -:107AF0000801803311F011E022C080910A01C82FE3 -:107B0000D0E0C25ED74811E022C0053721F413E06F -:107B1000CEE1D8E71CC0053539F4E0900801F090BB -:107B20000901EE0CFF1C0AC0043631F482E0B701F3 -:107B30004091090137DF02C0043721F010E0C5E2AF -:107B4000D8E705C010910901E701E10EF11CC7D18A -:107B50008097B1F483E068E871E041E050E059D0EB -:107B6000112329F0412F50E083E8BE0152D083E475 -:107B700069E871E041E050E04CD0013509F08FCF69 -:107B8000D0929101C0929001B0928F01EE24FF2417 -:107B900086CFFC01289884E680938D0104C08091F3 -:107BA000F100819361506623D1F7089510929101FD -:107BB0001092900110928E0110928F0181E08093BB -:107BC000D70080EA8093D80082E189BD09B400FE25 -:107BD000FDCF80E98093D8001092E0000895FB016A -:107BE0008093E90024E69BE611C08091E80085FFC0 -:107BF000FCCF289820938D018091F1008193809192 -:107C0000E80085FD02C09093E8004150442369F7E5 -:107C10000895982FFB01282F207287708093E90028 -:107C200064E63AE317C08091E80085FFFCCF97FF38 -:107C300002C0849101C080813196211180E05D985D -:107C400060938C018093F1008091E80085FD02C073 -:107C50003093E800415050408FEF4F3F580719F7DD -:107C600096FF03C08AE38093E80008958091930112 -:107C7000813299F45D9884E680938C0120E030E0B5 -:107C800003C080818093F100F901E050FF4F2F5F26 -:107C90003F4F28303105A9F714C0803261F480913C -:107CA000E80082FFFCCF80E091E067E072DF8BEFBD -:107CB0008093E80006C0823221F480919401809381 -:107CC000070181E0089520919501223291F1213040 -:107CD00081F48091980190919901089711F4209373 -:107CE0009A0180919A01882309F059C029EC38E75C -:107CF00058C0223029F484E690E02BED38E71DC00F -:107D0000233009F04AC080919401882319F429E4B2 -:107D100038E747C0823019F427E638E742C083309D -:107D200019F42DE438E73DC08130B9F52FE938E783 -:107D300038C082E090E02BE238E740919801509102 -:107D40009901BC014817590708F4BA0190918C01B8 -:107D500040E050E0AEEF8091E8008570E1F3809163 -:107D6000E80082FD16C0F901E40FF51F4F5F5F4F79 -:107D7000E4915D98E093F100842F8F7311F4A09348 -:107D8000E80094E64617570730F390938C0181E0A2 -:107D9000089590938C0180E0089580E0089527EB8A -:107DA00038E7F901849190E0C8CF1092E900809102 -:107DB000E80083FF61C082E991E068E0EADE82EFDB -:107DC0008093E8008091920187FF05C08091E800D0 -:107DD00080FFFCCF03C08EEF8093E8008091930179 -:107DE000853051F48091E80080FFFCCF80919401B0 -:107DF00080688093E30039C08930E1F48091940178 -:107E000080938E01E7E2F8E791E031E026E390937A -:107E1000E9003093EB0084918093EC002093ED0017 -:107E20009F5F3196953099F78EE78093EA00109224 -:107E3000EA001BC0883049F490918E015D9884E679 -:107E400080938C019093F10010C0882339F45D98E1 -:107E500084E680938C011092F10007C0863011F403 -:107E600032DF01C003DF882321F08EEF8093E8002A -:107E7000089581E28093EB0008958091E1001092D3 -:107E8000E100282F83FF0CC01092E90081E080936D -:107E9000EB001092EC0082E38093ED0010928E01D3 -:107EA00022FF1CC080918C01882331F08150809387 -:107EB0008C01882309F45D9A80918D01882331F02B -:107EC000815080938D01882309F4289A80918F0135 -:107ED000882321F4109291011092900108951F932C -:107EE000CF93DF9312E0C0E9D1E05FDFC6DF1093EC -:107EF000E9008091E80085FF13C0289884E680930C -:107F00008D019091F1008091E80085FD03C08BE622 -:107F10008093E800892F90E0DF91CF911F91089521 -:107F2000809190019091910101979093910180939C -:107F300090018091900190919101892B09F426DDA7 -:0A7F4000CE010197F1F7FCDCD0CF71 -:087F4A0000E10000000000004E -:040000030000780081 -:00000001FF diff --git a/bootloaders/caterina/Caterina.c b/bootloaders/caterina/Caterina.c new file mode 100755 index 0000000..c8e82a9 --- /dev/null +++ b/bootloaders/caterina/Caterina.c @@ -0,0 +1,698 @@ +/* + 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 */ +uint16_t Timeout = 0; + +uint16_t bootKey = 0x7777; +volatile uint16_t *const bootKeyPtr = (volatile uint16_t *)0x0A00; + +void StartSketch(void) +{ + cli(); + + /* Undo TIMER1 setup and clear the count before running the sketch */ + TIMSK1 = 0; + TCCR1B = 0; + TCNT1H = 0; // 16-bit write to TCNT1 requires high byte be written first + TCNT1L = 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"); +} + +/* Breathing animation on L LED indicates bootloader is running */ +uint16_t LLEDPulse; +void LEDPulse(void) +{ + 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(); +} + +/** 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) +{ + /* Watchdog may be configured with a 15 ms period so must disable it before doing anything else */ + wdt_disable(); + + /* Check the reason for the reset and act accordingly */ + uint8_t mcusr_state = MCUSR; // store the initial state of the Status register + MCUSR = 0; // clear all reset flags + // After a power-on reset skip the bootloader and jump straight to sketch + // if one exists. + if (mcusr_state & (1< 8000) + RunBootloader = false; + + LEDPulse(); + } + + /* 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(); +} + +/** 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); + + 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 + + /* Initialize USB Subsystem */ + USB_Init(); +} + +//uint16_t ctr = 0; +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(); + + if (pgm_read_word(0) != 0xFFFF) + Timeout++; +} + +/** 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') + { + RunBootloader = false; + + // 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')) + { + 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/bootloaders/caterina/Caterina.h b/bootloaders/caterina/Caterina.h new file mode 100755 index 0000000..f8251d4 --- /dev/null +++ b/bootloaders/caterina/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 + #include + #include + #include + #include + #include + #include + + #include "Descriptors.h" + + #include + /* 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/bootloaders/caterina/Caterina.hex b/bootloaders/caterina/Caterina.hex new file mode 100644 index 0000000..98cf01a --- /dev/null +++ b/bootloaders/caterina/Caterina.hex @@ -0,0 +1,256 @@ +:1070000055C000006EC000006CC000006AC00000E7 +:1070100068C0000066C0000064C0000062C00000DC +:1070200060C000005EC00000ECC400005AC0000058 +:1070300058C0000056C0000054C0000052C00000FC +:1070400050C0000078C000004CC000004AC00000E2 +:1070500048C0000046C0000044C0000042C000001C +:1070600040C000003EC000003CC000003AC000002C +:1070700038C0000036C0000034C0000032C000003C +:1070800030C000002EC000002CC000002AC000004C +:1070900028C0000026C0000024C0000022C000005C +:1070A00020C000001EC000001CC0000011241FBE34 +:1070B000CFEFDAE0DEBFCDBF11E0A0E0B1E0E6E265 +:1070C000FFE702C005900D92A83AB107D9F711E089 +:1070D000A8EAB1E001C01D92AE3BB107E1F78ED343 +:1070E00020C78ECFF89410926F00109281001092FA +:1070F00085001092840081E085BF15BE47985D9A97 +:10710000289A0C94000008952091B2013091B301A7 +:107110002F5F3F4F3093B3012093B201932F37FF7E +:1071200003C08EEF831B982F990F921710F4479886 +:107130000895479A08951F920F920FB60F92112447 +:107140002F938F939F93EF93FF931092850010924C +:1071500084008091A8019091A901009741F00197C6 +:107160009093A9018093A801892B09F45D9A8091DD +:10717000AA019091AB01009741F001979093AB0168 +:107180008093AA01892B09F4289AE0E0F0E0859128 +:1071900094918F5F9F4F49F08091AC019091AD0128 +:1071A00001969093AD018093AC01FF91EF919F9177 +:1071B0008F912F910F900FBE0F901F90189584E024 +:1071C0008093E9000DC08091E8008B778093E80000 +:1071D00003C08EB3882351F08091E80082FFF9CF7D +:1071E0008091E80085FFEFCF8091F1000895982FFE +:1071F00083E08093E9008091E80085FD0DC08091D7 +:10720000E8008E778093E80003C08EB3882369F08E +:107210008091E80080FFF9CF9093F1005D9884E6BB +:1072200090E09093A9018093A80108954F925F92F6 +:107230006F927F928F929F92AF92BF92CF92DF9286 +:10724000EF92FF920F931F93CF93DF9384E080938D +:10725000E9008091E80082FF56C2289884E690E019 +:107260009093AB018093AA01AADF182F853419F4FB +:1072700010920D0103C0843519F4A1DF8DE019C20D +:107280008C34E1F38035D1F3843721F484E4AFDF2B +:1072900080E00FC2813611F489E50BC28134B1F46C +:1072A0008EDF182F8CDF90E0880F991FAA2797FD9B +:1072B000A095BA2F312F330F20E0442737FD40959A +:1072C000542F822B932BA42BB52BC4C1803711F4E0 +:1072D00083E5EFC1833549F4C0E0D1E0899187DFD0 +:1072E00021E0C730D207D1F7E5C1863521F481E32B +:1072F0007EDF80E3DEC1833731F487E878DF85E91C +:1073000076DF8EE1D6C18536B9F4E0E0F0E093E0B7 +:1073100085E090935700E89507B600FCFDCF809379 +:107320005700E89507B600FCFDCFE058FF4FA0E7F7 +:10733000E030FA0771F7A2CF8C3651F440DF809528 +:1073400099E0E1E0F0E0082E90935700E89596CFA1 +:10735000823739F4E1E0F0E089E0809357008491CE +:10736000A8C1863439F4E0E0F0E089E0809357006A +:1073700084919FC18E3439F4E3E0F0E089E080939A +:107380005700849196C1813539F4E2E0F0E089E05C +:107390008093570084918DC1823631F489E527DFCF +:1073A00080E025DF80E885C1823419F0873609F056 +:1073B000E5C01092AD011092AC0101DF082FFFDE95 +:1073C000F82EFDDE682E8554823008F071C1902FB2 +:1073D00080E0CF2DD0E0C82BD92B10926F0017364C +:1073E00009F04BC081E180935700E895DD24CC245F +:1073F000C3943FC0E090AE01F090AF010091B001A6 +:107400001091B101B6E46B16D9F4ED2DF0E0EE2940 +:10741000FF29E4918E2FEBDEDD2081F082E090E009 +:10742000A0E0B0E0E80EF91E0A1F1B1FE092AE01BB +:10743000F092AF010093B0011093B101DC2418C0A9 +:10744000D801C701B695A7959795879554D5CFDEF6 +:1074500082E090E0A0E0B0E0E80EF91E0A1F1B1FDA +:10746000E092AE01F092AF010093B0011093B10130 +:107470002197209709F0BECF7DC08090AE019090FB +:10748000AF01A090B001B090B10196E4691609F087 +:107490005DC083E0F40180935700E89507B600FCD7 +:1074A000FDCF54C0F6E46F1661F5772031F1E0901E +:1074B000AE01F090AF010091B0011091B1017FDEFB +:1074C000D82ECC24852D90E08C299D29F7010C0124 +:1074D00040925700E895112482E090E0A0E0B0E0EF +:1074E000E80EF91E0A1F1B1FE092AE01F092AF01D9 +:1074F0000093B0011093B10102C061DE582E7424D4 +:1075000023C0E090AE01F090AF010091B001109166 +:10751000B10116950795F794E79451DE682FC701DE +:10752000F2D48091AE019091AF01A091B001B091E1 +:10753000B1010296A11DB11D8093AE019093AF01E0 +:10754000A093B001B093B101219704C055247724D2 +:1075500044244394209709F0A5CF96E4691641F49A +:1075600085E0F40180935700E89507B600FCFDCF55 +:107570008DE03DDE82E080936F009CC0833471F427 +:107580000091AE011091AF011ADE90E021E0F80108 +:107590000C0120935700E895112470CE833619F51D +:1075A000E090AE01F090AF010091B0011091B101F7 +:1075B00006DEF701E16090E021E00C012093570026 +:1075C000E895112482E090E0A0E0B0E0E80EF91E1A +:1075D0000A1F1B1FE092AE01F092AF010093B001B1 +:1075E0001093B1014BCE8D3661F4E091AE01F09174 +:1075F000AF0185E080935700E89507B600FCFDCF0A +:107600003DCE823551F4E091AE01F091AF0105918C +:107610001491812FECDD802F4CC0843421F5E09053 +:10762000AE01F090AF010091B0011091B10116953B +:107630000795F794E794C3DD682FC70164D4809160 +:10764000AE019091AF01A091B001B091B10102964D +:10765000A11DB11D8093AE019093AF01A093B00125 +:10766000B093B1010BCE843609F5E090AE01F090F5 +:10767000AF010091B0011091B101D801C701B695D9 +:10768000A7959795879537D4B2DD82E090E0A0E08A +:10769000B0E0E80EF91E0A1F1B1FE092AE01F09247 +:1076A000AF010093B0011093B10104C08B3111F010 +:1076B0008FE39DDD83E08093E9009091E800809165 +:1076C000E8008E778093E80095FF04C010C08EB369 +:1076D0008823C9F08091E80080FFF9CF8091E8000D +:1076E0008E778093E80003C08EB3882361F0809189 +:1076F000E80080FFF9CF84E08093E9008091E80002 +:107700008B778093E800DF91CF911F910F91FF90CD +:10771000EF90DF90CF90BF90AF909F908F907F9031 +:107720006F905F904F9008959091B601892F8F7759 +:10773000813249F58091B7018032A1F0813219F58B +:10774000913A09F58091E800877F8093E8008EE008 +:1077500091E067E070E006D28091E8008B7780933B +:10776000E8000895913279F48091E800877F809352 +:10777000E8008EE091E067E070E058D28091E80088 +:107780008E778093E800089582E061EC42E0B0D00B +:1077900083E061E842E1ACD084E060E842E1A8C067 +:1077A00084B7877F84BF88E10FB6F8948093600028 +:1077B000109260000FBE20E880E090E00FB6F894D1 +:1077C00020936100809361000FBE81E085BF92E04D +:1077D00095BF3F9A209A559AE1E6F0E02083108207 +:1077E00047985D9A289A109289008AEF80938800C2 +:1077F00090936F0083E080938100EBC01F9388E13A +:107800000FB6F89480936000109260000FBE84B7AA +:1078100014BE182F10FF08C0E0E0F0E085919491AD +:107820008F5F9F4F09F05EDC2091000A3091010AC2 +:107830001092010A1092000A13FF0FC080910901F3 +:1078400090910A012817390741F0E0E0F0E08591B6 +:1078500094918F5F9F4F09F045DCA2DF78940CC0B4 +:10786000E5DC37D38091AC019091AD0181549F410B +:1078700010F010920D0148DC80910D01882381F7F2 +:107880008091E00081608093E0002CDC80E090E05B +:107890001F910895FA01923049F0933061F09130D0 +:1078A000F9F485E191E022E130E01EC087E291E049 +:1078B0002EE330E019C0882329F485E691E024E026 +:1078C00030E012C0813029F489E691E022E230E014 +:1078D0000BC0823029F48DE891E028E130E004C04B +:1078E00080E090E020E030E091838083C90108953A +:1078F0008093E9008091EB0081608093EB0010920F +:10790000ED006093EC004093ED008091EE00881F45 +:107910008827881F08958091B60188238CF403C0BE +:107920008EB38823B1F08091E80082FFF9CF809177 +:10793000E8008B778093E80008958EB3882349F0A0 +:107940008091E80080FFF9CF8091E8008E778093E6 +:10795000E8000895EF92FF920F931F9345D04CD00B +:1079600008ED10E0F80180818F7780838081806846 +:10797000808380818F7D808319BC1EBA1092B401F0 +:1079800080EEE82EF12CF70180818B7F8083F80157 +:1079900080818160808380E060E042E0A9DFE1EEE9 +:1079A000F0E080818E7F8083E2EEF0E08081816074 +:1079B0008083808188608083F70180818E7F8083CF +:1079C000F8018081806180831F910F91FF90EF907B +:1079D0000895E7EDF0E08081816080838AE482BFD2 +:1079E00081E08093B501B6CFE8EDF0E080818E7F35 +:1079F00080831092E20008951092DA001092E10064 +:107A000008951F920F920FB60F9211242F933F9358 +:107A10004F935F936F937F938F939F93AF93BF9396 +:107A2000EF93FF938091DA0080FF1BC08091D80014 +:107A300080FF17C08091DA008E7F8093DA008091FA +:107A4000D90080FF0BC080E189BD82E189BD09B406 +:107A500000FEFDCF81E08EBB3BD203C019BC1EBA35 +:107A600037D28091E10080FF17C08091E20080FF53 +:107A700013C08091E2008E7F8093E2008091E2004B +:107A800080618093E2008091D80080628093D8006A +:107A900019BC85E08EBB1CD28091E10084FF2CC014 +:107AA0008091E20084FF28C080E189BD82E189BD28 +:107AB00009B400FEFDCF8091D8008F7D8093D8005F +:107AC0008091E1008F7E8093E1008091E2008F7EC3 +:107AD0008093E2008091E20081608093E2008091D7 +:107AE000B401882331F48091E30087FD02C081E076 +:107AF00001C084E08EBBECD18091E10083FF21C006 +:107B00008091E20083FF1DC08091E100877F809318 +:107B1000E10082E08EBB1092B4018091E1008E7F83 +:107B20008093E1008091E2008E7F8093E20080915B +:107B3000E20080618093E20080E060E042E0D8DE15 +:107B4000C7D1FF91EF91BF91AF919F918F917F919D +:107B50006F915F914F913F912F910F900FBE0F90BA +:107B60001F9018959C014091BC015091BD01461792 +:107B7000570718F4F90190E044C06115710511F040 +:107B8000AB01F8CF8091E8008E778093E80040E069 +:107B900050E0F0CF8EB3882309F444C0853009F457 +:107BA00043C08091E80083FF02C081E00895809186 +:107BB000E80082FD31C08091E80080FF22C0809102 +:107BC000F3009091F200782F60E0292F30E0262B0F +:107BD000372B07C081918093F100415050402F5FB7 +:107BE0003F4F4115510519F02830310598F390E0C9 +:107BF0002830310509F491E08091E8008E77809378 +:107C0000E8004115510531F6992321F605C08EB3E0 +:107C1000882341F0853041F08091E80082FFF7CF62 +:107C200080E0089582E0089583E008959C01611545 +:107C3000710529F48091E8008B778093E800F901C1 +:107C400026C08EB3882391F1853091F18091E800B0 +:107C500083FF02C081E008958091E80082FFF1CFA8 +:107C600006C08091F10081936150704059F02091DD +:107C7000F3008091F200322F20E090E0822B932BD2 +:107C8000892B79F78091E8008B778093E800611564 +:107C90007105B9F605C08EB3882341F0853041F0F7 +:107CA0008091E80080FFF7CF80E0089582E008959A +:107CB00083E008950F931F93DF93CF9300D0CDB748 +:107CC000DEB7E6EBF1E08091F100819381E0EE3BDD +:107CD000F807C9F729DD8091E80083FFE4C08091AF +:107CE000B6019091B701953009F46DC0963040F41B +:107CF000913081F1913070F0933009F0D4C02AC0F6 +:107D0000983009F4A3C0993009F4B2C0963009F054 +:107D1000CAC07CC0803809F4C6C0823809F0C3C02C +:107D20008091BA0187708093E9008091EB001092F6 +:107D3000E9002091E800277F2093E80090E025E00B +:107D4000969587952A95E1F781708093F1001092BE +:107D5000F10087C0882319F0823009F0A4C08F7128 +:107D6000823009F0A0C08091B801882331F52091BC +:107D7000BA01277009F497C02093E9008091EB00C5 +:107D800080FF1BC0933021F48091EB00806213C010 +:107D90008091EB0080618093EB0081E090E002C075 +:107DA000880F991F2A95E2F78093EA001092EA0063 +:107DB0008091EB0088608093EB001092E900809145 +:107DC000E800877F51C0882309F06DC01091B80189 +:107DD0001F770FB7F8948091E800877F8093E800C1 +:107DE0009ADD8091E80080FFFCCF8091E3008078ED +:107DF000812B8093E30080688093E300112311F4CA +:107E000082E001C083E08EBB0FBF4DC0805882303E +:107E100008F049C08091B8019091B9016091BA0110 +:107E2000AE014F5F5F4F36DDBC01009709F43BC0E8 +:107E30008091E800877F8093E80089819A8192DEB3 +:107E40008091E8008B778093E8002DC0803859F549 +:107E50008091E800877F8093E8008091B40180934F +:107E6000F1008091E8008E778093E80054DD1BC01C +:107E70008823C9F49091B8019230A8F48091E80069 +:107E8000877F8093E8009093B40145DD8091B40131 +:107E9000882331F48091E30087FD02C081E001C0B6 +:107EA00084E08EBB71DC8091E80083FF0AC0809182 +:107EB000EB0080628093EB008091E800877F8093E5 +:107EC000E8000F900F90CF91DF911F910F910895CF +:107ED00008951F938EB3882361F01091E9001092EA +:107EE000E9008091E80083FF01C0E4DE1770109381 +:107EF000E9001F910895F999FECF92BD81BDF89ACE +:107F0000992780B50895262FF999FECF1FBA92BD03 +:107F100081BD20BD0FB6F894FA9AF99A0FBE01966A +:067F20000895F894FFCF64 +:107F26004341544552494E41007777000A0100000B +:107F360000000000081201100102000008412301A0 +:107F46000701000201000109023E00020100803221 +:107F560009040000010202010005240010010424A6 +:107F660002040524060001070582030800FF090430 +:107F76000100020A000000070504021000010705BF +:107F86008302100001040309042203410072006405 +:107F960000750069006E006F0020004C0065006FE0 +:107FA600006E006100720064006F0000001803415B +:107FB6000072006400750069006E006F0020004CBE +:087FC600004C00430000000024 +:040000030000700089 +:00000001FF diff --git a/bootloaders/caterina/Descriptors.c b/bootloaders/caterina/Descriptors.c new file mode 100755 index 0000000..f1756e2 --- /dev/null +++ b/bootloaders/caterina/Descriptors.c @@ -0,0 +1,265 @@ +/* + 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 = 0x2341, + .ProductID = 0x0701, + .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}, + + .UnicodeString = L"Arduino Leonardo" +}; +/* +const USB_Descriptor_String_t SerialNumString = +{ + .Header = {.Size = USB_STRING_LEN(12), .Type = DTYPE_String}, + + .UnicodeString = L"000000001452" +}; +*/ +const USB_Descriptor_String_t ManufNameString = +{ + .Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String}, + + .UnicodeString = L"Arduino LLC" +}; + +/** 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.SerialNumStrIndex) +// { +// Address = &SerialNumString; +// Size = SerialNumString.Header.Size; + } else if (DescriptorNumber == DeviceDescriptor.ManufacturerStrIndex) + { + Address = &ManufNameString; + Size = ManufNameString.Header.Size; + } + + break; + } + + *DescriptorAddress = Address; + return Size; +} + diff --git a/bootloaders/caterina/Descriptors.h b/bootloaders/caterina/Descriptors.h new file mode 100755 index 0000000..94091ae --- /dev/null +++ b/bootloaders/caterina/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 + + /* 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/bootloaders/caterina/Makefile b/bootloaders/caterina/Makefile old mode 100644 new mode 100755 index 8075a56..5439b5b --- a/bootloaders/caterina/Makefile +++ b/bootloaders/caterina/Makefile @@ -1,105 +1,717 @@ -############################################################################### -# Makefile for Caterina (formerly DiskLoader) -############################################################################### - -## General Flags -PROJECT = Caterina -TARGET = Caterina.elf -CC = avr-gcc - -# BOARD2 -MCU = atmega32u4 -AVR_FREQ = 16000000L - -# Specify the Arduino model using the assigned PID. This is used by Descriptors.c -# to set PID and product descriptor string - -# Arduino Leonardo bootloader PID -ARDUINO_MODEL_PID = 0x0034 -# Arduino Micro bootloader PID -#ARDUINO_MODEL_PID = 0x0035 - -# Change if your programmer is different -AVRDUDE_PROGRAMMER = avrispmkII -AVRDUDE_PORT = usb - -# program name should not be changed... -PROGRAM = Caterina - -AVRDUDE = avrdude -AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) -p $(MCU) - -## Options common to compile, link and assembly rules -COMMON = -mmcu=$(MCU) - -override CFLAGS = -g -Wall -Os -mmcu=$(MCU) -DF_CPU=$(AVR_FREQ) -DARDUINO_MODEL_PID=$(ARDUINO_MODEL_PID) $(DEFS) -ffunction-sections -gdwarf-2 -fdata-sections -fno-split-wide-types - -## Assembly specific flags -ASMFLAGS = $(COMMON) -ASMFLAGS += $(CFLAGS) -ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2 - -## Linker flags -LDFLAGS = $(COMMON) -LDFLAGS += -Wl,-gc-sections,-Map=Caterina.map,--section-start=.text=0x7800,--relax -LDFLAGS += -nodefaultlibs -nostartfiles - -## Intel Hex file production flags -HEX_EEPROM_FLAGS = -j .eeprom -HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load" -HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings - -## Objects explicitly added by the user -LINKONLYOBJECTS = - -MODULES := . -SRC_DIR := $(addprefix src/,$(MODULES)) -BUILD_DIR := $(addprefix build/,$(MODULES)) - -SRC := $(foreach sdir,$(SRC_DIR),$(wildcard $(sdir)/*.cpp)) -OBJ := $(patsubst src/%.cpp,build/%.o,$(SRC)) -DEP := $(OBJ:%.o=%.d) -INCLUDES := $(addprefix -I,$(SRC_DIR)) - -vpath %.cpp $(SRC_DIR) - -.PHONY: all checkdirs clean - -all: checkdirs $(TARGET) Caterina.hex Caterina.lss size - --include $(DEP) - -checkdirs: $(BUILD_DIR) - -$(BUILD_DIR): - @mkdir -p $@ - -clean: - @rm -rf build/ - @rm -f *.hex - @rm -f *.elf - @rm -f *.lss - @rm -f *.map - -define make-goal -$1/%.o: %.cpp - $(CC) $(INCLUDES) $(CFLAGS) -c $$< -MD -o $$@ -endef - -$(foreach bdir,$(BUILD_DIR),$(eval $(call make-goal,$(bdir)))) - -$(TARGET): $(OBJ) - $(CC) $(LDFLAGS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) $^ -o $@ - -%.hex: $(TARGET) - avr-objcopy -O ihex $(HEX_FLASH_FLAGS) $< $@ - -%.lss: $(TARGET) - avr-objdump -h -S $< > $@ - -size: $(TARGET) - @echo -# @avr-size -C --mcu=${MCU} ${TARGET}.elf - -program: $(TARGET).hex - $(AVRDUDE) $(AVRDUDE_FLAGS) -B 1 -u -U flash:w:$(TARGET).hex \ No newline at end of file +# Hey Emacs, this is a -*- makefile -*- +#---------------------------------------------------------------------------- +# WinAVR Makefile Template written by Eric B. Weddington, Jörg 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 = 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 = 16000000 + + +# 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 += $(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 + + +# 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 +# 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 = /Applications/avrdude -C /Applications/avrdude.conf -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) + + +# 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/bootloaders/caterina/src/Caterina.cpp b/bootloaders/caterina/src/Caterina.cpp deleted file mode 100644 index 7ef6fa8..0000000 --- a/bootloaders/caterina/src/Caterina.cpp +++ /dev/null @@ -1,251 +0,0 @@ - - -#include "Platform.h" - -// This bootloader creates a composite Serial device -// -// The serial interface supports a STK500v1 protocol that is very similar to optiboot -// -// The bootloader will timeout and start the firmware after a few hundred milliseconds -// if a usb connection is not detected. -// -// The tweakier code is to keep the bootloader below 2k (no interrupt table, for example) - -extern "C" -void entrypoint(void) __attribute__ ((naked)) __attribute__ ((section (".vectors"))); -void entrypoint(void) -{ - asm volatile ( - "eor r1, r1\n" // Zero register - "out 0x3F, r1\n" // SREG - "ldi r28, 0xFF\n" - "ldi r29, 0x0A\n" - "out 0x3E, r29\n" // SPH - "out 0x3D, r28\n" // SPL - "rjmp main" // Stack is all set up, start the main code - ::); -} - -uint8_t _flashbuf[128]; -uint8_t _inSync; -uint8_t _ok; -extern volatile uint8_t _ejected; -extern volatile uint16_t _timeout; - -void Program(uint8_t ep, uint16_t page, uint8_t count) -{ - uint8_t write = page < 30*1024; // Don't write over firmware please - if (write) - boot_page_erase(page); - - Recv(ep,_flashbuf,count); // Read while page is erasing - - if (!write) - return; - - boot_spm_busy_wait(); // Wait until the memory is erased. - - count >>= 1; - uint16_t* p = (uint16_t*)page; - uint16_t* b = (uint16_t*)_flashbuf; - for (uint8_t i = 0; i < count; i++) - boot_page_fill(p++, b[i]); - - boot_page_write(page); - boot_spm_busy_wait(); - boot_rww_enable (); -} - -void StartSketch(); -int USBGetChar(); -#define getch USBGetChar - -#define HW_VER 0x02 -#define SW_MAJOR 0x01 -#define SW_MINOR 0x10 - -#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' - -extern const uint8_t _readSize[] PROGMEM; -const uint8_t _readSize[] = -{ - STK_GET_PARAMETER, 1, - STK_SET_DEVICE, 20, - STK_SET_DEVICE_EXT, 5, - STK_UNIVERSAL, 4, - STK_LOAD_ADDRESS, 2, - STK_PROG_PAGE, 3, - STK_READ_PAGE, 3, - 0,0 -}; - -extern const uint8_t _consts[] PROGMEM; -const uint8_t _consts[] = -{ - SIGNATURE_0, - SIGNATURE_1, - SIGNATURE_2, - HW_VER, // Hardware version - SW_MAJOR, // Software major version - SW_MINOR, // Software minor version - 0x03, // Unknown but seems to be required by avr studio 3.56 - 0x00, // -}; - - -void USBInit(void); -int main(void) __attribute__ ((naked)); - -// STK500v1 main loop, very similar to optiboot in protocol and implementation -int main() -{ - uint8_t MCUSR_state = MCUSR; // store the reason for the reset - MCUSR &= ~(1 << WDRF); // must clear the watchdog reset flag before disabling and reenabling WDT - wdt_disable(); - TX_LED_OFF(); - RX_LED_OFF(); - L_LED_OFF(); - if (MCUSR_state & (1< 2) - i = (i == 0x18) ? 3 : 4; // 0x80:HW_VER,0x81:SW_MAJOR,0x82:SW_MINOR,0x18:3 or 0 - pgm = _consts + i + 3; - send = 1; - } - - else if (STK_UNIVERSAL == cmd) - { - if (packet[0] == 0x30) - pgm = _consts + packet[2]; // read signature - send = 1; - } - - // Read signature bytes - else if (STK_READ_SIGN == cmd) - { - pgm = _consts; - send = 3; - } - - else if (STK_LOAD_ADDRESS == cmd) - { - address = *((uint16_t*)packet); // word addresses - address += address; - } - - else if (STK_PROG_PAGE == cmd) - { - Program(CDC_RX,address,packet[1]); - } - - else if (STK_READ_PAGE == cmd) - { - send = packet[1]; - pgm = (const uint8_t*)address; - address += send; // not sure of this is required - } - - // Check sync - if (getch() != ' ') - break; - Transfer(CDC_TX,&_inSync,1); - - // Send result - if (send) - Transfer(CDC_TX|TRANSFER_PGM,pgm,send); // All from pgm memory - - // Send ok - Transfer(CDC_TX|TRANSFER_RELEASE,&_ok,1); - - if (cmd == 'Q') - break; - } - _timeout = 500; // wait a moment before exiting the bootloader - may need to finish responding to 'Q' for example - _ejected = 1; - } -} - -// Nice breathing LED indicates we are in the firmware -uint16_t _pulse; -void LEDPulse() -{ - _pulse += 4; - uint8_t p = _pulse >> 9; - if (p > 63) - p = 127-p; - p += p; - if (((uint8_t)_pulse) > p) - L_LED_OFF(); - else - L_LED_ON(); -} - -void StartSketch() -{ - TX_LED_OFF(); // switch off the RX and TX LEDs before starting the user sketch - RX_LED_OFF(); - UDCON = 1; // Detach USB - UDIEN = 0; - asm volatile ( // Reset vector to run firmware - "clr r30\n" - "clr r31\n" - "ijmp\n" - ::); -} - -void Reset() -{ - wdt_enable(WDTO_15MS); // reset the microcontroller to reinitialize all IO and other registers - for (;;) - ; -} diff --git a/bootloaders/caterina/src/Platform.h b/bootloaders/caterina/src/Platform.h deleted file mode 100644 index 26c1114..0000000 --- a/bootloaders/caterina/src/Platform.h +++ /dev/null @@ -1,49 +0,0 @@ - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n)) -#define DISABLE_JTAG() MCUCR = (1 << JTD) | (1 << IVCE) | (0 << PUD); MCUCR = (1 << JTD) | (0 << IVSEL) | (0 << IVCE) | (0 << PUD); - -#define USB_PID_LEONARDO_BOOTLOADER 0x0034 -#define USB_PID_MICRO_BOOTLOADER 0x0035 -#define USB_VID 0x2341 // arduino LLC vid -#define USB_PID ARDUINO_MODEL_PID // passed in by Makefile - 0x0034 for Leonardo, 0x0035 for MIcro - -#define USB_SERIAL_STRING '0','0','0','0','0','0','0','0','1','7','0','1' - -#define OEM_NAME 'l','e','o','n','a','r','d','o' // 8 chars -#define BOARD_INIT() DDRC |= (1<<7); DDRB |= (1<<0); DDRD |= (1<<5); CPU_PRESCALE(0); DISABLE_JTAG(); -#define L_LED_OFF() PORTC &= ~(1<<7) -#define L_LED_ON() 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) - -#define TRANSFER_PGM 0x80 -#define TRANSFER_RELEASE 0x40 -#define TRANSFER_ZERO 0x20 - -void Transfer(uint8_t ep, const uint8_t* data, int len); -void Recv(uint8_t ep, uint8_t* dst, uint8_t len); -void Program(uint8_t ep, uint16_t page, uint8_t count); - -/* HID is not fully-supported in the bootloader - can be enabled - for testing, but note the descriptor report and other parts are - not complete */ -#define HID_ENABLED - -#include "USBCore.h" -#include "USBDesc.h" - - diff --git a/bootloaders/caterina/src/USBCore.cpp b/bootloaders/caterina/src/USBCore.cpp deleted file mode 100644 index 0eecacc..0000000 --- a/bootloaders/caterina/src/USBCore.cpp +++ /dev/null @@ -1,512 +0,0 @@ - - -/* Copyright (c) 2010, Peter Barrett -** -** Permission to use, copy, modify, and/or distribute this software for -** any purpose with or without fee is hereby granted, provided that the -** above copyright notice and this permission notice appear in all copies. -** -** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL -** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED -** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR -** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES -** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -** SOFTWARE. -*/ - -#include "Platform.h" - -#define CDC_TX CDC_ENDPOINT_IN -#define CDC_RX CDC_ENDPOINT_OUT - -#define EP_TYPE_CONTROL 0x00 -#define EP_TYPE_BULK_IN 0x81 -#define EP_TYPE_BULK_OUT 0x80 -#define EP_TYPE_INTERRUPT_IN 0xC1 -#define EP_TYPE_INTERRUPT_OUT 0xC0 -#define EP_TYPE_ISOCHRONOUS_IN 0x41 -#define EP_TYPE_ISOCHRONOUS_OUT 0x40 - -/** Pulse generation counters to keep track of the number of milliseconds remaining for each pulse type */ -#define TX_RX_LED_PULSE_MS 100 -uint8_t TxLEDPulse; /**< Milliseconds remaining for data Tx LED pulse */ -uint8_t RxLEDPulse; /**< Milliseconds remaining for data Rx LED pulse */ - -void Reset(); - -//================================================================== -//================================================================== - -typedef struct -{ - uint32_t dwDTERate; - uint8_t bCharFormat; - uint8_t bParityType; - uint8_t bDataBits; - uint8_t lineState; -} LineInfo; - -static volatile LineInfo _usbLineInfo = { 57600, 0x00, 0x00, 0x00, 0x00 }; - -//================================================================== -//================================================================== - -// 4 bytes of RAM -volatile uint8_t _usbConfiguration; -volatile uint8_t _ejected; -volatile uint16_t _timeout; - -static inline void WaitIN(void) -{ - while (!(UEINTX & (1<> 8) - -#define RAWHID_USAGE_PAGE 0xFFC0 -#define RAWHID_USAGE 0x0C00 -#define RAWHID_TX_SIZE 64 -#define RAWHID_RX_SIZE 64 - -const uint8_t _rawHID[] = -{ - // RAW HID - 0x06, LSB(RAWHID_USAGE_PAGE), MSB(RAWHID_USAGE_PAGE), // 30 - 0x0A, LSB(RAWHID_USAGE), MSB(RAWHID_USAGE), - - 0xA1, 0x01, // Collection 0x01 - 0x85, 0x03, // REPORT_ID (3) - 0x75, 0x08, // report size = 8 bits - 0x15, 0x00, // logical minimum = 0 - 0x26, 0xFF, 0x00, // logical maximum = 255 - - 0x95, 64, // report count TX - 0x09, 0x01, // usage - 0x81, 0x02, // Input (array) - - 0x95, 64, // report count RX - 0x09, 0x02, // usage - 0x91, 0x02, // Output (array) - 0xC0 // end collection -}; - -uint8_t _cdcComposite = 0; - -bool SendDescriptor() -{ - Setup& setup = _setup; - uint16_t desc_length = 0; - const uint8_t* desc_addr = 0; - - uint8_t t = setup.wValueH; - if (0x22 == t) - { -#ifdef HID_ENABLED - desc_addr = _rawHID; - desc_length = sizeof(desc_length); -#endif - } else if (USB_DEVICE_DESCRIPTOR_TYPE == t) - { - if (setup.wLength == 8) - _cdcComposite = 1; - desc_addr = _cdcComposite ? (const uint8_t*)&USB_DeviceDescriptorA : (const uint8_t*)&USB_DeviceDescriptor; - } - else if (USB_CONFIGURATION_DESCRIPTOR_TYPE == t) - { - desc_addr = (const uint8_t*)&USB_ConfigDescriptor; - desc_length = sizeof(USB_ConfigDescriptor); - } - else if (USB_STRING_DESCRIPTOR_TYPE == t) - { - if (setup.wValueL == 0) - desc_addr = (const uint8_t*)&STRING_LANGUAGE; - else if (setup.wValueL == IPRODUCT) - desc_addr = (const uint8_t*)&STRING_IPRODUCT; - else if (setup.wValueL == ISERIAL) - desc_addr = (const uint8_t*)&STRING_SERIAL; - else if (setup.wValueL == IMANUFACTURER) - desc_addr = (const uint8_t*)&STRING_IMANUFACTURER; - else - return false; - } else - return false; - - if (desc_length == 0) - desc_length = pgm_read_byte(desc_addr); - if (setup.wLength < desc_length) - desc_length = setup.wLength; - - // Send descriptor - // EP0 is 64 bytes long - // RWAL and FIFOCON don't work on EP0 - uint16_t n = 0; - do - { - if (!WaitForINOrOUT()) - return false; - Send8(pgm_read_byte(&desc_addr[n++])); - uint8_t clr = n & 0x3F; - if (!clr) - ClearIN(); // Fifo is full, release this packet - } while (n < desc_length); - return true; -} - -void USBSetupInterrupt() -{ - SetEP(0); - if (!ReceivedSetupInt()) - return; - - Setup& setup = _setup; // global saves ~30 bytes - Recv((uint8_t*)&setup,8); - ClearSetupInt(); - - if (setup.bmRequestType & DEVICETOHOST) - WaitIN(); - else - ClearIN(); - - bool ok = true; - uint8_t r = setup.bRequest; - if (SET_ADDRESS == r) - { - WaitIN(); - UDADDR = setup.wValueL | (1<> 8) & 0xFF) - -#define CDC_V1_10 0x0110 -#define CDC_COMMUNICATION_INTERFACE_CLASS 0x02 - -#define CDC_CALL_MANAGEMENT 0x01 -#define CDC_ABSTRACT_CONTROL_MODEL 0x02 -#define CDC_HEADER 0x00 -#define CDC_ABSTRACT_CONTROL_MANAGEMENT 0x02 -#define CDC_UNION 0x06 -#define CDC_CS_INTERFACE 0x24 -#define CDC_CS_ENDPOINT 0x25 -#define CDC_DATA_INTERFACE_CLASS 0x0A - - -// Device -typedef struct { - uint8_t len; // 18 - uint8_t dtype; // 1 USB_DEVICE_DESCRIPTOR_TYPE - uint16_t usbVersion; // 0x200 - uint8_t deviceClass; - uint8_t deviceSubClass; - uint8_t deviceProtocol; - uint8_t packetSize0; // Packet 0 - uint16_t idVendor; - uint16_t idProduct; - uint16_t deviceVersion; // 0x100 - uint8_t iManufacturer; - uint8_t iProduct; - uint8_t iSerialNumber; - uint8_t bNumConfigurations; -} DeviceDescriptor; - -// Config -typedef struct { - uint8_t len; // 9 - uint8_t dtype; // 2 - uint16_t clen; // total length - uint8_t numInterfaces; - uint8_t config; - uint8_t iconfig; - uint8_t attributes; - uint8_t maxPower; -} ConfigDescriptor; - -// String - -// Interface -typedef struct -{ - uint8_t len; // 9 - uint8_t dtype; // 4 - uint8_t number; - uint8_t alternate; - uint8_t numEndpoints; - uint8_t interfaceClass; - uint8_t interfaceSubClass; - uint8_t protocol; - uint8_t iInterface; -} InterfaceDescriptor; - -// Endpoint -typedef struct -{ - uint8_t len; // 7 - uint8_t dtype; // 5 - uint8_t addr; - uint8_t attr; - uint16_t packetSize; - uint8_t interval; -} EndpointDescriptor; - -// Interface Association Descriptor -// Used to bind 2 interfaces together in CDC compostite device -typedef struct -{ - uint8_t len; // 8 - uint8_t dtype; // 11 - uint8_t firstInterface; - uint8_t interfaceCount; - uint8_t functionClass; - uint8_t funtionSubClass; - uint8_t functionProtocol; - uint8_t iInterface; -} IADDescriptor; - -// CDC CS interface descriptor -typedef struct -{ - uint8_t len; // 5 - uint8_t dtype; // 0x24 - uint8_t subtype; - uint8_t d0; - uint8_t d1; -} CDCCSInterfaceDescriptor; - -typedef struct -{ - uint8_t len; // 4 - uint8_t dtype; // 0x24 - uint8_t subtype; - uint8_t d0; -} CDCCSInterfaceDescriptor4; - -typedef struct -{ - IADDescriptor iad; // Only needed on compound device - - // Control - InterfaceDescriptor cif; // - CDCCSInterfaceDescriptor header; - CDCCSInterfaceDescriptor callManagement; - CDCCSInterfaceDescriptor4 controlManagement; - CDCCSInterfaceDescriptor functionalDescriptor; - EndpointDescriptor cifin; - - // Data - InterfaceDescriptor dif; - EndpointDescriptor in; - EndpointDescriptor out; -} CDCDescriptor; - -typedef struct -{ - uint8_t len; // 9 - uint8_t dtype; // 0x21 - uint8_t addr; - uint8_t versionL; // 0x101 - uint8_t versionH; // 0x101 - uint8_t country; - uint8_t desctype; // 0x22 report - uint8_t descLenL; - uint8_t descLenH; -} HIDDescDescriptor; - -typedef struct -{ - InterfaceDescriptor hid; - HIDDescDescriptor desc; - EndpointDescriptor in; -} HIDDescriptor; - -#define D_DEVICE(_class,_subClass,_proto,_packetSize0,_vid,_pid,_version,_im,_ip,_is,_configs) \ - { 18, 1, 0x200, _class,_subClass,_proto,_packetSize0,_vid,_pid,_version,_im,_ip,_is,_configs } - -#define D_CONFIG(_totalLength,_interfaces) \ - { 9, 2, _totalLength,_interfaces, 1, 0, USB_CONFIG_BUS_POWERED, USB_CONFIG_POWER_MA(100) } - -#define D_INTERFACE(_n,_numEndpoints,_class,_subClass,_protocol) \ - { 9, 4, _n, 0, _numEndpoints, _class,_subClass, _protocol, 0 } - -#define D_ENDPOINT(_addr,_attr,_packetSize, _interval) \ - { 7, 5, _addr,_attr,_packetSize, _interval } - -#define D_IAD(_firstInterface, _count, _class, _subClass, _protocol) \ - { 8, 11, _firstInterface, _count, _class, _subClass, _protocol, 0 } - -#define D_HIDREPORT(_descriptorLength) \ - { 9, 0x21, 0x1, 0x1, 0, 1, 0x22, _descriptorLength, 0 } - -#define D_CDCCS(_subtype,_d0,_d1) { 5, 0x24, _subtype, _d0, _d1 } -#define D_CDCCS4(_subtype,_d0) { 4, 0x24, _subtype, _d0 } - -#endif \ No newline at end of file diff --git a/bootloaders/caterina/src/USBDesc.cpp b/bootloaders/caterina/src/USBDesc.cpp deleted file mode 100644 index a84f3be..0000000 --- a/bootloaders/caterina/src/USBDesc.cpp +++ /dev/null @@ -1,83 +0,0 @@ - - -/* Copyright (c) 2011, Peter Barrett -** -** Permission to use, copy, modify, and/or distribute this software for -** any purpose with or without fee is hereby granted, provided that the -** above copyright notice and this permission notice appear in all copies. -** -** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL -** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED -** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR -** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES -** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -** SOFTWARE. -*/ - -#include "Platform.h" - -//==================================================================================================== -//==================================================================================================== -// Actual device descriptors - -const uint16_t STRING_LANGUAGE[2] = { - (3<<8) | (2+2), - 0x0409 // English -}; - -const uint16_t STRING_SERIAL[13] = { - (3<<8) | (2+2*12), - USB_SERIAL_STRING -}; - -const uint16_t STRING_IPRODUCT[28] = { - (3<<8) | (2+2*27), -#if USB_PID == USB_PID_LEONARDO_BOOTLOADER - 'A','r','d','u','i','n','o',' ','L','e','o','n','a','r','d','o',' ','b','o','o','t','l','o','a','d','e','r' -#elif USB_PID == USB_PID_MICRO_BOOTLOADER - 'A','r','d','u','i','n','o',' ','M','i','c','r','o',' ','b','o','o','t','l','o','a','d','e','r',' ',' ',' ' -#endif -}; - -const uint16_t STRING_IMANUFACTURER[12] = { - (3<<8) | (2+2*11), - 'A','r','d','u','i','n','o',' ','L','L','C' -}; - -DeviceDescriptor USB_DeviceDescriptorA = D_DEVICE(0X02,0X00,0X00,64,USB_VID,USB_PID,0x100,0,IPRODUCT,ISERIAL,1); -DeviceDescriptor USB_DeviceDescriptor = D_DEVICE(0x00,0x00,0x00,64,USB_VID,USB_PID,0x100,0,IPRODUCT,ISERIAL,1); - -Config USB_ConfigDescriptor = -{ - D_CONFIG(sizeof(Config),INTERFACE_COUNT), - - // CDC - { - D_IAD(0,2,CDC_COMMUNICATION_INTERFACE_CLASS,CDC_ABSTRACT_CONTROL_MODEL,1), - - // CDC communication interface - D_INTERFACE(CDC_ACM_INTERFACE,1,CDC_COMMUNICATION_INTERFACE_CLASS,CDC_ABSTRACT_CONTROL_MODEL,0), - D_CDCCS(CDC_HEADER,0x10,0x01), // Header (1.10 bcd) - D_CDCCS(CDC_CALL_MANAGEMENT,1,1), // Device handles call management - D_CDCCS4(CDC_ABSTRACT_CONTROL_MANAGEMENT,2), // SET_LINE_CODING, GET_LINE_CODING, SET_CONTROL_LINE_STATE supported - D_CDCCS(CDC_UNION,CDC_ACM_INTERFACE,CDC_DATA_INTERFACE), // Communication interface is master, data interface is slave 0 - D_ENDPOINT(USB_ENDPOINT_IN (CDC_ENDPOINT_ACM),USB_ENDPOINT_TYPE_INTERRUPT,0x10,0x40), - - // CDC data interface - D_INTERFACE(CDC_DATA_INTERFACE,2,CDC_DATA_INTERFACE_CLASS,0,0), - D_ENDPOINT(USB_ENDPOINT_OUT(CDC_ENDPOINT_OUT),USB_ENDPOINT_TYPE_BULK,0x40,0), - D_ENDPOINT(USB_ENDPOINT_IN (CDC_ENDPOINT_IN ),USB_ENDPOINT_TYPE_BULK,0x40,0) - }, - -#ifdef HID_ENABLED - // HID - { - D_INTERFACE(HID_INTERFACE,1,3,0,0), - D_HIDREPORT(30), - D_ENDPOINT(USB_ENDPOINT_IN (HID_ENDPOINT_INT),USB_ENDPOINT_TYPE_INTERRUPT,0x40,0x40) - } -#endif -}; - diff --git a/bootloaders/caterina/src/USBDesc.h b/bootloaders/caterina/src/USBDesc.h deleted file mode 100644 index fa962e9..0000000 --- a/bootloaders/caterina/src/USBDesc.h +++ /dev/null @@ -1,60 +0,0 @@ - - -/* Copyright (c) 2011, Peter Barrett -** -** Permission to use, copy, modify, and/or distribute this software for -** any purpose with or without fee is hereby granted, provided that the -** above copyright notice and this permission notice appear in all copies. -** -** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL -** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED -** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR -** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES -** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -** SOFTWARE. -*/ - -#ifndef HID_ENABLED // HID is NOT enabled - #define CDC_ACM_INTERFACE 0 // CDC ACM - #define CDC_DATA_INTERFACE 1 // CDC Data - #define CDC_ENDPOINT_ACM 1 - #define CDC_ENDPOINT_OUT 2 - #define CDC_ENDPOINT_IN 3 - #define INTERFACE_COUNT 2 // 2 for CDC -#else // HID is enabled - #define CDC_ACM_INTERFACE 0 // CDC ACM - #define CDC_DATA_INTERFACE 1 // CDC Data - #define CDC_ENDPOINT_ACM 1 - #define CDC_ENDPOINT_OUT 2 - #define CDC_ENDPOINT_IN 3 - #define HID_INTERFACE 2 // HID Interface - #define HID_ENDPOINT_INT 4 - #define INTERFACE_COUNT 3 // 2 for CDC + 1 for hid -#endif - -typedef struct -{ - ConfigDescriptor config; - CDCDescriptor cdc; -#ifdef HID_ENABLED - HIDDescriptor hid; -#endif -} Config; - -extern Config USB_ConfigDescriptor PROGMEM; -extern DeviceDescriptor USB_DeviceDescriptor PROGMEM; -extern DeviceDescriptor USB_DeviceDescriptorA PROGMEM; - -extern const uint16_t STRING_LANGUAGE[2] PROGMEM; -extern const uint16_t STRING_IPRODUCT[28] PROGMEM; -extern const uint16_t STRING_IMANUFACTURER[12] PROGMEM; -extern const uint16_t STRING_SERIAL[13] PROGMEM; - -#define IMANUFACTURER 1 -#define IPRODUCT 2 -#define ISERIAL 3 - -#define CDC_TX CDC_ENDPOINT_IN -#define CDC_RX CDC_ENDPOINT_OUT \ No newline at end of file -- cgit v1.2.3-18-g5258 From 75da79ad7602d1a73e46155a5630f41d91f9bd83 Mon Sep 17 00:00:00 2001 From: Zach Eveland Date: Thu, 8 Mar 2012 14:20:12 -0500 Subject: give Leonardo bootloader 250 ms to finish housekeeping before leaving self-programming mode Earlier approach had bootloader end as soon as it was told to. On Linux this caused problems with avrdude because the microcontroller never had a chance to send an acknowledgement. --- bootloaders/caterina/Caterina.c | 11 +- bootloaders/caterina/Caterina.hex | 266 +++++++++++++++++++------------------- 2 files changed, 142 insertions(+), 135 deletions(-) (limited to 'bootloaders/caterina') diff --git a/bootloaders/caterina/Caterina.c b/bootloaders/caterina/Caterina.c index c8e82a9..2b50636 100755 --- a/bootloaders/caterina/Caterina.c +++ b/bootloaders/caterina/Caterina.c @@ -62,6 +62,7 @@ uint16_t TxLEDPulse = 0; // time remaining for Tx LED pulse uint16_t RxLEDPulse = 0; // time remaining for Rx LED pulse /* Bootloader timeout timer */ +#define TIMEOUT_PERIOD 8000 uint16_t Timeout = 0; uint16_t bootKey = 0x7777; @@ -133,12 +134,14 @@ int main(void) /* 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 > 8000) + if (Timeout > TIMEOUT_PERIOD) RunBootloader = false; LEDPulse(); @@ -475,7 +478,11 @@ void CDC_Task(void) if (Command == 'E') { - RunBootloader = false; + /* 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 - 250; // Send confirmation byte back to the host WriteNextResponseByte('\r'); diff --git a/bootloaders/caterina/Caterina.hex b/bootloaders/caterina/Caterina.hex index 98cf01a..0975ace 100644 --- a/bootloaders/caterina/Caterina.hex +++ b/bootloaders/caterina/Caterina.hex @@ -1,6 +1,6 @@ :1070000055C000006EC000006CC000006AC00000E7 :1070100068C0000066C0000064C0000062C00000DC -:1070200060C000005EC00000ECC400005AC0000058 +:1070200060C000005EC00000F0C400005AC0000054 :1070300058C0000056C0000054C0000052C00000FC :1070400050C0000078C000004CC000004AC00000E2 :1070500048C0000046C0000044C0000042C000001C @@ -9,10 +9,10 @@ :1070800030C000002EC000002CC000002AC000004C :1070900028C0000026C0000024C0000022C000005C :1070A00020C000001EC000001CC0000011241FBE34 -:1070B000CFEFDAE0DEBFCDBF11E0A0E0B1E0E6E265 +:1070B000CFEFDAE0DEBFCDBF11E0A0E0B1E0EEE25D :1070C000FFE702C005900D92A83AB107D9F711E089 :1070D000A8EAB1E001C01D92AE3BB107E1F78ED343 -:1070E00020C78ECFF89410926F00109281001092FA +:1070E00024C78ECFF89410926F00109281001092F6 :1070F00085001092840081E085BF15BE47985D9A97 :10710000289A0C94000008952091B2013091B301A7 :107110002F5F3F4F3093B3012093B201932F37FF7E @@ -66,7 +66,7 @@ :10741000FF29E4918E2FEBDEDD2081F082E090E009 :10742000A0E0B0E0E80EF91E0A1F1B1FE092AE01BB :10743000F092AF010093B0011093B101DC2418C0A9 -:10744000D801C701B695A7959795879554D5CFDEF6 +:10744000D801C701B695A7959795879558D5CFDEF2 :1074500082E090E0A0E0B0E0E80EF91E0A1F1B1FDA :10746000E092AE01F092AF010093B0011093B10130 :107470002197209709F0BECF7DC08090AE019090FB @@ -80,7 +80,7 @@ :1074F0000093B0011093B10102C061DE582E7424D4 :1075000023C0E090AE01F090AF010091B001109166 :10751000B10116950795F794E79451DE682FC701DE -:10752000F2D48091AE019091AF01A091B001B091E1 +:10752000F6D48091AE019091AF01A091B001B091DD :10753000B1010296A11DB11D8093AE019093AF01E0 :10754000A093B001B093B101219704C055247724D2 :1075500044244394209709F0A5CF96E4691641F49A @@ -97,12 +97,12 @@ :107600003DCE823551F4E091AE01F091AF0105918C :107610001491812FECDD802F4CC0843421F5E09053 :10762000AE01F090AF010091B0011091B10116953B -:107630000795F794E794C3DD682FC70164D4809160 +:107630000795F794E794C3DD682FC70168D480915C :10764000AE019091AF01A091B001B091B10102964D :10765000A11DB11D8093AE019093AF01A093B00125 :10766000B093B1010BCE843609F5E090AE01F090F5 :10767000AF010091B0011091B101D801C701B695D9 -:10768000A7959795879537D4B2DD82E090E0A0E08A +:10768000A795979587953BD4B2DD82E090E0A0E086 :10769000B0E0E80EF91E0A1F1B1FE092AE01F09247 :1076A000AF010093B0011093B10104C08B3111F010 :1076B0008FE39DDD83E08093E9009091E800809165 @@ -115,142 +115,142 @@ :107720006F905F904F9008959091B601892F8F7759 :10773000813249F58091B7018032A1F0813219F58B :10774000913A09F58091E800877F8093E8008EE008 -:1077500091E067E070E006D28091E8008B7780933B +:1077500091E067E070E00AD28091E8008B77809337 :10776000E8000895913279F48091E800877F809352 -:10777000E8008EE091E067E070E058D28091E80088 -:107780008E778093E800089582E061EC42E0B0D00B -:1077900083E061E842E1ACD084E060E842E1A8C067 +:10777000E8008EE091E067E070E05CD28091E80084 +:107780008E778093E800089582E061EC42E0B4D007 +:1077900083E061E842E1B0D084E060E842E1ACC05F :1077A00084B7877F84BF88E10FB6F8948093600028 :1077B000109260000FBE20E880E090E00FB6F894D1 :1077C00020936100809361000FBE81E085BF92E04D :1077D00095BF3F9A209A559AE1E6F0E02083108207 :1077E00047985D9A289A109289008AEF80938800C2 -:1077F00090936F0083E080938100EBC01F9388E13A +:1077F00090936F0083E080938100EFC01F9388E136 :107800000FB6F89480936000109260000FBE84B7AA :1078100014BE182F10FF08C0E0E0F0E085919491AD :107820008F5F9F4F09F05EDC2091000A3091010AC2 :107830001092010A1092000A13FF0FC080910901F3 :1078400090910A012817390741F0E0E0F0E08591B6 -:1078500094918F5F9F4F09F045DCA2DF78940CC0B4 -:10786000E5DC37D38091AC019091AD0181549F410B -:1078700010F010920D0148DC80910D01882381F7F2 -:107880008091E00081608093E0002CDC80E090E05B -:107890001F910895FA01923049F0933061F09130D0 -:1078A000F9F485E191E022E130E01EC087E291E049 -:1078B0002EE330E019C0882329F485E691E024E026 -:1078C00030E012C0813029F489E691E022E230E014 -:1078D0000BC0823029F48DE891E028E130E004C04B -:1078E00080E090E020E030E091838083C90108953A -:1078F0008093E9008091EB0081608093EB0010920F -:10790000ED006093EC004093ED008091EE00881F45 -:107910008827881F08958091B60188238CF403C0BE -:107920008EB38823B1F08091E80082FFF9CF809177 -:10793000E8008B778093E80008958EB3882349F0A0 -:107940008091E80080FFF9CF8091E8008E778093E6 -:10795000E8000895EF92FF920F931F9345D04CD00B -:1079600008ED10E0F80180818F7780838081806846 -:10797000808380818F7D808319BC1EBA1092B401F0 -:1079800080EEE82EF12CF70180818B7F8083F80157 -:1079900080818160808380E060E042E0A9DFE1EEE9 -:1079A000F0E080818E7F8083E2EEF0E08081816074 -:1079B0008083808188608083F70180818E7F8083CF -:1079C000F8018081806180831F910F91FF90EF907B -:1079D0000895E7EDF0E08081816080838AE482BFD2 -:1079E00081E08093B501B6CFE8EDF0E080818E7F35 -:1079F00080831092E20008951092DA001092E10064 -:107A000008951F920F920FB60F9211242F933F9358 -:107A10004F935F936F937F938F939F93AF93BF9396 -:107A2000EF93FF938091DA0080FF1BC08091D80014 -:107A300080FF17C08091DA008E7F8093DA008091FA -:107A4000D90080FF0BC080E189BD82E189BD09B406 -:107A500000FEFDCF81E08EBB3BD203C019BC1EBA35 -:107A600037D28091E10080FF17C08091E20080FF53 -:107A700013C08091E2008E7F8093E2008091E2004B -:107A800080618093E2008091D80080628093D8006A -:107A900019BC85E08EBB1CD28091E10084FF2CC014 -:107AA0008091E20084FF28C080E189BD82E189BD28 -:107AB00009B400FEFDCF8091D8008F7D8093D8005F -:107AC0008091E1008F7E8093E1008091E2008F7EC3 -:107AD0008093E2008091E20081608093E2008091D7 -:107AE000B401882331F48091E30087FD02C081E076 -:107AF00001C084E08EBBECD18091E10083FF21C006 -:107B00008091E20083FF1DC08091E100877F809318 -:107B1000E10082E08EBB1092B4018091E1008E7F83 -:107B20008093E1008091E2008E7F8093E20080915B -:107B3000E20080618093E20080E060E042E0D8DE15 -:107B4000C7D1FF91EF91BF91AF919F918F917F919D -:107B50006F915F914F913F912F910F900FBE0F90BA -:107B60001F9018959C014091BC015091BD01461792 -:107B7000570718F4F90190E044C06115710511F040 -:107B8000AB01F8CF8091E8008E778093E80040E069 -:107B900050E0F0CF8EB3882309F444C0853009F457 -:107BA00043C08091E80083FF02C081E00895809186 -:107BB000E80082FD31C08091E80080FF22C0809102 -:107BC000F3009091F200782F60E0292F30E0262B0F -:107BD000372B07C081918093F100415050402F5FB7 -:107BE0003F4F4115510519F02830310598F390E0C9 -:107BF0002830310509F491E08091E8008E77809378 -:107C0000E8004115510531F6992321F605C08EB3E0 -:107C1000882341F0853041F08091E80082FFF7CF62 -:107C200080E0089582E0089583E008959C01611545 -:107C3000710529F48091E8008B778093E800F901C1 -:107C400026C08EB3882391F1853091F18091E800B0 -:107C500083FF02C081E008958091E80082FFF1CFA8 -:107C600006C08091F10081936150704059F02091DD -:107C7000F3008091F200322F20E090E0822B932BD2 -:107C8000892B79F78091E8008B778093E800611564 -:107C90007105B9F605C08EB3882341F0853041F0F7 -:107CA0008091E80080FFF7CF80E0089582E008959A -:107CB00083E008950F931F93DF93CF9300D0CDB748 -:107CC000DEB7E6EBF1E08091F100819381E0EE3BDD -:107CD000F807C9F729DD8091E80083FFE4C08091AF -:107CE000B6019091B701953009F46DC0963040F41B -:107CF000913081F1913070F0933009F0D4C02AC0F6 -:107D0000983009F4A3C0993009F4B2C0963009F054 -:107D1000CAC07CC0803809F4C6C0823809F0C3C02C -:107D20008091BA0187708093E9008091EB001092F6 -:107D3000E9002091E800277F2093E80090E025E00B -:107D4000969587952A95E1F781708093F1001092BE -:107D5000F10087C0882319F0823009F0A4C08F7128 -:107D6000823009F0A0C08091B801882331F52091BC -:107D7000BA01277009F497C02093E9008091EB00C5 -:107D800080FF1BC0933021F48091EB00806213C010 -:107D90008091EB0080618093EB0081E090E002C075 -:107DA000880F991F2A95E2F78093EA001092EA0063 -:107DB0008091EB0088608093EB001092E900809145 -:107DC000E800877F51C0882309F06DC01091B80189 -:107DD0001F770FB7F8948091E800877F8093E800C1 -:107DE0009ADD8091E80080FFFCCF8091E3008078ED -:107DF000812B8093E30080688093E300112311F4CA -:107E000082E001C083E08EBB0FBF4DC0805882303E -:107E100008F049C08091B8019091B9016091BA0110 -:107E2000AE014F5F5F4F36DDBC01009709F43BC0E8 -:107E30008091E800877F8093E80089819A8192DEB3 -:107E40008091E8008B778093E8002DC0803859F549 -:107E50008091E800877F8093E8008091B40180934F -:107E6000F1008091E8008E778093E80054DD1BC01C -:107E70008823C9F49091B8019230A8F48091E80069 -:107E8000877F8093E8009093B40145DD8091B40131 -:107E9000882331F48091E30087FD02C081E001C0B6 -:107EA00084E08EBB71DC8091E80083FF0AC0809182 -:107EB000EB0080628093EB008091E800877F8093E5 -:107EC000E8000F900F90CF91DF911F910F910895CF -:107ED00008951F938EB3882361F01091E9001092EA -:107EE000E9008091E80083FF01C0E4DE1770109381 -:107EF000E9001F910895F999FECF92BD81BDF89ACE -:107F0000992780B50895262FF999FECF1FBA92BD03 -:107F100081BD20BD0FB6F894FA9AF99A0FBE01966A -:067F20000895F894FFCF64 -:107F26004341544552494E41007777000A0100000B -:107F360000000000081201100102000008412301A0 -:107F46000701000201000109023E00020100803221 -:107F560009040000010202010005240010010424A6 -:107F660002040524060001070582030800FF090430 -:107F76000100020A000000070504021000010705BF -:107F86008302100001040309042203410072006405 -:107F960000750069006E006F0020004C0065006FE0 -:107FA600006E006100720064006F0000001803415B -:107FB6000072006400750069006E006F0020004CBE -:087FC600004C00430000000024 +:1078500094918F5F9F4F09F045DCA2DF78941092DE +:10786000AD011092AC010CC0E1DC37D38091AC01CA +:107870009091AD0181549F4110F010920D0144DCB4 +:1078800080910D01882381F78091E00081608093D1 +:10789000E00028DC80E090E01F910895FA0192302A +:1078A00049F0933061F09130F9F485E191E022E103 +:1078B00030E01EC087E291E02EE330E019C088235B +:1078C00029F485E691E024E030E012C0813029F40B +:1078D00089E691E022E230E00BC0823029F48DE8A5 +:1078E00091E028E130E004C080E090E020E030E06A +:1078F00091838083C90108958093E9008091EB0012 +:1079000081608093EB001092ED006093EC00409357 +:10791000ED008091EE00881F8827881F08958091D0 +:10792000B60188238CF403C08EB38823B1F0809114 +:10793000E80082FFF9CF8091E8008B778093E80020 +:1079400008958EB3882349F08091E80080FFF9CF35 +:107950008091E8008E778093E8000895EF92FF927F +:107960000F931F9345D04CD008ED10E0F8018081B3 +:107970008F77808380818068808380818F7D808302 +:1079800019BC1EBA1092B40180EEE82EF12CF7015A +:1079900080818B7F8083F80180818160808380E09B +:1079A00060E042E0A9DFE1EEF0E080818E7F80833D +:1079B000E2EEF0E080818160808380818860808356 +:1079C000F70180818E7F8083F801808180618083D0 +:1079D0001F910F91FF90EF900895E7EDF0E0808107 +:1079E000816080838AE482BF81E08093B501B6CF55 +:1079F000E8EDF0E080818E7F80831092E2000895B0 +:107A00001092DA001092E10008951F920F920FB6C3 +:107A10000F9211242F933F934F935F936F937F9314 +:107A20008F939F93AF93BF93EF93FF938091DA006F +:107A300080FF1BC08091D80080FF17C08091DA00C2 +:107A40008E7F8093DA008091D90080FF0BC080E1A7 +:107A500089BD82E189BD09B400FEFDCF81E08EBB06 +:107A60003BD203C019BC1EBA37D28091E10080FF1F +:107A700017C08091E20080FF13C08091E2008E7FEA +:107A80008093E2008091E20080618093E200809127 +:107A9000D80080628093D80019BC85E08EBB1CD2D0 +:107AA0008091E10084FF2CC08091E20084FF28C017 +:107AB00080E189BD82E189BD09B400FEFDCF8091DE +:107AC000D8008F7D8093D8008091E1008F7E8093D5 +:107AD000E1008091E2008F7E8093E2008091E200DD +:107AE00081608093E2008091B401882331F4809119 +:107AF000E30087FD02C081E001C084E08EBBECD1D1 +:107B00008091E10083FF21C08091E20083FF1DC0CE +:107B10008091E100877F8093E10082E08EBB10922C +:107B2000B4018091E1008E7F8093E1008091E200BA +:107B30008E7F8093E2008091E20080618093E2007A +:107B400080E060E042E0D8DEC7D1FF91EF91BF91C5 +:107B5000AF919F918F917F916F915F914F913F91E5 +:107B60002F910F900FBE0F901F9018959C01409180 +:107B7000BC015091BD014617570718F4F90190E078 +:107B800044C06115710511F0AB01F8CF8091E80098 +:107B90008E778093E80040E050E0F0CF8EB38823EA +:107BA00009F444C0853009F443C08091E80083FFA4 +:107BB00002C081E008958091E80082FD31C080918B +:107BC000E80080FF22C08091F3009091F200782FAE +:107BD00060E0292F30E0262B372B07C0819180935E +:107BE000F100415050402F5F3F4F4115510519F0B2 +:107BF0002830310598F390E02830310509F491E000 +:107C00008091E8008E778093E8004115510531F6A8 +:107C1000992321F605C08EB3882341F0853041F0C9 +:107C20008091E80082FFF7CF80E0089582E0089518 +:107C300083E008959C016115710529F48091E800A5 +:107C40008B778093E800F90126C08EB3882391F1E9 +:107C5000853091F18091E80083FF02C081E00895B2 +:107C60008091E80082FFF1CF06C08091F1008193FE +:107C70006150704059F02091F3008091F200322F52 +:107C800020E090E0822B932B892B79F78091E800FC +:107C90008B778093E80061157105B9F605C08EB346 +:107CA000882341F0853041F08091E80080FFF7CFD4 +:107CB00080E0089582E0089583E008950F931F9374 +:107CC000DF93CF9300D0CDB7DEB7E6EBF1E0809144 +:107CD000F100819381E0EE3BF807C9F725DD809143 +:107CE000E80083FFE4C08091B6019091B701953020 +:107CF00009F46DC0963040F4913081F1913070F00C +:107D0000933009F0D4C02AC0983009F4A3C0993048 +:107D100009F4B2C0963009F0CAC07CC0803809F4BA +:107D2000C6C0823809F0C3C08091BA0187708093C1 +:107D3000E9008091EB001092E9002091E800277F94 +:107D40002093E80090E025E0969587952A95E1F745 +:107D500081708093F1001092F10087C0882319F0A0 +:107D6000823009F0A4C08F71823009F0A0C08091E8 +:107D7000B801882331F52091BA01277009F497C022 +:107D80002093E9008091EB0080FF1BC0933021F429 +:107D90008091EB00806213C08091EB008061809342 +:107DA000EB0081E090E002C0880F991F2A95E2F76E +:107DB0008093EA001092EA008091EB008860809343 +:107DC000EB001092E9008091E800877F51C0882382 +:107DD00009F06DC01091B8011F770FB7F89480912A +:107DE000E800877F8093E8009ADD8091E80080FFBB +:107DF000FCCF8091E3008078812B8093E300806842 +:107E00008093E300112311F482E001C083E08EBB74 +:107E10000FBF4DC08058823008F049C08091B80132 +:107E20009091B9016091BA01AE014F5F5F4F36DDAD +:107E3000BC01009709F43BC08091E800877F8093E4 +:107E4000E80089819A8192DE8091E8008B778093A7 +:107E5000E8002DC0803859F58091E800877F809335 +:107E6000E8008091B4018093F1008091E8008E7762 +:107E70008093E80054DD1BC08823C9F49091B801B9 +:107E80009230A8F48091E800877F8093E800909377 +:107E9000B40145DD8091B401882331F48091E30081 +:107EA00087FD02C081E001C084E08EBB6DDC809163 +:107EB000E80083FF0AC08091EB0080628093EB00B2 +:107EC0008091E800877F8093E8000F900F90CF911A +:107ED000DF911F910F91089508951F938EB388230A +:107EE00061F01091E9001092E9008091E80083FFB1 +:107EF00001C0E4DE17701093E9001F910895F9990D +:107F0000FECF92BD81BDF89A992780B50895262F9E +:107F1000F999FECF1FBA92BD81BD20BD0FB6F8946E +:0E7F2000FA9AF99A0FBE01960895F894FFCFD1 +:107F2E004341544552494E41007777000A01000003 +:107F3E000000000008120110010200000841230198 +:107F4E000701000201000109023E00020100803219 +:107F5E00090400000102020100052400100104249E +:107F6E0002040524060001070582030800FF090428 +:107F7E000100020A000000070504021000010705B7 +:107F8E0083021000010403090422034100720064FD +:107F9E0000750069006E006F0020004C0065006FD8 +:107FAE00006E006100720064006F00000018034153 +:107FBE000072006400750069006E006F0020004CB6 +:087FCE00004C0043000000001C :040000030000700089 :00000001FF -- cgit v1.2.3-18-g5258 From cd0db83a6646717ee7fcbb5b4383bc8eac988d69 Mon Sep 17 00:00:00 2001 From: Zach Eveland Date: Wed, 14 Mar 2012 17:07:14 -0400 Subject: changed Caterina timeout after self-programming to 500 ms (from 250 ms) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit attempt to fix bug reported by Dave Mellis: "avrdude: ser_close(): can’t reset attributes for device: Invalid argument" is thrown after attempting an upload in the IDE (though the upload seems to be successful) --- bootloaders/caterina/Caterina.c | 2 +- bootloaders/caterina/Caterina.hex | 443 +++++++++++++++++++------------------- 2 files changed, 223 insertions(+), 222 deletions(-) (limited to 'bootloaders/caterina') diff --git a/bootloaders/caterina/Caterina.c b/bootloaders/caterina/Caterina.c index 2b50636..0565b22 100755 --- a/bootloaders/caterina/Caterina.c +++ b/bootloaders/caterina/Caterina.c @@ -482,7 +482,7 @@ void CDC_Task(void) * leaving just a few hundred milliseconds so the * bootloder has time to respond and service any * subsequent requests */ - Timeout = TIMEOUT_PERIOD - 250; + Timeout = TIMEOUT_PERIOD - 500; // Send confirmation byte back to the host WriteNextResponseByte('\r'); diff --git a/bootloaders/caterina/Caterina.hex b/bootloaders/caterina/Caterina.hex index 0975ace..d66992c 100644 --- a/bootloaders/caterina/Caterina.hex +++ b/bootloaders/caterina/Caterina.hex @@ -1,6 +1,6 @@ :1070000055C000006EC000006CC000006AC00000E7 :1070100068C0000066C0000064C0000062C00000DC -:1070200060C000005EC00000F0C400005AC0000054 +:1070200060C000005EC00000F4C400005AC0000050 :1070300058C0000056C0000054C0000052C00000FC :1070400050C0000078C000004CC000004AC00000E2 :1070500048C0000046C0000044C0000042C000001C @@ -9,10 +9,10 @@ :1070800030C000002EC000002CC000002AC000004C :1070900028C0000026C0000024C0000022C000005C :1070A00020C000001EC000001CC0000011241FBE34 -:1070B000CFEFDAE0DEBFCDBF11E0A0E0B1E0EEE25D +:1070B000CFEFDAE0DEBFCDBF11E0A0E0B1E0E6E364 :1070C000FFE702C005900D92A83AB107D9F711E089 -:1070D000A8EAB1E001C01D92AE3BB107E1F78ED343 -:1070E00024C78ECFF89410926F00109281001092F6 +:1070D000A8EAB1E001C01D92AE3BB107E1F792D33F +:1070E00028C78ECFF89410926F00109281001092F2 :1070F00085001092840081E085BF15BE47985D9A97 :10710000289A0C94000008952091B2013091B301A7 :107110002F5F3F4F3093B3012093B201932F37FF7E @@ -35,222 +35,223 @@ :1072200090E09093A9018093A80108954F925F92F6 :107230006F927F928F929F92AF92BF92CF92DF9286 :10724000EF92FF920F931F93CF93DF9384E080938D -:10725000E9008091E80082FF56C2289884E690E019 -:107260009093AB018093AA01AADF182F853419F4FB -:1072700010920D0103C0843519F4A1DF8DE019C20D -:107280008C34E1F38035D1F3843721F484E4AFDF2B -:1072900080E00FC2813611F489E50BC28134B1F46C -:1072A0008EDF182F8CDF90E0880F991FAA2797FD9B -:1072B000A095BA2F312F330F20E0442737FD40959A -:1072C000542F822B932BA42BB52BC4C1803711F4E0 -:1072D00083E5EFC1833549F4C0E0D1E0899187DFD0 -:1072E00021E0C730D207D1F7E5C1863521F481E32B -:1072F0007EDF80E3DEC1833731F487E878DF85E91C -:1073000076DF8EE1D6C18536B9F4E0E0F0E093E0B7 -:1073100085E090935700E89507B600FCFDCF809379 -:107320005700E89507B600FCFDCFE058FF4FA0E7F7 -:10733000E030FA0771F7A2CF8C3651F440DF809528 -:1073400099E0E1E0F0E0082E90935700E89596CFA1 -:10735000823739F4E1E0F0E089E0809357008491CE -:10736000A8C1863439F4E0E0F0E089E0809357006A -:1073700084919FC18E3439F4E3E0F0E089E080939A -:107380005700849196C1813539F4E2E0F0E089E05C -:107390008093570084918DC1823631F489E527DFCF -:1073A00080E025DF80E885C1823419F0873609F056 -:1073B000E5C01092AD011092AC0101DF082FFFDE95 -:1073C000F82EFDDE682E8554823008F071C1902FB2 -:1073D00080E0CF2DD0E0C82BD92B10926F0017364C -:1073E00009F04BC081E180935700E895DD24CC245F -:1073F000C3943FC0E090AE01F090AF010091B001A6 -:107400001091B101B6E46B16D9F4ED2DF0E0EE2940 -:10741000FF29E4918E2FEBDEDD2081F082E090E009 -:10742000A0E0B0E0E80EF91E0A1F1B1FE092AE01BB -:10743000F092AF010093B0011093B101DC2418C0A9 -:10744000D801C701B695A7959795879558D5CFDEF2 -:1074500082E090E0A0E0B0E0E80EF91E0A1F1B1FDA -:10746000E092AE01F092AF010093B0011093B10130 -:107470002197209709F0BECF7DC08090AE019090FB -:10748000AF01A090B001B090B10196E4691609F087 -:107490005DC083E0F40180935700E89507B600FCD7 -:1074A000FDCF54C0F6E46F1661F5772031F1E0901E -:1074B000AE01F090AF010091B0011091B1017FDEFB -:1074C000D82ECC24852D90E08C299D29F7010C0124 -:1074D00040925700E895112482E090E0A0E0B0E0EF -:1074E000E80EF91E0A1F1B1FE092AE01F092AF01D9 -:1074F0000093B0011093B10102C061DE582E7424D4 -:1075000023C0E090AE01F090AF010091B001109166 -:10751000B10116950795F794E79451DE682FC701DE -:10752000F6D48091AE019091AF01A091B001B091DD -:10753000B1010296A11DB11D8093AE019093AF01E0 -:10754000A093B001B093B101219704C055247724D2 -:1075500044244394209709F0A5CF96E4691641F49A -:1075600085E0F40180935700E89507B600FCFDCF55 -:107570008DE03DDE82E080936F009CC0833471F427 -:107580000091AE011091AF011ADE90E021E0F80108 -:107590000C0120935700E895112470CE833619F51D -:1075A000E090AE01F090AF010091B0011091B101F7 -:1075B00006DEF701E16090E021E00C012093570026 -:1075C000E895112482E090E0A0E0B0E0E80EF91E1A -:1075D0000A1F1B1FE092AE01F092AF010093B001B1 -:1075E0001093B1014BCE8D3661F4E091AE01F09174 -:1075F000AF0185E080935700E89507B600FCFDCF0A -:107600003DCE823551F4E091AE01F091AF0105918C -:107610001491812FECDD802F4CC0843421F5E09053 -:10762000AE01F090AF010091B0011091B10116953B -:107630000795F794E794C3DD682FC70168D480915C -:10764000AE019091AF01A091B001B091B10102964D -:10765000A11DB11D8093AE019093AF01A093B00125 -:10766000B093B1010BCE843609F5E090AE01F090F5 -:10767000AF010091B0011091B101D801C701B695D9 -:10768000A795979587953BD4B2DD82E090E0A0E086 -:10769000B0E0E80EF91E0A1F1B1FE092AE01F09247 -:1076A000AF010093B0011093B10104C08B3111F010 -:1076B0008FE39DDD83E08093E9009091E800809165 -:1076C000E8008E778093E80095FF04C010C08EB369 -:1076D0008823C9F08091E80080FFF9CF8091E8000D -:1076E0008E778093E80003C08EB3882361F0809189 -:1076F000E80080FFF9CF84E08093E9008091E80002 -:107700008B778093E800DF91CF911F910F91FF90CD -:10771000EF90DF90CF90BF90AF909F908F907F9031 -:107720006F905F904F9008959091B601892F8F7759 -:10773000813249F58091B7018032A1F0813219F58B -:10774000913A09F58091E800877F8093E8008EE008 -:1077500091E067E070E00AD28091E8008B77809337 -:10776000E8000895913279F48091E800877F809352 -:10777000E8008EE091E067E070E05CD28091E80084 -:107780008E778093E800089582E061EC42E0B4D007 -:1077900083E061E842E1B0D084E060E842E1ACC05F -:1077A00084B7877F84BF88E10FB6F8948093600028 -:1077B000109260000FBE20E880E090E00FB6F894D1 -:1077C00020936100809361000FBE81E085BF92E04D -:1077D00095BF3F9A209A559AE1E6F0E02083108207 -:1077E00047985D9A289A109289008AEF80938800C2 -:1077F00090936F0083E080938100EFC01F9388E136 -:107800000FB6F89480936000109260000FBE84B7AA -:1078100014BE182F10FF08C0E0E0F0E085919491AD -:107820008F5F9F4F09F05EDC2091000A3091010AC2 -:107830001092010A1092000A13FF0FC080910901F3 -:1078400090910A012817390741F0E0E0F0E08591B6 -:1078500094918F5F9F4F09F045DCA2DF78941092DE -:10786000AD011092AC010CC0E1DC37D38091AC01CA -:107870009091AD0181549F4110F010920D0144DCB4 -:1078800080910D01882381F78091E00081608093D1 -:10789000E00028DC80E090E01F910895FA0192302A -:1078A00049F0933061F09130F9F485E191E022E103 -:1078B00030E01EC087E291E02EE330E019C088235B -:1078C00029F485E691E024E030E012C0813029F40B -:1078D00089E691E022E230E00BC0823029F48DE8A5 -:1078E00091E028E130E004C080E090E020E030E06A -:1078F00091838083C90108958093E9008091EB0012 -:1079000081608093EB001092ED006093EC00409357 -:10791000ED008091EE00881F8827881F08958091D0 -:10792000B60188238CF403C08EB38823B1F0809114 -:10793000E80082FFF9CF8091E8008B778093E80020 -:1079400008958EB3882349F08091E80080FFF9CF35 -:107950008091E8008E778093E8000895EF92FF927F -:107960000F931F9345D04CD008ED10E0F8018081B3 -:107970008F77808380818068808380818F7D808302 -:1079800019BC1EBA1092B40180EEE82EF12CF7015A -:1079900080818B7F8083F80180818160808380E09B -:1079A00060E042E0A9DFE1EEF0E080818E7F80833D -:1079B000E2EEF0E080818160808380818860808356 -:1079C000F70180818E7F8083F801808180618083D0 -:1079D0001F910F91FF90EF900895E7EDF0E0808107 -:1079E000816080838AE482BF81E08093B501B6CF55 -:1079F000E8EDF0E080818E7F80831092E2000895B0 -:107A00001092DA001092E10008951F920F920FB6C3 -:107A10000F9211242F933F934F935F936F937F9314 -:107A20008F939F93AF93BF93EF93FF938091DA006F -:107A300080FF1BC08091D80080FF17C08091DA00C2 -:107A40008E7F8093DA008091D90080FF0BC080E1A7 -:107A500089BD82E189BD09B400FEFDCF81E08EBB06 -:107A60003BD203C019BC1EBA37D28091E10080FF1F -:107A700017C08091E20080FF13C08091E2008E7FEA -:107A80008093E2008091E20080618093E200809127 -:107A9000D80080628093D80019BC85E08EBB1CD2D0 -:107AA0008091E10084FF2CC08091E20084FF28C017 -:107AB00080E189BD82E189BD09B400FEFDCF8091DE -:107AC000D8008F7D8093D8008091E1008F7E8093D5 -:107AD000E1008091E2008F7E8093E2008091E200DD -:107AE00081608093E2008091B401882331F4809119 -:107AF000E30087FD02C081E001C084E08EBBECD1D1 -:107B00008091E10083FF21C08091E20083FF1DC0CE -:107B10008091E100877F8093E10082E08EBB10922C -:107B2000B4018091E1008E7F8093E1008091E200BA -:107B30008E7F8093E2008091E20080618093E2007A -:107B400080E060E042E0D8DEC7D1FF91EF91BF91C5 -:107B5000AF919F918F917F916F915F914F913F91E5 -:107B60002F910F900FBE0F901F9018959C01409180 -:107B7000BC015091BD014617570718F4F90190E078 -:107B800044C06115710511F0AB01F8CF8091E80098 -:107B90008E778093E80040E050E0F0CF8EB38823EA -:107BA00009F444C0853009F443C08091E80083FFA4 -:107BB00002C081E008958091E80082FD31C080918B -:107BC000E80080FF22C08091F3009091F200782FAE -:107BD00060E0292F30E0262B372B07C0819180935E -:107BE000F100415050402F5F3F4F4115510519F0B2 -:107BF0002830310598F390E02830310509F491E000 -:107C00008091E8008E778093E8004115510531F6A8 -:107C1000992321F605C08EB3882341F0853041F0C9 -:107C20008091E80082FFF7CF80E0089582E0089518 -:107C300083E008959C016115710529F48091E800A5 -:107C40008B778093E800F90126C08EB3882391F1E9 -:107C5000853091F18091E80083FF02C081E00895B2 -:107C60008091E80082FFF1CF06C08091F1008193FE -:107C70006150704059F02091F3008091F200322F52 -:107C800020E090E0822B932B892B79F78091E800FC -:107C90008B778093E80061157105B9F605C08EB346 -:107CA000882341F0853041F08091E80080FFF7CFD4 -:107CB00080E0089582E0089583E008950F931F9374 -:107CC000DF93CF9300D0CDB7DEB7E6EBF1E0809144 -:107CD000F100819381E0EE3BF807C9F725DD809143 -:107CE000E80083FFE4C08091B6019091B701953020 -:107CF00009F46DC0963040F4913081F1913070F00C -:107D0000933009F0D4C02AC0983009F4A3C0993048 -:107D100009F4B2C0963009F0CAC07CC0803809F4BA -:107D2000C6C0823809F0C3C08091BA0187708093C1 -:107D3000E9008091EB001092E9002091E800277F94 -:107D40002093E80090E025E0969587952A95E1F745 -:107D500081708093F1001092F10087C0882319F0A0 -:107D6000823009F0A4C08F71823009F0A0C08091E8 -:107D7000B801882331F52091BA01277009F497C022 -:107D80002093E9008091EB0080FF1BC0933021F429 -:107D90008091EB00806213C08091EB008061809342 -:107DA000EB0081E090E002C0880F991F2A95E2F76E -:107DB0008093EA001092EA008091EB008860809343 -:107DC000EB001092E9008091E800877F51C0882382 -:107DD00009F06DC01091B8011F770FB7F89480912A -:107DE000E800877F8093E8009ADD8091E80080FFBB -:107DF000FCCF8091E3008078812B8093E300806842 -:107E00008093E300112311F482E001C083E08EBB74 -:107E10000FBF4DC08058823008F049C08091B80132 -:107E20009091B9016091BA01AE014F5F5F4F36DDAD -:107E3000BC01009709F43BC08091E800877F8093E4 -:107E4000E80089819A8192DE8091E8008B778093A7 -:107E5000E8002DC0803859F58091E800877F809335 -:107E6000E8008091B4018093F1008091E8008E7762 -:107E70008093E80054DD1BC08823C9F49091B801B9 -:107E80009230A8F48091E800877F8093E800909377 -:107E9000B40145DD8091B401882331F48091E30081 -:107EA00087FD02C081E001C084E08EBB6DDC809163 -:107EB000E80083FF0AC08091EB0080628093EB00B2 -:107EC0008091E800877F8093E8000F900F90CF911A -:107ED000DF911F910F91089508951F938EB388230A -:107EE00061F01091E9001092E9008091E80083FFB1 -:107EF00001C0E4DE17701093E9001F910895F9990D -:107F0000FECF92BD81BDF89A992780B50895262F9E -:107F1000F999FECF1FBA92BD81BD20BD0FB6F8946E -:0E7F2000FA9AF99A0FBE01960895F894FFCFD1 -:107F2E004341544552494E41007777000A01000003 -:107F3E000000000008120110010200000841230198 -:107F4E000701000201000109023E00020100803219 -:107F5E00090400000102020100052400100104249E -:107F6E0002040524060001070582030800FF090428 -:107F7E000100020A000000070504021000010705B7 -:107F8E0083021000010403090422034100720064FD -:107F9E0000750069006E006F0020004C0065006FD8 -:107FAE00006E006100720064006F00000018034153 -:107FBE000072006400750069006E006F0020004CB6 -:087FCE00004C0043000000001C +:10725000E9008091E80082FF5AC2289884E690E015 +:107260009093AB018093AA01AADF182F853439F4DB +:107270008CE49DE19093AD018093AC0103C0843513 +:1072800019F49DDF8DE019C28C34E1F38035D1F320 +:10729000843721F484E4ABDF80E00FC2813611F43F +:1072A00089E50BC28134B1F48ADF182F88DF90E0C2 +:1072B000880F991FAA2797FDA095BA2F312F330F5A +:1072C00020E0442737FD4095542F822B932BA42B8D +:1072D000B52BC4C1803711F483E5EFC1833549F480 +:1072E000C0E0D1E0899183DF21E0C730D207D1F738 +:1072F000E5C1863521F481E37ADF80E3DEC183379F +:1073000031F487E874DF85E972DF8EE1D6C1853616 +:10731000B9F4E0E0F0E093E085E090935700E89561 +:1073200007B600FCFDCF80935700E89507B600FC38 +:10733000FDCFE058FF4FA0E7E030FA0771F7A2CF8A +:107340008C3651F43CDF809599E0E1E0F0E0082EC6 +:1073500090935700E89596CF823739F4E1E0F0E05A +:1073600089E0809357008491A8C1863439F4E0E025 +:10737000F0E089E08093570084919FC18E3439F406 +:10738000E3E0F0E089E080935700849196C1813575 +:1073900039F4E2E0F0E089E08093570084918DC1F8 +:1073A000823631F489E523DF80E021DF80E885C182 +:1073B000823419F0873609F0E5C01092AD011092C1 +:1073C000AC01FDDE082FFBDEF82EF9DE682E8554B9 +:1073D000823008F071C1902F80E0CF2DD0E0C82B13 +:1073E000D92B10926F00173609F04BC081E18093C2 +:1073F0005700E895DD24CC24C3943FC0E090AE0153 +:10740000F090AF010091B0011091B101B6E46B169C +:10741000D9F4ED2DF0E0EE29FF29E4918E2FE7DE7F +:10742000DD2081F082E090E0A0E0B0E0E80EF91EFF +:107430000A1F1B1FE092AE01F092AF010093B00152 +:107440001093B101DC2418C0D801C701B695A795E7 +:107450009795879558D5CBDE82E090E0A0E0B0E02C +:10746000E80EF91E0A1F1B1FE092AE01F092AF0159 +:107470000093B0011093B1012197209709F0BECF7E +:107480007DC08090AE019090AF01A090B001B0900F +:10749000B10196E4691609F05DC083E0F4018093C0 +:1074A0005700E89507B600FCFDCF54C0F6E46F1610 +:1074B00061F5772031F1E090AE01F090AF010091DD +:1074C000B0011091B1017BDED82ECC24852D90E047 +:1074D0008C299D29F7010C0140925700E895112451 +:1074E00082E090E0A0E0B0E0E80EF91E0A1F1B1F4A +:1074F000E092AE01F092AF010093B0011093B101A0 +:1075000002C05DDE582E742423C0E090AE01F090DE +:10751000AF010091B0011091B10116950795F79454 +:10752000E7944DDE682FC701F6D48091AE019091AB +:10753000AF01A091B001B091B1010296A11DB11DA2 +:107540008093AE019093AF01A093B001B093B101CD +:10755000219704C05524772444244394209709F0AC +:10756000A5CF96E4691641F485E0F40180935700B5 +:10757000E89507B600FCFDCF8DE039DE82E0809310 +:107580006F009CC0833471F40091AE011091AF0183 +:1075900016DE90E021E0F8010C0120935700E895F9 +:1075A000112470CE833619F5E090AE01F090AF0152 +:1075B0000091B0011091B10102DEF701E16090E0AD +:1075C00021E00C0120935700E895112482E090E01F +:1075D000A0E0B0E0E80EF91E0A1F1B1FE092AE010A +:1075E000F092AF010093B0011093B1014BCE8D36F4 +:1075F00061F4E091AE01F091AF0185E08093570016 +:10760000E89507B600FCFDCF3DCE823551F4E09100 +:10761000AE01F091AF0105911491812FE8DD802F2B +:107620004CC0843421F5E090AE01F090AF010091A0 +:10763000B0011091B10116950795F794E794BFDD5D +:10764000682FC70168D48091AE019091AF01A091DD +:10765000B001B091B1010296A11DB11D8093AE01A0 +:107660009093AF01A093B001B093B1010BCE8436DB +:1076700009F5E090AE01F090AF010091B0011091DA +:10768000B101D801C701B695A795979587953BD4C9 +:10769000AEDD82E090E0A0E0B0E0E80EF91E0A1F47 +:1076A0001B1FE092AE01F092AF010093B001109366 +:1076B000B10104C08B3111F08FE399DD83E0809339 +:1076C000E9009091E8008091E8008E778093E800CF +:1076D00095FF04C010C08EB38823C9F08091E800E4 +:1076E00080FFF9CF8091E8008E778093E80003C097 +:1076F0008EB3882361F08091E80080FFF9CF84E0A9 +:107700008093E9008091E8008B778093E800DF9117 +:10771000CF911F910F91FF90EF90DF90CF90BF908E +:10772000AF909F908F907F906F905F904F90089553 +:107730009091B601892F8F77813249F58091B701F9 +:107740008032A1F0813219F5913A09F58091E80073 +:10775000877F8093E8008DE091E067E070E00AD2D7 +:107760008091E8008B778093E8000895913279F456 +:107770008091E800877F8093E8008DE091E067E0EA +:1077800070E05CD28091E8008E778093E8000895E5 +:1077900082E061EC42E0B4D083E061E842E1B0D045 +:1077A00084E060E842E1ACC084B7877F84BF88E1B1 +:1077B0000FB6F89480936000109260000FBE20E82E +:1077C00080E090E00FB6F894209361008093610010 +:1077D0000FBE81E085BF92E095BF3F9A209A559AEF +:1077E000E1E6F0E02083108247985D9A289A109293 +:1077F00089008AEF8093880090936F0083E08093E4 +:107800008100EFC01F9388E10FB6F8948093600069 +:10781000109260000FBE84B714BE182F10FF08C06E +:10782000E0E0F0E0859194918F5F9F4F09F05ADC82 +:107830002091000A3091010A1092010A1092000A68 +:1078400013FF0FC08091090190910A012817390791 +:1078500041F0E0E0F0E0859194918F5F9F4F09F057 +:1078600041DCA2DF78941092AD011092AC010CC003 +:10787000DDDC37D38091AC019091AD0181549F4103 +:1078800010F01092140140DC80911401882381F7DC +:107890008091E00081608093E00024DC80E090E053 +:1078A0001F910895FA01923049F0933061F09130C0 +:1078B000F9F485E191E022E130E01EC087E291E039 +:1078C0002EE330E019C0882329F485E691E024E016 +:1078D00030E012C0813029F489E691E022E230E004 +:1078E0000BC0823029F48DE891E028E130E004C03B +:1078F00080E090E020E030E091838083C90108952A +:107900008093E9008091EB0081608093EB001092FE +:10791000ED006093EC004093ED008091EE00881F35 +:107920008827881F08958091B60188238CF403C0AE +:107930008EB38823B1F08091E80082FFF9CF809167 +:10794000E8008B778093E80008958EB3882349F090 +:107950008091E80080FFF9CF8091E8008E778093D6 +:10796000E8000895EF92FF920F931F9345D04CD0FB +:1079700008ED10E0F80180818F7780838081806836 +:10798000808380818F7D808319BC1EBA1092B401E0 +:1079900080EEE82EF12CF70180818B7F8083F80147 +:1079A00080818160808380E060E042E0A9DFE1EED9 +:1079B000F0E080818E7F8083E2EEF0E08081816064 +:1079C0008083808188608083F70180818E7F8083BF +:1079D000F8018081806180831F910F91FF90EF906B +:1079E0000895E7EDF0E08081816080838AE482BFC2 +:1079F00081E08093B501B6CFE8EDF0E080818E7F25 +:107A000080831092E20008951092DA001092E10053 +:107A100008951F920F920FB60F9211242F933F9348 +:107A20004F935F936F937F938F939F93AF93BF9386 +:107A3000EF93FF938091DA0080FF1BC08091D80004 +:107A400080FF17C08091DA008E7F8093DA008091EA +:107A5000D90080FF0BC080E189BD82E189BD09B4F6 +:107A600000FEFDCF81E08EBB3BD203C019BC1EBA25 +:107A700037D28091E10080FF17C08091E20080FF43 +:107A800013C08091E2008E7F8093E2008091E2003B +:107A900080618093E2008091D80080628093D8005A +:107AA00019BC85E08EBB1CD28091E10084FF2CC004 +:107AB0008091E20084FF28C080E189BD82E189BD18 +:107AC00009B400FEFDCF8091D8008F7D8093D8004F +:107AD0008091E1008F7E8093E1008091E2008F7EB3 +:107AE0008093E2008091E20081608093E2008091C7 +:107AF000B401882331F48091E30087FD02C081E066 +:107B000001C084E08EBBECD18091E10083FF21C0F5 +:107B10008091E20083FF1DC08091E100877F809308 +:107B2000E10082E08EBB1092B4018091E1008E7F73 +:107B30008093E1008091E2008E7F8093E20080914B +:107B4000E20080618093E20080E060E042E0D8DE05 +:107B5000C7D1FF91EF91BF91AF919F918F917F918D +:107B60006F915F914F913F912F910F900FBE0F90AA +:107B70001F9018959C014091BC015091BD01461782 +:107B8000570718F4F90190E044C06115710511F030 +:107B9000AB01F8CF8091E8008E778093E80040E059 +:107BA00050E0F0CF8EB3882309F444C0853009F447 +:107BB00043C08091E80083FF02C081E00895809176 +:107BC000E80082FD31C08091E80080FF22C08091F2 +:107BD000F3009091F200782F60E0292F30E0262BFF +:107BE000372B07C081918093F100415050402F5FA7 +:107BF0003F4F4115510519F02830310598F390E0B9 +:107C00002830310509F491E08091E8008E77809367 +:107C1000E8004115510531F6992321F605C08EB3D0 +:107C2000882341F0853041F08091E80082FFF7CF52 +:107C300080E0089582E0089583E008959C01611535 +:107C4000710529F48091E8008B778093E800F901B1 +:107C500026C08EB3882391F1853091F18091E800A0 +:107C600083FF02C081E008958091E80082FFF1CF98 +:107C700006C08091F10081936150704059F02091CD +:107C8000F3008091F200322F20E090E0822B932BC2 +:107C9000892B79F78091E8008B778093E800611554 +:107CA0007105B9F605C08EB3882341F0853041F0E7 +:107CB0008091E80080FFF7CF80E0089582E008958A +:107CC00083E008950F931F93DF93CF9300D0CDB738 +:107CD000DEB7E6EBF1E08091F100819381E0EE3BCD +:107CE000F807C9F725DD8091E80083FFE4C08091A3 +:107CF000B6019091B701953009F46DC0963040F40B +:107D0000913081F1913070F0933009F0D4C02AC0E5 +:107D1000983009F4A3C0993009F4B2C0963009F044 +:107D2000CAC07CC0803809F4C6C0823809F0C3C01C +:107D30008091BA0187708093E9008091EB001092E6 +:107D4000E9002091E800277F2093E80090E025E0FB +:107D5000969587952A95E1F781708093F1001092AE +:107D6000F10087C0882319F0823009F0A4C08F7118 +:107D7000823009F0A0C08091B801882331F52091AC +:107D8000BA01277009F497C02093E9008091EB00B5 +:107D900080FF1BC0933021F48091EB00806213C000 +:107DA0008091EB0080618093EB0081E090E002C065 +:107DB000880F991F2A95E2F78093EA001092EA0053 +:107DC0008091EB0088608093EB001092E900809135 +:107DD000E800877F51C0882309F06DC01091B80179 +:107DE0001F770FB7F8948091E800877F8093E800B1 +:107DF0009ADD8091E80080FFFCCF8091E3008078DD +:107E0000812B8093E30080688093E300112311F4B9 +:107E100082E001C083E08EBB0FBF4DC0805882302E +:107E200008F049C08091B8019091B9016091BA0100 +:107E3000AE014F5F5F4F36DDBC01009709F43BC0D8 +:107E40008091E800877F8093E80089819A8192DEA3 +:107E50008091E8008B778093E8002DC0803859F539 +:107E60008091E800877F8093E8008091B40180933F +:107E7000F1008091E8008E778093E80054DD1BC00C +:107E80008823C9F49091B8019230A8F48091E80059 +:107E9000877F8093E8009093B40145DD8091B40121 +:107EA000882331F48091E30087FD02C081E001C0A6 +:107EB00084E08EBB6DDC8091E80083FF0AC0809176 +:107EC000EB0080628093EB008091E800877F8093D5 +:107ED000E8000F900F90CF91DF911F910F910895BF +:107EE00008951F938EB3882361F01091E9001092DA +:107EF000E9008091E80083FF01C0E4DE1770109371 +:107F0000E9001F910895F999FECF92BD81BDF89ABD +:107F1000992780B50895262FF999FECF1FBA92BDF3 +:107F200081BD20BD0FB6F894FA9AF99A0FBE01965A +:067F30000895F894FFCF54 +:107F36004341544552494E41007777000A000000FC +:107F4600000000080112011001020000084123018F +:107F56000701000201000109023E00020100803211 +:107F66000904000001020201000524001001042496 +:107F760002040524060001070582030800FF090420 +:107F86000100020A000000070504021000010705AF +:107F960083021000010403090422034100720064F5 +:107FA60000750069006E006F0020004C0065006FD0 +:107FB600006E006100720064006F0000001803414B +:107FC6000072006400750069006E006F0020004CAE +:087FD600004C00430000000014 :040000030000700089 :00000001FF -- cgit v1.2.3-18-g5258 From 083f7c88915db70e1c41997dc9dbd94249aca4e7 Mon Sep 17 00:00:00 2001 From: Zach Eveland Date: Wed, 14 Mar 2012 17:48:11 -0400 Subject: bugfix for Caterina not starting sketch if "verify upload" turned off in IDE. Previously, if avrdude skipped the upload step the read while write memory might never be reenabled. This would prevent the bootloader from ending and the sketch from starting - the bootloader just continued to run even after a successful upload. Now enable RWW when we receive the AVR109 "Exit bootloader" 'E' command. Had to disable lock bit changing support in the bootloader to free up flash for the change - will anyone miss it? --- bootloaders/caterina/Caterina.c | 5 + bootloaders/caterina/Caterina.hex | 443 +++++++++++++++++++------------------- bootloaders/caterina/Makefile | 2 +- 3 files changed, 227 insertions(+), 223 deletions(-) (limited to 'bootloaders/caterina') diff --git a/bootloaders/caterina/Caterina.c b/bootloaders/caterina/Caterina.c index 0565b22..0cb9590 100755 --- a/bootloaders/caterina/Caterina.c +++ b/bootloaders/caterina/Caterina.c @@ -484,6 +484,10 @@ void CDC_Task(void) * 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'); } @@ -592,6 +596,7 @@ void CDC_Task(void) } 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); diff --git a/bootloaders/caterina/Caterina.hex b/bootloaders/caterina/Caterina.hex index d66992c..b3e1ed6 100644 --- a/bootloaders/caterina/Caterina.hex +++ b/bootloaders/caterina/Caterina.hex @@ -1,6 +1,6 @@ :1070000055C000006EC000006CC000006AC00000E7 :1070100068C0000066C0000064C0000062C00000DC -:1070200060C000005EC00000F4C400005AC0000050 +:1070200060C000005EC00000F1C400005AC0000053 :1070300058C0000056C0000054C0000052C00000FC :1070400050C0000078C000004CC000004AC00000E2 :1070500048C0000046C0000044C0000042C000001C @@ -9,10 +9,10 @@ :1070800030C000002EC000002CC000002AC000004C :1070900028C0000026C0000024C0000022C000005C :1070A00020C000001EC000001CC0000011241FBE34 -:1070B000CFEFDAE0DEBFCDBF11E0A0E0B1E0E6E364 +:1070B000CFEFDAE0DEBFCDBF11E0A0E0B1E0E0E36A :1070C000FFE702C005900D92A83AB107D9F711E089 -:1070D000A8EAB1E001C01D92AE3BB107E1F792D33F -:1070E00028C78ECFF89410926F00109281001092F2 +:1070D000A8EAB1E001C01D92AE3BB107E1F78FD342 +:1070E00025C78ECFF89410926F00109281001092F5 :1070F00085001092840081E085BF15BE47985D9A97 :10710000289A0C94000008952091B2013091B301A7 :107110002F5F3F4F3093B3012093B201932F37FF7E @@ -35,223 +35,222 @@ :1072200090E09093A9018093A80108954F925F92F6 :107230006F927F928F929F92AF92BF92CF92DF9286 :10724000EF92FF920F931F93CF93DF9384E080938D -:10725000E9008091E80082FF5AC2289884E690E015 -:107260009093AB018093AA01AADF182F853439F4DB -:107270008CE49DE19093AD018093AC0103C0843513 -:1072800019F49DDF8DE019C28C34E1F38035D1F320 -:10729000843721F484E4ABDF80E00FC2813611F43F -:1072A00089E50BC28134B1F48ADF182F88DF90E0C2 -:1072B000880F991FAA2797FDA095BA2F312F330F5A -:1072C00020E0442737FD4095542F822B932BA42B8D -:1072D000B52BC4C1803711F483E5EFC1833549F480 -:1072E000C0E0D1E0899183DF21E0C730D207D1F738 -:1072F000E5C1863521F481E37ADF80E3DEC183379F -:1073000031F487E874DF85E972DF8EE1D6C1853616 -:10731000B9F4E0E0F0E093E085E090935700E89561 -:1073200007B600FCFDCF80935700E89507B600FC38 -:10733000FDCFE058FF4FA0E7E030FA0771F7A2CF8A -:107340008C3651F43CDF809599E0E1E0F0E0082EC6 -:1073500090935700E89596CF823739F4E1E0F0E05A -:1073600089E0809357008491A8C1863439F4E0E025 -:10737000F0E089E08093570084919FC18E3439F406 -:10738000E3E0F0E089E080935700849196C1813575 -:1073900039F4E2E0F0E089E08093570084918DC1F8 -:1073A000823631F489E523DF80E021DF80E885C182 -:1073B000823419F0873609F0E5C01092AD011092C1 -:1073C000AC01FDDE082FFBDEF82EF9DE682E8554B9 -:1073D000823008F071C1902F80E0CF2DD0E0C82B13 -:1073E000D92B10926F00173609F04BC081E18093C2 -:1073F0005700E895DD24CC24C3943FC0E090AE0153 -:10740000F090AF010091B0011091B101B6E46B169C -:10741000D9F4ED2DF0E0EE29FF29E4918E2FE7DE7F -:10742000DD2081F082E090E0A0E0B0E0E80EF91EFF -:107430000A1F1B1FE092AE01F092AF010093B00152 -:107440001093B101DC2418C0D801C701B695A795E7 -:107450009795879558D5CBDE82E090E0A0E0B0E02C -:10746000E80EF91E0A1F1B1FE092AE01F092AF0159 -:107470000093B0011093B1012197209709F0BECF7E -:107480007DC08090AE019090AF01A090B001B0900F -:10749000B10196E4691609F05DC083E0F4018093C0 -:1074A0005700E89507B600FCFDCF54C0F6E46F1610 -:1074B00061F5772031F1E090AE01F090AF010091DD -:1074C000B0011091B1017BDED82ECC24852D90E047 -:1074D0008C299D29F7010C0140925700E895112451 -:1074E00082E090E0A0E0B0E0E80EF91E0A1F1B1F4A -:1074F000E092AE01F092AF010093B0011093B101A0 -:1075000002C05DDE582E742423C0E090AE01F090DE -:10751000AF010091B0011091B10116950795F79454 -:10752000E7944DDE682FC701F6D48091AE019091AB -:10753000AF01A091B001B091B1010296A11DB11DA2 -:107540008093AE019093AF01A093B001B093B101CD -:10755000219704C05524772444244394209709F0AC -:10756000A5CF96E4691641F485E0F40180935700B5 -:10757000E89507B600FCFDCF8DE039DE82E0809310 -:107580006F009CC0833471F40091AE011091AF0183 -:1075900016DE90E021E0F8010C0120935700E895F9 -:1075A000112470CE833619F5E090AE01F090AF0152 -:1075B0000091B0011091B10102DEF701E16090E0AD -:1075C00021E00C0120935700E895112482E090E01F -:1075D000A0E0B0E0E80EF91E0A1F1B1FE092AE010A -:1075E000F092AF010093B0011093B1014BCE8D36F4 -:1075F00061F4E091AE01F091AF0185E08093570016 -:10760000E89507B600FCFDCF3DCE823551F4E09100 -:10761000AE01F091AF0105911491812FE8DD802F2B -:107620004CC0843421F5E090AE01F090AF010091A0 -:10763000B0011091B10116950795F794E794BFDD5D -:10764000682FC70168D48091AE019091AF01A091DD -:10765000B001B091B1010296A11DB11D8093AE01A0 -:107660009093AF01A093B001B093B1010BCE8436DB -:1076700009F5E090AE01F090AF010091B0011091DA -:10768000B101D801C701B695A795979587953BD4C9 -:10769000AEDD82E090E0A0E0B0E0E80EF91E0A1F47 -:1076A0001B1FE092AE01F092AF010093B001109366 -:1076B000B10104C08B3111F08FE399DD83E0809339 -:1076C000E9009091E8008091E8008E778093E800CF -:1076D00095FF04C010C08EB38823C9F08091E800E4 -:1076E00080FFF9CF8091E8008E778093E80003C097 -:1076F0008EB3882361F08091E80080FFF9CF84E0A9 -:107700008093E9008091E8008B778093E800DF9117 -:10771000CF911F910F91FF90EF90DF90CF90BF908E -:10772000AF909F908F907F906F905F904F90089553 -:107730009091B601892F8F77813249F58091B701F9 -:107740008032A1F0813219F5913A09F58091E80073 -:10775000877F8093E8008DE091E067E070E00AD2D7 -:107760008091E8008B778093E8000895913279F456 -:107770008091E800877F8093E8008DE091E067E0EA -:1077800070E05CD28091E8008E778093E8000895E5 -:1077900082E061EC42E0B4D083E061E842E1B0D045 -:1077A00084E060E842E1ACC084B7877F84BF88E1B1 -:1077B0000FB6F89480936000109260000FBE20E82E -:1077C00080E090E00FB6F894209361008093610010 -:1077D0000FBE81E085BF92E095BF3F9A209A559AEF -:1077E000E1E6F0E02083108247985D9A289A109293 -:1077F00089008AEF8093880090936F0083E08093E4 -:107800008100EFC01F9388E10FB6F8948093600069 -:10781000109260000FBE84B714BE182F10FF08C06E -:10782000E0E0F0E0859194918F5F9F4F09F05ADC82 -:107830002091000A3091010A1092010A1092000A68 -:1078400013FF0FC08091090190910A012817390791 -:1078500041F0E0E0F0E0859194918F5F9F4F09F057 -:1078600041DCA2DF78941092AD011092AC010CC003 -:10787000DDDC37D38091AC019091AD0181549F4103 -:1078800010F01092140140DC80911401882381F7DC -:107890008091E00081608093E00024DC80E090E053 -:1078A0001F910895FA01923049F0933061F09130C0 -:1078B000F9F485E191E022E130E01EC087E291E039 -:1078C0002EE330E019C0882329F485E691E024E016 -:1078D00030E012C0813029F489E691E022E230E004 -:1078E0000BC0823029F48DE891E028E130E004C03B -:1078F00080E090E020E030E091838083C90108952A -:107900008093E9008091EB0081608093EB001092FE -:10791000ED006093EC004093ED008091EE00881F35 -:107920008827881F08958091B60188238CF403C0AE -:107930008EB38823B1F08091E80082FFF9CF809167 -:10794000E8008B778093E80008958EB3882349F090 -:107950008091E80080FFF9CF8091E8008E778093D6 -:10796000E8000895EF92FF920F931F9345D04CD0FB -:1079700008ED10E0F80180818F7780838081806836 -:10798000808380818F7D808319BC1EBA1092B401E0 -:1079900080EEE82EF12CF70180818B7F8083F80147 -:1079A00080818160808380E060E042E0A9DFE1EED9 -:1079B000F0E080818E7F8083E2EEF0E08081816064 -:1079C0008083808188608083F70180818E7F8083BF -:1079D000F8018081806180831F910F91FF90EF906B -:1079E0000895E7EDF0E08081816080838AE482BFC2 -:1079F00081E08093B501B6CFE8EDF0E080818E7F25 -:107A000080831092E20008951092DA001092E10053 -:107A100008951F920F920FB60F9211242F933F9348 -:107A20004F935F936F937F938F939F93AF93BF9386 -:107A3000EF93FF938091DA0080FF1BC08091D80004 -:107A400080FF17C08091DA008E7F8093DA008091EA -:107A5000D90080FF0BC080E189BD82E189BD09B4F6 -:107A600000FEFDCF81E08EBB3BD203C019BC1EBA25 -:107A700037D28091E10080FF17C08091E20080FF43 -:107A800013C08091E2008E7F8093E2008091E2003B -:107A900080618093E2008091D80080628093D8005A -:107AA00019BC85E08EBB1CD28091E10084FF2CC004 -:107AB0008091E20084FF28C080E189BD82E189BD18 -:107AC00009B400FEFDCF8091D8008F7D8093D8004F -:107AD0008091E1008F7E8093E1008091E2008F7EB3 -:107AE0008093E2008091E20081608093E2008091C7 -:107AF000B401882331F48091E30087FD02C081E066 -:107B000001C084E08EBBECD18091E10083FF21C0F5 -:107B10008091E20083FF1DC08091E100877F809308 -:107B2000E10082E08EBB1092B4018091E1008E7F73 -:107B30008093E1008091E2008E7F8093E20080914B -:107B4000E20080618093E20080E060E042E0D8DE05 -:107B5000C7D1FF91EF91BF91AF919F918F917F918D -:107B60006F915F914F913F912F910F900FBE0F90AA -:107B70001F9018959C014091BC015091BD01461782 -:107B8000570718F4F90190E044C06115710511F030 -:107B9000AB01F8CF8091E8008E778093E80040E059 -:107BA00050E0F0CF8EB3882309F444C0853009F447 -:107BB00043C08091E80083FF02C081E00895809176 -:107BC000E80082FD31C08091E80080FF22C08091F2 -:107BD000F3009091F200782F60E0292F30E0262BFF -:107BE000372B07C081918093F100415050402F5FA7 -:107BF0003F4F4115510519F02830310598F390E0B9 -:107C00002830310509F491E08091E8008E77809367 -:107C1000E8004115510531F6992321F605C08EB3D0 -:107C2000882341F0853041F08091E80082FFF7CF52 -:107C300080E0089582E0089583E008959C01611535 -:107C4000710529F48091E8008B778093E800F901B1 -:107C500026C08EB3882391F1853091F18091E800A0 -:107C600083FF02C081E008958091E80082FFF1CF98 -:107C700006C08091F10081936150704059F02091CD -:107C8000F3008091F200322F20E090E0822B932BC2 -:107C9000892B79F78091E8008B778093E800611554 -:107CA0007105B9F605C08EB3882341F0853041F0E7 -:107CB0008091E80080FFF7CF80E0089582E008958A -:107CC00083E008950F931F93DF93CF9300D0CDB738 -:107CD000DEB7E6EBF1E08091F100819381E0EE3BCD -:107CE000F807C9F725DD8091E80083FFE4C08091A3 -:107CF000B6019091B701953009F46DC0963040F40B -:107D0000913081F1913070F0933009F0D4C02AC0E5 -:107D1000983009F4A3C0993009F4B2C0963009F044 -:107D2000CAC07CC0803809F4C6C0823809F0C3C01C -:107D30008091BA0187708093E9008091EB001092E6 -:107D4000E9002091E800277F2093E80090E025E0FB -:107D5000969587952A95E1F781708093F1001092AE -:107D6000F10087C0882319F0823009F0A4C08F7118 -:107D7000823009F0A0C08091B801882331F52091AC -:107D8000BA01277009F497C02093E9008091EB00B5 -:107D900080FF1BC0933021F48091EB00806213C000 -:107DA0008091EB0080618093EB0081E090E002C065 -:107DB000880F991F2A95E2F78093EA001092EA0053 -:107DC0008091EB0088608093EB001092E900809135 -:107DD000E800877F51C0882309F06DC01091B80179 -:107DE0001F770FB7F8948091E800877F8093E800B1 -:107DF0009ADD8091E80080FFFCCF8091E3008078DD -:107E0000812B8093E30080688093E300112311F4B9 -:107E100082E001C083E08EBB0FBF4DC0805882302E -:107E200008F049C08091B8019091B9016091BA0100 -:107E3000AE014F5F5F4F36DDBC01009709F43BC0D8 -:107E40008091E800877F8093E80089819A8192DEA3 -:107E50008091E8008B778093E8002DC0803859F539 -:107E60008091E800877F8093E8008091B40180933F -:107E7000F1008091E8008E778093E80054DD1BC00C -:107E80008823C9F49091B8019230A8F48091E80059 -:107E9000877F8093E8009093B40145DD8091B40121 -:107EA000882331F48091E30087FD02C081E001C0A6 -:107EB00084E08EBB6DDC8091E80083FF0AC0809176 -:107EC000EB0080628093EB008091E800877F8093D5 -:107ED000E8000F900F90CF91DF911F910F910895BF -:107EE00008951F938EB3882361F01091E9001092DA -:107EF000E9008091E80083FF01C0E4DE1770109371 -:107F0000E9001F910895F999FECF92BD81BDF89ABD -:107F1000992780B50895262FF999FECF1FBA92BDF3 -:107F200081BD20BD0FB6F894FA9AF99A0FBE01965A -:067F30000895F894FFCF54 -:107F36004341544552494E41007777000A000000FC -:107F4600000000080112011001020000084123018F -:107F56000701000201000109023E00020100803211 -:107F66000904000001020201000524001001042496 -:107F760002040524060001070582030800FF090420 -:107F86000100020A000000070504021000010705AF -:107F960083021000010403090422034100720064F5 -:107FA60000750069006E006F0020004C0065006FD0 -:107FB600006E006100720064006F0000001803414B -:107FC6000072006400750069006E006F0020004CAE -:087FD600004C00430000000014 +:10725000E9008091E80082FF57C2289884E690E018 +:107260009093AB018093AA01AADF182F853481F493 +:107270008CE49DE19093AD018093AC0107B600FCD6 +:10728000FDCFF999FECF81E180935700E89503C0C7 +:10729000843519F494DF8DE00DC28C34E1F3803530 +:1072A000D1F3843721F484E4A2DF80E003C2813685 +:1072B00011F489E5FFC18134B1F481DF182F7FDF3C +:1072C00090E0880F991FAA2797FDA095BA2F312F1C +:1072D000330F20E0442737FD4095542F822B932B0A +:1072E000A42BB52BB8C1803711F483E5E3C18335F6 +:1072F00049F4C0E0D1E089917ADF21E0C730D207BC +:10730000D1F7D9C1863521F481E371DF80E3D2C1A1 +:10731000833731F487E86BDF85E969DF8EE1CAC125 +:107320008536B9F4E0E0F0E093E085E09093570013 +:10733000E89507B600FCFDCF80935700E89507B6A7 +:1073400000FCFDCFE058FF4FA0E7E030FA0771F7EF +:10735000A2CF823739F4E1E0F0E089E08093570072 +:107360008491A8C1863439F4E0E0F0E089E08093AC +:10737000570084919FC18E3439F4E3E0F0E089E056 +:1073800080935700849196C1813539F4E2E0F0E0B2 +:1073900089E08093570084918DC1823631F489E56C +:1073A00026DF80E024DF80E885C1823419F087364B +:1073B00009F0E5C01092AD011092AC0100DF082F7A +:1073C000FEDEF82EFCDE682E8554823008F071C196 +:1073D000902F80E0CF2DD0E0C82BD92B10926F00DA +:1073E000173609F04BC081E180935700E895DD2402 +:1073F000CC24C3943FC0E090AE01F090AF01009167 +:10740000B0011091B101B6E46B16D9F4ED2DF0E0A6 +:10741000EE29FF29E4918E2FEADEDD2081F082E063 +:1074200090E0A0E0B0E0E80EF91E0A1F1B1FE092FA +:10743000AE01F092AF010093B0011093B101DC24D2 +:1074400018C0D801C701B695A7959795879558D5C7 +:10745000CEDE82E090E0A0E0B0E0E80EF91E0A1F68 +:107460001B1FE092AE01F092AF010093B0011093A8 +:10747000B1012197209709F0BECF7DC08090AE0169 +:107480009090AF01A090B001B090B10196E4691660 +:1074900009F05DC083E0F40180935700E89507B6DA +:1074A00000FCFDCF54C0F6E46F1661F5772031F192 +:1074B000E090AE01F090AF010091B0011091B101E8 +:1074C0007EDED82ECC24852D90E08C299D29F701D5 +:1074D0000C0140925700E895112482E090E0A0E072 +:1074E000B0E0E80EF91E0A1F1B1FE092AE01F092F9 +:1074F000AF010093B0011093B10102C060DE582EBD +:10750000742423C0E090AE01F090AF010091B0016F +:107510001091B10116950795F794E79450DE682F06 +:10752000C701F6D48091AE019091AF01A091B00156 +:10753000B091B1010296A11DB11D8093AE0190934F +:10754000AF01A093B001B093B101219704C05524BD +:10755000772444244394209709F0A5CF96E4691634 +:1075600041F485E0F40180935700E89507B600FCEC +:10757000FDCF8DE03CDE82E080936F009CC08334C1 +:1075800071F40091AE011091AF0119DE90E021E09D +:10759000F8010C0120935700E89511247CCE833626 +:1075A00019F5E090AE01F090AF010091B00110919B +:1075B000B10105DEF701E16090E021E00C012093CC +:1075C0005700E895112482E090E0A0E0B0E0E80EDA +:1075D000F91E0A1F1B1FE092AE01F092AF0100934B +:1075E000B0011093B10157CE8D3661F4E091AE0138 +:1075F000F091AF0185E080935700E89507B600FC55 +:10760000FDCF49CE823551F4E091AE01F091AF014A +:1076100005911491812FEBDD802F4CC0843421F52E +:10762000E090AE01F090AF010091B0011091B10176 +:1076300016950795F794E794C2DD682FC70168D4C3 +:107640008091AE019091AF01A091B001B091B101D4 +:107650000296A11DB11D8093AE019093AF01A0933E +:10766000B001B093B10117CE843609F5E090AE01B8 +:10767000F090AF010091B0011091B101D801C701A4 +:10768000B695A795979587953BD4B1DD82E090E0BC +:10769000A0E0B0E0E80EF91E0A1F1B1FE092AE0149 +:1076A000F092AF010093B0011093B10104C08B318F +:1076B00011F08FE39CDD83E08093E9009091E80076 +:1076C0008091E8008E778093E80095FF04C010C099 +:1076D0008EB38823C9F08091E80080FFF9CF8091B4 +:1076E000E8008E778093E80003C08EB3882361F0B2 +:1076F0008091E80080FFF9CF84E08093E9008091D9 +:10770000E8008B778093E800DF91CF911F910F9174 +:10771000FF90EF90DF90CF90BF90AF909F908F90B1 +:107720007F906F905F904F9008959091B601892F50 +:107730008F77813249F58091B7018032A1F0813293 +:1077400019F5913A09F58091E800877F8093E80068 +:107750008DE091E067E070E00AD28091E8008B77DD +:107760008093E8000895913279F48091E800877F52 +:107770008093E8008DE091E067E070E05CD280915A +:10778000E8008E778093E800089582E061EC42E0A3 +:10779000B4D083E061E842E1B0D084E060E842E147 +:1077A000ACC084B7877F84BF88E10FB6F89480931C +:1077B0006000109260000FBE20E880E090E00FB6FD +:1077C000F89420936100809361000FBE81E085BF33 +:1077D00092E095BF3F9A209A559AE1E6F0E0208327 +:1077E000108247985D9A289A109289008AEF8093B8 +:1077F000880090936F0083E080938100EFC01F9317 +:1078000088E10FB6F89480936000109260000FBE7C +:1078100084B714BE182F10FF08C0E0E0F0E0859197 +:1078200094918F5F9F4F09F05DDC2091000A3091A9 +:10783000010A1092010A1092000A13FF0FC08091F2 +:10784000090190910A012817390741F0E0E0F0E0C2 +:10785000859194918F5F9F4F09F044DCA2DF78946B +:107860001092AD011092AC010CC0E0DC37D38091D6 +:10787000AC019091AD0181549F4110F01092140120 +:1078800043DC80911401882381F78091E0008160BE +:107890008093E00027DC80E090E01F910895FA01DA +:1078A000923049F0933061F09130F9F485E191E044 +:1078B00022E130E01EC087E291E02EE330E019C003 +:1078C000882329F485E691E024E030E012C081307D +:1078D00029F489E691E022E230E00BC0823029F4FD +:1078E0008DE891E028E130E004C080E090E020E005 +:1078F00030E091838083C90108958093E9008091ED +:10790000EB0081608093EB001092ED006093EC003F +:107910004093ED008091EE00881F8827881F08950E +:107920008091B60188238CF403C08EB38823B1F014 +:107930008091E80082FFF9CF8091E8008B778093F7 +:10794000E80008958EB3882349F08091E80080FF15 +:10795000F9CF8091E8008E778093E8000895EF9248 +:10796000FF920F931F9345D04CD008ED10E0F80123 +:1079700080818F77808380818068808380818F7D04 +:10798000808319BC1EBA1092B40180EEE82EF12C4F +:10799000F70180818B7F8083F80180818160808303 +:1079A00080E060E042E0A9DFE1EEF0E080818E7FE0 +:1079B0008083E2EEF0E08081816080838081886056 +:1079C0008083F70180818E7F8083F80180818061D0 +:1079D00080831F910F91FF90EF900895E7EDF0E005 +:1079E0008081816080838AE482BF81E08093B501D9 +:1079F000B6CFE8EDF0E080818E7F80831092E200C8 +:107A000008951092DA001092E10008951F920F92EB +:107A10000FB60F9211242F933F934F935F936F9361 +:107A20007F938F939F93AF93BF93EF93FF93809137 +:107A3000DA0080FF1BC08091D80080FF17C08091C2 +:107A4000DA008E7F8093DA008091D90080FF0BC02E +:107A500080E189BD82E189BD09B400FEFDCF81E0EE +:107A60008EBB3BD203C019BC1EBA37D28091E10055 +:107A700080FF17C08091E20080FF13C08091E20078 +:107A80008E7F8093E2008091E20080618093E2002B +:107A90008091D80080628093D80019BC85E08EBBAD +:107AA0001CD28091E10084FF2CC08091E20084FF11 +:107AB00028C080E189BD82E189BD09B400FEFDCF07 +:107AC0008091D8008F7D8093D8008091E1008F7ED7 +:107AD0008093E1008091E2008F7E8093E2008091AC +:107AE000E20081608093E2008091B401882331F448 +:107AF0008091E30087FD02C081E001C084E08EBB7D +:107B0000ECD18091E10083FF21C08091E20083FFEE +:107B10001DC08091E100877F8093E10082E08EBBF1 +:107B20001092B4018091E1008E7F8093E1008091FA +:107B3000E2008E7F8093E2008091E200806180937A +:107B4000E20080E060E042E0D8DEC7D1FF91EF9133 +:107B5000BF91AF919F918F917F916F915F914F9165 +:107B60003F912F910F900FBE0F901F9018959C0181 +:107B70004091BC015091BD014617570718F4F90117 +:107B800090E044C06115710511F0AB01F8CF809110 +:107B9000E8008E778093E80040E050E0F0CF8EB3AD +:107BA000882309F444C0853009F443C08091E8007B +:107BB00083FF02C081E008958091E80082FD31C01A +:107BC0008091E80080FF22C08091F3009091F20044 +:107BD000782F60E0292F30E0262B372B07C08191CA +:107BE0008093F100415050402F5F3F4F41155105A8 +:107BF00019F02830310598F390E02830310509F468 +:107C000091E08091E8008E778093E800411551055E +:107C100031F6992321F605C08EB3882341F08530D3 +:107C200041F08091E80082FFF7CF80E0089582E084 +:107C3000089583E008959C016115710529F48091F0 +:107C4000E8008B778093E800F90126C08EB3882383 +:107C500091F1853091F18091E80083FF02C081E0CD +:107C600008958091E80082FFF1CF06C08091F10075 +:107C700081936150704059F02091F3008091F2009F +:107C8000322F20E090E0822B932B892B79F7809183 +:107C9000E8008B778093E80061157105B9F605C09F +:107CA0008EB3882341F0853041F08091E80080FF59 +:107CB000F7CF80E0089582E0089583E008950F9360 +:107CC0001F93DF93CF9300D0CDB7DEB7E6EBF1E0A3 +:107CD0008091F100819381E0EE3BF807C9F725DD43 +:107CE0008091E80083FFE4C08091B6019091B701D4 +:107CF000953009F46DC0963040F4913081F19130A7 +:107D000070F0933009F0D4C02AC0983009F4A3C0B1 +:107D1000993009F4B2C0963009F0CAC07CC08038EE +:107D200009F4C6C0823809F0C3C08091BA018770D7 +:107D30008093E9008091EB001092E9002091E80027 +:107D4000277F2093E80090E025E0969587952A9577 +:107D5000E1F781708093F1001092F10087C08823D1 +:107D600019F0823009F0A4C08F71823009F0A0C0F0 +:107D70008091B801882331F52091BA01277009F468 +:107D800097C02093E9008091EB0080FF1BC09330E7 +:107D900021F48091EB00806213C08091EB00806140 +:107DA0008093EB0081E090E002C0880F991F2A9534 +:107DB000E2F78093EA001092EA008091EB0088607D +:107DC0008093EB001092E9008091E800877F51C01A +:107DD000882309F06DC01091B8011F770FB7F89490 +:107DE0008091E800877F8093E8009ADD8091E80029 +:107DF00080FFFCCF8091E3008078812B8093E300AB +:107E000080688093E300112311F482E001C083E0D5 +:107E10008EBB0FBF4DC08058823008F049C08091A2 +:107E2000B8019091B9016091BA01AE014F5F5F4F07 +:107E300036DDBC01009709F43BC08091E800877FE4 +:107E40008093E80089819A8192DE8091E8008B77A7 +:107E50008093E8002DC0803859F58091E800877F35 +:107E60008093E8008091B4018093F1008091E80054 +:107E70008E778093E80054DD1BC08823C9F490916D +:107E8000B8019230A8F48091E800877F8093E800E1 +:107E90009093B40145DD8091B401882331F4809141 +:107EA000E30087FD02C081E001C084E08EBB6DDC91 +:107EB0008091E80083FF0AC08091EB00806280938C +:107EC000EB008091E800877F8093E8000F900F908F +:107ED000CF91DF911F910F91089508951F938EB355 +:107EE000882361F01091E9001092E9008091E80088 +:107EF00083FF01C0E4DE17701093E9001F9108951D +:107F0000F999FECF92BD81BDF89A992780B5089561 +:107F1000262FF999FECF1FBA92BD81BD20BD0FB6A5 +:107F2000F894FA9AF99A0FBE01960895F894FFCF43 +:107F30004341544552494E41007777000A00000002 +:107F40000000000801120110010200000841230195 +:107F50000701000201000109023E00020100803217 +:107F6000090400000102020100052400100104249C +:107F700002040524060001070582030800FF090426 +:107F80000100020A000000070504021000010705B5 +:107F900083021000010403090422034100720064FB +:107FA00000750069006E006F0020004C0065006FD6 +:107FB000006E006100720064006F00000018034151 +:107FC0000072006400750069006E006F0020004CB4 +:087FD000004C0043000000001A :040000030000700089 :00000001FF diff --git a/bootloaders/caterina/Makefile b/bootloaders/caterina/Makefile index 5439b5b..ef583bc 100755 --- a/bootloaders/caterina/Makefile +++ b/bootloaders/caterina/Makefile @@ -133,7 +133,7 @@ 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 +LUFA_OPTS += -D NO_LOCK_BYTE_WRITE_SUPPORT # Create the LUFA source path variables by including the LUFA root makefile -- cgit v1.2.3-18-g5258 From afedb5a92bac5c7f62a02ba085b4fff2b4f2070a Mon Sep 17 00:00:00 2001 From: Zach Eveland Date: Mon, 9 Apr 2012 08:03:56 -0400 Subject: PID and VID are no longer hard-coded in bootloader. instead they are passed in at compile-time from makefile. also added and renamed built bootloader images for Micro and Leonardo --- bootloaders/caterina/Caterina-Leonardo.hex | 256 +++++++++++++++++++++++++++++ bootloaders/caterina/Caterina-Micro.hex | 256 +++++++++++++++++++++++++++++ bootloaders/caterina/Caterina.hex | 256 ----------------------------- bootloaders/caterina/Descriptors.c | 12 +- bootloaders/caterina/Makefile | 13 ++ 5 files changed, 534 insertions(+), 259 deletions(-) create mode 100644 bootloaders/caterina/Caterina-Leonardo.hex create mode 100644 bootloaders/caterina/Caterina-Micro.hex delete mode 100644 bootloaders/caterina/Caterina.hex (limited to 'bootloaders/caterina') diff --git a/bootloaders/caterina/Caterina-Leonardo.hex b/bootloaders/caterina/Caterina-Leonardo.hex new file mode 100644 index 0000000..d7873af --- /dev/null +++ b/bootloaders/caterina/Caterina-Leonardo.hex @@ -0,0 +1,256 @@ +:1070000055C000006EC000006CC000006AC00000E7 +:1070100068C0000066C0000064C0000062C00000DC +:1070200060C000005EC00000F1C400005AC0000053 +:1070300058C0000056C0000054C0000052C00000FC +:1070400050C0000078C000004CC000004AC00000E2 +:1070500048C0000046C0000044C0000042C000001C +:1070600040C000003EC000003CC000003AC000002C +:1070700038C0000036C0000034C0000032C000003C +:1070800030C000002EC000002CC000002AC000004C +:1070900028C0000026C0000024C0000022C000005C +:1070A00020C000001EC000001CC0000011241FBE34 +:1070B000CFEFDAE0DEBFCDBF11E0A0E0B1E0E0E36A +:1070C000FFE702C005900D92A83AB107D9F711E089 +:1070D000A8EAB1E001C01D92AE3BB107E1F78FD342 +:1070E00025C78ECFF89410926F00109281001092F5 +:1070F00085001092840081E085BF15BE47985D9A97 +:10710000289A0C94000008952091B2013091B301A7 +:107110002F5F3F4F3093B3012093B201932F37FF7E +:1071200003C08EEF831B982F990F921710F4479886 +:107130000895479A08951F920F920FB60F92112447 +:107140002F938F939F93EF93FF931092850010924C +:1071500084008091A8019091A901009741F00197C6 +:107160009093A9018093A801892B09F45D9A8091DD +:10717000AA019091AB01009741F001979093AB0168 +:107180008093AA01892B09F4289AE0E0F0E0859128 +:1071900094918F5F9F4F49F08091AC019091AD0128 +:1071A00001969093AD018093AC01FF91EF919F9177 +:1071B0008F912F910F900FBE0F901F90189584E024 +:1071C0008093E9000DC08091E8008B778093E80000 +:1071D00003C08EB3882351F08091E80082FFF9CF7D +:1071E0008091E80085FFEFCF8091F1000895982FFE +:1071F00083E08093E9008091E80085FD0DC08091D7 +:10720000E8008E778093E80003C08EB3882369F08E +:107210008091E80080FFF9CF9093F1005D9884E6BB +:1072200090E09093A9018093A80108954F925F92F6 +:107230006F927F928F929F92AF92BF92CF92DF9286 +:10724000EF92FF920F931F93CF93DF9384E080938D +:10725000E9008091E80082FF57C2289884E690E018 +:107260009093AB018093AA01AADF182F853481F493 +:107270008CE49DE19093AD018093AC0107B600FCD6 +:10728000FDCFF999FECF81E180935700E89503C0C7 +:10729000843519F494DF8DE00DC28C34E1F3803530 +:1072A000D1F3843721F484E4A2DF80E003C2813685 +:1072B00011F489E5FFC18134B1F481DF182F7FDF3C +:1072C00090E0880F991FAA2797FDA095BA2F312F1C +:1072D000330F20E0442737FD4095542F822B932B0A +:1072E000A42BB52BB8C1803711F483E5E3C18335F6 +:1072F00049F4C0E0D1E089917ADF21E0C730D207BC +:10730000D1F7D9C1863521F481E371DF80E3D2C1A1 +:10731000833731F487E86BDF85E969DF8EE1CAC125 +:107320008536B9F4E0E0F0E093E085E09093570013 +:10733000E89507B600FCFDCF80935700E89507B6A7 +:1073400000FCFDCFE058FF4FA0E7E030FA0771F7EF +:10735000A2CF823739F4E1E0F0E089E08093570072 +:107360008491A8C1863439F4E0E0F0E089E08093AC +:10737000570084919FC18E3439F4E3E0F0E089E056 +:1073800080935700849196C1813539F4E2E0F0E0B2 +:1073900089E08093570084918DC1823631F489E56C +:1073A00026DF80E024DF80E885C1823419F087364B +:1073B00009F0E5C01092AD011092AC0100DF082F7A +:1073C000FEDEF82EFCDE682E8554823008F071C196 +:1073D000902F80E0CF2DD0E0C82BD92B10926F00DA +:1073E000173609F04BC081E180935700E895DD2402 +:1073F000CC24C3943FC0E090AE01F090AF01009167 +:10740000B0011091B101B6E46B16D9F4ED2DF0E0A6 +:10741000EE29FF29E4918E2FEADEDD2081F082E063 +:1074200090E0A0E0B0E0E80EF91E0A1F1B1FE092FA +:10743000AE01F092AF010093B0011093B101DC24D2 +:1074400018C0D801C701B695A7959795879558D5C7 +:10745000CEDE82E090E0A0E0B0E0E80EF91E0A1F68 +:107460001B1FE092AE01F092AF010093B0011093A8 +:10747000B1012197209709F0BECF7DC08090AE0169 +:107480009090AF01A090B001B090B10196E4691660 +:1074900009F05DC083E0F40180935700E89507B6DA +:1074A00000FCFDCF54C0F6E46F1661F5772031F192 +:1074B000E090AE01F090AF010091B0011091B101E8 +:1074C0007EDED82ECC24852D90E08C299D29F701D5 +:1074D0000C0140925700E895112482E090E0A0E072 +:1074E000B0E0E80EF91E0A1F1B1FE092AE01F092F9 +:1074F000AF010093B0011093B10102C060DE582EBD +:10750000742423C0E090AE01F090AF010091B0016F +:107510001091B10116950795F794E79450DE682F06 +:10752000C701F6D48091AE019091AF01A091B00156 +:10753000B091B1010296A11DB11D8093AE0190934F +:10754000AF01A093B001B093B101219704C05524BD +:10755000772444244394209709F0A5CF96E4691634 +:1075600041F485E0F40180935700E89507B600FCEC +:10757000FDCF8DE03CDE82E080936F009CC08334C1 +:1075800071F40091AE011091AF0119DE90E021E09D +:10759000F8010C0120935700E89511247CCE833626 +:1075A00019F5E090AE01F090AF010091B00110919B +:1075B000B10105DEF701E16090E021E00C012093CC +:1075C0005700E895112482E090E0A0E0B0E0E80EDA +:1075D000F91E0A1F1B1FE092AE01F092AF0100934B +:1075E000B0011093B10157CE8D3661F4E091AE0138 +:1075F000F091AF0185E080935700E89507B600FC55 +:10760000FDCF49CE823551F4E091AE01F091AF014A +:1076100005911491812FEBDD802F4CC0843421F52E +:10762000E090AE01F090AF010091B0011091B10176 +:1076300016950795F794E794C2DD682FC70168D4C3 +:107640008091AE019091AF01A091B001B091B101D4 +:107650000296A11DB11D8093AE019093AF01A0933E +:10766000B001B093B10117CE843609F5E090AE01B8 +:10767000F090AF010091B0011091B101D801C701A4 +:10768000B695A795979587953BD4B1DD82E090E0BC +:10769000A0E0B0E0E80EF91E0A1F1B1FE092AE0149 +:1076A000F092AF010093B0011093B10104C08B318F +:1076B00011F08FE39CDD83E08093E9009091E80076 +:1076C0008091E8008E778093E80095FF04C010C099 +:1076D0008EB38823C9F08091E80080FFF9CF8091B4 +:1076E000E8008E778093E80003C08EB3882361F0B2 +:1076F0008091E80080FFF9CF84E08093E9008091D9 +:10770000E8008B778093E800DF91CF911F910F9174 +:10771000FF90EF90DF90CF90BF90AF909F908F90B1 +:107720007F906F905F904F9008959091B601892F50 +:107730008F77813249F58091B7018032A1F0813293 +:1077400019F5913A09F58091E800877F8093E80068 +:107750008DE091E067E070E00AD28091E8008B77DD +:107760008093E8000895913279F48091E800877F52 +:107770008093E8008DE091E067E070E05CD280915A +:10778000E8008E778093E800089582E061EC42E0A3 +:10779000B4D083E061E842E1B0D084E060E842E147 +:1077A000ACC084B7877F84BF88E10FB6F89480931C +:1077B0006000109260000FBE20E880E090E00FB6FD +:1077C000F89420936100809361000FBE81E085BF33 +:1077D00092E095BF3F9A209A559AE1E6F0E0208327 +:1077E000108247985D9A289A109289008AEF8093B8 +:1077F000880090936F0083E080938100EFC01F9317 +:1078000088E10FB6F89480936000109260000FBE7C +:1078100084B714BE182F10FF08C0E0E0F0E0859197 +:1078200094918F5F9F4F09F05DDC2091000A3091A9 +:10783000010A1092010A1092000A13FF0FC08091F2 +:10784000090190910A012817390741F0E0E0F0E0C2 +:10785000859194918F5F9F4F09F044DCA2DF78946B +:107860001092AD011092AC010CC0E0DC37D38091D6 +:10787000AC019091AD0181549F4110F01092140120 +:1078800043DC80911401882381F78091E0008160BE +:107890008093E00027DC80E090E01F910895FA01DA +:1078A000923049F0933061F09130F9F485E191E044 +:1078B00022E130E01EC087E291E02EE330E019C003 +:1078C000882329F485E691E024E030E012C081307D +:1078D00029F489E691E022E230E00BC0823029F4FD +:1078E0008DE891E028E130E004C080E090E020E005 +:1078F00030E091838083C90108958093E9008091ED +:10790000EB0081608093EB001092ED006093EC003F +:107910004093ED008091EE00881F8827881F08950E +:107920008091B60188238CF403C08EB38823B1F014 +:107930008091E80082FFF9CF8091E8008B778093F7 +:10794000E80008958EB3882349F08091E80080FF15 +:10795000F9CF8091E8008E778093E8000895EF9248 +:10796000FF920F931F9345D04CD008ED10E0F80123 +:1079700080818F77808380818068808380818F7D04 +:10798000808319BC1EBA1092B40180EEE82EF12C4F +:10799000F70180818B7F8083F80180818160808303 +:1079A00080E060E042E0A9DFE1EEF0E080818E7FE0 +:1079B0008083E2EEF0E08081816080838081886056 +:1079C0008083F70180818E7F8083F80180818061D0 +:1079D00080831F910F91FF90EF900895E7EDF0E005 +:1079E0008081816080838AE482BF81E08093B501D9 +:1079F000B6CFE8EDF0E080818E7F80831092E200C8 +:107A000008951092DA001092E10008951F920F92EB +:107A10000FB60F9211242F933F934F935F936F9361 +:107A20007F938F939F93AF93BF93EF93FF93809137 +:107A3000DA0080FF1BC08091D80080FF17C08091C2 +:107A4000DA008E7F8093DA008091D90080FF0BC02E +:107A500080E189BD82E189BD09B400FEFDCF81E0EE +:107A60008EBB3BD203C019BC1EBA37D28091E10055 +:107A700080FF17C08091E20080FF13C08091E20078 +:107A80008E7F8093E2008091E20080618093E2002B +:107A90008091D80080628093D80019BC85E08EBBAD +:107AA0001CD28091E10084FF2CC08091E20084FF11 +:107AB00028C080E189BD82E189BD09B400FEFDCF07 +:107AC0008091D8008F7D8093D8008091E1008F7ED7 +:107AD0008093E1008091E2008F7E8093E2008091AC +:107AE000E20081608093E2008091B401882331F448 +:107AF0008091E30087FD02C081E001C084E08EBB7D +:107B0000ECD18091E10083FF21C08091E20083FFEE +:107B10001DC08091E100877F8093E10082E08EBBF1 +:107B20001092B4018091E1008E7F8093E1008091FA +:107B3000E2008E7F8093E2008091E200806180937A +:107B4000E20080E060E042E0D8DEC7D1FF91EF9133 +:107B5000BF91AF919F918F917F916F915F914F9165 +:107B60003F912F910F900FBE0F901F9018959C0181 +:107B70004091BC015091BD014617570718F4F90117 +:107B800090E044C06115710511F0AB01F8CF809110 +:107B9000E8008E778093E80040E050E0F0CF8EB3AD +:107BA000882309F444C0853009F443C08091E8007B +:107BB00083FF02C081E008958091E80082FD31C01A +:107BC0008091E80080FF22C08091F3009091F20044 +:107BD000782F60E0292F30E0262B372B07C08191CA +:107BE0008093F100415050402F5F3F4F41155105A8 +:107BF00019F02830310598F390E02830310509F468 +:107C000091E08091E8008E778093E800411551055E +:107C100031F6992321F605C08EB3882341F08530D3 +:107C200041F08091E80082FFF7CF80E0089582E084 +:107C3000089583E008959C016115710529F48091F0 +:107C4000E8008B778093E800F90126C08EB3882383 +:107C500091F1853091F18091E80083FF02C081E0CD +:107C600008958091E80082FFF1CF06C08091F10075 +:107C700081936150704059F02091F3008091F2009F +:107C8000322F20E090E0822B932B892B79F7809183 +:107C9000E8008B778093E80061157105B9F605C09F +:107CA0008EB3882341F0853041F08091E80080FF59 +:107CB000F7CF80E0089582E0089583E008950F9360 +:107CC0001F93DF93CF9300D0CDB7DEB7E6EBF1E0A3 +:107CD0008091F100819381E0EE3BF807C9F725DD43 +:107CE0008091E80083FFE4C08091B6019091B701D4 +:107CF000953009F46DC0963040F4913081F19130A7 +:107D000070F0933009F0D4C02AC0983009F4A3C0B1 +:107D1000993009F4B2C0963009F0CAC07CC08038EE +:107D200009F4C6C0823809F0C3C08091BA018770D7 +:107D30008093E9008091EB001092E9002091E80027 +:107D4000277F2093E80090E025E0969587952A9577 +:107D5000E1F781708093F1001092F10087C08823D1 +:107D600019F0823009F0A4C08F71823009F0A0C0F0 +:107D70008091B801882331F52091BA01277009F468 +:107D800097C02093E9008091EB0080FF1BC09330E7 +:107D900021F48091EB00806213C08091EB00806140 +:107DA0008093EB0081E090E002C0880F991F2A9534 +:107DB000E2F78093EA001092EA008091EB0088607D +:107DC0008093EB001092E9008091E800877F51C01A +:107DD000882309F06DC01091B8011F770FB7F89490 +:107DE0008091E800877F8093E8009ADD8091E80029 +:107DF00080FFFCCF8091E3008078812B8093E300AB +:107E000080688093E300112311F482E001C083E0D5 +:107E10008EBB0FBF4DC08058823008F049C08091A2 +:107E2000B8019091B9016091BA01AE014F5F5F4F07 +:107E300036DDBC01009709F43BC08091E800877FE4 +:107E40008093E80089819A8192DE8091E8008B77A7 +:107E50008093E8002DC0803859F58091E800877F35 +:107E60008093E8008091B4018093F1008091E80054 +:107E70008E778093E80054DD1BC08823C9F490916D +:107E8000B8019230A8F48091E800877F8093E800E1 +:107E90009093B40145DD8091B401882331F4809141 +:107EA000E30087FD02C081E001C084E08EBB6DDC91 +:107EB0008091E80083FF0AC08091EB00806280938C +:107EC000EB008091E800877F8093E8000F900F908F +:107ED000CF91DF911F910F91089508951F938EB355 +:107EE000882361F01091E9001092E9008091E80088 +:107EF00083FF01C0E4DE17701093E9001F9108951D +:107F0000F999FECF92BD81BDF89A992780B5089561 +:107F1000262FF999FECF1FBA92BD81BD20BD0FB6A5 +:107F2000F894FA9AF99A0FBE01960895F894FFCF43 +:107F30004341544552494E41007777000A00000002 +:107F40000000000801120110010200000841233462 +:107F50000001000201000109023E0002010080321E +:107F6000090400000102020100052400100104249C +:107F700002040524060001070582030800FF090426 +:107F80000100020A000000070504021000010705B5 +:107F900083021000010403090422034100720064FB +:107FA00000750069006E006F0020004C0065006FD6 +:107FB000006E006100720064006F00000018034151 +:107FC0000072006400750069006E006F0020004CB4 +:087FD000004C0043000000001A +:040000030000700089 +:00000001FF diff --git a/bootloaders/caterina/Caterina-Micro.hex b/bootloaders/caterina/Caterina-Micro.hex new file mode 100644 index 0000000..7479210 --- /dev/null +++ b/bootloaders/caterina/Caterina-Micro.hex @@ -0,0 +1,256 @@ +:1070000055C000006EC000006CC000006AC00000E7 +:1070100068C0000066C0000064C0000062C00000DC +:1070200060C000005EC00000F1C400005AC0000053 +:1070300058C0000056C0000054C0000052C00000FC +:1070400050C0000078C000004CC000004AC00000E2 +:1070500048C0000046C0000044C0000042C000001C +:1070600040C000003EC000003CC000003AC000002C +:1070700038C0000036C0000034C0000032C000003C +:1070800030C000002EC000002CC000002AC000004C +:1070900028C0000026C0000024C0000022C000005C +:1070A00020C000001EC000001CC0000011241FBE34 +:1070B000CFEFDAE0DEBFCDBF11E0A0E0B1E0E0E36A +:1070C000FFE702C005900D92A83AB107D9F711E089 +:1070D000A8EAB1E001C01D92AE3BB107E1F78FD342 +:1070E00025C78ECFF89410926F00109281001092F5 +:1070F00085001092840081E085BF15BE47985D9A97 +:10710000289A0C94000008952091B2013091B301A7 +:107110002F5F3F4F3093B3012093B201932F37FF7E +:1071200003C08EEF831B982F990F921710F4479886 +:107130000895479A08951F920F920FB60F92112447 +:107140002F938F939F93EF93FF931092850010924C +:1071500084008091A8019091A901009741F00197C6 +:107160009093A9018093A801892B09F45D9A8091DD +:10717000AA019091AB01009741F001979093AB0168 +:107180008093AA01892B09F4289AE0E0F0E0859128 +:1071900094918F5F9F4F49F08091AC019091AD0128 +:1071A00001969093AD018093AC01FF91EF919F9177 +:1071B0008F912F910F900FBE0F901F90189584E024 +:1071C0008093E9000DC08091E8008B778093E80000 +:1071D00003C08EB3882351F08091E80082FFF9CF7D +:1071E0008091E80085FFEFCF8091F1000895982FFE +:1071F00083E08093E9008091E80085FD0DC08091D7 +:10720000E8008E778093E80003C08EB3882369F08E +:107210008091E80080FFF9CF9093F1005D9884E6BB +:1072200090E09093A9018093A80108954F925F92F6 +:107230006F927F928F929F92AF92BF92CF92DF9286 +:10724000EF92FF920F931F93CF93DF9384E080938D +:10725000E9008091E80082FF57C2289884E690E018 +:107260009093AB018093AA01AADF182F853481F493 +:107270008CE49DE19093AD018093AC0107B600FCD6 +:10728000FDCFF999FECF81E180935700E89503C0C7 +:10729000843519F494DF8DE00DC28C34E1F3803530 +:1072A000D1F3843721F484E4A2DF80E003C2813685 +:1072B00011F489E5FFC18134B1F481DF182F7FDF3C +:1072C00090E0880F991FAA2797FDA095BA2F312F1C +:1072D000330F20E0442737FD4095542F822B932B0A +:1072E000A42BB52BB8C1803711F483E5E3C18335F6 +:1072F00049F4C0E0D1E089917ADF21E0C730D207BC +:10730000D1F7D9C1863521F481E371DF80E3D2C1A1 +:10731000833731F487E86BDF85E969DF8EE1CAC125 +:107320008536B9F4E0E0F0E093E085E09093570013 +:10733000E89507B600FCFDCF80935700E89507B6A7 +:1073400000FCFDCFE058FF4FA0E7E030FA0771F7EF +:10735000A2CF823739F4E1E0F0E089E08093570072 +:107360008491A8C1863439F4E0E0F0E089E08093AC +:10737000570084919FC18E3439F4E3E0F0E089E056 +:1073800080935700849196C1813539F4E2E0F0E0B2 +:1073900089E08093570084918DC1823631F489E56C +:1073A00026DF80E024DF80E885C1823419F087364B +:1073B00009F0E5C01092AD011092AC0100DF082F7A +:1073C000FEDEF82EFCDE682E8554823008F071C196 +:1073D000902F80E0CF2DD0E0C82BD92B10926F00DA +:1073E000173609F04BC081E180935700E895DD2402 +:1073F000CC24C3943FC0E090AE01F090AF01009167 +:10740000B0011091B101B6E46B16D9F4ED2DF0E0A6 +:10741000EE29FF29E4918E2FEADEDD2081F082E063 +:1074200090E0A0E0B0E0E80EF91E0A1F1B1FE092FA +:10743000AE01F092AF010093B0011093B101DC24D2 +:1074400018C0D801C701B695A7959795879558D5C7 +:10745000CEDE82E090E0A0E0B0E0E80EF91E0A1F68 +:107460001B1FE092AE01F092AF010093B0011093A8 +:10747000B1012197209709F0BECF7DC08090AE0169 +:107480009090AF01A090B001B090B10196E4691660 +:1074900009F05DC083E0F40180935700E89507B6DA +:1074A00000FCFDCF54C0F6E46F1661F5772031F192 +:1074B000E090AE01F090AF010091B0011091B101E8 +:1074C0007EDED82ECC24852D90E08C299D29F701D5 +:1074D0000C0140925700E895112482E090E0A0E072 +:1074E000B0E0E80EF91E0A1F1B1FE092AE01F092F9 +:1074F000AF010093B0011093B10102C060DE582EBD +:10750000742423C0E090AE01F090AF010091B0016F +:107510001091B10116950795F794E79450DE682F06 +:10752000C701F6D48091AE019091AF01A091B00156 +:10753000B091B1010296A11DB11D8093AE0190934F +:10754000AF01A093B001B093B101219704C05524BD +:10755000772444244394209709F0A5CF96E4691634 +:1075600041F485E0F40180935700E89507B600FCEC +:10757000FDCF8DE03CDE82E080936F009CC08334C1 +:1075800071F40091AE011091AF0119DE90E021E09D +:10759000F8010C0120935700E89511247CCE833626 +:1075A00019F5E090AE01F090AF010091B00110919B +:1075B000B10105DEF701E16090E021E00C012093CC +:1075C0005700E895112482E090E0A0E0B0E0E80EDA +:1075D000F91E0A1F1B1FE092AE01F092AF0100934B +:1075E000B0011093B10157CE8D3661F4E091AE0138 +:1075F000F091AF0185E080935700E89507B600FC55 +:10760000FDCF49CE823551F4E091AE01F091AF014A +:1076100005911491812FEBDD802F4CC0843421F52E +:10762000E090AE01F090AF010091B0011091B10176 +:1076300016950795F794E794C2DD682FC70168D4C3 +:107640008091AE019091AF01A091B001B091B101D4 +:107650000296A11DB11D8093AE019093AF01A0933E +:10766000B001B093B10117CE843609F5E090AE01B8 +:10767000F090AF010091B0011091B101D801C701A4 +:10768000B695A795979587953BD4B1DD82E090E0BC +:10769000A0E0B0E0E80EF91E0A1F1B1FE092AE0149 +:1076A000F092AF010093B0011093B10104C08B318F +:1076B00011F08FE39CDD83E08093E9009091E80076 +:1076C0008091E8008E778093E80095FF04C010C099 +:1076D0008EB38823C9F08091E80080FFF9CF8091B4 +:1076E000E8008E778093E80003C08EB3882361F0B2 +:1076F0008091E80080FFF9CF84E08093E9008091D9 +:10770000E8008B778093E800DF91CF911F910F9174 +:10771000FF90EF90DF90CF90BF90AF909F908F90B1 +:107720007F906F905F904F9008959091B601892F50 +:107730008F77813249F58091B7018032A1F0813293 +:1077400019F5913A09F58091E800877F8093E80068 +:107750008DE091E067E070E00AD28091E8008B77DD +:107760008093E8000895913279F48091E800877F52 +:107770008093E8008DE091E067E070E05CD280915A +:10778000E8008E778093E800089582E061EC42E0A3 +:10779000B4D083E061E842E1B0D084E060E842E147 +:1077A000ACC084B7877F84BF88E10FB6F89480931C +:1077B0006000109260000FBE20E880E090E00FB6FD +:1077C000F89420936100809361000FBE81E085BF33 +:1077D00092E095BF3F9A209A559AE1E6F0E0208327 +:1077E000108247985D9A289A109289008AEF8093B8 +:1077F000880090936F0083E080938100EFC01F9317 +:1078000088E10FB6F89480936000109260000FBE7C +:1078100084B714BE182F10FF08C0E0E0F0E0859197 +:1078200094918F5F9F4F09F05DDC2091000A3091A9 +:10783000010A1092010A1092000A13FF0FC08091F2 +:10784000090190910A012817390741F0E0E0F0E0C2 +:10785000859194918F5F9F4F09F044DCA2DF78946B +:107860001092AD011092AC010CC0E0DC37D38091D6 +:10787000AC019091AD0181549F4110F01092140120 +:1078800043DC80911401882381F78091E0008160BE +:107890008093E00027DC80E090E01F910895FA01DA +:1078A000923049F0933061F09130F9F485E191E044 +:1078B00022E130E01EC087E291E02EE330E019C003 +:1078C000882329F485E691E024E030E012C081307D +:1078D00029F489E691E022E230E00BC0823029F4FD +:1078E0008DE891E028E130E004C080E090E020E005 +:1078F00030E091838083C90108958093E9008091ED +:10790000EB0081608093EB001092ED006093EC003F +:107910004093ED008091EE00881F8827881F08950E +:107920008091B60188238CF403C08EB38823B1F014 +:107930008091E80082FFF9CF8091E8008B778093F7 +:10794000E80008958EB3882349F08091E80080FF15 +:10795000F9CF8091E8008E778093E8000895EF9248 +:10796000FF920F931F9345D04CD008ED10E0F80123 +:1079700080818F77808380818068808380818F7D04 +:10798000808319BC1EBA1092B40180EEE82EF12C4F +:10799000F70180818B7F8083F80180818160808303 +:1079A00080E060E042E0A9DFE1EEF0E080818E7FE0 +:1079B0008083E2EEF0E08081816080838081886056 +:1079C0008083F70180818E7F8083F80180818061D0 +:1079D00080831F910F91FF90EF900895E7EDF0E005 +:1079E0008081816080838AE482BF81E08093B501D9 +:1079F000B6CFE8EDF0E080818E7F80831092E200C8 +:107A000008951092DA001092E10008951F920F92EB +:107A10000FB60F9211242F933F934F935F936F9361 +:107A20007F938F939F93AF93BF93EF93FF93809137 +:107A3000DA0080FF1BC08091D80080FF17C08091C2 +:107A4000DA008E7F8093DA008091D90080FF0BC02E +:107A500080E189BD82E189BD09B400FEFDCF81E0EE +:107A60008EBB3BD203C019BC1EBA37D28091E10055 +:107A700080FF17C08091E20080FF13C08091E20078 +:107A80008E7F8093E2008091E20080618093E2002B +:107A90008091D80080628093D80019BC85E08EBBAD +:107AA0001CD28091E10084FF2CC08091E20084FF11 +:107AB00028C080E189BD82E189BD09B400FEFDCF07 +:107AC0008091D8008F7D8093D8008091E1008F7ED7 +:107AD0008093E1008091E2008F7E8093E2008091AC +:107AE000E20081608093E2008091B401882331F448 +:107AF0008091E30087FD02C081E001C084E08EBB7D +:107B0000ECD18091E10083FF21C08091E20083FFEE +:107B10001DC08091E100877F8093E10082E08EBBF1 +:107B20001092B4018091E1008E7F8093E1008091FA +:107B3000E2008E7F8093E2008091E200806180937A +:107B4000E20080E060E042E0D8DEC7D1FF91EF9133 +:107B5000BF91AF919F918F917F916F915F914F9165 +:107B60003F912F910F900FBE0F901F9018959C0181 +:107B70004091BC015091BD014617570718F4F90117 +:107B800090E044C06115710511F0AB01F8CF809110 +:107B9000E8008E778093E80040E050E0F0CF8EB3AD +:107BA000882309F444C0853009F443C08091E8007B +:107BB00083FF02C081E008958091E80082FD31C01A +:107BC0008091E80080FF22C08091F3009091F20044 +:107BD000782F60E0292F30E0262B372B07C08191CA +:107BE0008093F100415050402F5F3F4F41155105A8 +:107BF00019F02830310598F390E02830310509F468 +:107C000091E08091E8008E778093E800411551055E +:107C100031F6992321F605C08EB3882341F08530D3 +:107C200041F08091E80082FFF7CF80E0089582E084 +:107C3000089583E008959C016115710529F48091F0 +:107C4000E8008B778093E800F90126C08EB3882383 +:107C500091F1853091F18091E80083FF02C081E0CD +:107C600008958091E80082FFF1CF06C08091F10075 +:107C700081936150704059F02091F3008091F2009F +:107C8000322F20E090E0822B932B892B79F7809183 +:107C9000E8008B778093E80061157105B9F605C09F +:107CA0008EB3882341F0853041F08091E80080FF59 +:107CB000F7CF80E0089582E0089583E008950F9360 +:107CC0001F93DF93CF9300D0CDB7DEB7E6EBF1E0A3 +:107CD0008091F100819381E0EE3BF807C9F725DD43 +:107CE0008091E80083FFE4C08091B6019091B701D4 +:107CF000953009F46DC0963040F4913081F19130A7 +:107D000070F0933009F0D4C02AC0983009F4A3C0B1 +:107D1000993009F4B2C0963009F0CAC07CC08038EE +:107D200009F4C6C0823809F0C3C08091BA018770D7 +:107D30008093E9008091EB001092E9002091E80027 +:107D4000277F2093E80090E025E0969587952A9577 +:107D5000E1F781708093F1001092F10087C08823D1 +:107D600019F0823009F0A4C08F71823009F0A0C0F0 +:107D70008091B801882331F52091BA01277009F468 +:107D800097C02093E9008091EB0080FF1BC09330E7 +:107D900021F48091EB00806213C08091EB00806140 +:107DA0008093EB0081E090E002C0880F991F2A9534 +:107DB000E2F78093EA001092EA008091EB0088607D +:107DC0008093EB001092E9008091E800877F51C01A +:107DD000882309F06DC01091B8011F770FB7F89490 +:107DE0008091E800877F8093E8009ADD8091E80029 +:107DF00080FFFCCF8091E3008078812B8093E300AB +:107E000080688093E300112311F482E001C083E0D5 +:107E10008EBB0FBF4DC08058823008F049C08091A2 +:107E2000B8019091B9016091BA01AE014F5F5F4F07 +:107E300036DDBC01009709F43BC08091E800877FE4 +:107E40008093E80089819A8192DE8091E8008B77A7 +:107E50008093E8002DC0803859F58091E800877F35 +:107E60008093E8008091B4018093F1008091E80054 +:107E70008E778093E80054DD1BC08823C9F490916D +:107E8000B8019230A8F48091E800877F8093E800E1 +:107E90009093B40145DD8091B401882331F4809141 +:107EA000E30087FD02C081E001C084E08EBB6DDC91 +:107EB0008091E80083FF0AC08091EB00806280938C +:107EC000EB008091E800877F8093E8000F900F908F +:107ED000CF91DF911F910F91089508951F938EB355 +:107EE000882361F01091E9001092E9008091E80088 +:107EF00083FF01C0E4DE17701093E9001F9108951D +:107F0000F999FECF92BD81BDF89A992780B5089561 +:107F1000262FF999FECF1FBA92BD81BD20BD0FB6A5 +:107F2000F894FA9AF99A0FBE01960895F894FFCF43 +:107F30004341544552494E41007777000A00000002 +:107F40000000000801120110010200000841233561 +:107F50000001000201000109023E0002010080321E +:107F6000090400000102020100052400100104249C +:107F700002040524060001070582030800FF090426 +:107F80000100020A000000070504021000010705B5 +:107F900083021000010403090422034100720064FB +:107FA00000750069006E006F0020004D00690063DD +:107FB0000072006F00200020002000000018034124 +:107FC0000072006400750069006E006F0020004CB4 +:087FD000004C0043000000001A +:040000030000700089 +:00000001FF diff --git a/bootloaders/caterina/Caterina.hex b/bootloaders/caterina/Caterina.hex deleted file mode 100644 index b3e1ed6..0000000 --- a/bootloaders/caterina/Caterina.hex +++ /dev/null @@ -1,256 +0,0 @@ -:1070000055C000006EC000006CC000006AC00000E7 -:1070100068C0000066C0000064C0000062C00000DC -:1070200060C000005EC00000F1C400005AC0000053 -:1070300058C0000056C0000054C0000052C00000FC -:1070400050C0000078C000004CC000004AC00000E2 -:1070500048C0000046C0000044C0000042C000001C -:1070600040C000003EC000003CC000003AC000002C -:1070700038C0000036C0000034C0000032C000003C -:1070800030C000002EC000002CC000002AC000004C -:1070900028C0000026C0000024C0000022C000005C -:1070A00020C000001EC000001CC0000011241FBE34 -:1070B000CFEFDAE0DEBFCDBF11E0A0E0B1E0E0E36A -:1070C000FFE702C005900D92A83AB107D9F711E089 -:1070D000A8EAB1E001C01D92AE3BB107E1F78FD342 -:1070E00025C78ECFF89410926F00109281001092F5 -:1070F00085001092840081E085BF15BE47985D9A97 -:10710000289A0C94000008952091B2013091B301A7 -:107110002F5F3F4F3093B3012093B201932F37FF7E -:1071200003C08EEF831B982F990F921710F4479886 -:107130000895479A08951F920F920FB60F92112447 -:107140002F938F939F93EF93FF931092850010924C -:1071500084008091A8019091A901009741F00197C6 -:107160009093A9018093A801892B09F45D9A8091DD -:10717000AA019091AB01009741F001979093AB0168 -:107180008093AA01892B09F4289AE0E0F0E0859128 -:1071900094918F5F9F4F49F08091AC019091AD0128 -:1071A00001969093AD018093AC01FF91EF919F9177 -:1071B0008F912F910F900FBE0F901F90189584E024 -:1071C0008093E9000DC08091E8008B778093E80000 -:1071D00003C08EB3882351F08091E80082FFF9CF7D -:1071E0008091E80085FFEFCF8091F1000895982FFE -:1071F00083E08093E9008091E80085FD0DC08091D7 -:10720000E8008E778093E80003C08EB3882369F08E -:107210008091E80080FFF9CF9093F1005D9884E6BB -:1072200090E09093A9018093A80108954F925F92F6 -:107230006F927F928F929F92AF92BF92CF92DF9286 -:10724000EF92FF920F931F93CF93DF9384E080938D -:10725000E9008091E80082FF57C2289884E690E018 -:107260009093AB018093AA01AADF182F853481F493 -:107270008CE49DE19093AD018093AC0107B600FCD6 -:10728000FDCFF999FECF81E180935700E89503C0C7 -:10729000843519F494DF8DE00DC28C34E1F3803530 -:1072A000D1F3843721F484E4A2DF80E003C2813685 -:1072B00011F489E5FFC18134B1F481DF182F7FDF3C -:1072C00090E0880F991FAA2797FDA095BA2F312F1C -:1072D000330F20E0442737FD4095542F822B932B0A -:1072E000A42BB52BB8C1803711F483E5E3C18335F6 -:1072F00049F4C0E0D1E089917ADF21E0C730D207BC -:10730000D1F7D9C1863521F481E371DF80E3D2C1A1 -:10731000833731F487E86BDF85E969DF8EE1CAC125 -:107320008536B9F4E0E0F0E093E085E09093570013 -:10733000E89507B600FCFDCF80935700E89507B6A7 -:1073400000FCFDCFE058FF4FA0E7E030FA0771F7EF -:10735000A2CF823739F4E1E0F0E089E08093570072 -:107360008491A8C1863439F4E0E0F0E089E08093AC -:10737000570084919FC18E3439F4E3E0F0E089E056 -:1073800080935700849196C1813539F4E2E0F0E0B2 -:1073900089E08093570084918DC1823631F489E56C -:1073A00026DF80E024DF80E885C1823419F087364B -:1073B00009F0E5C01092AD011092AC0100DF082F7A -:1073C000FEDEF82EFCDE682E8554823008F071C196 -:1073D000902F80E0CF2DD0E0C82BD92B10926F00DA -:1073E000173609F04BC081E180935700E895DD2402 -:1073F000CC24C3943FC0E090AE01F090AF01009167 -:10740000B0011091B101B6E46B16D9F4ED2DF0E0A6 -:10741000EE29FF29E4918E2FEADEDD2081F082E063 -:1074200090E0A0E0B0E0E80EF91E0A1F1B1FE092FA -:10743000AE01F092AF010093B0011093B101DC24D2 -:1074400018C0D801C701B695A7959795879558D5C7 -:10745000CEDE82E090E0A0E0B0E0E80EF91E0A1F68 -:107460001B1FE092AE01F092AF010093B0011093A8 -:10747000B1012197209709F0BECF7DC08090AE0169 -:107480009090AF01A090B001B090B10196E4691660 -:1074900009F05DC083E0F40180935700E89507B6DA -:1074A00000FCFDCF54C0F6E46F1661F5772031F192 -:1074B000E090AE01F090AF010091B0011091B101E8 -:1074C0007EDED82ECC24852D90E08C299D29F701D5 -:1074D0000C0140925700E895112482E090E0A0E072 -:1074E000B0E0E80EF91E0A1F1B1FE092AE01F092F9 -:1074F000AF010093B0011093B10102C060DE582EBD -:10750000742423C0E090AE01F090AF010091B0016F -:107510001091B10116950795F794E79450DE682F06 -:10752000C701F6D48091AE019091AF01A091B00156 -:10753000B091B1010296A11DB11D8093AE0190934F -:10754000AF01A093B001B093B101219704C05524BD -:10755000772444244394209709F0A5CF96E4691634 -:1075600041F485E0F40180935700E89507B600FCEC -:10757000FDCF8DE03CDE82E080936F009CC08334C1 -:1075800071F40091AE011091AF0119DE90E021E09D -:10759000F8010C0120935700E89511247CCE833626 -:1075A00019F5E090AE01F090AF010091B00110919B -:1075B000B10105DEF701E16090E021E00C012093CC -:1075C0005700E895112482E090E0A0E0B0E0E80EDA -:1075D000F91E0A1F1B1FE092AE01F092AF0100934B -:1075E000B0011093B10157CE8D3661F4E091AE0138 -:1075F000F091AF0185E080935700E89507B600FC55 -:10760000FDCF49CE823551F4E091AE01F091AF014A -:1076100005911491812FEBDD802F4CC0843421F52E -:10762000E090AE01F090AF010091B0011091B10176 -:1076300016950795F794E794C2DD682FC70168D4C3 -:107640008091AE019091AF01A091B001B091B101D4 -:107650000296A11DB11D8093AE019093AF01A0933E -:10766000B001B093B10117CE843609F5E090AE01B8 -:10767000F090AF010091B0011091B101D801C701A4 -:10768000B695A795979587953BD4B1DD82E090E0BC -:10769000A0E0B0E0E80EF91E0A1F1B1FE092AE0149 -:1076A000F092AF010093B0011093B10104C08B318F -:1076B00011F08FE39CDD83E08093E9009091E80076 -:1076C0008091E8008E778093E80095FF04C010C099 -:1076D0008EB38823C9F08091E80080FFF9CF8091B4 -:1076E000E8008E778093E80003C08EB3882361F0B2 -:1076F0008091E80080FFF9CF84E08093E9008091D9 -:10770000E8008B778093E800DF91CF911F910F9174 -:10771000FF90EF90DF90CF90BF90AF909F908F90B1 -:107720007F906F905F904F9008959091B601892F50 -:107730008F77813249F58091B7018032A1F0813293 -:1077400019F5913A09F58091E800877F8093E80068 -:107750008DE091E067E070E00AD28091E8008B77DD -:107760008093E8000895913279F48091E800877F52 -:107770008093E8008DE091E067E070E05CD280915A -:10778000E8008E778093E800089582E061EC42E0A3 -:10779000B4D083E061E842E1B0D084E060E842E147 -:1077A000ACC084B7877F84BF88E10FB6F89480931C -:1077B0006000109260000FBE20E880E090E00FB6FD -:1077C000F89420936100809361000FBE81E085BF33 -:1077D00092E095BF3F9A209A559AE1E6F0E0208327 -:1077E000108247985D9A289A109289008AEF8093B8 -:1077F000880090936F0083E080938100EFC01F9317 -:1078000088E10FB6F89480936000109260000FBE7C -:1078100084B714BE182F10FF08C0E0E0F0E0859197 -:1078200094918F5F9F4F09F05DDC2091000A3091A9 -:10783000010A1092010A1092000A13FF0FC08091F2 -:10784000090190910A012817390741F0E0E0F0E0C2 -:10785000859194918F5F9F4F09F044DCA2DF78946B -:107860001092AD011092AC010CC0E0DC37D38091D6 -:10787000AC019091AD0181549F4110F01092140120 -:1078800043DC80911401882381F78091E0008160BE -:107890008093E00027DC80E090E01F910895FA01DA -:1078A000923049F0933061F09130F9F485E191E044 -:1078B00022E130E01EC087E291E02EE330E019C003 -:1078C000882329F485E691E024E030E012C081307D -:1078D00029F489E691E022E230E00BC0823029F4FD -:1078E0008DE891E028E130E004C080E090E020E005 -:1078F00030E091838083C90108958093E9008091ED -:10790000EB0081608093EB001092ED006093EC003F -:107910004093ED008091EE00881F8827881F08950E -:107920008091B60188238CF403C08EB38823B1F014 -:107930008091E80082FFF9CF8091E8008B778093F7 -:10794000E80008958EB3882349F08091E80080FF15 -:10795000F9CF8091E8008E778093E8000895EF9248 -:10796000FF920F931F9345D04CD008ED10E0F80123 -:1079700080818F77808380818068808380818F7D04 -:10798000808319BC1EBA1092B40180EEE82EF12C4F -:10799000F70180818B7F8083F80180818160808303 -:1079A00080E060E042E0A9DFE1EEF0E080818E7FE0 -:1079B0008083E2EEF0E08081816080838081886056 -:1079C0008083F70180818E7F8083F80180818061D0 -:1079D00080831F910F91FF90EF900895E7EDF0E005 -:1079E0008081816080838AE482BF81E08093B501D9 -:1079F000B6CFE8EDF0E080818E7F80831092E200C8 -:107A000008951092DA001092E10008951F920F92EB -:107A10000FB60F9211242F933F934F935F936F9361 -:107A20007F938F939F93AF93BF93EF93FF93809137 -:107A3000DA0080FF1BC08091D80080FF17C08091C2 -:107A4000DA008E7F8093DA008091D90080FF0BC02E -:107A500080E189BD82E189BD09B400FEFDCF81E0EE -:107A60008EBB3BD203C019BC1EBA37D28091E10055 -:107A700080FF17C08091E20080FF13C08091E20078 -:107A80008E7F8093E2008091E20080618093E2002B -:107A90008091D80080628093D80019BC85E08EBBAD -:107AA0001CD28091E10084FF2CC08091E20084FF11 -:107AB00028C080E189BD82E189BD09B400FEFDCF07 -:107AC0008091D8008F7D8093D8008091E1008F7ED7 -:107AD0008093E1008091E2008F7E8093E2008091AC -:107AE000E20081608093E2008091B401882331F448 -:107AF0008091E30087FD02C081E001C084E08EBB7D -:107B0000ECD18091E10083FF21C08091E20083FFEE -:107B10001DC08091E100877F8093E10082E08EBBF1 -:107B20001092B4018091E1008E7F8093E1008091FA -:107B3000E2008E7F8093E2008091E200806180937A -:107B4000E20080E060E042E0D8DEC7D1FF91EF9133 -:107B5000BF91AF919F918F917F916F915F914F9165 -:107B60003F912F910F900FBE0F901F9018959C0181 -:107B70004091BC015091BD014617570718F4F90117 -:107B800090E044C06115710511F0AB01F8CF809110 -:107B9000E8008E778093E80040E050E0F0CF8EB3AD -:107BA000882309F444C0853009F443C08091E8007B -:107BB00083FF02C081E008958091E80082FD31C01A -:107BC0008091E80080FF22C08091F3009091F20044 -:107BD000782F60E0292F30E0262B372B07C08191CA -:107BE0008093F100415050402F5F3F4F41155105A8 -:107BF00019F02830310598F390E02830310509F468 -:107C000091E08091E8008E778093E800411551055E -:107C100031F6992321F605C08EB3882341F08530D3 -:107C200041F08091E80082FFF7CF80E0089582E084 -:107C3000089583E008959C016115710529F48091F0 -:107C4000E8008B778093E800F90126C08EB3882383 -:107C500091F1853091F18091E80083FF02C081E0CD -:107C600008958091E80082FFF1CF06C08091F10075 -:107C700081936150704059F02091F3008091F2009F -:107C8000322F20E090E0822B932B892B79F7809183 -:107C9000E8008B778093E80061157105B9F605C09F -:107CA0008EB3882341F0853041F08091E80080FF59 -:107CB000F7CF80E0089582E0089583E008950F9360 -:107CC0001F93DF93CF9300D0CDB7DEB7E6EBF1E0A3 -:107CD0008091F100819381E0EE3BF807C9F725DD43 -:107CE0008091E80083FFE4C08091B6019091B701D4 -:107CF000953009F46DC0963040F4913081F19130A7 -:107D000070F0933009F0D4C02AC0983009F4A3C0B1 -:107D1000993009F4B2C0963009F0CAC07CC08038EE -:107D200009F4C6C0823809F0C3C08091BA018770D7 -:107D30008093E9008091EB001092E9002091E80027 -:107D4000277F2093E80090E025E0969587952A9577 -:107D5000E1F781708093F1001092F10087C08823D1 -:107D600019F0823009F0A4C08F71823009F0A0C0F0 -:107D70008091B801882331F52091BA01277009F468 -:107D800097C02093E9008091EB0080FF1BC09330E7 -:107D900021F48091EB00806213C08091EB00806140 -:107DA0008093EB0081E090E002C0880F991F2A9534 -:107DB000E2F78093EA001092EA008091EB0088607D -:107DC0008093EB001092E9008091E800877F51C01A -:107DD000882309F06DC01091B8011F770FB7F89490 -:107DE0008091E800877F8093E8009ADD8091E80029 -:107DF00080FFFCCF8091E3008078812B8093E300AB -:107E000080688093E300112311F482E001C083E0D5 -:107E10008EBB0FBF4DC08058823008F049C08091A2 -:107E2000B8019091B9016091BA01AE014F5F5F4F07 -:107E300036DDBC01009709F43BC08091E800877FE4 -:107E40008093E80089819A8192DE8091E8008B77A7 -:107E50008093E8002DC0803859F58091E800877F35 -:107E60008093E8008091B4018093F1008091E80054 -:107E70008E778093E80054DD1BC08823C9F490916D -:107E8000B8019230A8F48091E800877F8093E800E1 -:107E90009093B40145DD8091B401882331F4809141 -:107EA000E30087FD02C081E001C084E08EBB6DDC91 -:107EB0008091E80083FF0AC08091EB00806280938C -:107EC000EB008091E800877F8093E8000F900F908F -:107ED000CF91DF911F910F91089508951F938EB355 -:107EE000882361F01091E9001092E9008091E80088 -:107EF00083FF01C0E4DE17701093E9001F9108951D -:107F0000F999FECF92BD81BDF89A992780B5089561 -:107F1000262FF999FECF1FBA92BD81BD20BD0FB6A5 -:107F2000F894FA9AF99A0FBE01960895F894FFCF43 -:107F30004341544552494E41007777000A00000002 -:107F40000000000801120110010200000841230195 -:107F50000701000201000109023E00020100803217 -:107F6000090400000102020100052400100104249C -:107F700002040524060001070582030800FF090426 -:107F80000100020A000000070504021000010705B5 -:107F900083021000010403090422034100720064FB -:107FA00000750069006E006F0020004C0065006FD6 -:107FB000006E006100720064006F00000018034151 -:107FC0000072006400750069006E006F0020004CB4 -:087FD000004C0043000000001A -:040000030000700089 -:00000001FF diff --git a/bootloaders/caterina/Descriptors.c b/bootloaders/caterina/Descriptors.c index f1756e2..824e0dd 100755 --- a/bootloaders/caterina/Descriptors.c +++ b/bootloaders/caterina/Descriptors.c @@ -53,8 +53,8 @@ const USB_Descriptor_Device_t DeviceDescriptor = .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE, - .VendorID = 0x2341, - .ProductID = 0x0701, + .VendorID = DEVICE_VID, + .ProductID = DEVICE_PID, .ReleaseNumber = VERSION_BCD(00.01), .ManufacturerStrIndex = 0x02, @@ -193,7 +193,13 @@ const USB_Descriptor_String_t ProductString = { .Header = {.Size = USB_STRING_LEN(16), .Type = DTYPE_String}, - .UnicodeString = L"Arduino Leonardo" + #if DEVICE_PID == 0x0034 + .UnicodeString = L"Arduino Leonardo" + #elif DEVICE_PID == 0x0035 + .UnicodeString = L"Arduino Micro " + #else + .UnicodeString = L"USB IO board " + #endif }; /* const USB_Descriptor_String_t SerialNumString = diff --git a/bootloaders/caterina/Makefile b/bootloaders/caterina/Makefile index ef583bc..3ec7b14 100755 --- a/bootloaders/caterina/Makefile +++ b/bootloaders/caterina/Makefile @@ -46,6 +46,17 @@ # To rebuild project do "make clean" then "make all". #---------------------------------------------------------------------------- +# USB vendor ID (VID) +# official Arduino LLC VID +VID = 0x2341 + + +# USB product ID (PID) +# official Leonardo PID +#PID = 0x0034 +# official Micro PID +PID = 0x0035 + # MCU name MCU = atmega32u4 @@ -193,6 +204,8 @@ 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) -- cgit v1.2.3-18-g5258 From f9a4a4362d6457adb598ca7f52e409df9defbee3 Mon Sep 17 00:00:00 2001 From: Zach Eveland Date: Mon, 9 Apr 2012 08:08:34 -0400 Subject: Micro and Leonardo bootloaders for distribution are now merged with Blink sketch --- bootloaders/caterina/Caterina-Leonardo.hex | 1280 ++++++++++++++++++++++------ bootloaders/caterina/Caterina-Micro.hex | 1280 ++++++++++++++++++++++------ 2 files changed, 2048 insertions(+), 512 deletions(-) (limited to 'bootloaders/caterina') diff --git a/bootloaders/caterina/Caterina-Leonardo.hex b/bootloaders/caterina/Caterina-Leonardo.hex index d7873af..40a19c6 100644 --- a/bootloaders/caterina/Caterina-Leonardo.hex +++ b/bootloaders/caterina/Caterina-Leonardo.hex @@ -1,256 +1,1024 @@ -:1070000055C000006EC000006CC000006AC00000E7 -:1070100068C0000066C0000064C0000062C00000DC -:1070200060C000005EC00000F1C400005AC0000053 -:1070300058C0000056C0000054C0000052C00000FC -:1070400050C0000078C000004CC000004AC00000E2 -:1070500048C0000046C0000044C0000042C000001C -:1070600040C000003EC000003CC000003AC000002C -:1070700038C0000036C0000034C0000032C000003C -:1070800030C000002EC000002CC000002AC000004C -:1070900028C0000026C0000024C0000022C000005C -:1070A00020C000001EC000001CC0000011241FBE34 -:1070B000CFEFDAE0DEBFCDBF11E0A0E0B1E0E0E36A -:1070C000FFE702C005900D92A83AB107D9F711E089 -:1070D000A8EAB1E001C01D92AE3BB107E1F78FD342 -:1070E00025C78ECFF89410926F00109281001092F5 -:1070F00085001092840081E085BF15BE47985D9A97 -:10710000289A0C94000008952091B2013091B301A7 -:107110002F5F3F4F3093B3012093B201932F37FF7E -:1071200003C08EEF831B982F990F921710F4479886 -:107130000895479A08951F920F920FB60F92112447 -:107140002F938F939F93EF93FF931092850010924C -:1071500084008091A8019091A901009741F00197C6 -:107160009093A9018093A801892B09F45D9A8091DD -:10717000AA019091AB01009741F001979093AB0168 -:107180008093AA01892B09F4289AE0E0F0E0859128 -:1071900094918F5F9F4F49F08091AC019091AD0128 -:1071A00001969093AD018093AC01FF91EF919F9177 -:1071B0008F912F910F900FBE0F901F90189584E024 -:1071C0008093E9000DC08091E8008B778093E80000 -:1071D00003C08EB3882351F08091E80082FFF9CF7D -:1071E0008091E80085FFEFCF8091F1000895982FFE -:1071F00083E08093E9008091E80085FD0DC08091D7 -:10720000E8008E778093E80003C08EB3882369F08E -:107210008091E80080FFF9CF9093F1005D9884E6BB -:1072200090E09093A9018093A80108954F925F92F6 -:107230006F927F928F929F92AF92BF92CF92DF9286 -:10724000EF92FF920F931F93CF93DF9384E080938D -:10725000E9008091E80082FF57C2289884E690E018 -:107260009093AB018093AA01AADF182F853481F493 -:107270008CE49DE19093AD018093AC0107B600FCD6 -:10728000FDCFF999FECF81E180935700E89503C0C7 -:10729000843519F494DF8DE00DC28C34E1F3803530 -:1072A000D1F3843721F484E4A2DF80E003C2813685 -:1072B00011F489E5FFC18134B1F481DF182F7FDF3C -:1072C00090E0880F991FAA2797FDA095BA2F312F1C -:1072D000330F20E0442737FD4095542F822B932B0A -:1072E000A42BB52BB8C1803711F483E5E3C18335F6 -:1072F00049F4C0E0D1E089917ADF21E0C730D207BC -:10730000D1F7D9C1863521F481E371DF80E3D2C1A1 -:10731000833731F487E86BDF85E969DF8EE1CAC125 -:107320008536B9F4E0E0F0E093E085E09093570013 -:10733000E89507B600FCFDCF80935700E89507B6A7 -:1073400000FCFDCFE058FF4FA0E7E030FA0771F7EF -:10735000A2CF823739F4E1E0F0E089E08093570072 -:107360008491A8C1863439F4E0E0F0E089E08093AC -:10737000570084919FC18E3439F4E3E0F0E089E056 -:1073800080935700849196C1813539F4E2E0F0E0B2 -:1073900089E08093570084918DC1823631F489E56C -:1073A00026DF80E024DF80E885C1823419F087364B -:1073B00009F0E5C01092AD011092AC0100DF082F7A -:1073C000FEDEF82EFCDE682E8554823008F071C196 -:1073D000902F80E0CF2DD0E0C82BD92B10926F00DA -:1073E000173609F04BC081E180935700E895DD2402 -:1073F000CC24C3943FC0E090AE01F090AF01009167 -:10740000B0011091B101B6E46B16D9F4ED2DF0E0A6 -:10741000EE29FF29E4918E2FEADEDD2081F082E063 -:1074200090E0A0E0B0E0E80EF91E0A1F1B1FE092FA -:10743000AE01F092AF010093B0011093B101DC24D2 -:1074400018C0D801C701B695A7959795879558D5C7 -:10745000CEDE82E090E0A0E0B0E0E80EF91E0A1F68 -:107460001B1FE092AE01F092AF010093B0011093A8 -:10747000B1012197209709F0BECF7DC08090AE0169 -:107480009090AF01A090B001B090B10196E4691660 -:1074900009F05DC083E0F40180935700E89507B6DA -:1074A00000FCFDCF54C0F6E46F1661F5772031F192 -:1074B000E090AE01F090AF010091B0011091B101E8 -:1074C0007EDED82ECC24852D90E08C299D29F701D5 -:1074D0000C0140925700E895112482E090E0A0E072 -:1074E000B0E0E80EF91E0A1F1B1FE092AE01F092F9 -:1074F000AF010093B0011093B10102C060DE582EBD -:10750000742423C0E090AE01F090AF010091B0016F -:107510001091B10116950795F794E79450DE682F06 -:10752000C701F6D48091AE019091AF01A091B00156 -:10753000B091B1010296A11DB11D8093AE0190934F -:10754000AF01A093B001B093B101219704C05524BD -:10755000772444244394209709F0A5CF96E4691634 -:1075600041F485E0F40180935700E89507B600FCEC -:10757000FDCF8DE03CDE82E080936F009CC08334C1 -:1075800071F40091AE011091AF0119DE90E021E09D -:10759000F8010C0120935700E89511247CCE833626 -:1075A00019F5E090AE01F090AF010091B00110919B -:1075B000B10105DEF701E16090E021E00C012093CC -:1075C0005700E895112482E090E0A0E0B0E0E80EDA -:1075D000F91E0A1F1B1FE092AE01F092AF0100934B -:1075E000B0011093B10157CE8D3661F4E091AE0138 -:1075F000F091AF0185E080935700E89507B600FC55 -:10760000FDCF49CE823551F4E091AE01F091AF014A -:1076100005911491812FEBDD802F4CC0843421F52E -:10762000E090AE01F090AF010091B0011091B10176 -:1076300016950795F794E794C2DD682FC70168D4C3 -:107640008091AE019091AF01A091B001B091B101D4 -:107650000296A11DB11D8093AE019093AF01A0933E -:10766000B001B093B10117CE843609F5E090AE01B8 -:10767000F090AF010091B0011091B101D801C701A4 -:10768000B695A795979587953BD4B1DD82E090E0BC -:10769000A0E0B0E0E80EF91E0A1F1B1FE092AE0149 -:1076A000F092AF010093B0011093B10104C08B318F -:1076B00011F08FE39CDD83E08093E9009091E80076 -:1076C0008091E8008E778093E80095FF04C010C099 -:1076D0008EB38823C9F08091E80080FFF9CF8091B4 -:1076E000E8008E778093E80003C08EB3882361F0B2 -:1076F0008091E80080FFF9CF84E08093E9008091D9 -:10770000E8008B778093E800DF91CF911F910F9174 -:10771000FF90EF90DF90CF90BF90AF909F908F90B1 -:107720007F906F905F904F9008959091B601892F50 -:107730008F77813249F58091B7018032A1F0813293 -:1077400019F5913A09F58091E800877F8093E80068 -:107750008DE091E067E070E00AD28091E8008B77DD -:107760008093E8000895913279F48091E800877F52 -:107770008093E8008DE091E067E070E05CD280915A -:10778000E8008E778093E800089582E061EC42E0A3 -:10779000B4D083E061E842E1B0D084E060E842E147 -:1077A000ACC084B7877F84BF88E10FB6F89480931C -:1077B0006000109260000FBE20E880E090E00FB6FD -:1077C000F89420936100809361000FBE81E085BF33 -:1077D00092E095BF3F9A209A559AE1E6F0E0208327 -:1077E000108247985D9A289A109289008AEF8093B8 -:1077F000880090936F0083E080938100EFC01F9317 -:1078000088E10FB6F89480936000109260000FBE7C -:1078100084B714BE182F10FF08C0E0E0F0E0859197 -:1078200094918F5F9F4F09F05DDC2091000A3091A9 -:10783000010A1092010A1092000A13FF0FC08091F2 -:10784000090190910A012817390741F0E0E0F0E0C2 -:10785000859194918F5F9F4F09F044DCA2DF78946B -:107860001092AD011092AC010CC0E0DC37D38091D6 -:10787000AC019091AD0181549F4110F01092140120 -:1078800043DC80911401882381F78091E0008160BE -:107890008093E00027DC80E090E01F910895FA01DA -:1078A000923049F0933061F09130F9F485E191E044 -:1078B00022E130E01EC087E291E02EE330E019C003 -:1078C000882329F485E691E024E030E012C081307D -:1078D00029F489E691E022E230E00BC0823029F4FD -:1078E0008DE891E028E130E004C080E090E020E005 -:1078F00030E091838083C90108958093E9008091ED -:10790000EB0081608093EB001092ED006093EC003F -:107910004093ED008091EE00881F8827881F08950E -:107920008091B60188238CF403C08EB38823B1F014 -:107930008091E80082FFF9CF8091E8008B778093F7 -:10794000E80008958EB3882349F08091E80080FF15 -:10795000F9CF8091E8008E778093E8000895EF9248 -:10796000FF920F931F9345D04CD008ED10E0F80123 -:1079700080818F77808380818068808380818F7D04 -:10798000808319BC1EBA1092B40180EEE82EF12C4F -:10799000F70180818B7F8083F80180818160808303 -:1079A00080E060E042E0A9DFE1EEF0E080818E7FE0 -:1079B0008083E2EEF0E08081816080838081886056 -:1079C0008083F70180818E7F8083F80180818061D0 -:1079D00080831F910F91FF90EF900895E7EDF0E005 -:1079E0008081816080838AE482BF81E08093B501D9 -:1079F000B6CFE8EDF0E080818E7F80831092E200C8 -:107A000008951092DA001092E10008951F920F92EB -:107A10000FB60F9211242F933F934F935F936F9361 -:107A20007F938F939F93AF93BF93EF93FF93809137 -:107A3000DA0080FF1BC08091D80080FF17C08091C2 -:107A4000DA008E7F8093DA008091D90080FF0BC02E -:107A500080E189BD82E189BD09B400FEFDCF81E0EE -:107A60008EBB3BD203C019BC1EBA37D28091E10055 -:107A700080FF17C08091E20080FF13C08091E20078 -:107A80008E7F8093E2008091E20080618093E2002B -:107A90008091D80080628093D80019BC85E08EBBAD -:107AA0001CD28091E10084FF2CC08091E20084FF11 -:107AB00028C080E189BD82E189BD09B400FEFDCF07 -:107AC0008091D8008F7D8093D8008091E1008F7ED7 -:107AD0008093E1008091E2008F7E8093E2008091AC -:107AE000E20081608093E2008091B401882331F448 -:107AF0008091E30087FD02C081E001C084E08EBB7D -:107B0000ECD18091E10083FF21C08091E20083FFEE -:107B10001DC08091E100877F8093E10082E08EBBF1 -:107B20001092B4018091E1008E7F8093E1008091FA -:107B3000E2008E7F8093E2008091E200806180937A -:107B4000E20080E060E042E0D8DEC7D1FF91EF9133 -:107B5000BF91AF919F918F917F916F915F914F9165 -:107B60003F912F910F900FBE0F901F9018959C0181 -:107B70004091BC015091BD014617570718F4F90117 -:107B800090E044C06115710511F0AB01F8CF809110 -:107B9000E8008E778093E80040E050E0F0CF8EB3AD -:107BA000882309F444C0853009F443C08091E8007B -:107BB00083FF02C081E008958091E80082FD31C01A -:107BC0008091E80080FF22C08091F3009091F20044 -:107BD000782F60E0292F30E0262B372B07C08191CA -:107BE0008093F100415050402F5F3F4F41155105A8 -:107BF00019F02830310598F390E02830310509F468 -:107C000091E08091E8008E778093E800411551055E -:107C100031F6992321F605C08EB3882341F08530D3 -:107C200041F08091E80082FFF7CF80E0089582E084 -:107C3000089583E008959C016115710529F48091F0 -:107C4000E8008B778093E800F90126C08EB3882383 -:107C500091F1853091F18091E80083FF02C081E0CD -:107C600008958091E80082FFF1CF06C08091F10075 -:107C700081936150704059F02091F3008091F2009F -:107C8000322F20E090E0822B932B892B79F7809183 -:107C9000E8008B778093E80061157105B9F605C09F -:107CA0008EB3882341F0853041F08091E80080FF59 -:107CB000F7CF80E0089582E0089583E008950F9360 -:107CC0001F93DF93CF9300D0CDB7DEB7E6EBF1E0A3 -:107CD0008091F100819381E0EE3BF807C9F725DD43 -:107CE0008091E80083FFE4C08091B6019091B701D4 -:107CF000953009F46DC0963040F4913081F19130A7 -:107D000070F0933009F0D4C02AC0983009F4A3C0B1 -:107D1000993009F4B2C0963009F0CAC07CC08038EE -:107D200009F4C6C0823809F0C3C08091BA018770D7 -:107D30008093E9008091EB001092E9002091E80027 -:107D4000277F2093E80090E025E0969587952A9577 -:107D5000E1F781708093F1001092F10087C08823D1 -:107D600019F0823009F0A4C08F71823009F0A0C0F0 -:107D70008091B801882331F52091BA01277009F468 -:107D800097C02093E9008091EB0080FF1BC09330E7 -:107D900021F48091EB00806213C08091EB00806140 -:107DA0008093EB0081E090E002C0880F991F2A9534 -:107DB000E2F78093EA001092EA008091EB0088607D -:107DC0008093EB001092E9008091E800877F51C01A -:107DD000882309F06DC01091B8011F770FB7F89490 -:107DE0008091E800877F8093E8009ADD8091E80029 -:107DF00080FFFCCF8091E3008078812B8093E300AB -:107E000080688093E300112311F482E001C083E0D5 -:107E10008EBB0FBF4DC08058823008F049C08091A2 -:107E2000B8019091B9016091BA01AE014F5F5F4F07 -:107E300036DDBC01009709F43BC08091E800877FE4 -:107E40008093E80089819A8192DE8091E8008B77A7 -:107E50008093E8002DC0803859F58091E800877F35 -:107E60008093E8008091B4018093F1008091E80054 -:107E70008E778093E80054DD1BC08823C9F490916D -:107E8000B8019230A8F48091E800877F8093E800E1 -:107E90009093B40145DD8091B401882331F4809141 -:107EA000E30087FD02C081E001C084E08EBB6DDC91 -:107EB0008091E80083FF0AC08091EB00806280938C -:107EC000EB008091E800877F8093E8000F900F908F -:107ED000CF91DF911F910F91089508951F938EB355 -:107EE000882361F01091E9001092E9008091E80088 -:107EF00083FF01C0E4DE17701093E9001F9108951D -:107F0000F999FECF92BD81BDF89A992780B5089561 -:107F1000262FF999FECF1FBA92BD81BD20BD0FB6A5 -:107F2000F894FA9AF99A0FBE01960895F894FFCF43 -:107F30004341544552494E41007777000A00000002 -:107F40000000000801120110010200000841233462 -:107F50000001000201000109023E0002010080321E -:107F6000090400000102020100052400100104249C -:107F700002040524060001070582030800FF090426 -:107F80000100020A000000070504021000010705B5 -:107F900083021000010403090422034100720064FB -:107FA00000750069006E006F0020004C0065006FD6 -:107FB000006E006100720064006F00000018034151 -:107FC0000072006400750069006E006F0020004CB4 -:087FD000004C0043000000001A -:040000030000700089 -:00000001FF +:200000000C946E010C9496010C9496010C9496010C9496010C9496010C9496010C94960150 +:200020000C9496010C9496010C941B050C94A6050C9496010C9496010C9496010C9496016B +:200040000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C94B201CC +:200060000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601C8 +:200080000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601A8 +:2000A0000C9496010C9496010C94960100000000240027002A002D003000000000002500A4 +:2000C00028002B002E003100000000002300260029002C002F00040404040403040502027D +:2000E0000202040302020202060606060606040402020204040802011040804010204080A8 +:200100004080080204018040201002011080102040400000000200080E0000030401000BB2 +:200120000000070605040100080A0B0C0D09040309042203410072006400750069006E00CD +:200140006F0020004C0065006F006E006100720064006F00180341007200640075006900CC +:200160006E006F0020004C004C004300120100020000004041233480000101020001120122 +:200180000002020000404123348000010102000100C18081C1080B00020202010009040054 +:2001A000000102020000052400100105240101010424020605240600010705810310004094 +:2001C00009040100020A000000070502024000000705830240000005010902A1010901A186 +:2001E000008501050919012903150025019503750181029501750581030501093009310943 +:20020000381581257F750895038106C0C005010906A1018502050719E029E715002501754D +:20022000019508810295017508810395067508150025650507190029658100C0090402004C +:2002400001030000000921010100012265000705840340000100000000000000002A2B2895 +:200260000000000000000000000000000000000000000000002C9EB4A0A1A2A434A6A7A553 +:20028000AE362D3738271E1F20212223242526B333B62EB7B89F8485868788898A8B8C8D58 +:2002A0008E8F909192939495969798999A9B9C9D2F3130A3AD350405060708090A0B0C0D7C +:2002C0000E0F101112131415161718191A1B1C1DAFB1B0B5000057043907370811241FBE15 +:2002E000CFEFDAE0DEBFCDBF11E0A0E0B1E0E4EEF2E102C005900D92AA32B107D9F711E06B +:20030000AAE2B1E001C01D92AB39B107E1F712E0CCEDD2E004C02297FE010E946C09C63DE9 +:20032000D107C9F70E9491030C9470090C9400008DE061E00E945E0368EE73E080E090E00C +:200340000E94FA018DE060E00E945E0368EE73E080E090E00E94FA0108958DE061E00E944D +:20036000C10208951F920F920FB60F9211242F933F938F939F93AF93BF9380912E01909153 +:200380002F01A0913001B0913101309132010196A11DB11D232F2D5F2D3720F02D570196D4 +:2003A000A11DB11D2093320180932E0190932F01A0933001B093310180912A0190912B01D4 +:2003C000A0912C01B0912D010196A11DB11D80932A0190932B01A0932C01B0932D01BF917F +:2003E000AF919F918F913F912F910F900FBE0F901F9018959B01AC017FB7F89480912A012F +:2004000090912B01A0912C01B0912D0166B5A89B05C06F3F19F00196A11DB11D7FBFBA2F9E +:20042000A92F982F8827860F911DA11DB11D62E0880F991FAA1FBB1F6A95D1F7BC012DC0FA +:20044000FFB7F89480912A0190912B01A0912C01B0912D01E6B5A89B05C0EF3F19F0019693 +:20046000A11DB11DFFBFBA2FA92F982F88278E0F911DA11DB11DE2E0880F991FAA1FBB1F70 +:20048000EA95D1F7861B970B885E9340C8F2215030404040504068517C4F21153105410538 +:2004A000510571F60895789484B5826084BD84B5816084BD85B5826085BD85B5816085BD64 +:2004C000EEE6F0E0808181608083E1E8F0E01082808182608083808181608083E0E8F0E005 +:2004E000808181608083E1EBF0E0808184608083E0EBF0E0808181608083E1E9F0E0808178 +:2005000082608083808181608083E0E9F0E080818160808320EC30E0F90180818068808391 +:2005200080818F7B8083A2ECB0E08C9188608C938C918B7F8C93E1ECF0E0808184608083A0 +:20054000808182608083808181608083E3ECF0E0808181608083F9018081826080838C914F +:2005600081608C93EAE7F0E08081846080838081826080838081816080838081806880833B +:200580000895CF93DF93482F50E0CA018C509F4FFC0134914A525F4FFA018491882369F18D +:2005A00090E0880F991FFC01E455FF4FA591B491FC01E654FF4FC591D491662351F42FB789 +:2005C000F8948C91932F909589238C93888189230BC0623061F42FB7F8948C91932F9095E3 +:2005E00089238C938881832B88832FBF06C09FB7F8948C91832B8C939FBFDF91CF91089523 +:200600008730C1F1883080F48330F9F0843030F4813029F1823009F050C024C08430C9F0FA +:20062000863009F04AC022C08A3091F18B3030F4883031F1893009F040C026C08C3091F154 +:200640008C3060F18E30C9F533C0809180008F7703C0809180008F7D80938000089584B5BE +:200660008F7702C084B58F7D84BD08958091B0008F7703C08091B0008F7D8093B0000895D8 +:20068000809190008F7707C0809190008F7D03C080919000877F8093900008958091C000C4 +:2006A0008F7703C08091C0008F7D8093C00008958091C200877F8093C2000895FF920F93A6 +:2006C0001F93F62E482F50E0CA018E5E9E4FFC012491CA018C509F4FFC0114914A525F4FC6 +:2006E000FA0104910023C9F0222319F0822F0E940003E02FF0E0EE0FFF1FE654FF4FA59132 +:20070000B4919FB7F894FF2021F48C911095812302C08C91812B8C939FBF1F910F91FF9031 +:200720000895CF93DF930E9453028BE391E00E9458040E94AD01C0E0D0E00E9498012097E2 +:20074000E1F30E940000F9CF282F809135018823C1F057FF1AC015C0289890933401809133 +:20076000F1008193E217F307B9F74115510539F08091F200882319F48BE68093E800AFBF67 +:2007800002C04FEF5FEFCA010895AFB7F89427702093E9008091F200282F30E0241735079D +:2007A0000CF4A901FB019B01240F311D94E6DACFDF93CF930F92CDB7DEB7BE016F5F7F4F6A +:2007C00041E050E00E94A403019719F02FEF3FEF03C08981282F30E0C9010F90CF91DF9125 +:2007E0000895FF920F931F93F82E142F052F4091380150913901212F302FC901DC01FB0163 +:200800006EEF29C0F7FE02C0949101C09081209136013091370124173507ACF48091E800F3 +:200820008570E1F38091E80082FF03C02FEF3FEF17C09093F100C90101968F739070892B64 +:2008400011F46093E8002F5F3F4F3093370120933601119731961097A9F6812F902F9C01F6 +:20086000C9011F910F91FF9008959C018091E80082FFFCCFF901260F311D03C08091F1000E +:200880008193E217F307D1F7289884E6809334018BEF8093E800CB0108958093E90080912C +:2008A000F200882319F08AE38093E800089508951092350181E08093D70080EA8093D80078 +:2008C00082E189BD09B400FEFDCF61E070E080E090E00E94FA0180E98093D8008CE0809317 +:2008E000E2001092E000559A209A08955F926F927F928F929F92AF92BF92CF92DF92EF9214 +:20090000FF920F931F93CF93DF93E82E842E752E80913501882371F18B01242F352FC90152 +:20092000EC017AEFF72E67E0962E9E2050E4552E8E2D90E040E2A42EB12CA822B9223AE3FE +:20094000632E20E4C22ED12CC822D92258C09FB7F8949092E9008091E80085FD02C020E0EE +:2009600004C08091F200252D281B9FBF222361F4FA9419F42FEF3FEF4DC061E070E080E03E +:2009800090E00E94FA013BC0822F90E0C817D9070CF42C2FC21BD1094FB7F8949092E900C0 +:2009A000A114B10421F406C01092F10021502223D9F719C0E7FC03C0F801922F10C0C80107 +:2009C000322F06C0FC010196E491E093F10031503323C1F706C081918093F100915099237B +:2009E000D1F7020F111D8091E80085FF05C0209729F4C114D10411F06092E8004FBF209790 +:200A000009F0A5CF5D9884E680933301282D372DC9019C01C901DF91CF911F910F91FF902A +:200A2000EF90DF90CF90BF90AF909F908F907F906F905F9008951F920F920FB60F92112406 +:200A40001F932F933F934F935F936F937F938F939F93AF93BF93EF93FF938091E1001092D8 +:200A6000E100982F83FF0FC01092E90081E08093EB001092EC0082E38093ED0010923501C8 +:200A800088E08093F00092FF36C083E08093E9008091F200882349F08AE38093E80005C0F1 +:200AA00080E891E00E947C0701C012E09FB7F8941093E9008091F2009FBF882389F780917A +:200AC0003301882351F08091330181508093330180913301882309F45D9A809134018823C4 +:200AE00051F08091340181508093340180913401882309F4289AFF91EF91BF91AF919F91D6 +:200B00008F917F916F915F914F913F912F911F910F900FBE0F901F9018950F931F93DF9368 +:200B2000CF930F92CDB7DEB719828E010F5F1F4FC8010E949B07C8010E943409898190E064 +:200B40000F90CF91DF911F910F9108951F920F920FB60F921124EF92FF921F932F933F93F4 +:200B60004F935F936F937F938F939F93AF93BF93EF93FF93DF93CF93CDB7DEB76197DEBF0F +:200B8000CDBF1092E9008091E80083FF0FC1FE0131969E01275F3F4F03C08091F1008193A1 +:200BA000E217F307D1F7289884E68093340182EF8093E800998197FF05C08091E80080FFAF +:200BC000FCCF03C08EEF8093E800292F30E0C90180769070892B09F0C2C08A81882329F4E5 +:200BE0001092F1001092F100D6C0813009F4D3C0833009F4D0C0853049F48091E80080FF4E +:200C0000FCCF8B8180688093E300C5C0863009F07CC01C81EF80F8841230C1F51092E900A4 +:200C2000109237011092360110923901109238010E948D0599E0FE013996DF01292F1D92E8 +:200C40002A95E9F799871A8791E09E8790E8988B9AEF998B2091360130913701275F3F4F61 +:200C60003C872B878D871092E9001092370110923601F0923901E092380180E0BF0149E0FD +:200C800050E00E94F1030E948D0585C01092E9001092370110923601F0923901E092380170 +:200CA000123241F482E290E00E942C09892B09F476C071C0113079F488E0E816F10419F4E2 +:200CC00081E080933A0180913A01882309F06BC0ECE6F1E013C0133009F061C08B818823C0 +:200CE00019F4EEE2F1E00AC0823019F4E2E3F1E005C0813009F053C0E4E5F1E0449180E8CE +:200D0000BF0150E00E94F10346C0873009F447C0883021F481E08093F1003DC08930D9F5D6 +:200D200023703070232BD9F5E1E9F1E091E031E026E39093E9003093EB0084918093EC0070 +:200D40002093ED009F5F3196953099F78EE78093EA001092EA008B81809335011CC08F819A +:200D600098851092E900109237011092360190933901809338018D81882329F4CE01019633 +:200D80000E94A70706C0823051F4CE0101960E94FD07882321F08EEF8093E80007C081E2DC +:200DA0008093EB0003C0EEE7F1E0A8CF6196DEBFCDBFCF91DF91FF91EF91BF91AF919F9195 +:200DC0008F917F916F915F914F913F912F911F91FF90EF900F900FBE0F901F9018952091AD +:200DE0007C0130917D0180917E0190917F01281B390B2F733070C901089520917C013091E7 +:200E00007D0180917E0190917F012817390719F42FEF3FEF09C0E0917E01F0917F01E45C51 +:200E2000FE4F8081282F30E0C901089520917C0130917D0180917E0190917F012817390779 +:200E400019F42FEF3FEF13C0E0917E01F0917F01E45CFE4F208180917E0190917F0101967F +:200E60008F73907090937F0180937E0130E0C9010895109283011092820188EE93E0A0E010 +:200E8000B0E08093840190938501A0938601B09387018EE091E09093810180938001089547 +:200EA0000F931F93DF93CF930F92CDB7DEB78C01698380910701882369F083E0BE016F5FCA +:200EC0007F4F41E050E00E9476041816190614F49C0107C081E090E0F8019383828320E039 +:200EE00030E0C9010F90CF91DF911F910F91089583E00E944D04089582E00E94D803482F73 +:200F000020917C0130917D012F5F3F4F2F73307080917E0190917F012817390759F0E0919C +:200F20007C01F0917D01E45CFE4F408330937D0120937C010895FC0180818E5F808380E881 +:200F400065E971E042E450E00E94F1030895FC0181819081913A59F4813209F04CC080E029 +:200F600060E071E047E050E00E94F10342C0913209F041C0803239F480E091E067E070E0ED +:200F80000E94350436C0823209F035C08281809307018091000190910101A0910201B09116 +:200FA0000301805B9440A040B04019F58091070180FD12C087E797E79093010A8093000A01 +:200FC0002BE088E190E00FB6F894A895809360000FBE209360000DC088E10FB6F8948093B2 +:200FE0006000109260000FBEA8951092010A1092000A81E0089580E00895FC019181808121 +:20100000813A31F4913089F080E0933089F40DC0813269F49B3021F482818093080105C075 +:201020009A3029F482818093090181E0089580E00895EF92FF920F931F938C01E62EDC01CA +:20104000ED91FC910480F581E02D0995F82ED801ED91FC910680F781E02DC8016E2D0995C9 +:201060008F2D90E01F910F91FF90EF90089510928E01109292011092910180E291E09093B9 +:20108000900180938F010895EF92FF920F931F93DF93CF930F92CDB7DEB789838B017A0178 +:2010A00084E0BE016F5F7F4F41E050E00E94760484E4B801A7010E9476040F90CF91DF91B0 +:2010C0001F910F91FF90EF90089582E048E050E00E9444080895FC01168217821086118675 +:2010E0001286138614823496BF010E9465080895DC01683810F0685829C0E62FF0E067FF82 +:2011000013C0E058F04081E090E002C0880F991FEA95E2F7809514962C911497282314963E +:201120002C93149760E012C0EB5AFD4F6491662319F420E030E01DC067FF08C014968C9135 +:2011400014978D7F14968C9314976F77FD0190E0662321F08681861709F416829F5F319678 +:201160009630B1F7CD011496BD010E94650821E030E0C9010895CF93DF93DC01683810F0F3 +:20118000685825C0E62FF0E067FF12C0E058F04081E090E002C0880F991FEA95E2F7149641 +:2011A0002C911497282B14962C93149760E00FC0EB5AFD4F64916623D9F167FF08C01496A0 +:2011C0008C911497826014968C9314976F7716968C9116978617A9F117968C911797861749 +:2011E00081F118968C911897861759F119968C911997861731F11A968C911A97861709F1CC +:201200001B968C911B978617E1F0ED01E0E0F0E09E2F8E81882321F4EA0FFB1F668306C004 +:201220009F5F31962196E630F10591F7963049F481E090E013969C938E93129720E030E018 +:2012400007C0CD011496BD010E94650821E030E0C901DF91CF91089580E867ED71E045E602 +:2012600050E00E94F1030895FC0180818F5F808380E86CE372E049E150E00E94F103089586 +:20128000CF92DF92EF92FF920F931F93CF93DF937C016B018A01C0E0D0E00FC0D6016D91DA +:2012A0006D01D701ED91FC910190F081E02DC7010995C80FD91F015010400115110571F764 +:2012C000CE01DF91CF911F910F91FF90EF90DF90CF900895EE0FFF1F0590F491E02D0994C7 +:2012E000F894FFCF00E100000000000001010000000050074009EF061607FD0678077C07FA +:201300000000000019084009BB0878086B08FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF +: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 +:2070200060C000005EC00000F1C400005AC0000058C0000056C0000054C0000052C00000EF +:2070400050C0000078C000004CC000004AC0000048C0000046C0000044C0000042C00000BE +:2070600040C000003EC000003CC000003AC0000038C0000036C0000034C0000032C0000048 +:2070800030C000002EC000002CC000002AC0000028C0000026C0000024C0000022C00000A8 +:2070A00020C000001EC000001CC0000011241FBECFEFDAE0DEBFCDBF11E0A0E0B1E0E0E3BE +:2070C000FFE702C005900D92A83AB107D9F711E0A8EAB1E001C01D92AE3BB107E1F78FD30B +:2070E00025C78ECFF89410926F0010928100109285001092840081E085BF15BE47985D9AEC +: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 +:2074400018C0D801C701B695A7959795879558D5CEDE82E090E0A0E0B0E0E80EF91E0A1FF3 +:207460001B1FE092AE01F092AF010093B0011093B1012197209709F0BECF7DC08090AE01F5 +:207480009090AF01A090B001B090B10196E4691609F05DC083E0F40180935700E89507B63E +:2074A00000FCFDCF54C0F6E46F1661F5772031F1E090AE01F090AF010091B0011091B1019E +:2074C0007EDED82ECC24852D90E08C299D29F7010C0140925700E895112482E090E0A0E08B +:2074E000B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B10102C060DE582E1A +:20750000742423C0E090AE01F090AF010091B0011091B10116950795F794E79450DE682FFA +:20752000C701F6D48091AE019091AF01A091B001B091B1010296A11DB11D8093AE0190934A +:20754000AF01A093B001B093B101219704C05524772444244394209709F0A5CF96E46916B6 +:2075600041F485E0F40180935700E89507B600FCFDCF8DE03CDE82E080936F009CC0833492 +:2075800071F40091AE011091AF0119DE90E021E0F8010C0120935700E89511247CCE8336C8 +:2075A00019F5E090AE01F090AF010091B0011091B10105DEF701E16090E021E00C0120938C +:2075C0005700E895112482E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF0100936A +:2075E000B0011093B10157CE8D3661F4E091AE01F091AF0185E080935700E89507B600FCF2 +:20760000FDCF49CE823551F4E091AE01F091AF0105911491812FEBDD802F4CC0843421F5FE +:20762000E090AE01F090AF010091B0011091B10116950795F794E794C2DD682FC70168D4DF +:207640008091AE019091AF01A091B001B091B1010296A11DB11D8093AE019093AF01A093D8 +:20766000B001B093B10117CE843609F5E090AE01F090AF010091B0011091B101D801C70142 +:20768000B695A795979587953BD4B1DD82E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE010B +:2076A000F092AF010093B0011093B10104C08B3111F08FE39CDD83E08093E9009091E8002B +:2076C0008091E8008E778093E80095FF04C010C08EB38823C9F08091E80080FFF9CF809193 +:2076E000E8008E778093E80003C08EB3882361F08091E80080FFF9CF84E08093E9008091F1 +:20770000E8008B778093E800DF91CF911F910F91FF90EF90DF90CF90BF90AF909F908F90AC +:207720007F906F905F904F9008959091B601892F8F77813249F58091B7018032A1F081328A +:2077400019F5913A09F58091E800877F8093E8008DE091E067E070E00AD28091E8008B770C +:207760008093E8000895913279F48091E800877F8093E8008DE091E067E070E05CD2809193 +:20778000E8008E778093E800089582E061EC42E0B4D083E061E842E1B0D084E060E842E1F1 +:2077A000ACC084B7877F84BF88E10FB6F89480936000109260000FBE20E880E090E00FB640 +:2077C000F89420936100809361000FBE81E085BF92E095BF3F9A209A559AE1E6F0E02083A1 +:2077E000108247985D9A289A109289008AEF8093880090936F0083E080938100EFC01F9336 +:2078000088E10FB6F89480936000109260000FBE84B714BE182F10FF08C0E0E0F0E085919B +:2078200094918F5F9F4F09F05DDC2091000A3091010A1092010A1092000A13FF0FC0809143 +:20784000090190910A012817390741F0E0E0F0E0859194918F5F9F4F09F044DCA2DF7894F5 +:207860001092AD011092AC010CC0E0DC37D38091AC019091AD0181549F4110F010921401DE +:2078800043DC80911401882381F78091E00081608093E00027DC80E090E01F910895FA01A0 +:2078A000923049F0933061F09130F9F485E191E022E130E01EC087E291E02EE330E019C06F +:2078C000882329F485E691E024E030E012C0813029F489E691E022E230E00BC0823029F4C2 +:2078E0008DE891E028E130E004C080E090E020E030E091838083C90108958093E90080915A +:20790000EB0081608093EB001092ED006093EC004093ED008091EE00881F8827881F0895D6 +:207920008091B60188238CF403C08EB38823B1F08091E80082FFF9CF8091E8008B778093B4 +:20794000E80008958EB3882349F08091E80080FFF9CF8091E8008E778093E8000895EF9226 +:20796000FF920F931F9345D04CD008ED10E0F80180818F77808380818068808380818F7D10 +:20798000808319BC1EBA1092B40180EEE82EF12CF70180818B7F8083F8018081816080835B +:2079A00080E060E042E0A9DFE1EEF0E080818E7F8083E2EEF0E0808181608083808188605F +:2079C0008083F70180818E7F8083F8018081806180831F910F91FF90EF900895E7EDF0E01E +:2079E0008081816080838AE482BF81E08093B501B6CFE8EDF0E080818E7F80831092E2000A +:207A000008951092DA001092E10008951F920F920FB60F9211242F933F934F935F936F93D6 +:207A20007F938F939F93AF93BF93EF93FF938091DA0080FF1BC08091D80080FF17C08091A3 +:207A4000DA008E7F8093DA008091D90080FF0BC080E189BD82E189BD09B400FEFDCF81E0E6 +:207A60008EBB3BD203C019BC1EBA37D28091E10080FF17C08091E20080FF13C08091E200B7 +:207A80008E7F8093E2008091E20080618093E2008091D80080628093D80019BC85E08EBBE2 +:207AA0001CD28091E10084FF2CC08091E20084FF28C080E189BD82E189BD09B400FEFDCF42 +:207AC0008091D8008F7D8093D8008091E1008F7E8093E1008091E2008F7E8093E2008091CD +:207AE000E20081608093E2008091B401882331F48091E30087FD02C081E001C084E08EBB2F +:207B0000ECD18091E10083FF21C08091E20083FF1DC08091E100877F8093E10082E08EBB6A +:207B20001092B4018091E1008E7F8093E1008091E2008E7F8093E2008091E200806180931F +:207B4000E20080E060E042E0D8DEC7D1FF91EF91BF91AF919F918F917F916F915F914F9163 +:207B60003F912F910F900FBE0F901F9018959C014091BC015091BD014617570718F4F90183 +:207B800090E044C06115710511F0AB01F8CF8091E8008E778093E80040E050E0F0CF8EB3C8 +:207BA000882309F444C0853009F443C08091E80083FF02C081E008958091E80082FD31C0C0 +:207BC0008091E80080FF22C08091F3009091F200782F60E0292F30E0262B372B07C0819159 +:207BE0008093F100415050402F5F3F4F4115510519F02830310598F390E02830310509F47B +:207C000091E08091E8008E778093E8004115510531F6992321F605C08EB3882341F08530BD +:207C200041F08091E80082FFF7CF80E0089582E0089583E008959C016115710529F4809120 +:207C4000E8008B778093E800F90126C08EB3882391F1853091F18091E80083FF02C081E01C +:207C600008958091E80082FFF1CF06C08091F10081936150704059F02091F3008091F20000 +:207C8000322F20E090E0822B932B892B79F78091E8008B778093E80061157105B9F605C02E +:207CA0008EB3882341F0853041F08091E80080FFF7CF80E0089582E0089583E008950F93E5 +:207CC0001F93DF93CF9300D0CDB7DEB7E6EBF1E08091F100819381E0EE3BF807C9F725DD32 +:207CE0008091E80083FFE4C08091B6019091B701953009F46DC0963040F4913081F19130E7 +:207D000070F0933009F0D4C02AC0983009F4A3C0993009F4B2C0963009F0CAC07CC080382C +:207D200009F4C6C0823809F0C3C08091BA0187708093E9008091EB001092E9002091E800AB +:207D4000277F2093E80090E025E0969587952A95E1F781708093F1001092F10087C0882315 +:207D600019F0823009F0A4C08F71823009F0A0C08091B801882331F52091BA01277009F445 +:207D800097C02093E9008091EB0080FF1BC0933021F48091EB00806213C08091EB00806134 +:207DA0008093EB0081E090E002C0880F991F2A95E2F78093EA001092EA008091EB008860DE +:207DC0008093EB001092E9008091E800877F51C0882309F06DC01091B8011F770FB7F894F7 +:207DE0008091E800877F8093E8009ADD8091E80080FFFCCF8091E3008078812B8093E30041 +:207E000080688093E300112311F482E001C083E08EBB0FBF4DC08058823008F049C0809105 +:207E2000B8019091B9016091BA01AE014F5F5F4F36DDBC01009709F43BC08091E800877F99 +:207E40008093E80089819A8192DE8091E8008B778093E8002DC0803859F58091E800877FAA +:207E60008093E8008091B4018093F1008091E8008E778093E80054DD1BC08823C9F49091AF +:207E8000B8019230A8F48091E800877F8093E8009093B40145DD8091B401882331F4809130 +:207EA000E30087FD02C081E001C084E08EBB6DDC8091E80083FF0AC08091EB00806280934B +:207EC000EB008091E800877F8093E8000F900F90CF91DF911F910F91089508951F938EB332 +:207EE000882361F01091E9001092E9008091E80083FF01C0E4DE17701093E9001F91089513 +:207F0000F999FECF92BD81BDF89A992780B50895262FF999FECF1FBA92BD81BD20BD0FB695 +:207F2000F894FA9AF99A0FBE01960895F894FFCF4341544552494E41007777000A000000F4 +:207F4000000000080112011001020000084123340001000201000109023E0002010080324F +:207F60000904000001020201000524001001042402040524060001070582030800FF0904B1 +:207F80000100020A00000007050402100001070583021000010403090422034100720064BF +:207FA00000750069006E006F0020004C0065006F006E006100720064006F00000018034156 +:187FC0000072006400750069006E006F0020004C004C0043000000001D +:00000001FF diff --git a/bootloaders/caterina/Caterina-Micro.hex b/bootloaders/caterina/Caterina-Micro.hex index 7479210..bcd6723 100644 --- a/bootloaders/caterina/Caterina-Micro.hex +++ b/bootloaders/caterina/Caterina-Micro.hex @@ -1,256 +1,1024 @@ -:1070000055C000006EC000006CC000006AC00000E7 -:1070100068C0000066C0000064C0000062C00000DC -:1070200060C000005EC00000F1C400005AC0000053 -:1070300058C0000056C0000054C0000052C00000FC -:1070400050C0000078C000004CC000004AC00000E2 -:1070500048C0000046C0000044C0000042C000001C -:1070600040C000003EC000003CC000003AC000002C -:1070700038C0000036C0000034C0000032C000003C -:1070800030C000002EC000002CC000002AC000004C -:1070900028C0000026C0000024C0000022C000005C -:1070A00020C000001EC000001CC0000011241FBE34 -:1070B000CFEFDAE0DEBFCDBF11E0A0E0B1E0E0E36A -:1070C000FFE702C005900D92A83AB107D9F711E089 -:1070D000A8EAB1E001C01D92AE3BB107E1F78FD342 -:1070E00025C78ECFF89410926F00109281001092F5 -:1070F00085001092840081E085BF15BE47985D9A97 -:10710000289A0C94000008952091B2013091B301A7 -:107110002F5F3F4F3093B3012093B201932F37FF7E -:1071200003C08EEF831B982F990F921710F4479886 -:107130000895479A08951F920F920FB60F92112447 -:107140002F938F939F93EF93FF931092850010924C -:1071500084008091A8019091A901009741F00197C6 -:107160009093A9018093A801892B09F45D9A8091DD -:10717000AA019091AB01009741F001979093AB0168 -:107180008093AA01892B09F4289AE0E0F0E0859128 -:1071900094918F5F9F4F49F08091AC019091AD0128 -:1071A00001969093AD018093AC01FF91EF919F9177 -:1071B0008F912F910F900FBE0F901F90189584E024 -:1071C0008093E9000DC08091E8008B778093E80000 -:1071D00003C08EB3882351F08091E80082FFF9CF7D -:1071E0008091E80085FFEFCF8091F1000895982FFE -:1071F00083E08093E9008091E80085FD0DC08091D7 -:10720000E8008E778093E80003C08EB3882369F08E -:107210008091E80080FFF9CF9093F1005D9884E6BB -:1072200090E09093A9018093A80108954F925F92F6 -:107230006F927F928F929F92AF92BF92CF92DF9286 -:10724000EF92FF920F931F93CF93DF9384E080938D -:10725000E9008091E80082FF57C2289884E690E018 -:107260009093AB018093AA01AADF182F853481F493 -:107270008CE49DE19093AD018093AC0107B600FCD6 -:10728000FDCFF999FECF81E180935700E89503C0C7 -:10729000843519F494DF8DE00DC28C34E1F3803530 -:1072A000D1F3843721F484E4A2DF80E003C2813685 -:1072B00011F489E5FFC18134B1F481DF182F7FDF3C -:1072C00090E0880F991FAA2797FDA095BA2F312F1C -:1072D000330F20E0442737FD4095542F822B932B0A -:1072E000A42BB52BB8C1803711F483E5E3C18335F6 -:1072F00049F4C0E0D1E089917ADF21E0C730D207BC -:10730000D1F7D9C1863521F481E371DF80E3D2C1A1 -:10731000833731F487E86BDF85E969DF8EE1CAC125 -:107320008536B9F4E0E0F0E093E085E09093570013 -:10733000E89507B600FCFDCF80935700E89507B6A7 -:1073400000FCFDCFE058FF4FA0E7E030FA0771F7EF -:10735000A2CF823739F4E1E0F0E089E08093570072 -:107360008491A8C1863439F4E0E0F0E089E08093AC -:10737000570084919FC18E3439F4E3E0F0E089E056 -:1073800080935700849196C1813539F4E2E0F0E0B2 -:1073900089E08093570084918DC1823631F489E56C -:1073A00026DF80E024DF80E885C1823419F087364B -:1073B00009F0E5C01092AD011092AC0100DF082F7A -:1073C000FEDEF82EFCDE682E8554823008F071C196 -:1073D000902F80E0CF2DD0E0C82BD92B10926F00DA -:1073E000173609F04BC081E180935700E895DD2402 -:1073F000CC24C3943FC0E090AE01F090AF01009167 -:10740000B0011091B101B6E46B16D9F4ED2DF0E0A6 -:10741000EE29FF29E4918E2FEADEDD2081F082E063 -:1074200090E0A0E0B0E0E80EF91E0A1F1B1FE092FA -:10743000AE01F092AF010093B0011093B101DC24D2 -:1074400018C0D801C701B695A7959795879558D5C7 -:10745000CEDE82E090E0A0E0B0E0E80EF91E0A1F68 -:107460001B1FE092AE01F092AF010093B0011093A8 -:10747000B1012197209709F0BECF7DC08090AE0169 -:107480009090AF01A090B001B090B10196E4691660 -:1074900009F05DC083E0F40180935700E89507B6DA -:1074A00000FCFDCF54C0F6E46F1661F5772031F192 -:1074B000E090AE01F090AF010091B0011091B101E8 -:1074C0007EDED82ECC24852D90E08C299D29F701D5 -:1074D0000C0140925700E895112482E090E0A0E072 -:1074E000B0E0E80EF91E0A1F1B1FE092AE01F092F9 -:1074F000AF010093B0011093B10102C060DE582EBD -:10750000742423C0E090AE01F090AF010091B0016F -:107510001091B10116950795F794E79450DE682F06 -:10752000C701F6D48091AE019091AF01A091B00156 -:10753000B091B1010296A11DB11D8093AE0190934F -:10754000AF01A093B001B093B101219704C05524BD -:10755000772444244394209709F0A5CF96E4691634 -:1075600041F485E0F40180935700E89507B600FCEC -:10757000FDCF8DE03CDE82E080936F009CC08334C1 -:1075800071F40091AE011091AF0119DE90E021E09D -:10759000F8010C0120935700E89511247CCE833626 -:1075A00019F5E090AE01F090AF010091B00110919B -:1075B000B10105DEF701E16090E021E00C012093CC -:1075C0005700E895112482E090E0A0E0B0E0E80EDA -:1075D000F91E0A1F1B1FE092AE01F092AF0100934B -:1075E000B0011093B10157CE8D3661F4E091AE0138 -:1075F000F091AF0185E080935700E89507B600FC55 -:10760000FDCF49CE823551F4E091AE01F091AF014A -:1076100005911491812FEBDD802F4CC0843421F52E -:10762000E090AE01F090AF010091B0011091B10176 -:1076300016950795F794E794C2DD682FC70168D4C3 -:107640008091AE019091AF01A091B001B091B101D4 -:107650000296A11DB11D8093AE019093AF01A0933E -:10766000B001B093B10117CE843609F5E090AE01B8 -:10767000F090AF010091B0011091B101D801C701A4 -:10768000B695A795979587953BD4B1DD82E090E0BC -:10769000A0E0B0E0E80EF91E0A1F1B1FE092AE0149 -:1076A000F092AF010093B0011093B10104C08B318F -:1076B00011F08FE39CDD83E08093E9009091E80076 -:1076C0008091E8008E778093E80095FF04C010C099 -:1076D0008EB38823C9F08091E80080FFF9CF8091B4 -:1076E000E8008E778093E80003C08EB3882361F0B2 -:1076F0008091E80080FFF9CF84E08093E9008091D9 -:10770000E8008B778093E800DF91CF911F910F9174 -:10771000FF90EF90DF90CF90BF90AF909F908F90B1 -:107720007F906F905F904F9008959091B601892F50 -:107730008F77813249F58091B7018032A1F0813293 -:1077400019F5913A09F58091E800877F8093E80068 -:107750008DE091E067E070E00AD28091E8008B77DD -:107760008093E8000895913279F48091E800877F52 -:107770008093E8008DE091E067E070E05CD280915A -:10778000E8008E778093E800089582E061EC42E0A3 -:10779000B4D083E061E842E1B0D084E060E842E147 -:1077A000ACC084B7877F84BF88E10FB6F89480931C -:1077B0006000109260000FBE20E880E090E00FB6FD -:1077C000F89420936100809361000FBE81E085BF33 -:1077D00092E095BF3F9A209A559AE1E6F0E0208327 -:1077E000108247985D9A289A109289008AEF8093B8 -:1077F000880090936F0083E080938100EFC01F9317 -:1078000088E10FB6F89480936000109260000FBE7C -:1078100084B714BE182F10FF08C0E0E0F0E0859197 -:1078200094918F5F9F4F09F05DDC2091000A3091A9 -:10783000010A1092010A1092000A13FF0FC08091F2 -:10784000090190910A012817390741F0E0E0F0E0C2 -:10785000859194918F5F9F4F09F044DCA2DF78946B -:107860001092AD011092AC010CC0E0DC37D38091D6 -:10787000AC019091AD0181549F4110F01092140120 -:1078800043DC80911401882381F78091E0008160BE -:107890008093E00027DC80E090E01F910895FA01DA -:1078A000923049F0933061F09130F9F485E191E044 -:1078B00022E130E01EC087E291E02EE330E019C003 -:1078C000882329F485E691E024E030E012C081307D -:1078D00029F489E691E022E230E00BC0823029F4FD -:1078E0008DE891E028E130E004C080E090E020E005 -:1078F00030E091838083C90108958093E9008091ED -:10790000EB0081608093EB001092ED006093EC003F -:107910004093ED008091EE00881F8827881F08950E -:107920008091B60188238CF403C08EB38823B1F014 -:107930008091E80082FFF9CF8091E8008B778093F7 -:10794000E80008958EB3882349F08091E80080FF15 -:10795000F9CF8091E8008E778093E8000895EF9248 -:10796000FF920F931F9345D04CD008ED10E0F80123 -:1079700080818F77808380818068808380818F7D04 -:10798000808319BC1EBA1092B40180EEE82EF12C4F -:10799000F70180818B7F8083F80180818160808303 -:1079A00080E060E042E0A9DFE1EEF0E080818E7FE0 -:1079B0008083E2EEF0E08081816080838081886056 -:1079C0008083F70180818E7F8083F80180818061D0 -:1079D00080831F910F91FF90EF900895E7EDF0E005 -:1079E0008081816080838AE482BF81E08093B501D9 -:1079F000B6CFE8EDF0E080818E7F80831092E200C8 -:107A000008951092DA001092E10008951F920F92EB -:107A10000FB60F9211242F933F934F935F936F9361 -:107A20007F938F939F93AF93BF93EF93FF93809137 -:107A3000DA0080FF1BC08091D80080FF17C08091C2 -:107A4000DA008E7F8093DA008091D90080FF0BC02E -:107A500080E189BD82E189BD09B400FEFDCF81E0EE -:107A60008EBB3BD203C019BC1EBA37D28091E10055 -:107A700080FF17C08091E20080FF13C08091E20078 -:107A80008E7F8093E2008091E20080618093E2002B -:107A90008091D80080628093D80019BC85E08EBBAD -:107AA0001CD28091E10084FF2CC08091E20084FF11 -:107AB00028C080E189BD82E189BD09B400FEFDCF07 -:107AC0008091D8008F7D8093D8008091E1008F7ED7 -:107AD0008093E1008091E2008F7E8093E2008091AC -:107AE000E20081608093E2008091B401882331F448 -:107AF0008091E30087FD02C081E001C084E08EBB7D -:107B0000ECD18091E10083FF21C08091E20083FFEE -:107B10001DC08091E100877F8093E10082E08EBBF1 -:107B20001092B4018091E1008E7F8093E1008091FA -:107B3000E2008E7F8093E2008091E200806180937A -:107B4000E20080E060E042E0D8DEC7D1FF91EF9133 -:107B5000BF91AF919F918F917F916F915F914F9165 -:107B60003F912F910F900FBE0F901F9018959C0181 -:107B70004091BC015091BD014617570718F4F90117 -:107B800090E044C06115710511F0AB01F8CF809110 -:107B9000E8008E778093E80040E050E0F0CF8EB3AD -:107BA000882309F444C0853009F443C08091E8007B -:107BB00083FF02C081E008958091E80082FD31C01A -:107BC0008091E80080FF22C08091F3009091F20044 -:107BD000782F60E0292F30E0262B372B07C08191CA -:107BE0008093F100415050402F5F3F4F41155105A8 -:107BF00019F02830310598F390E02830310509F468 -:107C000091E08091E8008E778093E800411551055E -:107C100031F6992321F605C08EB3882341F08530D3 -:107C200041F08091E80082FFF7CF80E0089582E084 -:107C3000089583E008959C016115710529F48091F0 -:107C4000E8008B778093E800F90126C08EB3882383 -:107C500091F1853091F18091E80083FF02C081E0CD -:107C600008958091E80082FFF1CF06C08091F10075 -:107C700081936150704059F02091F3008091F2009F -:107C8000322F20E090E0822B932B892B79F7809183 -:107C9000E8008B778093E80061157105B9F605C09F -:107CA0008EB3882341F0853041F08091E80080FF59 -:107CB000F7CF80E0089582E0089583E008950F9360 -:107CC0001F93DF93CF9300D0CDB7DEB7E6EBF1E0A3 -:107CD0008091F100819381E0EE3BF807C9F725DD43 -:107CE0008091E80083FFE4C08091B6019091B701D4 -:107CF000953009F46DC0963040F4913081F19130A7 -:107D000070F0933009F0D4C02AC0983009F4A3C0B1 -:107D1000993009F4B2C0963009F0CAC07CC08038EE -:107D200009F4C6C0823809F0C3C08091BA018770D7 -:107D30008093E9008091EB001092E9002091E80027 -:107D4000277F2093E80090E025E0969587952A9577 -:107D5000E1F781708093F1001092F10087C08823D1 -:107D600019F0823009F0A4C08F71823009F0A0C0F0 -:107D70008091B801882331F52091BA01277009F468 -:107D800097C02093E9008091EB0080FF1BC09330E7 -:107D900021F48091EB00806213C08091EB00806140 -:107DA0008093EB0081E090E002C0880F991F2A9534 -:107DB000E2F78093EA001092EA008091EB0088607D -:107DC0008093EB001092E9008091E800877F51C01A -:107DD000882309F06DC01091B8011F770FB7F89490 -:107DE0008091E800877F8093E8009ADD8091E80029 -:107DF00080FFFCCF8091E3008078812B8093E300AB -:107E000080688093E300112311F482E001C083E0D5 -:107E10008EBB0FBF4DC08058823008F049C08091A2 -:107E2000B8019091B9016091BA01AE014F5F5F4F07 -:107E300036DDBC01009709F43BC08091E800877FE4 -:107E40008093E80089819A8192DE8091E8008B77A7 -:107E50008093E8002DC0803859F58091E800877F35 -:107E60008093E8008091B4018093F1008091E80054 -:107E70008E778093E80054DD1BC08823C9F490916D -:107E8000B8019230A8F48091E800877F8093E800E1 -:107E90009093B40145DD8091B401882331F4809141 -:107EA000E30087FD02C081E001C084E08EBB6DDC91 -:107EB0008091E80083FF0AC08091EB00806280938C -:107EC000EB008091E800877F8093E8000F900F908F -:107ED000CF91DF911F910F91089508951F938EB355 -:107EE000882361F01091E9001092E9008091E80088 -:107EF00083FF01C0E4DE17701093E9001F9108951D -:107F0000F999FECF92BD81BDF89A992780B5089561 -:107F1000262FF999FECF1FBA92BD81BD20BD0FB6A5 -:107F2000F894FA9AF99A0FBE01960895F894FFCF43 -:107F30004341544552494E41007777000A00000002 -:107F40000000000801120110010200000841233561 -:107F50000001000201000109023E0002010080321E -:107F6000090400000102020100052400100104249C -:107F700002040524060001070582030800FF090426 -:107F80000100020A000000070504021000010705B5 -:107F900083021000010403090422034100720064FB -:107FA00000750069006E006F0020004D00690063DD -:107FB0000072006F00200020002000000018034124 -:107FC0000072006400750069006E006F0020004CB4 -:087FD000004C0043000000001A -:040000030000700089 -:00000001FF +:200000000C946E010C9496010C9496010C9496010C9496010C9496010C9496010C94960150 +:200020000C9496010C9496010C941B050C94A6050C9496010C9496010C9496010C9496016B +:200040000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C94B201CC +:200060000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601C8 +:200080000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601A8 +:2000A0000C9496010C9496010C94960100000000240027002A002D003000000000002500A4 +:2000C00028002B002E003100000000002300260029002C002F00040404040403040502027D +:2000E0000202040302020202060606060606040402020204040802011040804010204080A8 +:200100004080080204018040201002011080102040400000000200080E0000030401000BB2 +:200120000000070605040100080A0B0C0D09040309042203410072006400750069006E00CD +:200140006F0020004D006900630072006F00200020002000180341007200640075006900A6 +:200160006E006F0020004C004C004300120100020000004041233580000101020001120121 +:200180000002020000404123358000010102000100C18081C1080B00020202010009040053 +:2001A000000102020000052400100105240101010424020605240600010705810310004094 +:2001C00009040100020A000000070502024000000705830240000005010902A1010901A186 +:2001E000008501050919012903150025019503750181029501750581030501093009310943 +:20020000381581257F750895038106C0C005010906A1018502050719E029E715002501754D +:20022000019508810295017508810395067508150025650507190029658100C0090402004C +:2002400001030000000921010100012265000705840340000100000000000000002A2B2895 +:200260000000000000000000000000000000000000000000002C9EB4A0A1A2A434A6A7A553 +:20028000AE362D3738271E1F20212223242526B333B62EB7B89F8485868788898A8B8C8D58 +:2002A0008E8F909192939495969798999A9B9C9D2F3130A3AD350405060708090A0B0C0D7C +:2002C0000E0F101112131415161718191A1B1C1DAFB1B0B5000057043907370811241FBE15 +:2002E000CFEFDAE0DEBFCDBF11E0A0E0B1E0E4EEF2E102C005900D92AA32B107D9F711E06B +:20030000AAE2B1E001C01D92AB39B107E1F712E0CCEDD2E004C02297FE010E946C09C63DE9 +:20032000D107C9F70E9491030C9470090C9400008DE061E00E945E0368EE73E080E090E00C +:200340000E94FA018DE060E00E945E0368EE73E080E090E00E94FA0108958DE061E00E944D +:20036000C10208951F920F920FB60F9211242F933F938F939F93AF93BF9380912E01909153 +:200380002F01A0913001B0913101309132010196A11DB11D232F2D5F2D3720F02D570196D4 +:2003A000A11DB11D2093320180932E0190932F01A0933001B093310180912A0190912B01D4 +:2003C000A0912C01B0912D010196A11DB11D80932A0190932B01A0932C01B0932D01BF917F +:2003E000AF919F918F913F912F910F900FBE0F901F9018959B01AC017FB7F89480912A012F +:2004000090912B01A0912C01B0912D0166B5A89B05C06F3F19F00196A11DB11D7FBFBA2F9E +:20042000A92F982F8827860F911DA11DB11D62E0880F991FAA1FBB1F6A95D1F7BC012DC0FA +:20044000FFB7F89480912A0190912B01A0912C01B0912D01E6B5A89B05C0EF3F19F0019693 +:20046000A11DB11DFFBFBA2FA92F982F88278E0F911DA11DB11DE2E0880F991FAA1FBB1F70 +:20048000EA95D1F7861B970B885E9340C8F2215030404040504068517C4F21153105410538 +:2004A000510571F60895789484B5826084BD84B5816084BD85B5826085BD85B5816085BD64 +:2004C000EEE6F0E0808181608083E1E8F0E01082808182608083808181608083E0E8F0E005 +:2004E000808181608083E1EBF0E0808184608083E0EBF0E0808181608083E1E9F0E0808178 +:2005000082608083808181608083E0E9F0E080818160808320EC30E0F90180818068808391 +:2005200080818F7B8083A2ECB0E08C9188608C938C918B7F8C93E1ECF0E0808184608083A0 +:20054000808182608083808181608083E3ECF0E0808181608083F9018081826080838C914F +:2005600081608C93EAE7F0E08081846080838081826080838081816080838081806880833B +:200580000895CF93DF93482F50E0CA018C509F4FFC0134914A525F4FFA018491882369F18D +:2005A00090E0880F991FFC01E455FF4FA591B491FC01E654FF4FC591D491662351F42FB789 +:2005C000F8948C91932F909589238C93888189230BC0623061F42FB7F8948C91932F9095E3 +:2005E00089238C938881832B88832FBF06C09FB7F8948C91832B8C939FBFDF91CF91089523 +:200600008730C1F1883080F48330F9F0843030F4813029F1823009F050C024C08430C9F0FA +:20062000863009F04AC022C08A3091F18B3030F4883031F1893009F040C026C08C3091F154 +:200640008C3060F18E30C9F533C0809180008F7703C0809180008F7D80938000089584B5BE +:200660008F7702C084B58F7D84BD08958091B0008F7703C08091B0008F7D8093B0000895D8 +:20068000809190008F7707C0809190008F7D03C080919000877F8093900008958091C000C4 +:2006A0008F7703C08091C0008F7D8093C00008958091C200877F8093C2000895FF920F93A6 +:2006C0001F93F62E482F50E0CA018E5E9E4FFC012491CA018C509F4FFC0114914A525F4FC6 +:2006E000FA0104910023C9F0222319F0822F0E940003E02FF0E0EE0FFF1FE654FF4FA59132 +:20070000B4919FB7F894FF2021F48C911095812302C08C91812B8C939FBF1F910F91FF9031 +:200720000895CF93DF930E9453028BE391E00E9458040E94AD01C0E0D0E00E9498012097E2 +:20074000E1F30E940000F9CF282F809135018823C1F057FF1AC015C0289890933401809133 +:20076000F1008193E217F307B9F74115510539F08091F200882319F48BE68093E800AFBF67 +:2007800002C04FEF5FEFCA010895AFB7F89427702093E9008091F200282F30E0241735079D +:2007A0000CF4A901FB019B01240F311D94E6DACFDF93CF930F92CDB7DEB7BE016F5F7F4F6A +:2007C00041E050E00E94A403019719F02FEF3FEF03C08981282F30E0C9010F90CF91DF9125 +:2007E0000895FF920F931F93F82E142F052F4091380150913901212F302FC901DC01FB0163 +:200800006EEF29C0F7FE02C0949101C09081209136013091370124173507ACF48091E800F3 +:200820008570E1F38091E80082FF03C02FEF3FEF17C09093F100C90101968F739070892B64 +:2008400011F46093E8002F5F3F4F3093370120933601119731961097A9F6812F902F9C01F6 +:20086000C9011F910F91FF9008959C018091E80082FFFCCFF901260F311D03C08091F1000E +:200880008193E217F307D1F7289884E6809334018BEF8093E800CB0108958093E90080912C +:2008A000F200882319F08AE38093E800089508951092350181E08093D70080EA8093D80078 +:2008C00082E189BD09B400FEFDCF61E070E080E090E00E94FA0180E98093D8008CE0809317 +:2008E000E2001092E000559A209A08955F926F927F928F929F92AF92BF92CF92DF92EF9214 +:20090000FF920F931F93CF93DF93E82E842E752E80913501882371F18B01242F352FC90152 +:20092000EC017AEFF72E67E0962E9E2050E4552E8E2D90E040E2A42EB12CA822B9223AE3FE +:20094000632E20E4C22ED12CC822D92258C09FB7F8949092E9008091E80085FD02C020E0EE +:2009600004C08091F200252D281B9FBF222361F4FA9419F42FEF3FEF4DC061E070E080E03E +:2009800090E00E94FA013BC0822F90E0C817D9070CF42C2FC21BD1094FB7F8949092E900C0 +:2009A000A114B10421F406C01092F10021502223D9F719C0E7FC03C0F801922F10C0C80107 +:2009C000322F06C0FC010196E491E093F10031503323C1F706C081918093F100915099237B +:2009E000D1F7020F111D8091E80085FF05C0209729F4C114D10411F06092E8004FBF209790 +:200A000009F0A5CF5D9884E680933301282D372DC9019C01C901DF91CF911F910F91FF902A +:200A2000EF90DF90CF90BF90AF909F908F907F906F905F9008951F920F920FB60F92112406 +:200A40001F932F933F934F935F936F937F938F939F93AF93BF93EF93FF938091E1001092D8 +:200A6000E100982F83FF0FC01092E90081E08093EB001092EC0082E38093ED0010923501C8 +:200A800088E08093F00092FF36C083E08093E9008091F200882349F08AE38093E80005C0F1 +:200AA00080E891E00E947C0701C012E09FB7F8941093E9008091F2009FBF882389F780917A +:200AC0003301882351F08091330181508093330180913301882309F45D9A809134018823C4 +:200AE00051F08091340181508093340180913401882309F4289AFF91EF91BF91AF919F91D6 +:200B00008F917F916F915F914F913F912F911F910F900FBE0F901F9018950F931F93DF9368 +:200B2000CF930F92CDB7DEB719828E010F5F1F4FC8010E949B07C8010E943409898190E064 +:200B40000F90CF91DF911F910F9108951F920F920FB60F921124EF92FF921F932F933F93F4 +:200B60004F935F936F937F938F939F93AF93BF93EF93FF93DF93CF93CDB7DEB76197DEBF0F +:200B8000CDBF1092E9008091E80083FF0FC1FE0131969E01275F3F4F03C08091F1008193A1 +:200BA000E217F307D1F7289884E68093340182EF8093E800998197FF05C08091E80080FFAF +:200BC000FCCF03C08EEF8093E800292F30E0C90180769070892B09F0C2C08A81882329F4E5 +:200BE0001092F1001092F100D6C0813009F4D3C0833009F4D0C0853049F48091E80080FF4E +:200C0000FCCF8B8180688093E300C5C0863009F07CC01C81EF80F8841230C1F51092E900A4 +:200C2000109237011092360110923901109238010E948D0599E0FE013996DF01292F1D92E8 +:200C40002A95E9F799871A8791E09E8790E8988B9AEF998B2091360130913701275F3F4F61 +:200C60003C872B878D871092E9001092370110923601F0923901E092380180E0BF0149E0FD +:200C800050E00E94F1030E948D0585C01092E9001092370110923601F0923901E092380170 +:200CA000123241F482E290E00E942C09892B09F476C071C0113079F488E0E816F10419F4E2 +:200CC00081E080933A0180913A01882309F06BC0ECE6F1E013C0133009F061C08B818823C0 +:200CE00019F4EEE2F1E00AC0823019F4E2E3F1E005C0813009F053C0E4E5F1E0449180E8CE +:200D0000BF0150E00E94F10346C0873009F447C0883021F481E08093F1003DC08930D9F5D6 +:200D200023703070232BD9F5E1E9F1E091E031E026E39093E9003093EB0084918093EC0070 +:200D40002093ED009F5F3196953099F78EE78093EA001092EA008B81809335011CC08F819A +:200D600098851092E900109237011092360190933901809338018D81882329F4CE01019633 +:200D80000E94A70706C0823051F4CE0101960E94FD07882321F08EEF8093E80007C081E2DC +:200DA0008093EB0003C0EEE7F1E0A8CF6196DEBFCDBFCF91DF91FF91EF91BF91AF919F9195 +:200DC0008F917F916F915F914F913F912F911F91FF90EF900F900FBE0F901F9018952091AD +:200DE0007C0130917D0180917E0190917F01281B390B2F733070C901089520917C013091E7 +:200E00007D0180917E0190917F012817390719F42FEF3FEF09C0E0917E01F0917F01E45C51 +:200E2000FE4F8081282F30E0C901089520917C0130917D0180917E0190917F012817390779 +:200E400019F42FEF3FEF13C0E0917E01F0917F01E45CFE4F208180917E0190917F0101967F +:200E60008F73907090937F0180937E0130E0C9010895109283011092820188EE93E0A0E010 +:200E8000B0E08093840190938501A0938601B09387018EE091E09093810180938001089547 +:200EA0000F931F93DF93CF930F92CDB7DEB78C01698380910701882369F083E0BE016F5FCA +:200EC0007F4F41E050E00E9476041816190614F49C0107C081E090E0F8019383828320E039 +:200EE00030E0C9010F90CF91DF911F910F91089583E00E944D04089582E00E94D803482F73 +:200F000020917C0130917D012F5F3F4F2F73307080917E0190917F012817390759F0E0919C +:200F20007C01F0917D01E45CFE4F408330937D0120937C010895FC0180818E5F808380E881 +:200F400065E971E042E450E00E94F1030895FC0181819081913A59F4813209F04CC080E029 +:200F600060E071E047E050E00E94F10342C0913209F041C0803239F480E091E067E070E0ED +:200F80000E94350436C0823209F035C08281809307018091000190910101A0910201B09116 +:200FA0000301805B9440A040B04019F58091070180FD12C087E797E79093010A8093000A01 +:200FC0002BE088E190E00FB6F894A895809360000FBE209360000DC088E10FB6F8948093B2 +:200FE0006000109260000FBEA8951092010A1092000A81E0089580E00895FC019181808121 +:20100000813A31F4913089F080E0933089F40DC0813269F49B3021F482818093080105C075 +:201020009A3029F482818093090181E0089580E00895EF92FF920F931F938C01E62EDC01CA +:20104000ED91FC910480F581E02D0995F82ED801ED91FC910680F781E02DC8016E2D0995C9 +:201060008F2D90E01F910F91FF90EF90089510928E01109292011092910180E291E09093B9 +:20108000900180938F010895EF92FF920F931F93DF93CF930F92CDB7DEB789838B017A0178 +:2010A00084E0BE016F5F7F4F41E050E00E94760484E4B801A7010E9476040F90CF91DF91B0 +:2010C0001F910F91FF90EF90089582E048E050E00E9444080895FC01168217821086118675 +:2010E0001286138614823496BF010E9465080895DC01683810F0685829C0E62FF0E067FF82 +:2011000013C0E058F04081E090E002C0880F991FEA95E2F7809514962C911497282314963E +:201120002C93149760E012C0EB5AFD4F6491662319F420E030E01DC067FF08C014968C9135 +:2011400014978D7F14968C9314976F77FD0190E0662321F08681861709F416829F5F319678 +:201160009630B1F7CD011496BD010E94650821E030E0C9010895CF93DF93DC01683810F0F3 +:20118000685825C0E62FF0E067FF12C0E058F04081E090E002C0880F991FEA95E2F7149641 +:2011A0002C911497282B14962C93149760E00FC0EB5AFD4F64916623D9F167FF08C01496A0 +:2011C0008C911497826014968C9314976F7716968C9116978617A9F117968C911797861749 +:2011E00081F118968C911897861759F119968C911997861731F11A968C911A97861709F1CC +:201200001B968C911B978617E1F0ED01E0E0F0E09E2F8E81882321F4EA0FFB1F668306C004 +:201220009F5F31962196E630F10591F7963049F481E090E013969C938E93129720E030E018 +:2012400007C0CD011496BD010E94650821E030E0C901DF91CF91089580E867ED71E045E602 +:2012600050E00E94F1030895FC0180818F5F808380E86CE372E049E150E00E94F103089586 +:20128000CF92DF92EF92FF920F931F93CF93DF937C016B018A01C0E0D0E00FC0D6016D91DA +:2012A0006D01D701ED91FC910190F081E02DC7010995C80FD91F015010400115110571F764 +:2012C000CE01DF91CF911F910F91FF90EF90DF90CF900895EE0FFF1F0590F491E02D0994C7 +:2012E000F894FFCF00E100000000000001010000000050074009EF061607FD0678077C07FA +:201300000000000019084009BB0878086B08FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF +: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 +:2070200060C000005EC00000F1C400005AC0000058C0000056C0000054C0000052C00000EF +:2070400050C0000078C000004CC000004AC0000048C0000046C0000044C0000042C00000BE +:2070600040C000003EC000003CC000003AC0000038C0000036C0000034C0000032C0000048 +:2070800030C000002EC000002CC000002AC0000028C0000026C0000024C0000022C00000A8 +:2070A00020C000001EC000001CC0000011241FBECFEFDAE0DEBFCDBF11E0A0E0B1E0E0E3BE +:2070C000FFE702C005900D92A83AB107D9F711E0A8EAB1E001C01D92AE3BB107E1F78FD30B +:2070E00025C78ECFF89410926F0010928100109285001092840081E085BF15BE47985D9AEC +: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 +:2074400018C0D801C701B695A7959795879558D5CEDE82E090E0A0E0B0E0E80EF91E0A1FF3 +:207460001B1FE092AE01F092AF010093B0011093B1012197209709F0BECF7DC08090AE01F5 +:207480009090AF01A090B001B090B10196E4691609F05DC083E0F40180935700E89507B63E +:2074A00000FCFDCF54C0F6E46F1661F5772031F1E090AE01F090AF010091B0011091B1019E +:2074C0007EDED82ECC24852D90E08C299D29F7010C0140925700E895112482E090E0A0E08B +:2074E000B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B10102C060DE582E1A +:20750000742423C0E090AE01F090AF010091B0011091B10116950795F794E79450DE682FFA +:20752000C701F6D48091AE019091AF01A091B001B091B1010296A11DB11D8093AE0190934A +:20754000AF01A093B001B093B101219704C05524772444244394209709F0A5CF96E46916B6 +:2075600041F485E0F40180935700E89507B600FCFDCF8DE03CDE82E080936F009CC0833492 +:2075800071F40091AE011091AF0119DE90E021E0F8010C0120935700E89511247CCE8336C8 +:2075A00019F5E090AE01F090AF010091B0011091B10105DEF701E16090E021E00C0120938C +:2075C0005700E895112482E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF0100936A +:2075E000B0011093B10157CE8D3661F4E091AE01F091AF0185E080935700E89507B600FCF2 +:20760000FDCF49CE823551F4E091AE01F091AF0105911491812FEBDD802F4CC0843421F5FE +:20762000E090AE01F090AF010091B0011091B10116950795F794E794C2DD682FC70168D4DF +:207640008091AE019091AF01A091B001B091B1010296A11DB11D8093AE019093AF01A093D8 +:20766000B001B093B10117CE843609F5E090AE01F090AF010091B0011091B101D801C70142 +:20768000B695A795979587953BD4B1DD82E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE010B +:2076A000F092AF010093B0011093B10104C08B3111F08FE39CDD83E08093E9009091E8002B +:2076C0008091E8008E778093E80095FF04C010C08EB38823C9F08091E80080FFF9CF809193 +:2076E000E8008E778093E80003C08EB3882361F08091E80080FFF9CF84E08093E9008091F1 +:20770000E8008B778093E800DF91CF911F910F91FF90EF90DF90CF90BF90AF909F908F90AC +:207720007F906F905F904F9008959091B601892F8F77813249F58091B7018032A1F081328A +:2077400019F5913A09F58091E800877F8093E8008DE091E067E070E00AD28091E8008B770C +:207760008093E8000895913279F48091E800877F8093E8008DE091E067E070E05CD2809193 +:20778000E8008E778093E800089582E061EC42E0B4D083E061E842E1B0D084E060E842E1F1 +:2077A000ACC084B7877F84BF88E10FB6F89480936000109260000FBE20E880E090E00FB640 +:2077C000F89420936100809361000FBE81E085BF92E095BF3F9A209A559AE1E6F0E02083A1 +:2077E000108247985D9A289A109289008AEF8093880090936F0083E080938100EFC01F9336 +:2078000088E10FB6F89480936000109260000FBE84B714BE182F10FF08C0E0E0F0E085919B +:2078200094918F5F9F4F09F05DDC2091000A3091010A1092010A1092000A13FF0FC0809143 +:20784000090190910A012817390741F0E0E0F0E0859194918F5F9F4F09F044DCA2DF7894F5 +:207860001092AD011092AC010CC0E0DC37D38091AC019091AD0181549F4110F010921401DE +:2078800043DC80911401882381F78091E00081608093E00027DC80E090E01F910895FA01A0 +:2078A000923049F0933061F09130F9F485E191E022E130E01EC087E291E02EE330E019C06F +:2078C000882329F485E691E024E030E012C0813029F489E691E022E230E00BC0823029F4C2 +:2078E0008DE891E028E130E004C080E090E020E030E091838083C90108958093E90080915A +:20790000EB0081608093EB001092ED006093EC004093ED008091EE00881F8827881F0895D6 +:207920008091B60188238CF403C08EB38823B1F08091E80082FFF9CF8091E8008B778093B4 +:20794000E80008958EB3882349F08091E80080FFF9CF8091E8008E778093E8000895EF9226 +:20796000FF920F931F9345D04CD008ED10E0F80180818F77808380818068808380818F7D10 +:20798000808319BC1EBA1092B40180EEE82EF12CF70180818B7F8083F8018081816080835B +:2079A00080E060E042E0A9DFE1EEF0E080818E7F8083E2EEF0E0808181608083808188605F +:2079C0008083F70180818E7F8083F8018081806180831F910F91FF90EF900895E7EDF0E01E +:2079E0008081816080838AE482BF81E08093B501B6CFE8EDF0E080818E7F80831092E2000A +:207A000008951092DA001092E10008951F920F920FB60F9211242F933F934F935F936F93D6 +:207A20007F938F939F93AF93BF93EF93FF938091DA0080FF1BC08091D80080FF17C08091A3 +:207A4000DA008E7F8093DA008091D90080FF0BC080E189BD82E189BD09B400FEFDCF81E0E6 +:207A60008EBB3BD203C019BC1EBA37D28091E10080FF17C08091E20080FF13C08091E200B7 +:207A80008E7F8093E2008091E20080618093E2008091D80080628093D80019BC85E08EBBE2 +:207AA0001CD28091E10084FF2CC08091E20084FF28C080E189BD82E189BD09B400FEFDCF42 +:207AC0008091D8008F7D8093D8008091E1008F7E8093E1008091E2008F7E8093E2008091CD +:207AE000E20081608093E2008091B401882331F48091E30087FD02C081E001C084E08EBB2F +:207B0000ECD18091E10083FF21C08091E20083FF1DC08091E100877F8093E10082E08EBB6A +:207B20001092B4018091E1008E7F8093E1008091E2008E7F8093E2008091E200806180931F +:207B4000E20080E060E042E0D8DEC7D1FF91EF91BF91AF919F918F917F916F915F914F9163 +:207B60003F912F910F900FBE0F901F9018959C014091BC015091BD014617570718F4F90183 +:207B800090E044C06115710511F0AB01F8CF8091E8008E778093E80040E050E0F0CF8EB3C8 +:207BA000882309F444C0853009F443C08091E80083FF02C081E008958091E80082FD31C0C0 +:207BC0008091E80080FF22C08091F3009091F200782F60E0292F30E0262B372B07C0819159 +:207BE0008093F100415050402F5F3F4F4115510519F02830310598F390E02830310509F47B +:207C000091E08091E8008E778093E8004115510531F6992321F605C08EB3882341F08530BD +:207C200041F08091E80082FFF7CF80E0089582E0089583E008959C016115710529F4809120 +:207C4000E8008B778093E800F90126C08EB3882391F1853091F18091E80083FF02C081E01C +:207C600008958091E80082FFF1CF06C08091F10081936150704059F02091F3008091F20000 +:207C8000322F20E090E0822B932B892B79F78091E8008B778093E80061157105B9F605C02E +:207CA0008EB3882341F0853041F08091E80080FFF7CF80E0089582E0089583E008950F93E5 +:207CC0001F93DF93CF9300D0CDB7DEB7E6EBF1E08091F100819381E0EE3BF807C9F725DD32 +:207CE0008091E80083FFE4C08091B6019091B701953009F46DC0963040F4913081F19130E7 +:207D000070F0933009F0D4C02AC0983009F4A3C0993009F4B2C0963009F0CAC07CC080382C +:207D200009F4C6C0823809F0C3C08091BA0187708093E9008091EB001092E9002091E800AB +:207D4000277F2093E80090E025E0969587952A95E1F781708093F1001092F10087C0882315 +:207D600019F0823009F0A4C08F71823009F0A0C08091B801882331F52091BA01277009F445 +:207D800097C02093E9008091EB0080FF1BC0933021F48091EB00806213C08091EB00806134 +:207DA0008093EB0081E090E002C0880F991F2A95E2F78093EA001092EA008091EB008860DE +:207DC0008093EB001092E9008091E800877F51C0882309F06DC01091B8011F770FB7F894F7 +:207DE0008091E800877F8093E8009ADD8091E80080FFFCCF8091E3008078812B8093E30041 +:207E000080688093E300112311F482E001C083E08EBB0FBF4DC08058823008F049C0809105 +:207E2000B8019091B9016091BA01AE014F5F5F4F36DDBC01009709F43BC08091E800877F99 +:207E40008093E80089819A8192DE8091E8008B778093E8002DC0803859F58091E800877FAA +:207E60008093E8008091B4018093F1008091E8008E778093E80054DD1BC08823C9F49091AF +:207E8000B8019230A8F48091E800877F8093E8009093B40145DD8091B401882331F4809130 +:207EA000E30087FD02C081E001C084E08EBB6DDC8091E80083FF0AC08091EB00806280934B +:207EC000EB008091E800877F8093E8000F900F90CF91DF911F910F91089508951F938EB332 +:207EE000882361F01091E9001092E9008091E80083FF01C0E4DE17701093E9001F91089513 +:207F0000F999FECF92BD81BDF89A992780B50895262FF999FECF1FBA92BD81BD20BD0FB695 +:207F2000F894FA9AF99A0FBE01960895F894FFCF4341544552494E41007777000A000000F4 +:207F4000000000080112011001020000084123350001000201000109023E0002010080324E +:207F60000904000001020201000524001001042402040524060001070582030800FF0904B1 +:207F80000100020A00000007050402100001070583021000010403090422034100720064BF +:207FA00000750069006E006F0020004D006900630072006F00200020002000000018034130 +:187FC0000072006400750069006E006F0020004C004C0043000000001D +:00000001FF -- cgit v1.2.3-18-g5258 From e2e0260094c762fddf4669b7a957914405ae9f19 Mon Sep 17 00:00:00 2001 From: Zach Eveland Date: Mon, 9 Apr 2012 10:12:14 -0400 Subject: Micro I hardly knew ye --- bootloaders/caterina/Caterina-Micro.hex | 1024 ------------------------------- bootloaders/caterina/Descriptors.c | 17 +- bootloaders/caterina/Makefile | 2 - 3 files changed, 2 insertions(+), 1041 deletions(-) delete mode 100644 bootloaders/caterina/Caterina-Micro.hex (limited to 'bootloaders/caterina') diff --git a/bootloaders/caterina/Caterina-Micro.hex b/bootloaders/caterina/Caterina-Micro.hex deleted file mode 100644 index bcd6723..0000000 --- a/bootloaders/caterina/Caterina-Micro.hex +++ /dev/null @@ -1,1024 +0,0 @@ -:200000000C946E010C9496010C9496010C9496010C9496010C9496010C9496010C94960150 -:200020000C9496010C9496010C941B050C94A6050C9496010C9496010C9496010C9496016B -:200040000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C94B201CC -:200060000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601C8 -:200080000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601A8 -:2000A0000C9496010C9496010C94960100000000240027002A002D003000000000002500A4 -:2000C00028002B002E003100000000002300260029002C002F00040404040403040502027D -:2000E0000202040302020202060606060606040402020204040802011040804010204080A8 -:200100004080080204018040201002011080102040400000000200080E0000030401000BB2 -:200120000000070605040100080A0B0C0D09040309042203410072006400750069006E00CD -:200140006F0020004D006900630072006F00200020002000180341007200640075006900A6 -:200160006E006F0020004C004C004300120100020000004041233580000101020001120121 -:200180000002020000404123358000010102000100C18081C1080B00020202010009040053 -:2001A000000102020000052400100105240101010424020605240600010705810310004094 -:2001C00009040100020A000000070502024000000705830240000005010902A1010901A186 -:2001E000008501050919012903150025019503750181029501750581030501093009310943 -:20020000381581257F750895038106C0C005010906A1018502050719E029E715002501754D -:20022000019508810295017508810395067508150025650507190029658100C0090402004C -:2002400001030000000921010100012265000705840340000100000000000000002A2B2895 -:200260000000000000000000000000000000000000000000002C9EB4A0A1A2A434A6A7A553 -:20028000AE362D3738271E1F20212223242526B333B62EB7B89F8485868788898A8B8C8D58 -:2002A0008E8F909192939495969798999A9B9C9D2F3130A3AD350405060708090A0B0C0D7C -:2002C0000E0F101112131415161718191A1B1C1DAFB1B0B5000057043907370811241FBE15 -:2002E000CFEFDAE0DEBFCDBF11E0A0E0B1E0E4EEF2E102C005900D92AA32B107D9F711E06B -:20030000AAE2B1E001C01D92AB39B107E1F712E0CCEDD2E004C02297FE010E946C09C63DE9 -:20032000D107C9F70E9491030C9470090C9400008DE061E00E945E0368EE73E080E090E00C -:200340000E94FA018DE060E00E945E0368EE73E080E090E00E94FA0108958DE061E00E944D -:20036000C10208951F920F920FB60F9211242F933F938F939F93AF93BF9380912E01909153 -:200380002F01A0913001B0913101309132010196A11DB11D232F2D5F2D3720F02D570196D4 -:2003A000A11DB11D2093320180932E0190932F01A0933001B093310180912A0190912B01D4 -:2003C000A0912C01B0912D010196A11DB11D80932A0190932B01A0932C01B0932D01BF917F -:2003E000AF919F918F913F912F910F900FBE0F901F9018959B01AC017FB7F89480912A012F -:2004000090912B01A0912C01B0912D0166B5A89B05C06F3F19F00196A11DB11D7FBFBA2F9E -:20042000A92F982F8827860F911DA11DB11D62E0880F991FAA1FBB1F6A95D1F7BC012DC0FA -:20044000FFB7F89480912A0190912B01A0912C01B0912D01E6B5A89B05C0EF3F19F0019693 -:20046000A11DB11DFFBFBA2FA92F982F88278E0F911DA11DB11DE2E0880F991FAA1FBB1F70 -:20048000EA95D1F7861B970B885E9340C8F2215030404040504068517C4F21153105410538 -:2004A000510571F60895789484B5826084BD84B5816084BD85B5826085BD85B5816085BD64 -:2004C000EEE6F0E0808181608083E1E8F0E01082808182608083808181608083E0E8F0E005 -:2004E000808181608083E1EBF0E0808184608083E0EBF0E0808181608083E1E9F0E0808178 -:2005000082608083808181608083E0E9F0E080818160808320EC30E0F90180818068808391 -:2005200080818F7B8083A2ECB0E08C9188608C938C918B7F8C93E1ECF0E0808184608083A0 -:20054000808182608083808181608083E3ECF0E0808181608083F9018081826080838C914F -:2005600081608C93EAE7F0E08081846080838081826080838081816080838081806880833B -:200580000895CF93DF93482F50E0CA018C509F4FFC0134914A525F4FFA018491882369F18D -:2005A00090E0880F991FFC01E455FF4FA591B491FC01E654FF4FC591D491662351F42FB789 -:2005C000F8948C91932F909589238C93888189230BC0623061F42FB7F8948C91932F9095E3 -:2005E00089238C938881832B88832FBF06C09FB7F8948C91832B8C939FBFDF91CF91089523 -:200600008730C1F1883080F48330F9F0843030F4813029F1823009F050C024C08430C9F0FA -:20062000863009F04AC022C08A3091F18B3030F4883031F1893009F040C026C08C3091F154 -:200640008C3060F18E30C9F533C0809180008F7703C0809180008F7D80938000089584B5BE -:200660008F7702C084B58F7D84BD08958091B0008F7703C08091B0008F7D8093B0000895D8 -:20068000809190008F7707C0809190008F7D03C080919000877F8093900008958091C000C4 -:2006A0008F7703C08091C0008F7D8093C00008958091C200877F8093C2000895FF920F93A6 -:2006C0001F93F62E482F50E0CA018E5E9E4FFC012491CA018C509F4FFC0114914A525F4FC6 -:2006E000FA0104910023C9F0222319F0822F0E940003E02FF0E0EE0FFF1FE654FF4FA59132 -:20070000B4919FB7F894FF2021F48C911095812302C08C91812B8C939FBF1F910F91FF9031 -:200720000895CF93DF930E9453028BE391E00E9458040E94AD01C0E0D0E00E9498012097E2 -:20074000E1F30E940000F9CF282F809135018823C1F057FF1AC015C0289890933401809133 -:20076000F1008193E217F307B9F74115510539F08091F200882319F48BE68093E800AFBF67 -:2007800002C04FEF5FEFCA010895AFB7F89427702093E9008091F200282F30E0241735079D -:2007A0000CF4A901FB019B01240F311D94E6DACFDF93CF930F92CDB7DEB7BE016F5F7F4F6A -:2007C00041E050E00E94A403019719F02FEF3FEF03C08981282F30E0C9010F90CF91DF9125 -:2007E0000895FF920F931F93F82E142F052F4091380150913901212F302FC901DC01FB0163 -:200800006EEF29C0F7FE02C0949101C09081209136013091370124173507ACF48091E800F3 -:200820008570E1F38091E80082FF03C02FEF3FEF17C09093F100C90101968F739070892B64 -:2008400011F46093E8002F5F3F4F3093370120933601119731961097A9F6812F902F9C01F6 -:20086000C9011F910F91FF9008959C018091E80082FFFCCFF901260F311D03C08091F1000E -:200880008193E217F307D1F7289884E6809334018BEF8093E800CB0108958093E90080912C -:2008A000F200882319F08AE38093E800089508951092350181E08093D70080EA8093D80078 -:2008C00082E189BD09B400FEFDCF61E070E080E090E00E94FA0180E98093D8008CE0809317 -:2008E000E2001092E000559A209A08955F926F927F928F929F92AF92BF92CF92DF92EF9214 -:20090000FF920F931F93CF93DF93E82E842E752E80913501882371F18B01242F352FC90152 -:20092000EC017AEFF72E67E0962E9E2050E4552E8E2D90E040E2A42EB12CA822B9223AE3FE -:20094000632E20E4C22ED12CC822D92258C09FB7F8949092E9008091E80085FD02C020E0EE -:2009600004C08091F200252D281B9FBF222361F4FA9419F42FEF3FEF4DC061E070E080E03E -:2009800090E00E94FA013BC0822F90E0C817D9070CF42C2FC21BD1094FB7F8949092E900C0 -:2009A000A114B10421F406C01092F10021502223D9F719C0E7FC03C0F801922F10C0C80107 -:2009C000322F06C0FC010196E491E093F10031503323C1F706C081918093F100915099237B -:2009E000D1F7020F111D8091E80085FF05C0209729F4C114D10411F06092E8004FBF209790 -:200A000009F0A5CF5D9884E680933301282D372DC9019C01C901DF91CF911F910F91FF902A -:200A2000EF90DF90CF90BF90AF909F908F907F906F905F9008951F920F920FB60F92112406 -:200A40001F932F933F934F935F936F937F938F939F93AF93BF93EF93FF938091E1001092D8 -:200A6000E100982F83FF0FC01092E90081E08093EB001092EC0082E38093ED0010923501C8 -:200A800088E08093F00092FF36C083E08093E9008091F200882349F08AE38093E80005C0F1 -:200AA00080E891E00E947C0701C012E09FB7F8941093E9008091F2009FBF882389F780917A -:200AC0003301882351F08091330181508093330180913301882309F45D9A809134018823C4 -:200AE00051F08091340181508093340180913401882309F4289AFF91EF91BF91AF919F91D6 -:200B00008F917F916F915F914F913F912F911F910F900FBE0F901F9018950F931F93DF9368 -:200B2000CF930F92CDB7DEB719828E010F5F1F4FC8010E949B07C8010E943409898190E064 -:200B40000F90CF91DF911F910F9108951F920F920FB60F921124EF92FF921F932F933F93F4 -:200B60004F935F936F937F938F939F93AF93BF93EF93FF93DF93CF93CDB7DEB76197DEBF0F -:200B8000CDBF1092E9008091E80083FF0FC1FE0131969E01275F3F4F03C08091F1008193A1 -:200BA000E217F307D1F7289884E68093340182EF8093E800998197FF05C08091E80080FFAF -:200BC000FCCF03C08EEF8093E800292F30E0C90180769070892B09F0C2C08A81882329F4E5 -:200BE0001092F1001092F100D6C0813009F4D3C0833009F4D0C0853049F48091E80080FF4E -:200C0000FCCF8B8180688093E300C5C0863009F07CC01C81EF80F8841230C1F51092E900A4 -:200C2000109237011092360110923901109238010E948D0599E0FE013996DF01292F1D92E8 -:200C40002A95E9F799871A8791E09E8790E8988B9AEF998B2091360130913701275F3F4F61 -:200C60003C872B878D871092E9001092370110923601F0923901E092380180E0BF0149E0FD -:200C800050E00E94F1030E948D0585C01092E9001092370110923601F0923901E092380170 -:200CA000123241F482E290E00E942C09892B09F476C071C0113079F488E0E816F10419F4E2 -:200CC00081E080933A0180913A01882309F06BC0ECE6F1E013C0133009F061C08B818823C0 -:200CE00019F4EEE2F1E00AC0823019F4E2E3F1E005C0813009F053C0E4E5F1E0449180E8CE -:200D0000BF0150E00E94F10346C0873009F447C0883021F481E08093F1003DC08930D9F5D6 -:200D200023703070232BD9F5E1E9F1E091E031E026E39093E9003093EB0084918093EC0070 -:200D40002093ED009F5F3196953099F78EE78093EA001092EA008B81809335011CC08F819A -:200D600098851092E900109237011092360190933901809338018D81882329F4CE01019633 -:200D80000E94A70706C0823051F4CE0101960E94FD07882321F08EEF8093E80007C081E2DC -:200DA0008093EB0003C0EEE7F1E0A8CF6196DEBFCDBFCF91DF91FF91EF91BF91AF919F9195 -:200DC0008F917F916F915F914F913F912F911F91FF90EF900F900FBE0F901F9018952091AD -:200DE0007C0130917D0180917E0190917F01281B390B2F733070C901089520917C013091E7 -:200E00007D0180917E0190917F012817390719F42FEF3FEF09C0E0917E01F0917F01E45C51 -:200E2000FE4F8081282F30E0C901089520917C0130917D0180917E0190917F012817390779 -:200E400019F42FEF3FEF13C0E0917E01F0917F01E45CFE4F208180917E0190917F0101967F -:200E60008F73907090937F0180937E0130E0C9010895109283011092820188EE93E0A0E010 -:200E8000B0E08093840190938501A0938601B09387018EE091E09093810180938001089547 -:200EA0000F931F93DF93CF930F92CDB7DEB78C01698380910701882369F083E0BE016F5FCA -:200EC0007F4F41E050E00E9476041816190614F49C0107C081E090E0F8019383828320E039 -:200EE00030E0C9010F90CF91DF911F910F91089583E00E944D04089582E00E94D803482F73 -:200F000020917C0130917D012F5F3F4F2F73307080917E0190917F012817390759F0E0919C -:200F20007C01F0917D01E45CFE4F408330937D0120937C010895FC0180818E5F808380E881 -:200F400065E971E042E450E00E94F1030895FC0181819081913A59F4813209F04CC080E029 -:200F600060E071E047E050E00E94F10342C0913209F041C0803239F480E091E067E070E0ED -:200F80000E94350436C0823209F035C08281809307018091000190910101A0910201B09116 -:200FA0000301805B9440A040B04019F58091070180FD12C087E797E79093010A8093000A01 -:200FC0002BE088E190E00FB6F894A895809360000FBE209360000DC088E10FB6F8948093B2 -:200FE0006000109260000FBEA8951092010A1092000A81E0089580E00895FC019181808121 -:20100000813A31F4913089F080E0933089F40DC0813269F49B3021F482818093080105C075 -:201020009A3029F482818093090181E0089580E00895EF92FF920F931F938C01E62EDC01CA -:20104000ED91FC910480F581E02D0995F82ED801ED91FC910680F781E02DC8016E2D0995C9 -:201060008F2D90E01F910F91FF90EF90089510928E01109292011092910180E291E09093B9 -:20108000900180938F010895EF92FF920F931F93DF93CF930F92CDB7DEB789838B017A0178 -:2010A00084E0BE016F5F7F4F41E050E00E94760484E4B801A7010E9476040F90CF91DF91B0 -:2010C0001F910F91FF90EF90089582E048E050E00E9444080895FC01168217821086118675 -:2010E0001286138614823496BF010E9465080895DC01683810F0685829C0E62FF0E067FF82 -:2011000013C0E058F04081E090E002C0880F991FEA95E2F7809514962C911497282314963E -:201120002C93149760E012C0EB5AFD4F6491662319F420E030E01DC067FF08C014968C9135 -:2011400014978D7F14968C9314976F77FD0190E0662321F08681861709F416829F5F319678 -:201160009630B1F7CD011496BD010E94650821E030E0C9010895CF93DF93DC01683810F0F3 -:20118000685825C0E62FF0E067FF12C0E058F04081E090E002C0880F991FEA95E2F7149641 -:2011A0002C911497282B14962C93149760E00FC0EB5AFD4F64916623D9F167FF08C01496A0 -:2011C0008C911497826014968C9314976F7716968C9116978617A9F117968C911797861749 -:2011E00081F118968C911897861759F119968C911997861731F11A968C911A97861709F1CC -:201200001B968C911B978617E1F0ED01E0E0F0E09E2F8E81882321F4EA0FFB1F668306C004 -:201220009F5F31962196E630F10591F7963049F481E090E013969C938E93129720E030E018 -:2012400007C0CD011496BD010E94650821E030E0C901DF91CF91089580E867ED71E045E602 -:2012600050E00E94F1030895FC0180818F5F808380E86CE372E049E150E00E94F103089586 -:20128000CF92DF92EF92FF920F931F93CF93DF937C016B018A01C0E0D0E00FC0D6016D91DA -:2012A0006D01D701ED91FC910190F081E02DC7010995C80FD91F015010400115110571F764 -:2012C000CE01DF91CF911F910F91FF90EF90DF90CF900895EE0FFF1F0590F491E02D0994C7 -:2012E000F894FFCF00E100000000000001010000000050074009EF061607FD0678077C07FA -:201300000000000019084009BB0878086B08FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF -: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 -:2070200060C000005EC00000F1C400005AC0000058C0000056C0000054C0000052C00000EF -:2070400050C0000078C000004CC000004AC0000048C0000046C0000044C0000042C00000BE -:2070600040C000003EC000003CC000003AC0000038C0000036C0000034C0000032C0000048 -:2070800030C000002EC000002CC000002AC0000028C0000026C0000024C0000022C00000A8 -:2070A00020C000001EC000001CC0000011241FBECFEFDAE0DEBFCDBF11E0A0E0B1E0E0E3BE -:2070C000FFE702C005900D92A83AB107D9F711E0A8EAB1E001C01D92AE3BB107E1F78FD30B -:2070E00025C78ECFF89410926F0010928100109285001092840081E085BF15BE47985D9AEC -: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 -:2074400018C0D801C701B695A7959795879558D5CEDE82E090E0A0E0B0E0E80EF91E0A1FF3 -:207460001B1FE092AE01F092AF010093B0011093B1012197209709F0BECF7DC08090AE01F5 -:207480009090AF01A090B001B090B10196E4691609F05DC083E0F40180935700E89507B63E -:2074A00000FCFDCF54C0F6E46F1661F5772031F1E090AE01F090AF010091B0011091B1019E -:2074C0007EDED82ECC24852D90E08C299D29F7010C0140925700E895112482E090E0A0E08B -:2074E000B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B10102C060DE582E1A -:20750000742423C0E090AE01F090AF010091B0011091B10116950795F794E79450DE682FFA -:20752000C701F6D48091AE019091AF01A091B001B091B1010296A11DB11D8093AE0190934A -:20754000AF01A093B001B093B101219704C05524772444244394209709F0A5CF96E46916B6 -:2075600041F485E0F40180935700E89507B600FCFDCF8DE03CDE82E080936F009CC0833492 -:2075800071F40091AE011091AF0119DE90E021E0F8010C0120935700E89511247CCE8336C8 -:2075A00019F5E090AE01F090AF010091B0011091B10105DEF701E16090E021E00C0120938C -:2075C0005700E895112482E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF0100936A -:2075E000B0011093B10157CE8D3661F4E091AE01F091AF0185E080935700E89507B600FCF2 -:20760000FDCF49CE823551F4E091AE01F091AF0105911491812FEBDD802F4CC0843421F5FE -:20762000E090AE01F090AF010091B0011091B10116950795F794E794C2DD682FC70168D4DF -:207640008091AE019091AF01A091B001B091B1010296A11DB11D8093AE019093AF01A093D8 -:20766000B001B093B10117CE843609F5E090AE01F090AF010091B0011091B101D801C70142 -:20768000B695A795979587953BD4B1DD82E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE010B -:2076A000F092AF010093B0011093B10104C08B3111F08FE39CDD83E08093E9009091E8002B -:2076C0008091E8008E778093E80095FF04C010C08EB38823C9F08091E80080FFF9CF809193 -:2076E000E8008E778093E80003C08EB3882361F08091E80080FFF9CF84E08093E9008091F1 -:20770000E8008B778093E800DF91CF911F910F91FF90EF90DF90CF90BF90AF909F908F90AC -:207720007F906F905F904F9008959091B601892F8F77813249F58091B7018032A1F081328A -:2077400019F5913A09F58091E800877F8093E8008DE091E067E070E00AD28091E8008B770C -:207760008093E8000895913279F48091E800877F8093E8008DE091E067E070E05CD2809193 -:20778000E8008E778093E800089582E061EC42E0B4D083E061E842E1B0D084E060E842E1F1 -:2077A000ACC084B7877F84BF88E10FB6F89480936000109260000FBE20E880E090E00FB640 -:2077C000F89420936100809361000FBE81E085BF92E095BF3F9A209A559AE1E6F0E02083A1 -:2077E000108247985D9A289A109289008AEF8093880090936F0083E080938100EFC01F9336 -:2078000088E10FB6F89480936000109260000FBE84B714BE182F10FF08C0E0E0F0E085919B -:2078200094918F5F9F4F09F05DDC2091000A3091010A1092010A1092000A13FF0FC0809143 -:20784000090190910A012817390741F0E0E0F0E0859194918F5F9F4F09F044DCA2DF7894F5 -:207860001092AD011092AC010CC0E0DC37D38091AC019091AD0181549F4110F010921401DE -:2078800043DC80911401882381F78091E00081608093E00027DC80E090E01F910895FA01A0 -:2078A000923049F0933061F09130F9F485E191E022E130E01EC087E291E02EE330E019C06F -:2078C000882329F485E691E024E030E012C0813029F489E691E022E230E00BC0823029F4C2 -:2078E0008DE891E028E130E004C080E090E020E030E091838083C90108958093E90080915A -:20790000EB0081608093EB001092ED006093EC004093ED008091EE00881F8827881F0895D6 -:207920008091B60188238CF403C08EB38823B1F08091E80082FFF9CF8091E8008B778093B4 -:20794000E80008958EB3882349F08091E80080FFF9CF8091E8008E778093E8000895EF9226 -:20796000FF920F931F9345D04CD008ED10E0F80180818F77808380818068808380818F7D10 -:20798000808319BC1EBA1092B40180EEE82EF12CF70180818B7F8083F8018081816080835B -:2079A00080E060E042E0A9DFE1EEF0E080818E7F8083E2EEF0E0808181608083808188605F -:2079C0008083F70180818E7F8083F8018081806180831F910F91FF90EF900895E7EDF0E01E -:2079E0008081816080838AE482BF81E08093B501B6CFE8EDF0E080818E7F80831092E2000A -:207A000008951092DA001092E10008951F920F920FB60F9211242F933F934F935F936F93D6 -:207A20007F938F939F93AF93BF93EF93FF938091DA0080FF1BC08091D80080FF17C08091A3 -:207A4000DA008E7F8093DA008091D90080FF0BC080E189BD82E189BD09B400FEFDCF81E0E6 -:207A60008EBB3BD203C019BC1EBA37D28091E10080FF17C08091E20080FF13C08091E200B7 -:207A80008E7F8093E2008091E20080618093E2008091D80080628093D80019BC85E08EBBE2 -:207AA0001CD28091E10084FF2CC08091E20084FF28C080E189BD82E189BD09B400FEFDCF42 -:207AC0008091D8008F7D8093D8008091E1008F7E8093E1008091E2008F7E8093E2008091CD -:207AE000E20081608093E2008091B401882331F48091E30087FD02C081E001C084E08EBB2F -:207B0000ECD18091E10083FF21C08091E20083FF1DC08091E100877F8093E10082E08EBB6A -:207B20001092B4018091E1008E7F8093E1008091E2008E7F8093E2008091E200806180931F -:207B4000E20080E060E042E0D8DEC7D1FF91EF91BF91AF919F918F917F916F915F914F9163 -:207B60003F912F910F900FBE0F901F9018959C014091BC015091BD014617570718F4F90183 -:207B800090E044C06115710511F0AB01F8CF8091E8008E778093E80040E050E0F0CF8EB3C8 -:207BA000882309F444C0853009F443C08091E80083FF02C081E008958091E80082FD31C0C0 -:207BC0008091E80080FF22C08091F3009091F200782F60E0292F30E0262B372B07C0819159 -:207BE0008093F100415050402F5F3F4F4115510519F02830310598F390E02830310509F47B -:207C000091E08091E8008E778093E8004115510531F6992321F605C08EB3882341F08530BD -:207C200041F08091E80082FFF7CF80E0089582E0089583E008959C016115710529F4809120 -:207C4000E8008B778093E800F90126C08EB3882391F1853091F18091E80083FF02C081E01C -:207C600008958091E80082FFF1CF06C08091F10081936150704059F02091F3008091F20000 -:207C8000322F20E090E0822B932B892B79F78091E8008B778093E80061157105B9F605C02E -:207CA0008EB3882341F0853041F08091E80080FFF7CF80E0089582E0089583E008950F93E5 -:207CC0001F93DF93CF9300D0CDB7DEB7E6EBF1E08091F100819381E0EE3BF807C9F725DD32 -:207CE0008091E80083FFE4C08091B6019091B701953009F46DC0963040F4913081F19130E7 -:207D000070F0933009F0D4C02AC0983009F4A3C0993009F4B2C0963009F0CAC07CC080382C -:207D200009F4C6C0823809F0C3C08091BA0187708093E9008091EB001092E9002091E800AB -:207D4000277F2093E80090E025E0969587952A95E1F781708093F1001092F10087C0882315 -:207D600019F0823009F0A4C08F71823009F0A0C08091B801882331F52091BA01277009F445 -:207D800097C02093E9008091EB0080FF1BC0933021F48091EB00806213C08091EB00806134 -:207DA0008093EB0081E090E002C0880F991F2A95E2F78093EA001092EA008091EB008860DE -:207DC0008093EB001092E9008091E800877F51C0882309F06DC01091B8011F770FB7F894F7 -:207DE0008091E800877F8093E8009ADD8091E80080FFFCCF8091E3008078812B8093E30041 -:207E000080688093E300112311F482E001C083E08EBB0FBF4DC08058823008F049C0809105 -:207E2000B8019091B9016091BA01AE014F5F5F4F36DDBC01009709F43BC08091E800877F99 -:207E40008093E80089819A8192DE8091E8008B778093E8002DC0803859F58091E800877FAA -:207E60008093E8008091B4018093F1008091E8008E778093E80054DD1BC08823C9F49091AF -:207E8000B8019230A8F48091E800877F8093E8009093B40145DD8091B401882331F4809130 -:207EA000E30087FD02C081E001C084E08EBB6DDC8091E80083FF0AC08091EB00806280934B -:207EC000EB008091E800877F8093E8000F900F90CF91DF911F910F91089508951F938EB332 -:207EE000882361F01091E9001092E9008091E80083FF01C0E4DE17701093E9001F91089513 -:207F0000F999FECF92BD81BDF89A992780B50895262FF999FECF1FBA92BD81BD20BD0FB695 -:207F2000F894FA9AF99A0FBE01960895F894FFCF4341544552494E41007777000A000000F4 -:207F4000000000080112011001020000084123350001000201000109023E0002010080324E -:207F60000904000001020201000524001001042402040524060001070582030800FF0904B1 -:207F80000100020A00000007050402100001070583021000010403090422034100720064BF -:207FA00000750069006E006F0020004D006900630072006F00200020002000000018034130 -:187FC0000072006400750069006E006F0020004C004C0043000000001D -:00000001FF diff --git a/bootloaders/caterina/Descriptors.c b/bootloaders/caterina/Descriptors.c index 824e0dd..e0d3304 100755 --- a/bootloaders/caterina/Descriptors.c +++ b/bootloaders/caterina/Descriptors.c @@ -195,20 +195,11 @@ const USB_Descriptor_String_t ProductString = #if DEVICE_PID == 0x0034 .UnicodeString = L"Arduino Leonardo" - #elif DEVICE_PID == 0x0035 - .UnicodeString = L"Arduino Micro " - #else + #else .UnicodeString = L"USB IO board " #endif }; -/* -const USB_Descriptor_String_t SerialNumString = -{ - .Header = {.Size = USB_STRING_LEN(12), .Type = DTYPE_String}, - - .UnicodeString = L"000000001452" -}; -*/ + const USB_Descriptor_String_t ManufNameString = { .Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String}, @@ -252,10 +243,6 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, { Address = &ProductString; Size = ProductString.Header.Size; -// } else if (DescriptorNumber == DeviceDescriptor.SerialNumStrIndex) -// { -// Address = &SerialNumString; -// Size = SerialNumString.Header.Size; } else if (DescriptorNumber == DeviceDescriptor.ManufacturerStrIndex) { Address = &ManufNameString; diff --git a/bootloaders/caterina/Makefile b/bootloaders/caterina/Makefile index 3ec7b14..e460090 100755 --- a/bootloaders/caterina/Makefile +++ b/bootloaders/caterina/Makefile @@ -54,8 +54,6 @@ VID = 0x2341 # USB product ID (PID) # official Leonardo PID #PID = 0x0034 -# official Micro PID -PID = 0x0035 # MCU name -- cgit v1.2.3-18-g5258 From 49f7fb00fd7578fe5ecd78d60165fc2570aec1e2 Mon Sep 17 00:00:00 2001 From: Zach Eveland Date: Wed, 11 Apr 2012 23:19:05 -0400 Subject: fixed logic bug in Caterina that could stop the bootloader from entering self-programming mode --- bootloaders/caterina/Caterina-Leonardo.hex | 1280 ++++++---------------------- bootloaders/caterina/Caterina.c | 32 +- 2 files changed, 274 insertions(+), 1038 deletions(-) (limited to 'bootloaders/caterina') diff --git a/bootloaders/caterina/Caterina-Leonardo.hex b/bootloaders/caterina/Caterina-Leonardo.hex index 40a19c6..19bca60 100644 --- a/bootloaders/caterina/Caterina-Leonardo.hex +++ b/bootloaders/caterina/Caterina-Leonardo.hex @@ -1,1024 +1,256 @@ -:200000000C946E010C9496010C9496010C9496010C9496010C9496010C9496010C94960150 -:200020000C9496010C9496010C941B050C94A6050C9496010C9496010C9496010C9496016B -:200040000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C94B201CC -:200060000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601C8 -:200080000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601A8 -:2000A0000C9496010C9496010C94960100000000240027002A002D003000000000002500A4 -:2000C00028002B002E003100000000002300260029002C002F00040404040403040502027D -:2000E0000202040302020202060606060606040402020204040802011040804010204080A8 -:200100004080080204018040201002011080102040400000000200080E0000030401000BB2 -:200120000000070605040100080A0B0C0D09040309042203410072006400750069006E00CD -:200140006F0020004C0065006F006E006100720064006F00180341007200640075006900CC -:200160006E006F0020004C004C004300120100020000004041233480000101020001120122 -:200180000002020000404123348000010102000100C18081C1080B00020202010009040054 -:2001A000000102020000052400100105240101010424020605240600010705810310004094 -:2001C00009040100020A000000070502024000000705830240000005010902A1010901A186 -:2001E000008501050919012903150025019503750181029501750581030501093009310943 -:20020000381581257F750895038106C0C005010906A1018502050719E029E715002501754D -:20022000019508810295017508810395067508150025650507190029658100C0090402004C -:2002400001030000000921010100012265000705840340000100000000000000002A2B2895 -:200260000000000000000000000000000000000000000000002C9EB4A0A1A2A434A6A7A553 -:20028000AE362D3738271E1F20212223242526B333B62EB7B89F8485868788898A8B8C8D58 -:2002A0008E8F909192939495969798999A9B9C9D2F3130A3AD350405060708090A0B0C0D7C -:2002C0000E0F101112131415161718191A1B1C1DAFB1B0B5000057043907370811241FBE15 -:2002E000CFEFDAE0DEBFCDBF11E0A0E0B1E0E4EEF2E102C005900D92AA32B107D9F711E06B -:20030000AAE2B1E001C01D92AB39B107E1F712E0CCEDD2E004C02297FE010E946C09C63DE9 -:20032000D107C9F70E9491030C9470090C9400008DE061E00E945E0368EE73E080E090E00C -:200340000E94FA018DE060E00E945E0368EE73E080E090E00E94FA0108958DE061E00E944D -:20036000C10208951F920F920FB60F9211242F933F938F939F93AF93BF9380912E01909153 -:200380002F01A0913001B0913101309132010196A11DB11D232F2D5F2D3720F02D570196D4 -:2003A000A11DB11D2093320180932E0190932F01A0933001B093310180912A0190912B01D4 -:2003C000A0912C01B0912D010196A11DB11D80932A0190932B01A0932C01B0932D01BF917F -:2003E000AF919F918F913F912F910F900FBE0F901F9018959B01AC017FB7F89480912A012F -:2004000090912B01A0912C01B0912D0166B5A89B05C06F3F19F00196A11DB11D7FBFBA2F9E -:20042000A92F982F8827860F911DA11DB11D62E0880F991FAA1FBB1F6A95D1F7BC012DC0FA -:20044000FFB7F89480912A0190912B01A0912C01B0912D01E6B5A89B05C0EF3F19F0019693 -:20046000A11DB11DFFBFBA2FA92F982F88278E0F911DA11DB11DE2E0880F991FAA1FBB1F70 -:20048000EA95D1F7861B970B885E9340C8F2215030404040504068517C4F21153105410538 -:2004A000510571F60895789484B5826084BD84B5816084BD85B5826085BD85B5816085BD64 -:2004C000EEE6F0E0808181608083E1E8F0E01082808182608083808181608083E0E8F0E005 -:2004E000808181608083E1EBF0E0808184608083E0EBF0E0808181608083E1E9F0E0808178 -:2005000082608083808181608083E0E9F0E080818160808320EC30E0F90180818068808391 -:2005200080818F7B8083A2ECB0E08C9188608C938C918B7F8C93E1ECF0E0808184608083A0 -:20054000808182608083808181608083E3ECF0E0808181608083F9018081826080838C914F -:2005600081608C93EAE7F0E08081846080838081826080838081816080838081806880833B -:200580000895CF93DF93482F50E0CA018C509F4FFC0134914A525F4FFA018491882369F18D -:2005A00090E0880F991FFC01E455FF4FA591B491FC01E654FF4FC591D491662351F42FB789 -:2005C000F8948C91932F909589238C93888189230BC0623061F42FB7F8948C91932F9095E3 -:2005E00089238C938881832B88832FBF06C09FB7F8948C91832B8C939FBFDF91CF91089523 -:200600008730C1F1883080F48330F9F0843030F4813029F1823009F050C024C08430C9F0FA -:20062000863009F04AC022C08A3091F18B3030F4883031F1893009F040C026C08C3091F154 -:200640008C3060F18E30C9F533C0809180008F7703C0809180008F7D80938000089584B5BE -:200660008F7702C084B58F7D84BD08958091B0008F7703C08091B0008F7D8093B0000895D8 -:20068000809190008F7707C0809190008F7D03C080919000877F8093900008958091C000C4 -:2006A0008F7703C08091C0008F7D8093C00008958091C200877F8093C2000895FF920F93A6 -:2006C0001F93F62E482F50E0CA018E5E9E4FFC012491CA018C509F4FFC0114914A525F4FC6 -:2006E000FA0104910023C9F0222319F0822F0E940003E02FF0E0EE0FFF1FE654FF4FA59132 -:20070000B4919FB7F894FF2021F48C911095812302C08C91812B8C939FBF1F910F91FF9031 -:200720000895CF93DF930E9453028BE391E00E9458040E94AD01C0E0D0E00E9498012097E2 -:20074000E1F30E940000F9CF282F809135018823C1F057FF1AC015C0289890933401809133 -:20076000F1008193E217F307B9F74115510539F08091F200882319F48BE68093E800AFBF67 -:2007800002C04FEF5FEFCA010895AFB7F89427702093E9008091F200282F30E0241735079D -:2007A0000CF4A901FB019B01240F311D94E6DACFDF93CF930F92CDB7DEB7BE016F5F7F4F6A -:2007C00041E050E00E94A403019719F02FEF3FEF03C08981282F30E0C9010F90CF91DF9125 -:2007E0000895FF920F931F93F82E142F052F4091380150913901212F302FC901DC01FB0163 -:200800006EEF29C0F7FE02C0949101C09081209136013091370124173507ACF48091E800F3 -:200820008570E1F38091E80082FF03C02FEF3FEF17C09093F100C90101968F739070892B64 -:2008400011F46093E8002F5F3F4F3093370120933601119731961097A9F6812F902F9C01F6 -:20086000C9011F910F91FF9008959C018091E80082FFFCCFF901260F311D03C08091F1000E -:200880008193E217F307D1F7289884E6809334018BEF8093E800CB0108958093E90080912C -:2008A000F200882319F08AE38093E800089508951092350181E08093D70080EA8093D80078 -:2008C00082E189BD09B400FEFDCF61E070E080E090E00E94FA0180E98093D8008CE0809317 -:2008E000E2001092E000559A209A08955F926F927F928F929F92AF92BF92CF92DF92EF9214 -:20090000FF920F931F93CF93DF93E82E842E752E80913501882371F18B01242F352FC90152 -:20092000EC017AEFF72E67E0962E9E2050E4552E8E2D90E040E2A42EB12CA822B9223AE3FE -:20094000632E20E4C22ED12CC822D92258C09FB7F8949092E9008091E80085FD02C020E0EE -:2009600004C08091F200252D281B9FBF222361F4FA9419F42FEF3FEF4DC061E070E080E03E -:2009800090E00E94FA013BC0822F90E0C817D9070CF42C2FC21BD1094FB7F8949092E900C0 -:2009A000A114B10421F406C01092F10021502223D9F719C0E7FC03C0F801922F10C0C80107 -:2009C000322F06C0FC010196E491E093F10031503323C1F706C081918093F100915099237B -:2009E000D1F7020F111D8091E80085FF05C0209729F4C114D10411F06092E8004FBF209790 -:200A000009F0A5CF5D9884E680933301282D372DC9019C01C901DF91CF911F910F91FF902A -:200A2000EF90DF90CF90BF90AF909F908F907F906F905F9008951F920F920FB60F92112406 -:200A40001F932F933F934F935F936F937F938F939F93AF93BF93EF93FF938091E1001092D8 -:200A6000E100982F83FF0FC01092E90081E08093EB001092EC0082E38093ED0010923501C8 -:200A800088E08093F00092FF36C083E08093E9008091F200882349F08AE38093E80005C0F1 -:200AA00080E891E00E947C0701C012E09FB7F8941093E9008091F2009FBF882389F780917A -:200AC0003301882351F08091330181508093330180913301882309F45D9A809134018823C4 -:200AE00051F08091340181508093340180913401882309F4289AFF91EF91BF91AF919F91D6 -:200B00008F917F916F915F914F913F912F911F910F900FBE0F901F9018950F931F93DF9368 -:200B2000CF930F92CDB7DEB719828E010F5F1F4FC8010E949B07C8010E943409898190E064 -:200B40000F90CF91DF911F910F9108951F920F920FB60F921124EF92FF921F932F933F93F4 -:200B60004F935F936F937F938F939F93AF93BF93EF93FF93DF93CF93CDB7DEB76197DEBF0F -:200B8000CDBF1092E9008091E80083FF0FC1FE0131969E01275F3F4F03C08091F1008193A1 -:200BA000E217F307D1F7289884E68093340182EF8093E800998197FF05C08091E80080FFAF -:200BC000FCCF03C08EEF8093E800292F30E0C90180769070892B09F0C2C08A81882329F4E5 -:200BE0001092F1001092F100D6C0813009F4D3C0833009F4D0C0853049F48091E80080FF4E -:200C0000FCCF8B8180688093E300C5C0863009F07CC01C81EF80F8841230C1F51092E900A4 -:200C2000109237011092360110923901109238010E948D0599E0FE013996DF01292F1D92E8 -:200C40002A95E9F799871A8791E09E8790E8988B9AEF998B2091360130913701275F3F4F61 -:200C60003C872B878D871092E9001092370110923601F0923901E092380180E0BF0149E0FD -:200C800050E00E94F1030E948D0585C01092E9001092370110923601F0923901E092380170 -:200CA000123241F482E290E00E942C09892B09F476C071C0113079F488E0E816F10419F4E2 -:200CC00081E080933A0180913A01882309F06BC0ECE6F1E013C0133009F061C08B818823C0 -:200CE00019F4EEE2F1E00AC0823019F4E2E3F1E005C0813009F053C0E4E5F1E0449180E8CE -:200D0000BF0150E00E94F10346C0873009F447C0883021F481E08093F1003DC08930D9F5D6 -:200D200023703070232BD9F5E1E9F1E091E031E026E39093E9003093EB0084918093EC0070 -:200D40002093ED009F5F3196953099F78EE78093EA001092EA008B81809335011CC08F819A -:200D600098851092E900109237011092360190933901809338018D81882329F4CE01019633 -:200D80000E94A70706C0823051F4CE0101960E94FD07882321F08EEF8093E80007C081E2DC -:200DA0008093EB0003C0EEE7F1E0A8CF6196DEBFCDBFCF91DF91FF91EF91BF91AF919F9195 -:200DC0008F917F916F915F914F913F912F911F91FF90EF900F900FBE0F901F9018952091AD -:200DE0007C0130917D0180917E0190917F01281B390B2F733070C901089520917C013091E7 -:200E00007D0180917E0190917F012817390719F42FEF3FEF09C0E0917E01F0917F01E45C51 -:200E2000FE4F8081282F30E0C901089520917C0130917D0180917E0190917F012817390779 -:200E400019F42FEF3FEF13C0E0917E01F0917F01E45CFE4F208180917E0190917F0101967F -:200E60008F73907090937F0180937E0130E0C9010895109283011092820188EE93E0A0E010 -:200E8000B0E08093840190938501A0938601B09387018EE091E09093810180938001089547 -:200EA0000F931F93DF93CF930F92CDB7DEB78C01698380910701882369F083E0BE016F5FCA -:200EC0007F4F41E050E00E9476041816190614F49C0107C081E090E0F8019383828320E039 -:200EE00030E0C9010F90CF91DF911F910F91089583E00E944D04089582E00E94D803482F73 -:200F000020917C0130917D012F5F3F4F2F73307080917E0190917F012817390759F0E0919C -:200F20007C01F0917D01E45CFE4F408330937D0120937C010895FC0180818E5F808380E881 -:200F400065E971E042E450E00E94F1030895FC0181819081913A59F4813209F04CC080E029 -:200F600060E071E047E050E00E94F10342C0913209F041C0803239F480E091E067E070E0ED -:200F80000E94350436C0823209F035C08281809307018091000190910101A0910201B09116 -:200FA0000301805B9440A040B04019F58091070180FD12C087E797E79093010A8093000A01 -:200FC0002BE088E190E00FB6F894A895809360000FBE209360000DC088E10FB6F8948093B2 -:200FE0006000109260000FBEA8951092010A1092000A81E0089580E00895FC019181808121 -:20100000813A31F4913089F080E0933089F40DC0813269F49B3021F482818093080105C075 -:201020009A3029F482818093090181E0089580E00895EF92FF920F931F938C01E62EDC01CA -:20104000ED91FC910480F581E02D0995F82ED801ED91FC910680F781E02DC8016E2D0995C9 -:201060008F2D90E01F910F91FF90EF90089510928E01109292011092910180E291E09093B9 -:20108000900180938F010895EF92FF920F931F93DF93CF930F92CDB7DEB789838B017A0178 -:2010A00084E0BE016F5F7F4F41E050E00E94760484E4B801A7010E9476040F90CF91DF91B0 -:2010C0001F910F91FF90EF90089582E048E050E00E9444080895FC01168217821086118675 -:2010E0001286138614823496BF010E9465080895DC01683810F0685829C0E62FF0E067FF82 -:2011000013C0E058F04081E090E002C0880F991FEA95E2F7809514962C911497282314963E -:201120002C93149760E012C0EB5AFD4F6491662319F420E030E01DC067FF08C014968C9135 -:2011400014978D7F14968C9314976F77FD0190E0662321F08681861709F416829F5F319678 -:201160009630B1F7CD011496BD010E94650821E030E0C9010895CF93DF93DC01683810F0F3 -:20118000685825C0E62FF0E067FF12C0E058F04081E090E002C0880F991FEA95E2F7149641 -:2011A0002C911497282B14962C93149760E00FC0EB5AFD4F64916623D9F167FF08C01496A0 -:2011C0008C911497826014968C9314976F7716968C9116978617A9F117968C911797861749 -:2011E00081F118968C911897861759F119968C911997861731F11A968C911A97861709F1CC -:201200001B968C911B978617E1F0ED01E0E0F0E09E2F8E81882321F4EA0FFB1F668306C004 -:201220009F5F31962196E630F10591F7963049F481E090E013969C938E93129720E030E018 -:2012400007C0CD011496BD010E94650821E030E0C901DF91CF91089580E867ED71E045E602 -:2012600050E00E94F1030895FC0180818F5F808380E86CE372E049E150E00E94F103089586 -:20128000CF92DF92EF92FF920F931F93CF93DF937C016B018A01C0E0D0E00FC0D6016D91DA -:2012A0006D01D701ED91FC910190F081E02DC7010995C80FD91F015010400115110571F764 -:2012C000CE01DF91CF911F910F91FF90EF90DF90CF900895EE0FFF1F0590F491E02D0994C7 -:2012E000F894FFCF00E100000000000001010000000050074009EF061607FD0678077C07FA -:201300000000000019084009BB0878086B08FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF -: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 -:2070200060C000005EC00000F1C400005AC0000058C0000056C0000054C0000052C00000EF -:2070400050C0000078C000004CC000004AC0000048C0000046C0000044C0000042C00000BE -:2070600040C000003EC000003CC000003AC0000038C0000036C0000034C0000032C0000048 -:2070800030C000002EC000002CC000002AC0000028C0000026C0000024C0000022C00000A8 -:2070A00020C000001EC000001CC0000011241FBECFEFDAE0DEBFCDBF11E0A0E0B1E0E0E3BE -:2070C000FFE702C005900D92A83AB107D9F711E0A8EAB1E001C01D92AE3BB107E1F78FD30B -:2070E00025C78ECFF89410926F0010928100109285001092840081E085BF15BE47985D9AEC -: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 -:2074400018C0D801C701B695A7959795879558D5CEDE82E090E0A0E0B0E0E80EF91E0A1FF3 -:207460001B1FE092AE01F092AF010093B0011093B1012197209709F0BECF7DC08090AE01F5 -:207480009090AF01A090B001B090B10196E4691609F05DC083E0F40180935700E89507B63E -:2074A00000FCFDCF54C0F6E46F1661F5772031F1E090AE01F090AF010091B0011091B1019E -:2074C0007EDED82ECC24852D90E08C299D29F7010C0140925700E895112482E090E0A0E08B -:2074E000B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B10102C060DE582E1A -:20750000742423C0E090AE01F090AF010091B0011091B10116950795F794E79450DE682FFA -:20752000C701F6D48091AE019091AF01A091B001B091B1010296A11DB11D8093AE0190934A -:20754000AF01A093B001B093B101219704C05524772444244394209709F0A5CF96E46916B6 -:2075600041F485E0F40180935700E89507B600FCFDCF8DE03CDE82E080936F009CC0833492 -:2075800071F40091AE011091AF0119DE90E021E0F8010C0120935700E89511247CCE8336C8 -:2075A00019F5E090AE01F090AF010091B0011091B10105DEF701E16090E021E00C0120938C -:2075C0005700E895112482E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF0100936A -:2075E000B0011093B10157CE8D3661F4E091AE01F091AF0185E080935700E89507B600FCF2 -:20760000FDCF49CE823551F4E091AE01F091AF0105911491812FEBDD802F4CC0843421F5FE -:20762000E090AE01F090AF010091B0011091B10116950795F794E794C2DD682FC70168D4DF -:207640008091AE019091AF01A091B001B091B1010296A11DB11D8093AE019093AF01A093D8 -:20766000B001B093B10117CE843609F5E090AE01F090AF010091B0011091B101D801C70142 -:20768000B695A795979587953BD4B1DD82E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE010B -:2076A000F092AF010093B0011093B10104C08B3111F08FE39CDD83E08093E9009091E8002B -:2076C0008091E8008E778093E80095FF04C010C08EB38823C9F08091E80080FFF9CF809193 -:2076E000E8008E778093E80003C08EB3882361F08091E80080FFF9CF84E08093E9008091F1 -:20770000E8008B778093E800DF91CF911F910F91FF90EF90DF90CF90BF90AF909F908F90AC -:207720007F906F905F904F9008959091B601892F8F77813249F58091B7018032A1F081328A -:2077400019F5913A09F58091E800877F8093E8008DE091E067E070E00AD28091E8008B770C -:207760008093E8000895913279F48091E800877F8093E8008DE091E067E070E05CD2809193 -:20778000E8008E778093E800089582E061EC42E0B4D083E061E842E1B0D084E060E842E1F1 -:2077A000ACC084B7877F84BF88E10FB6F89480936000109260000FBE20E880E090E00FB640 -:2077C000F89420936100809361000FBE81E085BF92E095BF3F9A209A559AE1E6F0E02083A1 -:2077E000108247985D9A289A109289008AEF8093880090936F0083E080938100EFC01F9336 -:2078000088E10FB6F89480936000109260000FBE84B714BE182F10FF08C0E0E0F0E085919B -:2078200094918F5F9F4F09F05DDC2091000A3091010A1092010A1092000A13FF0FC0809143 -:20784000090190910A012817390741F0E0E0F0E0859194918F5F9F4F09F044DCA2DF7894F5 -:207860001092AD011092AC010CC0E0DC37D38091AC019091AD0181549F4110F010921401DE -:2078800043DC80911401882381F78091E00081608093E00027DC80E090E01F910895FA01A0 -:2078A000923049F0933061F09130F9F485E191E022E130E01EC087E291E02EE330E019C06F -:2078C000882329F485E691E024E030E012C0813029F489E691E022E230E00BC0823029F4C2 -:2078E0008DE891E028E130E004C080E090E020E030E091838083C90108958093E90080915A -:20790000EB0081608093EB001092ED006093EC004093ED008091EE00881F8827881F0895D6 -:207920008091B60188238CF403C08EB38823B1F08091E80082FFF9CF8091E8008B778093B4 -:20794000E80008958EB3882349F08091E80080FFF9CF8091E8008E778093E8000895EF9226 -:20796000FF920F931F9345D04CD008ED10E0F80180818F77808380818068808380818F7D10 -:20798000808319BC1EBA1092B40180EEE82EF12CF70180818B7F8083F8018081816080835B -:2079A00080E060E042E0A9DFE1EEF0E080818E7F8083E2EEF0E0808181608083808188605F -:2079C0008083F70180818E7F8083F8018081806180831F910F91FF90EF900895E7EDF0E01E -:2079E0008081816080838AE482BF81E08093B501B6CFE8EDF0E080818E7F80831092E2000A -:207A000008951092DA001092E10008951F920F920FB60F9211242F933F934F935F936F93D6 -:207A20007F938F939F93AF93BF93EF93FF938091DA0080FF1BC08091D80080FF17C08091A3 -:207A4000DA008E7F8093DA008091D90080FF0BC080E189BD82E189BD09B400FEFDCF81E0E6 -:207A60008EBB3BD203C019BC1EBA37D28091E10080FF17C08091E20080FF13C08091E200B7 -:207A80008E7F8093E2008091E20080618093E2008091D80080628093D80019BC85E08EBBE2 -:207AA0001CD28091E10084FF2CC08091E20084FF28C080E189BD82E189BD09B400FEFDCF42 -:207AC0008091D8008F7D8093D8008091E1008F7E8093E1008091E2008F7E8093E2008091CD -:207AE000E20081608093E2008091B401882331F48091E30087FD02C081E001C084E08EBB2F -:207B0000ECD18091E10083FF21C08091E20083FF1DC08091E100877F8093E10082E08EBB6A -:207B20001092B4018091E1008E7F8093E1008091E2008E7F8093E2008091E200806180931F -:207B4000E20080E060E042E0D8DEC7D1FF91EF91BF91AF919F918F917F916F915F914F9163 -:207B60003F912F910F900FBE0F901F9018959C014091BC015091BD014617570718F4F90183 -:207B800090E044C06115710511F0AB01F8CF8091E8008E778093E80040E050E0F0CF8EB3C8 -:207BA000882309F444C0853009F443C08091E80083FF02C081E008958091E80082FD31C0C0 -:207BC0008091E80080FF22C08091F3009091F200782F60E0292F30E0262B372B07C0819159 -:207BE0008093F100415050402F5F3F4F4115510519F02830310598F390E02830310509F47B -:207C000091E08091E8008E778093E8004115510531F6992321F605C08EB3882341F08530BD -:207C200041F08091E80082FFF7CF80E0089582E0089583E008959C016115710529F4809120 -:207C4000E8008B778093E800F90126C08EB3882391F1853091F18091E80083FF02C081E01C -:207C600008958091E80082FFF1CF06C08091F10081936150704059F02091F3008091F20000 -:207C8000322F20E090E0822B932B892B79F78091E8008B778093E80061157105B9F605C02E -:207CA0008EB3882341F0853041F08091E80080FFF7CF80E0089582E0089583E008950F93E5 -:207CC0001F93DF93CF9300D0CDB7DEB7E6EBF1E08091F100819381E0EE3BF807C9F725DD32 -:207CE0008091E80083FFE4C08091B6019091B701953009F46DC0963040F4913081F19130E7 -:207D000070F0933009F0D4C02AC0983009F4A3C0993009F4B2C0963009F0CAC07CC080382C -:207D200009F4C6C0823809F0C3C08091BA0187708093E9008091EB001092E9002091E800AB -:207D4000277F2093E80090E025E0969587952A95E1F781708093F1001092F10087C0882315 -:207D600019F0823009F0A4C08F71823009F0A0C08091B801882331F52091BA01277009F445 -:207D800097C02093E9008091EB0080FF1BC0933021F48091EB00806213C08091EB00806134 -:207DA0008093EB0081E090E002C0880F991F2A95E2F78093EA001092EA008091EB008860DE -:207DC0008093EB001092E9008091E800877F51C0882309F06DC01091B8011F770FB7F894F7 -:207DE0008091E800877F8093E8009ADD8091E80080FFFCCF8091E3008078812B8093E30041 -:207E000080688093E300112311F482E001C083E08EBB0FBF4DC08058823008F049C0809105 -:207E2000B8019091B9016091BA01AE014F5F5F4F36DDBC01009709F43BC08091E800877F99 -:207E40008093E80089819A8192DE8091E8008B778093E8002DC0803859F58091E800877FAA -:207E60008093E8008091B4018093F1008091E8008E778093E80054DD1BC08823C9F49091AF -:207E8000B8019230A8F48091E800877F8093E8009093B40145DD8091B401882331F4809130 -:207EA000E30087FD02C081E001C084E08EBB6DDC8091E80083FF0AC08091EB00806280934B -:207EC000EB008091E800877F8093E8000F900F90CF91DF911F910F91089508951F938EB332 -:207EE000882361F01091E9001092E9008091E80083FF01C0E4DE17701093E9001F91089513 -:207F0000F999FECF92BD81BDF89A992780B50895262FF999FECF1FBA92BD81BD20BD0FB695 -:207F2000F894FA9AF99A0FBE01960895F894FFCF4341544552494E41007777000A000000F4 -:207F4000000000080112011001020000084123340001000201000109023E0002010080324F -:207F60000904000001020201000524001001042402040524060001070582030800FF0904B1 -:207F80000100020A00000007050402100001070583021000010403090422034100720064BF -:207FA00000750069006E006F0020004C0065006F006E006100720064006F00000018034156 -:187FC0000072006400750069006E006F0020004C004C0043000000001D -:00000001FF +:1070000055C000006EC000006CC000006AC00000E7 +:1070100068C0000066C0000064C0000062C00000DC +:1070200060C000005EC00000EEC400005AC0000056 +:1070300058C0000056C0000054C0000052C00000FC +:1070400050C0000078C000004CC000004AC00000E2 +:1070500048C0000046C0000044C0000042C000001C +:1070600040C000003EC000003CC000003AC000002C +:1070700038C0000036C0000034C0000032C000003C +:1070800030C000002EC000002CC000002AC000004C +:1070900028C0000026C0000024C0000022C000005C +:1070A00020C000001EC000001CC0000011241FBE34 +:1070B000CFEFDAE0DEBFCDBF11E0A0E0B1E0EAE261 +:1070C000FFE702C005900D92A83AB107D9F711E089 +:1070D000A8EAB1E001C01D92AE3BB107E1F78FD342 +:1070E00022C78ECFF89410926F00109281001092F8 +:1070F00085001092840081E085BF15BE47985D9A97 +:10710000289A0C94000008952091B2013091B301A7 +:107110002F5F3F4F3093B3012093B201932F37FF7E +:1071200003C08EEF831B982F990F921710F4479886 +:107130000895479A08951F920F920FB60F92112447 +:107140002F938F939F93EF93FF931092850010924C +:1071500084008091A8019091A901009741F00197C6 +:107160009093A9018093A801892B09F45D9A8091DD +:10717000AA019091AB01009741F001979093AB0168 +:107180008093AA01892B09F4289AE0E0F0E0859128 +:1071900094918F5F9F4F49F08091AC019091AD0128 +:1071A00001969093AD018093AC01FF91EF919F9177 +:1071B0008F912F910F900FBE0F901F90189584E024 +:1071C0008093E9000DC08091E8008B778093E80000 +:1071D00003C08EB3882351F08091E80082FFF9CF7D +:1071E0008091E80085FFEFCF8091F1000895982FFE +:1071F00083E08093E9008091E80085FD0DC08091D7 +:10720000E8008E778093E80003C08EB3882369F08E +:107210008091E80080FFF9CF9093F1005D9884E6BB +:1072200090E09093A9018093A80108954F925F92F6 +:107230006F927F928F929F92AF92BF92CF92DF9286 +:10724000EF92FF920F931F93CF93DF9384E080938D +:10725000E9008091E80082FF57C2289884E690E018 +:107260009093AB018093AA01AADF182F853481F493 +:107270008CE49DE19093AD018093AC0107B600FCD6 +:10728000FDCFF999FECF81E180935700E89503C0C7 +:10729000843519F494DF8DE00DC28C34E1F3803530 +:1072A000D1F3843721F484E4A2DF80E003C2813685 +:1072B00011F489E5FFC18134B1F481DF182F7FDF3C +:1072C00090E0880F991FAA2797FDA095BA2F312F1C +:1072D000330F20E0442737FD4095542F822B932B0A +:1072E000A42BB52BB8C1803711F483E5E3C18335F6 +:1072F00049F4C0E0D1E089917ADF21E0C730D207BC +:10730000D1F7D9C1863521F481E371DF80E3D2C1A1 +:10731000833731F487E86BDF85E969DF8EE1CAC125 +:107320008536B9F4E0E0F0E093E085E09093570013 +:10733000E89507B600FCFDCF80935700E89507B6A7 +:1073400000FCFDCFE058FF4FA0E7E030FA0771F7EF +:10735000A2CF823739F4E1E0F0E089E08093570072 +:107360008491A8C1863439F4E0E0F0E089E08093AC +:10737000570084919FC18E3439F4E3E0F0E089E056 +:1073800080935700849196C1813539F4E2E0F0E0B2 +:1073900089E08093570084918DC1823631F489E56C +:1073A00026DF80E024DF80E885C1823419F087364B +:1073B00009F0E5C01092AD011092AC0100DF082F7A +:1073C000FEDEF82EFCDE682E8554823008F071C196 +:1073D000902F80E0CF2DD0E0C82BD92B10926F00DA +:1073E000173609F04BC081E180935700E895DD2402 +:1073F000CC24C3943FC0E090AE01F090AF01009167 +:10740000B0011091B101B6E46B16D9F4ED2DF0E0A6 +:10741000EE29FF29E4918E2FEADEDD2081F082E063 +:1074200090E0A0E0B0E0E80EF91E0A1F1B1FE092FA +:10743000AE01F092AF010093B0011093B101DC24D2 +:1074400018C0D801C701B695A7959795879555D5CA +:10745000CEDE82E090E0A0E0B0E0E80EF91E0A1F68 +:107460001B1FE092AE01F092AF010093B0011093A8 +:10747000B1012197209709F0BECF7DC08090AE0169 +:107480009090AF01A090B001B090B10196E4691660 +:1074900009F05DC083E0F40180935700E89507B6DA +:1074A00000FCFDCF54C0F6E46F1661F5772031F192 +:1074B000E090AE01F090AF010091B0011091B101E8 +:1074C0007EDED82ECC24852D90E08C299D29F701D5 +:1074D0000C0140925700E895112482E090E0A0E072 +:1074E000B0E0E80EF91E0A1F1B1FE092AE01F092F9 +:1074F000AF010093B0011093B10102C060DE582EBD +:10750000742423C0E090AE01F090AF010091B0016F +:107510001091B10116950795F794E79450DE682F06 +:10752000C701F3D48091AE019091AF01A091B00159 +:10753000B091B1010296A11DB11D8093AE0190934F +:10754000AF01A093B001B093B101219704C05524BD +:10755000772444244394209709F0A5CF96E4691634 +:1075600041F485E0F40180935700E89507B600FCEC +:10757000FDCF8DE03CDE82E080936F009CC08334C1 +:1075800071F40091AE011091AF0119DE90E021E09D +:10759000F8010C0120935700E89511247CCE833626 +:1075A00019F5E090AE01F090AF010091B00110919B +:1075B000B10105DEF701E16090E021E00C012093CC +:1075C0005700E895112482E090E0A0E0B0E0E80EDA +:1075D000F91E0A1F1B1FE092AE01F092AF0100934B +:1075E000B0011093B10157CE8D3661F4E091AE0138 +:1075F000F091AF0185E080935700E89507B600FC55 +:10760000FDCF49CE823551F4E091AE01F091AF014A +:1076100005911491812FEBDD802F4CC0843421F52E +:10762000E090AE01F090AF010091B0011091B10176 +:1076300016950795F794E794C2DD682FC70165D4C6 +:107640008091AE019091AF01A091B001B091B101D4 +:107650000296A11DB11D8093AE019093AF01A0933E +:10766000B001B093B10117CE843609F5E090AE01B8 +:10767000F090AF010091B0011091B101D801C701A4 +:10768000B695A7959795879538D4B1DD82E090E0BF +:10769000A0E0B0E0E80EF91E0A1F1B1FE092AE0149 +:1076A000F092AF010093B0011093B10104C08B318F +:1076B00011F08FE39CDD83E08093E9009091E80076 +:1076C0008091E8008E778093E80095FF04C010C099 +:1076D0008EB38823C9F08091E80080FFF9CF8091B4 +:1076E000E8008E778093E80003C08EB3882361F0B2 +:1076F0008091E80080FFF9CF84E08093E9008091D9 +:10770000E8008B778093E800DF91CF911F910F9174 +:10771000FF90EF90DF90CF90BF90AF909F908F90B1 +:107720007F906F905F904F9008959091B601892F50 +:107730008F77813249F58091B7018032A1F0813293 +:1077400019F5913A09F58091E800877F8093E80068 +:107750008DE091E067E070E007D28091E8008B77E0 +:107760008093E8000895913279F48091E800877F52 +:107770008093E8008DE091E067E070E059D280915D +:10778000E8008E778093E800089582E061EC42E0A3 +:10779000B1D083E061E842E1ADD084E060E842E14D +:1077A000A9C084B7877F84BF88E10FB6F89480931F +:1077B0006000109260000FBE20E880E090E00FB6FD +:1077C000F89420936100809361000FBE81E085BF33 +:1077D00092E095BF3F9A209A559AE1E6F0E0208327 +:1077E000108247985D9A289A109289008AEF8093B8 +:1077F000880090936F0083E080938100ECC04091FB +:10780000000850910108109201081092000824B756 +:1078100014BE88E10FB6F894809360001092600067 +:107820000FBE822F90E0FC01E270F07021FD14C0C9 +:10783000213019F4859194910BC0283069F480911E +:10784000090190910A014817590731F085919491E7 +:107850008F5F9F4F09F046DCA4DF78941092AD0152 +:107860001092AC010CC0E2DC36D38091AC01909157 +:10787000AD0181549F4110F01092140145DC8091BC +:107880001401882381F78091E00081608093E000FB +:1078900029DC80E090E00895FA01923049F09330BD +:1078A00061F09130F9F485E191E022E130E01EC011 +:1078B00087E291E02EE330E019C0882329F485E6C1 +:1078C00091E024E030E012C0813029F489E691E0B3 +:1078D00022E230E00BC0823029F48DE891E028E10B +:1078E00030E004C080E090E020E030E091838083CD +:1078F000C90108958093E9008091EB008160809335 +:10790000EB001092ED006093EC004093ED0080914D +:10791000EE00881F8827881F08958091B60188236C +:107920008CF403C08EB38823B1F08091E80082FF0D +:10793000F9CF8091E8008B778093E80008958EB3AB +:10794000882349F08091E80080FFF9CF8091E8001A +:107950008E778093E8000895EF92FF920F931F9324 +:1079600045D04CD008ED10E0F80180818F778083FE +:1079700080818068808380818F7D808319BC1EBA5E +:107980001092B40180EEE82EF12CF70180818B7FFC +:107990008083F80180818160808380E060E042E044 +:1079A000A9DFE1EEF0E080818E7F8083E2EEF0E0FF +:1079B000808181608083808188608083F7018081FD +:1079C0008E7F8083F8018081806180831F910F9179 +:1079D000FF90EF900895E7EDF0E080818160808373 +:1079E0008AE482BF81E08093B501B6CFE8EDF0E094 +:1079F00080818E7F80831092E20008951092DA00D9 +:107A00001092E10008951F920F920FB60F92112469 +:107A10002F933F934F935F936F937F938F939F9396 +:107A2000AF93BF93EF93FF938091DA0080FF1BC069 +:107A30008091D80080FF17C08091DA008E7F8093FC +:107A4000DA008091D90080FF0BC080E189BD82E11E +:107A500089BD09B400FEFDCF81E08EBB3BD203C0DF +:107A600019BC1EBA37D28091E10080FF17C0809107 +:107A7000E20080FF13C08091E2008E7F8093E200DD +:107A80008091E20080618093E2008091D800806262 +:107A90008093D80019BC85E08EBB1CD28091E10098 +:107AA00084FF2CC08091E20084FF28C080E189BD62 +:107AB00082E189BD09B400FEFDCF8091D8008F7DA1 +:107AC0008093D8008091E1008F7E8093E1008091C7 +:107AD000E2008F7E8093E2008091E20081608093DB +:107AE000E2008091B401882331F48091E30087FDA6 +:107AF00002C081E001C084E08EBBECD18091E10046 +:107B000083FF21C08091E20083FF1DC08091E100CE +:107B1000877F8093E10082E08EBB1092B401809158 +:107B2000E1008E7F8093E1008091E2008E7F809360 +:107B3000E2008091E20080618093E20080E060E0FA +:107B400042E0D8DEC7D1FF91EF91BF91AF919F91F5 +:107B50008F917F916F915F914F913F912F910F90F6 +:107B60000FBE0F901F9018959C014091BC01509141 +:107B7000BD014617570718F4F90190E044C061159C +:107B8000710511F0AB01F8CF8091E8008E778093FA +:107B9000E80040E050E0F0CF8EB3882309F444C001 +:107BA000853009F443C08091E80083FF02C081E082 +:107BB00008958091E80082FD31C08091E80080FF47 +:107BC00022C08091F3009091F200782F60E0292F7D +:107BD00030E0262B372B07C081918093F100415074 +:107BE00050402F5F3F4F4115510519F028303105A6 +:107BF00098F390E02830310509F491E08091E80095 +:107C00008E778093E8004115510531F6992321F6CE +:107C100005C08EB3882341F0853041F08091E800A3 +:107C200082FFF7CF80E0089582E0089583E0089511 +:107C30009C016115710529F48091E8008B77809390 +:107C4000E800F90126C08EB3882391F1853091F1C7 +:107C50008091E80083FF02C081E008958091E800F0 +:107C600082FFF1CF06C08091F10081936150704096 +:107C700059F02091F3008091F200322F20E090E043 +:107C8000822B932B892B79F78091E8008B77809357 +:107C9000E80061157105B9F605C08EB3882341F07F +:107CA000853041F08091E80080FFF7CF80E00895B3 +:107CB00082E0089583E008950F931F93DF93CF939D +:107CC00000D0CDB7DEB7E6EBF1E08091F100819313 +:107CD00081E0EE3BF807C9F728DD8091E80083FFDB +:107CE000E4C08091B6019091B701953009F46DC060 +:107CF000963040F4913081F1913070F0933009F07A +:107D0000D4C02AC0983009F4A3C0993009F4B2C095 +:107D1000963009F0CAC07CC0803809F4C6C08238E9 +:107D200009F0C3C08091BA0187708093E900809107 +:107D3000EB001092E9002091E800277F2093E800F3 +:107D400090E025E0969587952A95E1F781708093DC +:107D5000F1001092F10087C0882319F0823009F0F9 +:107D6000A4C08F71823009F0A0C08091B80188232F +:107D700031F52091BA01277009F497C02093E900EA +:107D80008091EB0080FF1BC0933021F48091EB00C9 +:107D9000806213C08091EB0080618093EB0081E0F2 +:107DA00090E002C0880F991F2A95E2F78093EA00BD +:107DB0001092EA008091EB0088608093EB001092B3 +:107DC000E9008091E800877F51C0882309F06DC0E9 +:107DD0001091B8011F770FB7F8948091E800877F62 +:107DE0008093E8009ADD8091E80080FFFCCF8091CD +:107DF000E3008078812B8093E30080688093E30028 +:107E0000112311F482E001C083E08EBB0FBF4DC08F +:107E10008058823008F049C08091B8019091B90132 +:107E20006091BA01AE014F5F5F4F36DDBC01009734 +:107E300009F43BC08091E800877F8093E800898146 +:107E40009A8192DE8091E8008B778093E8002DC0C4 +:107E5000803859F58091E800877F8093E800809111 +:107E6000B4018093F1008091E8008E778093E80060 +:107E700054DD1BC08823C9F49091B8019230A8F456 +:107E80008091E800877F8093E8009093B40145DDFE +:107E90008091B401882331F48091E30087FD02C012 +:107EA00081E001C084E08EBB70DC8091E80083FF3C +:107EB0000AC08091EB0080628093EB008091E80023 +:107EC000877F8093E8000F900F90CF91DF911F91F3 +:107ED0000F91089508951F938EB3882361F0109138 +:107EE000E9001092E9008091E80083FF01C0E4DE20 +:107EF00017701093E9001F910895F999FECF92BD74 +:107F000081BDF89A992780B50895262FF999FECF5B +:107F10001FBA92BD81BD20BD0FB6F894FA9AF99AA6 +:0A7F20000FBE01960895F894FFCFFC +:107F2A004341544552494E4100777700080000000A +:107F3A000000000801120110010200000841233468 +:107F4A000001000201000109023E00020100803224 +:107F5A0009040000010202010005240010010424A2 +:107F6A0002040524060001070582030800FF09042C +:107F7A000100020A000000070504021000010705BB +:107F8A008302100001040309042203410072006401 +:107F9A0000750069006E006F0020004C0065006FDC +:107FAA00006E006100720064006F00000018034157 +:107FBA000072006400750069006E006F0020004CBA +:087FCA00004C00430000000020 +:040000030000700089 +:00000001FF diff --git a/bootloaders/caterina/Caterina.c b/bootloaders/caterina/Caterina.c index 0cb9590..abcba2b 100755 --- a/bootloaders/caterina/Caterina.c +++ b/bootloaders/caterina/Caterina.c @@ -66,7 +66,7 @@ uint16_t RxLEDPulse = 0; // time remaining for Rx LED pulse uint16_t Timeout = 0; uint16_t bootKey = 0x7777; -volatile uint16_t *const bootKeyPtr = (volatile uint16_t *)0x0A00; +volatile uint16_t *const bootKeyPtr = (volatile uint16_t *)0x0800; void StartSketch(void) { @@ -106,25 +106,29 @@ void LEDPulse(void) } /** 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. + * runs the bootloader processing routine until it times out or is instructed to exit. */ int main(void) { - /* Watchdog may be configured with a 15 ms period so must disable it before doing anything else */ - wdt_disable(); - - /* Check the reason for the reset and act accordingly */ + /* Save the value of the boot key memory before it is overwritten */ + uint16_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 - // After a power-on reset skip the bootloader and jump straight to sketch - // if one exists. - if (mcusr_state & (1< Date: Wed, 11 Apr 2012 23:24:04 -0400 Subject: merged Caterina with Blink --- bootloaders/caterina/Caterina-Leonardo.hex | 1280 ++++++++++++++++++++++------ 1 file changed, 1024 insertions(+), 256 deletions(-) (limited to 'bootloaders/caterina') diff --git a/bootloaders/caterina/Caterina-Leonardo.hex b/bootloaders/caterina/Caterina-Leonardo.hex index 19bca60..9ae1391 100644 --- a/bootloaders/caterina/Caterina-Leonardo.hex +++ b/bootloaders/caterina/Caterina-Leonardo.hex @@ -1,256 +1,1024 @@ -:1070000055C000006EC000006CC000006AC00000E7 -:1070100068C0000066C0000064C0000062C00000DC -:1070200060C000005EC00000EEC400005AC0000056 -:1070300058C0000056C0000054C0000052C00000FC -:1070400050C0000078C000004CC000004AC00000E2 -:1070500048C0000046C0000044C0000042C000001C -:1070600040C000003EC000003CC000003AC000002C -:1070700038C0000036C0000034C0000032C000003C -:1070800030C000002EC000002CC000002AC000004C -:1070900028C0000026C0000024C0000022C000005C -:1070A00020C000001EC000001CC0000011241FBE34 -:1070B000CFEFDAE0DEBFCDBF11E0A0E0B1E0EAE261 -:1070C000FFE702C005900D92A83AB107D9F711E089 -:1070D000A8EAB1E001C01D92AE3BB107E1F78FD342 -:1070E00022C78ECFF89410926F00109281001092F8 -:1070F00085001092840081E085BF15BE47985D9A97 -:10710000289A0C94000008952091B2013091B301A7 -:107110002F5F3F4F3093B3012093B201932F37FF7E -:1071200003C08EEF831B982F990F921710F4479886 -:107130000895479A08951F920F920FB60F92112447 -:107140002F938F939F93EF93FF931092850010924C -:1071500084008091A8019091A901009741F00197C6 -:107160009093A9018093A801892B09F45D9A8091DD -:10717000AA019091AB01009741F001979093AB0168 -:107180008093AA01892B09F4289AE0E0F0E0859128 -:1071900094918F5F9F4F49F08091AC019091AD0128 -:1071A00001969093AD018093AC01FF91EF919F9177 -:1071B0008F912F910F900FBE0F901F90189584E024 -:1071C0008093E9000DC08091E8008B778093E80000 -:1071D00003C08EB3882351F08091E80082FFF9CF7D -:1071E0008091E80085FFEFCF8091F1000895982FFE -:1071F00083E08093E9008091E80085FD0DC08091D7 -:10720000E8008E778093E80003C08EB3882369F08E -:107210008091E80080FFF9CF9093F1005D9884E6BB -:1072200090E09093A9018093A80108954F925F92F6 -:107230006F927F928F929F92AF92BF92CF92DF9286 -:10724000EF92FF920F931F93CF93DF9384E080938D -:10725000E9008091E80082FF57C2289884E690E018 -:107260009093AB018093AA01AADF182F853481F493 -:107270008CE49DE19093AD018093AC0107B600FCD6 -:10728000FDCFF999FECF81E180935700E89503C0C7 -:10729000843519F494DF8DE00DC28C34E1F3803530 -:1072A000D1F3843721F484E4A2DF80E003C2813685 -:1072B00011F489E5FFC18134B1F481DF182F7FDF3C -:1072C00090E0880F991FAA2797FDA095BA2F312F1C -:1072D000330F20E0442737FD4095542F822B932B0A -:1072E000A42BB52BB8C1803711F483E5E3C18335F6 -:1072F00049F4C0E0D1E089917ADF21E0C730D207BC -:10730000D1F7D9C1863521F481E371DF80E3D2C1A1 -:10731000833731F487E86BDF85E969DF8EE1CAC125 -:107320008536B9F4E0E0F0E093E085E09093570013 -:10733000E89507B600FCFDCF80935700E89507B6A7 -:1073400000FCFDCFE058FF4FA0E7E030FA0771F7EF -:10735000A2CF823739F4E1E0F0E089E08093570072 -:107360008491A8C1863439F4E0E0F0E089E08093AC -:10737000570084919FC18E3439F4E3E0F0E089E056 -:1073800080935700849196C1813539F4E2E0F0E0B2 -:1073900089E08093570084918DC1823631F489E56C -:1073A00026DF80E024DF80E885C1823419F087364B -:1073B00009F0E5C01092AD011092AC0100DF082F7A -:1073C000FEDEF82EFCDE682E8554823008F071C196 -:1073D000902F80E0CF2DD0E0C82BD92B10926F00DA -:1073E000173609F04BC081E180935700E895DD2402 -:1073F000CC24C3943FC0E090AE01F090AF01009167 -:10740000B0011091B101B6E46B16D9F4ED2DF0E0A6 -:10741000EE29FF29E4918E2FEADEDD2081F082E063 -:1074200090E0A0E0B0E0E80EF91E0A1F1B1FE092FA -:10743000AE01F092AF010093B0011093B101DC24D2 -:1074400018C0D801C701B695A7959795879555D5CA -:10745000CEDE82E090E0A0E0B0E0E80EF91E0A1F68 -:107460001B1FE092AE01F092AF010093B0011093A8 -:10747000B1012197209709F0BECF7DC08090AE0169 -:107480009090AF01A090B001B090B10196E4691660 -:1074900009F05DC083E0F40180935700E89507B6DA -:1074A00000FCFDCF54C0F6E46F1661F5772031F192 -:1074B000E090AE01F090AF010091B0011091B101E8 -:1074C0007EDED82ECC24852D90E08C299D29F701D5 -:1074D0000C0140925700E895112482E090E0A0E072 -:1074E000B0E0E80EF91E0A1F1B1FE092AE01F092F9 -:1074F000AF010093B0011093B10102C060DE582EBD -:10750000742423C0E090AE01F090AF010091B0016F -:107510001091B10116950795F794E79450DE682F06 -:10752000C701F3D48091AE019091AF01A091B00159 -:10753000B091B1010296A11DB11D8093AE0190934F -:10754000AF01A093B001B093B101219704C05524BD -:10755000772444244394209709F0A5CF96E4691634 -:1075600041F485E0F40180935700E89507B600FCEC -:10757000FDCF8DE03CDE82E080936F009CC08334C1 -:1075800071F40091AE011091AF0119DE90E021E09D -:10759000F8010C0120935700E89511247CCE833626 -:1075A00019F5E090AE01F090AF010091B00110919B -:1075B000B10105DEF701E16090E021E00C012093CC -:1075C0005700E895112482E090E0A0E0B0E0E80EDA -:1075D000F91E0A1F1B1FE092AE01F092AF0100934B -:1075E000B0011093B10157CE8D3661F4E091AE0138 -:1075F000F091AF0185E080935700E89507B600FC55 -:10760000FDCF49CE823551F4E091AE01F091AF014A -:1076100005911491812FEBDD802F4CC0843421F52E -:10762000E090AE01F090AF010091B0011091B10176 -:1076300016950795F794E794C2DD682FC70165D4C6 -:107640008091AE019091AF01A091B001B091B101D4 -:107650000296A11DB11D8093AE019093AF01A0933E -:10766000B001B093B10117CE843609F5E090AE01B8 -:10767000F090AF010091B0011091B101D801C701A4 -:10768000B695A7959795879538D4B1DD82E090E0BF -:10769000A0E0B0E0E80EF91E0A1F1B1FE092AE0149 -:1076A000F092AF010093B0011093B10104C08B318F -:1076B00011F08FE39CDD83E08093E9009091E80076 -:1076C0008091E8008E778093E80095FF04C010C099 -:1076D0008EB38823C9F08091E80080FFF9CF8091B4 -:1076E000E8008E778093E80003C08EB3882361F0B2 -:1076F0008091E80080FFF9CF84E08093E9008091D9 -:10770000E8008B778093E800DF91CF911F910F9174 -:10771000FF90EF90DF90CF90BF90AF909F908F90B1 -:107720007F906F905F904F9008959091B601892F50 -:107730008F77813249F58091B7018032A1F0813293 -:1077400019F5913A09F58091E800877F8093E80068 -:107750008DE091E067E070E007D28091E8008B77E0 -:107760008093E8000895913279F48091E800877F52 -:107770008093E8008DE091E067E070E059D280915D -:10778000E8008E778093E800089582E061EC42E0A3 -:10779000B1D083E061E842E1ADD084E060E842E14D -:1077A000A9C084B7877F84BF88E10FB6F89480931F -:1077B0006000109260000FBE20E880E090E00FB6FD -:1077C000F89420936100809361000FBE81E085BF33 -:1077D00092E095BF3F9A209A559AE1E6F0E0208327 -:1077E000108247985D9A289A109289008AEF8093B8 -:1077F000880090936F0083E080938100ECC04091FB -:10780000000850910108109201081092000824B756 -:1078100014BE88E10FB6F894809360001092600067 -:107820000FBE822F90E0FC01E270F07021FD14C0C9 -:10783000213019F4859194910BC0283069F480911E -:10784000090190910A014817590731F085919491E7 -:107850008F5F9F4F09F046DCA4DF78941092AD0152 -:107860001092AC010CC0E2DC36D38091AC01909157 -:10787000AD0181549F4110F01092140145DC8091BC -:107880001401882381F78091E00081608093E000FB -:1078900029DC80E090E00895FA01923049F09330BD -:1078A00061F09130F9F485E191E022E130E01EC011 -:1078B00087E291E02EE330E019C0882329F485E6C1 -:1078C00091E024E030E012C0813029F489E691E0B3 -:1078D00022E230E00BC0823029F48DE891E028E10B -:1078E00030E004C080E090E020E030E091838083CD -:1078F000C90108958093E9008091EB008160809335 -:10790000EB001092ED006093EC004093ED0080914D -:10791000EE00881F8827881F08958091B60188236C -:107920008CF403C08EB38823B1F08091E80082FF0D -:10793000F9CF8091E8008B778093E80008958EB3AB -:10794000882349F08091E80080FFF9CF8091E8001A -:107950008E778093E8000895EF92FF920F931F9324 -:1079600045D04CD008ED10E0F80180818F778083FE -:1079700080818068808380818F7D808319BC1EBA5E -:107980001092B40180EEE82EF12CF70180818B7FFC -:107990008083F80180818160808380E060E042E044 -:1079A000A9DFE1EEF0E080818E7F8083E2EEF0E0FF -:1079B000808181608083808188608083F7018081FD -:1079C0008E7F8083F8018081806180831F910F9179 -:1079D000FF90EF900895E7EDF0E080818160808373 -:1079E0008AE482BF81E08093B501B6CFE8EDF0E094 -:1079F00080818E7F80831092E20008951092DA00D9 -:107A00001092E10008951F920F920FB60F92112469 -:107A10002F933F934F935F936F937F938F939F9396 -:107A2000AF93BF93EF93FF938091DA0080FF1BC069 -:107A30008091D80080FF17C08091DA008E7F8093FC -:107A4000DA008091D90080FF0BC080E189BD82E11E -:107A500089BD09B400FEFDCF81E08EBB3BD203C0DF -:107A600019BC1EBA37D28091E10080FF17C0809107 -:107A7000E20080FF13C08091E2008E7F8093E200DD -:107A80008091E20080618093E2008091D800806262 -:107A90008093D80019BC85E08EBB1CD28091E10098 -:107AA00084FF2CC08091E20084FF28C080E189BD62 -:107AB00082E189BD09B400FEFDCF8091D8008F7DA1 -:107AC0008093D8008091E1008F7E8093E1008091C7 -:107AD000E2008F7E8093E2008091E20081608093DB -:107AE000E2008091B401882331F48091E30087FDA6 -:107AF00002C081E001C084E08EBBECD18091E10046 -:107B000083FF21C08091E20083FF1DC08091E100CE -:107B1000877F8093E10082E08EBB1092B401809158 -:107B2000E1008E7F8093E1008091E2008E7F809360 -:107B3000E2008091E20080618093E20080E060E0FA -:107B400042E0D8DEC7D1FF91EF91BF91AF919F91F5 -:107B50008F917F916F915F914F913F912F910F90F6 -:107B60000FBE0F901F9018959C014091BC01509141 -:107B7000BD014617570718F4F90190E044C061159C -:107B8000710511F0AB01F8CF8091E8008E778093FA -:107B9000E80040E050E0F0CF8EB3882309F444C001 -:107BA000853009F443C08091E80083FF02C081E082 -:107BB00008958091E80082FD31C08091E80080FF47 -:107BC00022C08091F3009091F200782F60E0292F7D -:107BD00030E0262B372B07C081918093F100415074 -:107BE00050402F5F3F4F4115510519F028303105A6 -:107BF00098F390E02830310509F491E08091E80095 -:107C00008E778093E8004115510531F6992321F6CE -:107C100005C08EB3882341F0853041F08091E800A3 -:107C200082FFF7CF80E0089582E0089583E0089511 -:107C30009C016115710529F48091E8008B77809390 -:107C4000E800F90126C08EB3882391F1853091F1C7 -:107C50008091E80083FF02C081E008958091E800F0 -:107C600082FFF1CF06C08091F10081936150704096 -:107C700059F02091F3008091F200322F20E090E043 -:107C8000822B932B892B79F78091E8008B77809357 -:107C9000E80061157105B9F605C08EB3882341F07F -:107CA000853041F08091E80080FFF7CF80E00895B3 -:107CB00082E0089583E008950F931F93DF93CF939D -:107CC00000D0CDB7DEB7E6EBF1E08091F100819313 -:107CD00081E0EE3BF807C9F728DD8091E80083FFDB -:107CE000E4C08091B6019091B701953009F46DC060 -:107CF000963040F4913081F1913070F0933009F07A -:107D0000D4C02AC0983009F4A3C0993009F4B2C095 -:107D1000963009F0CAC07CC0803809F4C6C08238E9 -:107D200009F0C3C08091BA0187708093E900809107 -:107D3000EB001092E9002091E800277F2093E800F3 -:107D400090E025E0969587952A95E1F781708093DC -:107D5000F1001092F10087C0882319F0823009F0F9 -:107D6000A4C08F71823009F0A0C08091B80188232F -:107D700031F52091BA01277009F497C02093E900EA -:107D80008091EB0080FF1BC0933021F48091EB00C9 -:107D9000806213C08091EB0080618093EB0081E0F2 -:107DA00090E002C0880F991F2A95E2F78093EA00BD -:107DB0001092EA008091EB0088608093EB001092B3 -:107DC000E9008091E800877F51C0882309F06DC0E9 -:107DD0001091B8011F770FB7F8948091E800877F62 -:107DE0008093E8009ADD8091E80080FFFCCF8091CD -:107DF000E3008078812B8093E30080688093E30028 -:107E0000112311F482E001C083E08EBB0FBF4DC08F -:107E10008058823008F049C08091B8019091B90132 -:107E20006091BA01AE014F5F5F4F36DDBC01009734 -:107E300009F43BC08091E800877F8093E800898146 -:107E40009A8192DE8091E8008B778093E8002DC0C4 -:107E5000803859F58091E800877F8093E800809111 -:107E6000B4018093F1008091E8008E778093E80060 -:107E700054DD1BC08823C9F49091B8019230A8F456 -:107E80008091E800877F8093E8009093B40145DDFE -:107E90008091B401882331F48091E30087FD02C012 -:107EA00081E001C084E08EBB70DC8091E80083FF3C -:107EB0000AC08091EB0080628093EB008091E80023 -:107EC000877F8093E8000F900F90CF91DF911F91F3 -:107ED0000F91089508951F938EB3882361F0109138 -:107EE000E9001092E9008091E80083FF01C0E4DE20 -:107EF00017701093E9001F910895F999FECF92BD74 -:107F000081BDF89A992780B50895262FF999FECF5B -:107F10001FBA92BD81BD20BD0FB6F894FA9AF99AA6 -:0A7F20000FBE01960895F894FFCFFC -:107F2A004341544552494E4100777700080000000A -:107F3A000000000801120110010200000841233468 -:107F4A000001000201000109023E00020100803224 -:107F5A0009040000010202010005240010010424A2 -:107F6A0002040524060001070582030800FF09042C -:107F7A000100020A000000070504021000010705BB -:107F8A008302100001040309042203410072006401 -:107F9A0000750069006E006F0020004C0065006FDC -:107FAA00006E006100720064006F00000018034157 -:107FBA000072006400750069006E006F0020004CBA -:087FCA00004C00430000000020 -:040000030000700089 -:00000001FF +:200000000C946E010C9496010C9496010C9496010C9496010C9496010C9496010C94960150 +:200020000C9496010C9496010C941B050C94A6050C9496010C9496010C9496010C9496016B +:200040000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C94B201CC +:200060000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601C8 +:200080000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601A8 +:2000A0000C9496010C9496010C94960100000000240027002A002D003000000000002500A4 +:2000C00028002B002E003100000000002300260029002C002F00040404040403040502027D +:2000E0000202040302020202060606060606040402020204040802011040804010204080A8 +:200100004080080204018040201002011080102040400000000200080E0000030401000BB2 +:200120000000070605040100080A0B0C0D09040309042203410072006400750069006E00CD +:200140006F0020004C0065006F006E006100720064006F00180341007200640075006900CC +:200160006E006F0020004C004C004300120100020000004041233480000101020001120122 +:200180000002020000404123348000010102000100C18081C1080B00020202010009040054 +:2001A000000102020000052400100105240101010424020605240600010705810310004094 +:2001C00009040100020A000000070502024000000705830240000005010902A1010901A186 +:2001E000008501050919012903150025019503750181029501750581030501093009310943 +:20020000381581257F750895038106C0C005010906A1018502050719E029E715002501754D +:20022000019508810295017508810395067508150025650507190029658100C0090402004C +:2002400001030000000921010100012265000705840340000100000000000000002A2B2895 +:200260000000000000000000000000000000000000000000002C9EB4A0A1A2A434A6A7A553 +:20028000AE362D3738271E1F20212223242526B333B62EB7B89F8485868788898A8B8C8D58 +:2002A0008E8F909192939495969798999A9B9C9D2F3130A3AD350405060708090A0B0C0D7C +:2002C0000E0F101112131415161718191A1B1C1DAFB1B0B5000057043907370811241FBE15 +:2002E000CFEFDAE0DEBFCDBF11E0A0E0B1E0E4EEF2E102C005900D92AA32B107D9F711E06B +:20030000AAE2B1E001C01D92AB39B107E1F712E0CCEDD2E004C02297FE010E946C09C63DE9 +:20032000D107C9F70E9491030C9470090C9400008DE061E00E945E0368EE73E080E090E00C +:200340000E94FA018DE060E00E945E0368EE73E080E090E00E94FA0108958DE061E00E944D +:20036000C10208951F920F920FB60F9211242F933F938F939F93AF93BF9380912E01909153 +:200380002F01A0913001B0913101309132010196A11DB11D232F2D5F2D3720F02D570196D4 +:2003A000A11DB11D2093320180932E0190932F01A0933001B093310180912A0190912B01D4 +:2003C000A0912C01B0912D010196A11DB11D80932A0190932B01A0932C01B0932D01BF917F +:2003E000AF919F918F913F912F910F900FBE0F901F9018959B01AC017FB7F89480912A012F +:2004000090912B01A0912C01B0912D0166B5A89B05C06F3F19F00196A11DB11D7FBFBA2F9E +:20042000A92F982F8827860F911DA11DB11D62E0880F991FAA1FBB1F6A95D1F7BC012DC0FA +:20044000FFB7F89480912A0190912B01A0912C01B0912D01E6B5A89B05C0EF3F19F0019693 +:20046000A11DB11DFFBFBA2FA92F982F88278E0F911DA11DB11DE2E0880F991FAA1FBB1F70 +:20048000EA95D1F7861B970B885E9340C8F2215030404040504068517C4F21153105410538 +:2004A000510571F60895789484B5826084BD84B5816084BD85B5826085BD85B5816085BD64 +:2004C000EEE6F0E0808181608083E1E8F0E01082808182608083808181608083E0E8F0E005 +:2004E000808181608083E1EBF0E0808184608083E0EBF0E0808181608083E1E9F0E0808178 +:2005000082608083808181608083E0E9F0E080818160808320EC30E0F90180818068808391 +:2005200080818F7B8083A2ECB0E08C9188608C938C918B7F8C93E1ECF0E0808184608083A0 +:20054000808182608083808181608083E3ECF0E0808181608083F9018081826080838C914F +:2005600081608C93EAE7F0E08081846080838081826080838081816080838081806880833B +:200580000895CF93DF93482F50E0CA018C509F4FFC0134914A525F4FFA018491882369F18D +:2005A00090E0880F991FFC01E455FF4FA591B491FC01E654FF4FC591D491662351F42FB789 +:2005C000F8948C91932F909589238C93888189230BC0623061F42FB7F8948C91932F9095E3 +:2005E00089238C938881832B88832FBF06C09FB7F8948C91832B8C939FBFDF91CF91089523 +:200600008730C1F1883080F48330F9F0843030F4813029F1823009F050C024C08430C9F0FA +:20062000863009F04AC022C08A3091F18B3030F4883031F1893009F040C026C08C3091F154 +:200640008C3060F18E30C9F533C0809180008F7703C0809180008F7D80938000089584B5BE +:200660008F7702C084B58F7D84BD08958091B0008F7703C08091B0008F7D8093B0000895D8 +:20068000809190008F7707C0809190008F7D03C080919000877F8093900008958091C000C4 +:2006A0008F7703C08091C0008F7D8093C00008958091C200877F8093C2000895FF920F93A6 +:2006C0001F93F62E482F50E0CA018E5E9E4FFC012491CA018C509F4FFC0114914A525F4FC6 +:2006E000FA0104910023C9F0222319F0822F0E940003E02FF0E0EE0FFF1FE654FF4FA59132 +:20070000B4919FB7F894FF2021F48C911095812302C08C91812B8C939FBF1F910F91FF9031 +:200720000895CF93DF930E9453028BE391E00E9458040E94AD01C0E0D0E00E9498012097E2 +:20074000E1F30E940000F9CF282F809135018823C1F057FF1AC015C0289890933401809133 +:20076000F1008193E217F307B9F74115510539F08091F200882319F48BE68093E800AFBF67 +:2007800002C04FEF5FEFCA010895AFB7F89427702093E9008091F200282F30E0241735079D +:2007A0000CF4A901FB019B01240F311D94E6DACFDF93CF930F92CDB7DEB7BE016F5F7F4F6A +:2007C00041E050E00E94A403019719F02FEF3FEF03C08981282F30E0C9010F90CF91DF9125 +:2007E0000895FF920F931F93F82E142F052F4091380150913901212F302FC901DC01FB0163 +:200800006EEF29C0F7FE02C0949101C09081209136013091370124173507ACF48091E800F3 +:200820008570E1F38091E80082FF03C02FEF3FEF17C09093F100C90101968F739070892B64 +:2008400011F46093E8002F5F3F4F3093370120933601119731961097A9F6812F902F9C01F6 +:20086000C9011F910F91FF9008959C018091E80082FFFCCFF901260F311D03C08091F1000E +:200880008193E217F307D1F7289884E6809334018BEF8093E800CB0108958093E90080912C +:2008A000F200882319F08AE38093E800089508951092350181E08093D70080EA8093D80078 +:2008C00082E189BD09B400FEFDCF61E070E080E090E00E94FA0180E98093D8008CE0809317 +:2008E000E2001092E000559A209A08955F926F927F928F929F92AF92BF92CF92DF92EF9214 +:20090000FF920F931F93CF93DF93E82E842E752E80913501882371F18B01242F352FC90152 +:20092000EC017AEFF72E67E0962E9E2050E4552E8E2D90E040E2A42EB12CA822B9223AE3FE +:20094000632E20E4C22ED12CC822D92258C09FB7F8949092E9008091E80085FD02C020E0EE +:2009600004C08091F200252D281B9FBF222361F4FA9419F42FEF3FEF4DC061E070E080E03E +:2009800090E00E94FA013BC0822F90E0C817D9070CF42C2FC21BD1094FB7F8949092E900C0 +:2009A000A114B10421F406C01092F10021502223D9F719C0E7FC03C0F801922F10C0C80107 +:2009C000322F06C0FC010196E491E093F10031503323C1F706C081918093F100915099237B +:2009E000D1F7020F111D8091E80085FF05C0209729F4C114D10411F06092E8004FBF209790 +:200A000009F0A5CF5D9884E680933301282D372DC9019C01C901DF91CF911F910F91FF902A +:200A2000EF90DF90CF90BF90AF909F908F907F906F905F9008951F920F920FB60F92112406 +:200A40001F932F933F934F935F936F937F938F939F93AF93BF93EF93FF938091E1001092D8 +:200A6000E100982F83FF0FC01092E90081E08093EB001092EC0082E38093ED0010923501C8 +:200A800088E08093F00092FF36C083E08093E9008091F200882349F08AE38093E80005C0F1 +:200AA00080E891E00E947C0701C012E09FB7F8941093E9008091F2009FBF882389F780917A +:200AC0003301882351F08091330181508093330180913301882309F45D9A809134018823C4 +:200AE00051F08091340181508093340180913401882309F4289AFF91EF91BF91AF919F91D6 +:200B00008F917F916F915F914F913F912F911F910F900FBE0F901F9018950F931F93DF9368 +:200B2000CF930F92CDB7DEB719828E010F5F1F4FC8010E949B07C8010E943409898190E064 +:200B40000F90CF91DF911F910F9108951F920F920FB60F921124EF92FF921F932F933F93F4 +:200B60004F935F936F937F938F939F93AF93BF93EF93FF93DF93CF93CDB7DEB76197DEBF0F +:200B8000CDBF1092E9008091E80083FF0FC1FE0131969E01275F3F4F03C08091F1008193A1 +:200BA000E217F307D1F7289884E68093340182EF8093E800998197FF05C08091E80080FFAF +:200BC000FCCF03C08EEF8093E800292F30E0C90180769070892B09F0C2C08A81882329F4E5 +:200BE0001092F1001092F100D6C0813009F4D3C0833009F4D0C0853049F48091E80080FF4E +:200C0000FCCF8B8180688093E300C5C0863009F07CC01C81EF80F8841230C1F51092E900A4 +:200C2000109237011092360110923901109238010E948D0599E0FE013996DF01292F1D92E8 +:200C40002A95E9F799871A8791E09E8790E8988B9AEF998B2091360130913701275F3F4F61 +:200C60003C872B878D871092E9001092370110923601F0923901E092380180E0BF0149E0FD +:200C800050E00E94F1030E948D0585C01092E9001092370110923601F0923901E092380170 +:200CA000123241F482E290E00E942C09892B09F476C071C0113079F488E0E816F10419F4E2 +:200CC00081E080933A0180913A01882309F06BC0ECE6F1E013C0133009F061C08B818823C0 +:200CE00019F4EEE2F1E00AC0823019F4E2E3F1E005C0813009F053C0E4E5F1E0449180E8CE +:200D0000BF0150E00E94F10346C0873009F447C0883021F481E08093F1003DC08930D9F5D6 +:200D200023703070232BD9F5E1E9F1E091E031E026E39093E9003093EB0084918093EC0070 +:200D40002093ED009F5F3196953099F78EE78093EA001092EA008B81809335011CC08F819A +:200D600098851092E900109237011092360190933901809338018D81882329F4CE01019633 +:200D80000E94A70706C0823051F4CE0101960E94FD07882321F08EEF8093E80007C081E2DC +:200DA0008093EB0003C0EEE7F1E0A8CF6196DEBFCDBFCF91DF91FF91EF91BF91AF919F9195 +:200DC0008F917F916F915F914F913F912F911F91FF90EF900F900FBE0F901F9018952091AD +:200DE0007C0130917D0180917E0190917F01281B390B2F733070C901089520917C013091E7 +:200E00007D0180917E0190917F012817390719F42FEF3FEF09C0E0917E01F0917F01E45C51 +:200E2000FE4F8081282F30E0C901089520917C0130917D0180917E0190917F012817390779 +:200E400019F42FEF3FEF13C0E0917E01F0917F01E45CFE4F208180917E0190917F0101967F +:200E60008F73907090937F0180937E0130E0C9010895109283011092820188EE93E0A0E010 +:200E8000B0E08093840190938501A0938601B09387018EE091E09093810180938001089547 +:200EA0000F931F93DF93CF930F92CDB7DEB78C01698380910701882369F083E0BE016F5FCA +:200EC0007F4F41E050E00E9476041816190614F49C0107C081E090E0F8019383828320E039 +:200EE00030E0C9010F90CF91DF911F910F91089583E00E944D04089582E00E94D803482F73 +:200F000020917C0130917D012F5F3F4F2F73307080917E0190917F012817390759F0E0919C +:200F20007C01F0917D01E45CFE4F408330937D0120937C010895FC0180818E5F808380E881 +:200F400065E971E042E450E00E94F1030895FC0181819081913A59F4813209F04CC080E029 +:200F600060E071E047E050E00E94F10342C0913209F041C0803239F480E091E067E070E0ED +:200F80000E94350436C0823209F035C08281809307018091000190910101A0910201B09116 +:200FA0000301805B9440A040B04019F58091070180FD12C087E797E7909301088093000805 +:200FC0002BE088E190E00FB6F894A895809360000FBE209360000DC088E10FB6F8948093B2 +:200FE0006000109260000FBEA895109201081092000881E0089580E00895FC019181808125 +:20100000813A31F4913089F080E0933089F40DC0813269F49B3021F482818093080105C075 +:201020009A3029F482818093090181E0089580E00895EF92FF920F931F938C01E62EDC01CA +:20104000ED91FC910480F581E02D0995F82ED801ED91FC910680F781E02DC8016E2D0995C9 +:201060008F2D90E01F910F91FF90EF90089510928E01109292011092910180E291E09093B9 +:20108000900180938F010895EF92FF920F931F93DF93CF930F92CDB7DEB789838B017A0178 +:2010A00084E0BE016F5F7F4F41E050E00E94760484E4B801A7010E9476040F90CF91DF91B0 +:2010C0001F910F91FF90EF90089582E048E050E00E9444080895FC01168217821086118675 +:2010E0001286138614823496BF010E9465080895DC01683810F0685829C0E62FF0E067FF82 +:2011000013C0E058F04081E090E002C0880F991FEA95E2F7809514962C911497282314963E +:201120002C93149760E012C0EB5AFD4F6491662319F420E030E01DC067FF08C014968C9135 +:2011400014978D7F14968C9314976F77FD0190E0662321F08681861709F416829F5F319678 +:201160009630B1F7CD011496BD010E94650821E030E0C9010895CF93DF93DC01683810F0F3 +:20118000685825C0E62FF0E067FF12C0E058F04081E090E002C0880F991FEA95E2F7149641 +:2011A0002C911497282B14962C93149760E00FC0EB5AFD4F64916623D9F167FF08C01496A0 +:2011C0008C911497826014968C9314976F7716968C9116978617A9F117968C911797861749 +:2011E00081F118968C911897861759F119968C911997861731F11A968C911A97861709F1CC +:201200001B968C911B978617E1F0ED01E0E0F0E09E2F8E81882321F4EA0FFB1F668306C004 +:201220009F5F31962196E630F10591F7963049F481E090E013969C938E93129720E030E018 +:2012400007C0CD011496BD010E94650821E030E0C901DF91CF91089580E867ED71E045E602 +:2012600050E00E94F1030895FC0180818F5F808380E86CE372E049E150E00E94F103089586 +:20128000CF92DF92EF92FF920F931F93CF93DF937C016B018A01C0E0D0E00FC0D6016D91DA +:2012A0006D01D701ED91FC910190F081E02DC7010995C80FD91F015010400115110571F764 +:2012C000CE01DF91CF911F910F91FF90EF90DF90CF900895EE0FFF1F0590F491E02D0994C7 +:2012E000F894FFCF00E100000000000001010000000050074009EF061607FD0678077C07FA +:201300000000000019084009BB0878086B08FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF +: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 +:207F4000011001020000084123340001000201000109023E0002010080320904000001025A +:207F60000201000524001001042402040524060001070582030800FF09040100020A0000B4 +:207F8000000705040210000107058302100001040309042203410072006400750069006E80 +:207FA000006F0020004C0065006F006E006100720064006F00000018034100720064007557 +:127FC0000069006E006F0020004C004C0043000000006E +:00000001FF -- cgit v1.2.3-18-g5258 From d755d0035d4e3a816c127fd8207722bfe6629eee Mon Sep 17 00:00:00 2001 From: Zach Eveland Date: Wed, 25 Apr 2012 15:56:18 -0400 Subject: changed PID values for Leonardo bootloader and sketch done to avoid driver problems for users who installed the pre-release bootloader and driver --- bootloaders/caterina/Caterina-Leonardo.hex | 272 ++++++++++++++--------------- bootloaders/caterina/Descriptors.c | 6 +- bootloaders/caterina/Makefile | 4 +- 3 files changed, 143 insertions(+), 139 deletions(-) (limited to 'bootloaders/caterina') diff --git a/bootloaders/caterina/Caterina-Leonardo.hex b/bootloaders/caterina/Caterina-Leonardo.hex index 9ae1391..de7b53c 100644 --- a/bootloaders/caterina/Caterina-Leonardo.hex +++ b/bootloaders/caterina/Caterina-Leonardo.hex @@ -1,6 +1,6 @@ :200000000C946E010C9496010C9496010C9496010C9496010C9496010C9496010C94960150 -:200020000C9496010C9496010C941B050C94A6050C9496010C9496010C9496010C9496016B -:200040000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C94B201CC +:200020000C9496010C9496010C9410050C949B050C9496010C9496010C9496010C94960181 +:200040000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C94B501C9 :200060000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601C8 :200080000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601A8 :2000A0000C9496010C9496010C94960100000000240027002A002D003000000000002500A4 @@ -9,8 +9,8 @@ :200100004080080204018040201002011080102040400000000200080E0000030401000BB2 :200120000000070605040100080A0B0C0D09040309042203410072006400750069006E00CD :200140006F0020004C0065006F006E006100720064006F00180341007200640075006900CC -:200160006E006F0020004C004C004300120100020000004041233480000101020001120122 -:200180000002020000404123348000010102000100C18081C1080B00020202010009040054 +:200160006E006F0020004C004C004300120100020000004041233680000101020001120120 +:200180000002020000404123368000010102000100C18081C1080B00020202010009040052 :2001A000000102020000052400100105240101010424020605240600010705810310004094 :2001C00009040100020A000000070502024000000705830240000005010902A1010901A186 :2001E000008501050919012903150025019503750181029501750581030501093009310943 @@ -20,137 +20,137 @@ :200260000000000000000000000000000000000000000000002C9EB4A0A1A2A434A6A7A553 :20028000AE362D3738271E1F20212223242526B333B62EB7B89F8485868788898A8B8C8D58 :2002A0008E8F909192939495969798999A9B9C9D2F3130A3AD350405060708090A0B0C0D7C -:2002C0000E0F101112131415161718191A1B1C1DAFB1B0B5000057043907370811241FBE15 -:2002E000CFEFDAE0DEBFCDBF11E0A0E0B1E0E4EEF2E102C005900D92AA32B107D9F711E06B -:20030000AAE2B1E001C01D92AB39B107E1F712E0CCEDD2E004C02297FE010E946C09C63DE9 -:20032000D107C9F70E9491030C9470090C9400008DE061E00E945E0368EE73E080E090E00C -:200340000E94FA018DE060E00E945E0368EE73E080E090E00E94FA0108958DE061E00E944D -:20036000C10208951F920F920FB60F9211242F933F938F939F93AF93BF9380912E01909153 -:200380002F01A0913001B0913101309132010196A11DB11D232F2D5F2D3720F02D570196D4 -:2003A000A11DB11D2093320180932E0190932F01A0933001B093310180912A0190912B01D4 -:2003C000A0912C01B0912D010196A11DB11D80932A0190932B01A0932C01B0932D01BF917F -:2003E000AF919F918F913F912F910F900FBE0F901F9018959B01AC017FB7F89480912A012F -:2004000090912B01A0912C01B0912D0166B5A89B05C06F3F19F00196A11DB11D7FBFBA2F9E -:20042000A92F982F8827860F911DA11DB11D62E0880F991FAA1FBB1F6A95D1F7BC012DC0FA -:20044000FFB7F89480912A0190912B01A0912C01B0912D01E6B5A89B05C0EF3F19F0019693 -:20046000A11DB11DFFBFBA2FA92F982F88278E0F911DA11DB11DE2E0880F991FAA1FBB1F70 -:20048000EA95D1F7861B970B885E9340C8F2215030404040504068517C4F21153105410538 -:2004A000510571F60895789484B5826084BD84B5816084BD85B5826085BD85B5816085BD64 -:2004C000EEE6F0E0808181608083E1E8F0E01082808182608083808181608083E0E8F0E005 -:2004E000808181608083E1EBF0E0808184608083E0EBF0E0808181608083E1E9F0E0808178 -:2005000082608083808181608083E0E9F0E080818160808320EC30E0F90180818068808391 -:2005200080818F7B8083A2ECB0E08C9188608C938C918B7F8C93E1ECF0E0808184608083A0 -:20054000808182608083808181608083E3ECF0E0808181608083F9018081826080838C914F -:2005600081608C93EAE7F0E08081846080838081826080838081816080838081806880833B -:200580000895CF93DF93482F50E0CA018C509F4FFC0134914A525F4FFA018491882369F18D -:2005A00090E0880F991FFC01E455FF4FA591B491FC01E654FF4FC591D491662351F42FB789 -:2005C000F8948C91932F909589238C93888189230BC0623061F42FB7F8948C91932F9095E3 -:2005E00089238C938881832B88832FBF06C09FB7F8948C91832B8C939FBFDF91CF91089523 -:200600008730C1F1883080F48330F9F0843030F4813029F1823009F050C024C08430C9F0FA -:20062000863009F04AC022C08A3091F18B3030F4883031F1893009F040C026C08C3091F154 -:200640008C3060F18E30C9F533C0809180008F7703C0809180008F7D80938000089584B5BE -:200660008F7702C084B58F7D84BD08958091B0008F7703C08091B0008F7D8093B0000895D8 -:20068000809190008F7707C0809190008F7D03C080919000877F8093900008958091C000C4 -:2006A0008F7703C08091C0008F7D8093C00008958091C200877F8093C2000895FF920F93A6 -:2006C0001F93F62E482F50E0CA018E5E9E4FFC012491CA018C509F4FFC0114914A525F4FC6 -:2006E000FA0104910023C9F0222319F0822F0E940003E02FF0E0EE0FFF1FE654FF4FA59132 -:20070000B4919FB7F894FF2021F48C911095812302C08C91812B8C939FBF1F910F91FF9031 -:200720000895CF93DF930E9453028BE391E00E9458040E94AD01C0E0D0E00E9498012097E2 -:20074000E1F30E940000F9CF282F809135018823C1F057FF1AC015C0289890933401809133 -:20076000F1008193E217F307B9F74115510539F08091F200882319F48BE68093E800AFBF67 -:2007800002C04FEF5FEFCA010895AFB7F89427702093E9008091F200282F30E0241735079D -:2007A0000CF4A901FB019B01240F311D94E6DACFDF93CF930F92CDB7DEB7BE016F5F7F4F6A -:2007C00041E050E00E94A403019719F02FEF3FEF03C08981282F30E0C9010F90CF91DF9125 -:2007E0000895FF920F931F93F82E142F052F4091380150913901212F302FC901DC01FB0163 -:200800006EEF29C0F7FE02C0949101C09081209136013091370124173507ACF48091E800F3 -:200820008570E1F38091E80082FF03C02FEF3FEF17C09093F100C90101968F739070892B64 -:2008400011F46093E8002F5F3F4F3093370120933601119731961097A9F6812F902F9C01F6 -:20086000C9011F910F91FF9008959C018091E80082FFFCCFF901260F311D03C08091F1000E -:200880008193E217F307D1F7289884E6809334018BEF8093E800CB0108958093E90080912C -:2008A000F200882319F08AE38093E800089508951092350181E08093D70080EA8093D80078 -:2008C00082E189BD09B400FEFDCF61E070E080E090E00E94FA0180E98093D8008CE0809317 -:2008E000E2001092E000559A209A08955F926F927F928F929F92AF92BF92CF92DF92EF9214 -:20090000FF920F931F93CF93DF93E82E842E752E80913501882371F18B01242F352FC90152 -:20092000EC017AEFF72E67E0962E9E2050E4552E8E2D90E040E2A42EB12CA822B9223AE3FE -:20094000632E20E4C22ED12CC822D92258C09FB7F8949092E9008091E80085FD02C020E0EE -:2009600004C08091F200252D281B9FBF222361F4FA9419F42FEF3FEF4DC061E070E080E03E -:2009800090E00E94FA013BC0822F90E0C817D9070CF42C2FC21BD1094FB7F8949092E900C0 -:2009A000A114B10421F406C01092F10021502223D9F719C0E7FC03C0F801922F10C0C80107 -:2009C000322F06C0FC010196E491E093F10031503323C1F706C081918093F100915099237B -:2009E000D1F7020F111D8091E80085FF05C0209729F4C114D10411F06092E8004FBF209790 -:200A000009F0A5CF5D9884E680933301282D372DC9019C01C901DF91CF911F910F91FF902A -:200A2000EF90DF90CF90BF90AF909F908F907F906F905F9008951F920F920FB60F92112406 -:200A40001F932F933F934F935F936F937F938F939F93AF93BF93EF93FF938091E1001092D8 -:200A6000E100982F83FF0FC01092E90081E08093EB001092EC0082E38093ED0010923501C8 -:200A800088E08093F00092FF36C083E08093E9008091F200882349F08AE38093E80005C0F1 -:200AA00080E891E00E947C0701C012E09FB7F8941093E9008091F2009FBF882389F780917A -:200AC0003301882351F08091330181508093330180913301882309F45D9A809134018823C4 -:200AE00051F08091340181508093340180913401882309F4289AFF91EF91BF91AF919F91D6 -:200B00008F917F916F915F914F913F912F911F910F900FBE0F901F9018950F931F93DF9368 -:200B2000CF930F92CDB7DEB719828E010F5F1F4FC8010E949B07C8010E943409898190E064 -:200B40000F90CF91DF911F910F9108951F920F920FB60F921124EF92FF921F932F933F93F4 -:200B60004F935F936F937F938F939F93AF93BF93EF93FF93DF93CF93CDB7DEB76197DEBF0F -:200B8000CDBF1092E9008091E80083FF0FC1FE0131969E01275F3F4F03C08091F1008193A1 -:200BA000E217F307D1F7289884E68093340182EF8093E800998197FF05C08091E80080FFAF -:200BC000FCCF03C08EEF8093E800292F30E0C90180769070892B09F0C2C08A81882329F4E5 -:200BE0001092F1001092F100D6C0813009F4D3C0833009F4D0C0853049F48091E80080FF4E -:200C0000FCCF8B8180688093E300C5C0863009F07CC01C81EF80F8841230C1F51092E900A4 -:200C2000109237011092360110923901109238010E948D0599E0FE013996DF01292F1D92E8 -:200C40002A95E9F799871A8791E09E8790E8988B9AEF998B2091360130913701275F3F4F61 -:200C60003C872B878D871092E9001092370110923601F0923901E092380180E0BF0149E0FD -:200C800050E00E94F1030E948D0585C01092E9001092370110923601F0923901E092380170 -:200CA000123241F482E290E00E942C09892B09F476C071C0113079F488E0E816F10419F4E2 -:200CC00081E080933A0180913A01882309F06BC0ECE6F1E013C0133009F061C08B818823C0 -:200CE00019F4EEE2F1E00AC0823019F4E2E3F1E005C0813009F053C0E4E5F1E0449180E8CE -:200D0000BF0150E00E94F10346C0873009F447C0883021F481E08093F1003DC08930D9F5D6 -:200D200023703070232BD9F5E1E9F1E091E031E026E39093E9003093EB0084918093EC0070 -:200D40002093ED009F5F3196953099F78EE78093EA001092EA008B81809335011CC08F819A -:200D600098851092E900109237011092360190933901809338018D81882329F4CE01019633 -:200D80000E94A70706C0823051F4CE0101960E94FD07882321F08EEF8093E80007C081E2DC -:200DA0008093EB0003C0EEE7F1E0A8CF6196DEBFCDBFCF91DF91FF91EF91BF91AF919F9195 -:200DC0008F917F916F915F914F913F912F911F91FF90EF900F900FBE0F901F9018952091AD -:200DE0007C0130917D0180917E0190917F01281B390B2F733070C901089520917C013091E7 -:200E00007D0180917E0190917F012817390719F42FEF3FEF09C0E0917E01F0917F01E45C51 -:200E2000FE4F8081282F30E0C901089520917C0130917D0180917E0190917F012817390779 -:200E400019F42FEF3FEF13C0E0917E01F0917F01E45CFE4F208180917E0190917F0101967F -:200E60008F73907090937F0180937E0130E0C9010895109283011092820188EE93E0A0E010 -:200E8000B0E08093840190938501A0938601B09387018EE091E09093810180938001089547 -:200EA0000F931F93DF93CF930F92CDB7DEB78C01698380910701882369F083E0BE016F5FCA -:200EC0007F4F41E050E00E9476041816190614F49C0107C081E090E0F8019383828320E039 -:200EE00030E0C9010F90CF91DF911F910F91089583E00E944D04089582E00E94D803482F73 -:200F000020917C0130917D012F5F3F4F2F73307080917E0190917F012817390759F0E0919C -:200F20007C01F0917D01E45CFE4F408330937D0120937C010895FC0180818E5F808380E881 -:200F400065E971E042E450E00E94F1030895FC0181819081913A59F4813209F04CC080E029 -:200F600060E071E047E050E00E94F10342C0913209F041C0803239F480E091E067E070E0ED -:200F80000E94350436C0823209F035C08281809307018091000190910101A0910201B09116 -:200FA0000301805B9440A040B04019F58091070180FD12C087E797E7909301088093000805 -:200FC0002BE088E190E00FB6F894A895809360000FBE209360000DC088E10FB6F8948093B2 -:200FE0006000109260000FBEA895109201081092000881E0089580E00895FC019181808125 -:20100000813A31F4913089F080E0933089F40DC0813269F49B3021F482818093080105C075 -:201020009A3029F482818093090181E0089580E00895EF92FF920F931F938C01E62EDC01CA -:20104000ED91FC910480F581E02D0995F82ED801ED91FC910680F781E02DC8016E2D0995C9 -:201060008F2D90E01F910F91FF90EF90089510928E01109292011092910180E291E09093B9 -:20108000900180938F010895EF92FF920F931F93DF93CF930F92CDB7DEB789838B017A0178 -:2010A00084E0BE016F5F7F4F41E050E00E94760484E4B801A7010E9476040F90CF91DF91B0 -:2010C0001F910F91FF90EF90089582E048E050E00E9444080895FC01168217821086118675 -:2010E0001286138614823496BF010E9465080895DC01683810F0685829C0E62FF0E067FF82 -:2011000013C0E058F04081E090E002C0880F991FEA95E2F7809514962C911497282314963E -:201120002C93149760E012C0EB5AFD4F6491662319F420E030E01DC067FF08C014968C9135 -:2011400014978D7F14968C9314976F77FD0190E0662321F08681861709F416829F5F319678 -:201160009630B1F7CD011496BD010E94650821E030E0C9010895CF93DF93DC01683810F0F3 -:20118000685825C0E62FF0E067FF12C0E058F04081E090E002C0880F991FEA95E2F7149641 -:2011A0002C911497282B14962C93149760E00FC0EB5AFD4F64916623D9F167FF08C01496A0 -:2011C0008C911497826014968C9314976F7716968C9116978617A9F117968C911797861749 -:2011E00081F118968C911897861759F119968C911997861731F11A968C911A97861709F1CC -:201200001B968C911B978617E1F0ED01E0E0F0E09E2F8E81882321F4EA0FFB1F668306C004 -:201220009F5F31962196E630F10591F7963049F481E090E013969C938E93129720E030E018 -:2012400007C0CD011496BD010E94650821E030E0C901DF91CF91089580E867ED71E045E602 -:2012600050E00E94F1030895FC0180818F5F808380E86CE372E049E150E00E94F103089586 -:20128000CF92DF92EF92FF920F931F93CF93DF937C016B018A01C0E0D0E00FC0D6016D91DA -:2012A0006D01D701ED91FC910190F081E02DC7010995C80FD91F015010400115110571F764 -:2012C000CE01DF91CF911F910F91FF90EF90DF90CF900895EE0FFF1F0590F491E02D0994C7 -:2012E000F894FFCF00E100000000000001010000000050074009EF061607FD0678077C07FA -:201300000000000019084009BB0878086B08FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF +: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 @@ -1016,7 +1016,7 @@ :207EE000E9001092E9008091E80083FF01C0E4DE17701093E9001F910895F999FECF92BD02 :207F000081BDF89A992780B50895262FF999FECF1FBA92BD81BD20BD0FB6F894FA9AF99A90 :207F20000FBE01960895F894FFCF4341544552494E4100777700080000000000000801128E -:207F4000011001020000084123340001000201000109023E0002010080320904000001025A +:207F4000011001020000084123360001000201000109023E00020100803209040000010258 :207F60000201000524001001042402040524060001070582030800FF09040100020A0000B4 :207F8000000705040210000107058302100001040309042203410072006400750069006E80 :207FA000006F0020004C0065006F006E006100720064006F00000018034100720064007557 diff --git a/bootloaders/caterina/Descriptors.c b/bootloaders/caterina/Descriptors.c index e0d3304..c5feaf5 100755 --- a/bootloaders/caterina/Descriptors.c +++ b/bootloaders/caterina/Descriptors.c @@ -193,7 +193,7 @@ const USB_Descriptor_String_t ProductString = { .Header = {.Size = USB_STRING_LEN(16), .Type = DTYPE_String}, - #if DEVICE_PID == 0x0034 + #if DEVICE_PID == 0x0036 .UnicodeString = L"Arduino Leonardo" #else .UnicodeString = L"USB IO board " @@ -204,7 +204,11 @@ const USB_Descriptor_String_t ManufNameString = { .Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String}, + #if DEVICE_VID == 0x2341 .UnicodeString = L"Arduino LLC" + #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" diff --git a/bootloaders/caterina/Makefile b/bootloaders/caterina/Makefile index e460090..873f8bd 100755 --- a/bootloaders/caterina/Makefile +++ b/bootloaders/caterina/Makefile @@ -48,12 +48,12 @@ # USB vendor ID (VID) # official Arduino LLC VID -VID = 0x2341 +# VID = 0x2341 # USB product ID (PID) # official Leonardo PID -#PID = 0x0034 +# PID = 0x0036 # MCU name -- cgit v1.2.3-18-g5258