# HG changeset patch # User jlarmour # Date 983236905 0 # Node ID e2d866e32dac9e8e3e8199a211572671ec565ac0 # Parent 5e8f3b328bb3c63549c98c17b9b79ff0fe8d5300 Merge from eCos master repository on 2001-02-26-23:18:05-GMT diff --git a/host/infra/ChangeLog b/host/infra/ChangeLog --- a/host/infra/ChangeLog +++ b/host/infra/ChangeLog @@ -1,3 +1,7 @@ +2001-02-26 Julian Smart + + * assert.cxx: Cygwin 00r1 needs to include for _exit. + 2000-09-15 Jesper Skov * assert.cxx: Include unistd.h on unix. diff --git a/host/infra/assert.cxx b/host/infra/assert.cxx --- a/host/infra/assert.cxx +++ b/host/infra/assert.cxx @@ -61,7 +61,7 @@ #include #include -#ifdef __unix__ +#if defined(__unix__) || defined(__CYGWIN32__) extern "C" { #include // Needed for _exit() } diff --git a/host/tools/ecostest/ChangeLog b/host/tools/ecostest/ChangeLog --- a/host/tools/ecostest/ChangeLog +++ b/host/tools/ecostest/ChangeLog @@ -1,3 +1,8 @@ +2001-02-20 Jonathan Larmour + + * common/eCosTestClient.cpp (LocateExecutables): Add /sbin and + /usr/sbin to path before trying to run fuser. + 2000-09-28 Jesper Skov * common/eCosTestSerialFilter.cpp (CMD_TestBinary): Reset counter diff --git a/packages/ChangeLog b/packages/ChangeLog --- a/packages/ChangeLog +++ b/packages/ChangeLog @@ -1,3 +1,12 @@ +2001-02-23 Jesper Skov + + * ecos.db: MBX uses new generic AMD flash driver. + +2001-02-21 Jesper Skov + + * ecos.db: Add packages for new-style AMD and Atmel flash + drivers. Add flash support to PID. + 2001-02-09 Jonathan Larmour * pkgconf/rules.mak: Revert below change for now until we work diff --git a/packages/NEWS b/packages/NEWS --- a/packages/NEWS +++ b/packages/NEWS @@ -1,3 +1,7 @@ +* Added generic AMD AM29xxxxx flash driver based on MBX driver, and make + the MBX use it. +* Added RedBoot support to PID target. +* Added Atmel AT29C040 flash driver. * Added Intel XScale support with the IQ80310 Software Development and Processor Evaluation Kit. Support includes flash and ethernet drivers, and RedBoot support. diff --git a/packages/devs/eth/arm/ebsa285/current/ChangeLog b/packages/devs/eth/arm/ebsa285/current/ChangeLog --- a/packages/devs/eth/arm/ebsa285/current/ChangeLog +++ b/packages/devs/eth/arm/ebsa285/current/ChangeLog @@ -1,3 +1,15 @@ +2001-02-20 Hugo Tyson +2001-02-15 Martin Buck + + * src/if_ebsa285.c: Configure i82559 not to drop oversized frames. + This is required for VLAN support (because the maximum frame size + including the VLAN tag is 1518 instead of 1514) and shouldn't + hurt otherwise. To do this, we now always configure the chip when + i82559_start is called, instead of relying on the default + configuration if promiscuous mode is off. Another advantage is that + we're now able to turn promiscuous mode off again after it was + enabled once. + 2001-01-02 Hugo Tyson * src/if_ebsa285.c (find_82559s_match_func): New func to match @@ -381,7 +393,7 @@ 2000-02-08 Hugo Tyson active = 1; #ifdef CYGPKG_NET - if (( 0 -#ifdef ETH_DRV_FLAGS_PROMISC_MODE - != (flags & ETH_DRV_FLAGS_PROMISC_MODE) -#endif - ) || (ifp->if_flags & IFF_PROMISC) - ) { - eth_set_promiscuous_mode(p_i82559); - } + /* Enable promiscuous mode if requested, reception of oversized frames always. + * The latter is needed for VLAN support and shouldn't hurt even if we're not + * using VLANs. + */ + i82559_configure(p_i82559, !!(ifp->if_flags & IFF_PROMISC), 1); #endif #ifdef DEBUG { @@ -2115,20 +2112,20 @@ pci_init_find_82559s( void ) #ifdef CYGPKG_NET // ------------------------------------------------------------------------ // -// Function : eth_set_promiscuous_mode +// Function : i82559_configure // // Return : 0 = It worked. // non0 = It failed. // ------------------------------------------------------------------------ -static int eth_set_promiscuous_mode(struct i82559* p_i82559) +static int i82559_configure(struct i82559* p_i82559, int promisc, int oversized) { cyg_uint32 ioaddr; volatile CONFIG_CMD_STRUCT *ccs; IF_BAD_82559( p_i82559 ) { #ifdef DEBUG - os_printf( "eth_set_promiscuos_mode: Bad device pointer %x\n", + os_printf( "i82559_configure: Bad device pointer %x\n", p_i82559 ); #endif return -1; @@ -2166,9 +2163,9 @@ static int eth_set_promiscuous_mode(stru ccs->config_bytes[3]=0x0; ccs->config_bytes[4]=0x0; ccs->config_bytes[5]=0x0; - ccs->config_bytes[6]=0xb2; // (promisc ? 0x80 : 0) | 0x32 for small stats, - ccs->config_bytes[7]=0x0; // \ ditto | 0x12 for stats with PAUSE stats - ccs->config_bytes[8]=0x0; // \ ditto | 0x16 for PAUSE + TCO stats + ccs->config_bytes[6]=0x32 | (promisc ? 0x80 : 0); // | 0x32 for small stats, + ccs->config_bytes[7]=0x0; //\ | 0x12 for stats with PAUSE stats + ccs->config_bytes[8]=0x0; // \ | 0x16 for PAUSE + TCO stats ccs->config_bytes[9]=0x0; ccs->config_bytes[10]=0x28; ccs->config_bytes[11]=0x0; @@ -2176,11 +2173,11 @@ static int eth_set_promiscuous_mode(stru ccs->config_bytes[13]=0x0; // arp ccs->config_bytes[14]=0x0; // arp - ccs->config_bytes[15]=0x81; // promiscuous mode set - // \ or 0x80 for normal mode. + ccs->config_bytes[15]=0x80 | (promisc ? 1 : 0); // 0x81: promiscuous mode set + // 0x80: normal mode ccs->config_bytes[16]=0x0; ccs->config_bytes[17]=0x40; - ccs->config_bytes[18]=0x72; // Keep the Padding Enable bit + ccs->config_bytes[18]=0x72 | (oversized ? 8 : 0); // Keep the Padding Enable bit // wait for SCB command complete wait_for_cmd_done(ioaddr); diff --git a/packages/devs/flash/amd/am29xxxxx/current/ChangeLog b/packages/devs/flash/amd/am29xxxxx/current/ChangeLog new file mode 100644 --- /dev/null +++ b/packages/devs/flash/amd/am29xxxxx/current/ChangeLog @@ -0,0 +1,76 @@ +2001-02-23 Jesper Skov + + * include/flash_am29xxxxx.inl (flash_query): Allow device to + settle before returning. + +2001-02-22 Jesper Skov + + * include/flash_am29xxxxx.inl: Fix typo. Cleaned up, almost + working with MBX. Times out when erasing from ROM version of RB. + +2001-02-20 Jesper Skov + + * .../amd/am29xxxxx: Cloned from hardwired am29f040b driver. + +2000-12-07 Jesper Skov + + * src/flash.h: Addresses and sizes are also affected by + interleaving. + * src/flash_erase_block.c: Plug in working loop. + * src/flash_program_buf.c: Same. + +2000-12-06 Jesper Skov + + * src/am29f040b_flash.c (flash_hwr_init): Use new query semantics. + * src/flash_query.c (flash_query): Changed accordingly. + + * src/flash.h (FLASH_Sector_Erase_Timer): Added. + + * src/flash_erase_block.c: Do not check error flag after operation + completes. + * src/flash_program_buf.c: Same. + +2000-12-05 Jonathan Larmour + + * src/am29f040b_flash.c (flash_code_overlaps): Define stext/etext + as array types so no assumptions can be made by the compiler about + location. + +2000-12-05 Jesper Skov + + * Cloned from MBX driver. + +2000-10-20 Gary Thomas + + * src/mbx_flash.c: + * src/flash_query.c: + * src/flash_program_buf.c: + * src/flash_erase_block.c: + * src/flash.h: + * cdl/flash_mbx.cdl: New package/file(s). + +//=========================================================================== +//####COPYRIGHTBEGIN#### +// +// ------------------------------------------- +// The contents of this file are subject to the Red Hat eCos Public License +// Version 1.1 (the "License"); you may not use this file except in +// compliance with the License. You may obtain a copy of the License at +// http://www.redhat.com/ +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +// License for the specific language governing rights and limitations under +// the License. +// +// The Original Code is eCos - Embedded Configurable Operating System, +// released September 30, 1998. +// +// The Initial Developer of the Original Code is Red Hat. +// Portions created by Red Hat are +// Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc. +// All Rights Reserved. +// ------------------------------------------- +// +//####COPYRIGHTEND#### +//=========================================================================== diff --git a/packages/devs/flash/amd/am29xxxxx/current/cdl/flash_amd_am29xxxxx.cdl b/packages/devs/flash/amd/am29xxxxx/current/cdl/flash_amd_am29xxxxx.cdl new file mode 100644 --- /dev/null +++ b/packages/devs/flash/amd/am29xxxxx/current/cdl/flash_amd_am29xxxxx.cdl @@ -0,0 +1,54 @@ +# ==================================================================== +# +# flash_amd_am29xxxxx.cdl +# +# FLASH memory - Hardware support for AMD AM29xxxxx parts +# +# ==================================================================== +#####COPYRIGHTBEGIN#### +# +# ------------------------------------------- +# The contents of this file are subject to the Red Hat eCos Public License +# Version 1.1 (the "License"); you may not use this file except in +# compliance with the License. You may obtain a copy of the License at +# http://www.redhat.com/ +# +# Software distributed under the License is distributed on an "AS IS" +# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +# License for the specific language governing rights and limitations under +# the License. +# +# The Original Code is eCos - Embedded Configurable Operating System, +# released September 30, 1998. +# +# The Initial Developer of the Original Code is Red Hat. +# Portions created by Red Hat are +# Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc. +# All Rights Reserved. +# ------------------------------------------- +# +#####COPYRIGHTEND#### +# ==================================================================== +######DESCRIPTIONBEGIN#### +# +# Author(s): gthomas +# Contributors: gthomas, jskov +# Date: 2001-02-20 +# +#####DESCRIPTIONEND#### +# +# ==================================================================== + +cdl_package CYGPKG_DEVS_FLASH_AMD_AM29XXXXX { + display "AMD AM29XXXXX FLASH memory support" + description "FLASH memory device support for AMD AM29XXXXX" + parent CYGPKG_IO_FLASH + active_if CYGPKG_IO_FLASH + + active_if CYGINT_DEVS_FLASH_AMD_AM29XXXXX_REQUIRED + + implements CYGHWR_IO_FLASH_DEVICE + implements CYGHWR_IO_FLASH_DEVICE_IN_RAM + + include_dir cyg/io +} diff --git a/packages/devs/flash/amd/am29xxxxx/current/include/flash_am29xxxxx.inl b/packages/devs/flash/amd/am29xxxxx/current/include/flash_am29xxxxx.inl new file mode 100644 --- /dev/null +++ b/packages/devs/flash/amd/am29xxxxx/current/include/flash_am29xxxxx.inl @@ -0,0 +1,326 @@ +#ifndef CYGONCE_DEVS_FLASH_AMD_AM29XXXXX_INL +#define CYGONCE_DEVS_FLASH_AMD_AM29XXXXX_INL +//========================================================================== +// +// am29xxxxx.inl +// +// AMD AM29xxxxx series flash driver +// +//========================================================================== +//####COPYRIGHTBEGIN#### +// +// ------------------------------------------- +// The contents of this file are subject to the Red Hat eCos Public License +// Version 1.1 (the "License"); you may not use this file except in +// compliance with the License. You may obtain a copy of the License at +// http://www.redhat.com/ +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +// License for the specific language governing rights and limitations under +// the License. +// +// The Original Code is eCos - Embedded Configurable Operating System, +// released September 30, 1998. +// +// The Initial Developer of the Original Code is Red Hat. +// Portions created by Red Hat are +// Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc. +// All Rights Reserved. +// ------------------------------------------- +// +//####COPYRIGHTEND#### +//========================================================================== +//#####DESCRIPTIONBEGIN#### +// +// Author(s): gthomas +// Contributors: gthomas, jskov +// Date: 2001-02-21 +// Purpose: +// Description: AMD AM29xxxxx series flash device driver +// Notes: While the parts support sector locking, this is controlled +// using a 12V source (on F parts anyway) - so it is left +// unimplemented for now. When it does get implemented, let +// the platform CDL control the availability of that feature. +// FIXME: Does not use FLASH_P2V +// +//####DESCRIPTIONEND#### +// +//========================================================================== + +#include +#include +#include +#include CYGHWR_MEMORY_LAYOUT_H + +#define _FLASH_PRIVATE_ +#include + + +//---------------------------------------------------------------------------- +// Common device details. +#define FLASH_Read_ID FLASHWORD( 0x90 ) +#define FLASH_Reset FLASHWORD( 0xFF ) +#define FLASH_Program FLASHWORD( 0xA0 ) +#define FLASH_Block_Erase FLASHWORD( 0x30 ) + +#define FLASH_Data FLASHWORD( 0x80 ) // Data complement +#define FLASH_Busy FLASHWORD( 0x40 ) // "Toggle" bit +#define FLASH_Err FLASHWORD( 0x20 ) +#define FLASH_Sector_Erase_Timer FLASHWORD( 0x08 ) + +#define FLASH_Setup_Addr1 (0x555) +#define FLASH_Setup_Addr2 (0x2AA) +#define FLASH_Setup_Code1 FLASHWORD( 0xAA ) +#define FLASH_Setup_Code2 FLASHWORD( 0x55 ) +#define FLASH_Setup_Erase FLASHWORD( 0x80 ) + +// Platform code must define the below +// #define CYGNUM_FLASH_INTERLEAVE : Number of interleaved devices (in parallel) +// #define CYGNUM_FLASH_SERIES : Number of devices in series +// #define CYGNUM_FLASH_BASE : Address of first device +// And select one of the below device variants + +#ifdef CYGPKG_DEVS_FLASH_AMD_AM29F040B +# define FLASH_BLOCK_SIZE (0x10000*CYGNUM_FLASH_INTERLEAVE) +# define FLASH_NUM_REGIONS (8) +# define CYGNUM_FLASH_BASE_MASK (0xFFF80000u) // 512kB devices +# define CYGNUM_FLASH_WIDTH (8) +# define CYGNUM_FLASH_BLANK (1) +# define CYGNUM_FLASH_ID_MANUFACTURER FLASHWORD(0x01) +# define CYGNUM_FLASH_ID_DEVICE FLASHWORD(0xA4) +#endif + +#define FLASH_DEVICE_SIZE (FLASH_BLOCK_SIZE*FLASH_NUM_REGIONS) +#define CYGNUM_FLASH_DEVICES (CYGNUM_FLASH_INTERLEAVE*CYGNUM_FLASH_SERIES) + +//---------------------------------------------------------------------------- +// Now that device properties are defined, include magic for defining +// accessor type and constants. +#include + +//---------------------------------------------------------------------------- +// Functions that put the flash device into non-read mode must reside +// in RAM. +void flash_query(void* data) __attribute__ ((section (".2ram.flash_query"))); +int flash_erase_block(void* block, unsigned int size) + __attribute__ ((section (".2ram.flash_erase_block"))); +int flash_program_buf(void* addr, void* data, int len) + __attribute__ ((section (".2ram.flash_program_buf"))); + +//---------------------------------------------------------------------------- +// Flash Query +// +// Only reads the manufacturer and part number codes for the first +// device(s) in series. It is assumed that any devices in series +// will be of the same type. + +void +flash_query(void* data) +{ + volatile flash_data_t *ROM; + flash_data_t* id = (flash_data_t*) data; + int i; + + ROM = (volatile flash_data_t*) CYGNUM_FLASH_BASE; + + ROM[FLASH_Setup_Addr1] = FLASH_Setup_Code1; + ROM[FLASH_Setup_Addr2] = FLASH_Setup_Code2; + ROM[FLASH_Setup_Addr1] = FLASH_Read_ID; + + // Manufacturers' code + id[0] = ROM[0]; + // Part number + id[1] = ROM[1]; + + ROM[0] = FLASH_Reset; + + // Allow device to settle. + for (i = 500; i > 0; i--); +} + +//---------------------------------------------------------------------------- +// Initialize driver details +int +flash_hwr_init(void) +{ + flash_data_t id[2]; + + flash_dev_query(id); + + // Check that flash_id data is matching the one the driver was + // configured for. + if (id[0] != CYGNUM_FLASH_ID_MANUFACTURER + || id[1] != CYGNUM_FLASH_ID_DEVICE) + return FLASH_ERR_DRV_WRONG_PART; + + // Hard wired for now + flash_info.block_size = FLASH_BLOCK_SIZE * CYGNUM_FLASH_INTERLEAVE; + flash_info.blocks = FLASH_NUM_REGIONS; + flash_info.start = (void *)CYGNUM_FLASH_BASE; + flash_info.end = (void *)(CYGNUM_FLASH_BASE+ (FLASH_NUM_REGIONS * FLASH_BLOCK_SIZE * CYGNUM_FLASH_INTERLEAVE * CYGNUM_FLASH_SERIES)); + return FLASH_ERR_OK; +} + +//---------------------------------------------------------------------------- +// Map a hardware status to a package error +int +flash_hwr_map_error(int e) +{ + return e; +} + + +//---------------------------------------------------------------------------- +// See if a range of FLASH addresses overlaps currently running code +bool +flash_code_overlaps(void *start, void *end) +{ + extern unsigned char _stext[], _etext[]; + + return ((((unsigned long)&_stext >= (unsigned long)start) && + ((unsigned long)&_stext < (unsigned long)end)) || + (((unsigned long)&_etext >= (unsigned long)start) && + ((unsigned long)&_etext < (unsigned long)end))); +} + +//---------------------------------------------------------------------------- +// Erase Block + +int +flash_erase_block(void* block, unsigned int size) +{ + volatile flash_data_t* ROM; + volatile flash_data_t* block_ptr = (volatile flash_data_t*) block; + int timeout = 50000; + int len; + flash_data_t res = FLASH_ERR_OK; + int state; + + ROM = (volatile flash_data_t*)((unsigned long)block & ~(FLASH_DEVICE_SIZE-1)); + + // Send erase block command - six step sequence + ROM[FLASH_Setup_Addr1] = FLASH_Setup_Code1; + ROM[FLASH_Setup_Addr2] = FLASH_Setup_Code2; + ROM[FLASH_Setup_Addr1] = FLASH_Setup_Erase; + ROM[FLASH_Setup_Addr1] = FLASH_Setup_Code1; + ROM[FLASH_Setup_Addr2] = FLASH_Setup_Code2; + *block_ptr = FLASH_Block_Erase; + + // Now poll for the completion of the sector erase timer (50us) + timeout = 5000000; // how many retries? + while (true) { + state = *block_ptr; + if ((state & FLASH_Sector_Erase_Timer) == 0) break; + if (state & FLASH_Err) { + res = FLASH_ERR_ERASE; + break; + } + if (--timeout == 0) { + res = FLASH_ERR_DRV_TIMEOUT; + break; + } + } + + // Then wait for erase completion. + if (FLASH_ERR_OK == res) { + timeout = 5000000; + while (true) { + state = *block_ptr; + if (FLASH_BlankValue == state) { + break; + } + if (state & FLASH_Err) { + res = FLASH_ERR_ERASE; + break; + } + if (--timeout == 0) { + res = FLASH_ERR_DRV_TIMEOUT; + break; + } + } + } + + if (FLASH_ERR_OK != res) + ROM[0] = FLASH_Reset; + + // Verify erase operation + len = (FLASH_BLOCK_SIZE*CYGNUM_FLASH_INTERLEAVE); + while (len > 0) { + if (*block_ptr != FLASH_BlankValue) { + // Only update return value if erase operation was OK + if (FLASH_ERR_OK == res) res = FLASH_ERR_DRV_VERIFY; + break; + } + block_ptr++; + len -= sizeof(*block_ptr); + } + + return res; +} + +//---------------------------------------------------------------------------- +// Program Buffer + +int +flash_program_buf(void* addr, void* data, int len) +{ + volatile flash_data_t* ROM; + volatile flash_data_t* addr_ptr = (volatile flash_data_t*) addr; + volatile flash_data_t* data_ptr = (volatile flash_data_t*) data; + + int timeout; + int res = FLASH_ERR_OK; + +#if 0 + CYG_ASSERT((unsigned long)data_ptr & (sizeof(flash_data_t)-1) == 0, + "Data not properly aligned"); + CYG_ASSERT((unsigned long)addr_ptr & (CYGNUM_FLASH_INTERLEAVE*sizeof(flash_data_t)-1) == 0, + "Addr not properly aligned (to first interleaved device)"); +#endif + + while (len > 0) { + int state; + + // Base address of device(s) being programmed. + ROM = (volatile flash_data_t*)((unsigned long)addr & ~(FLASH_DEVICE_SIZE-1)); + + // Program data [byte] - 4 step sequence + ROM[FLASH_Setup_Addr1] = FLASH_Setup_Code1; + ROM[FLASH_Setup_Addr2] = FLASH_Setup_Code2; + ROM[FLASH_Setup_Addr1] = FLASH_Program; + *addr_ptr = *data_ptr; + + timeout = 5000000; + while (true) { + state = *addr_ptr; + if (*data_ptr == state) { + break; + } + if (state & FLASH_Err) { + res = FLASH_ERR_PROGRAM; + break; + } + if (--timeout == 0) { + res = FLASH_ERR_DRV_TIMEOUT; + break; + } + } + + if (FLASH_ERR_OK != res) + ROM[0] = FLASH_Reset; + + if (*addr_ptr++ != *data_ptr++) { + // Only update return value if erase operation was OK + if (FLASH_ERR_OK == res) res = FLASH_ERR_DRV_VERIFY; + break; + } + len -= sizeof(*data_ptr); + } + + // Ideally, we'd want to return not only the failure code, but also + // the address/device that reported the error. + return res; +} + +#endif // CYGONCE_DEVS_FLASH_AMD_AM29XXXXX_INL diff --git a/packages/devs/flash/arm/pid/current/ChangeLog b/packages/devs/flash/arm/pid/current/ChangeLog new file mode 100644 --- /dev/null +++ b/packages/devs/flash/arm/pid/current/ChangeLog @@ -0,0 +1,34 @@ +2001-02-20 Jesper Skov + + * devs/flash/arm/pid/...: new package. FLASH memory support for + ARM PID board. + + * include/arm_pid_flash.inl: New file + + * cdl/flash_arm_pid.cdl: New file. + +//=========================================================================== +//####COPYRIGHTBEGIN#### +// +// ------------------------------------------- +// The contents of this file are subject to the Red Hat eCos Public License +// Version 1.1 (the "License"); you may not use this file except in +// compliance with the License. You may obtain a copy of the License at +// http://www.redhat.com/ +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +// License for the specific language governing rights and limitations under +// the License. +// +// The Original Code is eCos - Embedded Configurable Operating System, +// released September 30, 1998. +// +// The Initial Developer of the Original Code is Red Hat. +// Portions created by Red Hat are +// Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc. +// All Rights Reserved. +// ------------------------------------------- +// +//####COPYRIGHTEND#### +//=========================================================================== diff --git a/packages/devs/flash/arm/pid/current/cdl/flash_arm_pid.cdl b/packages/devs/flash/arm/pid/current/cdl/flash_arm_pid.cdl new file mode 100644 --- /dev/null +++ b/packages/devs/flash/arm/pid/current/cdl/flash_arm_pid.cdl @@ -0,0 +1,60 @@ +# ==================================================================== +# +# flash_pid.cdl +# +# FLASH memory - Hardware support on ARM PID board +# +# ==================================================================== +#####COPYRIGHTBEGIN#### +# +# ------------------------------------------- +# The contents of this file are subject to the Red Hat eCos Public License +# Version 1.1 (the "License"); you may not use this file except in +# compliance with the License. You may obtain a copy of the License at +# http://www.redhat.com/ +# +# Software distributed under the License is distributed on an "AS IS" +# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +# License for the specific language governing rights and limitations under +# the License. +# +# The Original Code is eCos - Embedded Configurable Operating System, +# released September 30, 1998. +# +# The Initial Developer of the Original Code is Red Hat. +# Portions created by Red Hat are +# Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc. +# All Rights Reserved. +# ------------------------------------------- +# +#####COPYRIGHTEND#### +# ==================================================================== +######DESCRIPTIONBEGIN#### +# +# Author(s): gthomas, hmt, jskov +# Original data: gthomas +# Contributors: gthomas +# Date: 2001-02-20 +# +#####DESCRIPTIONEND#### +# +# ==================================================================== + +cdl_package CYGPKG_DEVS_FLASH_ARM_PID { + display "ARM PID board FLASH memory support" + description "FLASH memory device support for ARM PID board" + + parent CYGPKG_IO_FLASH + active_if CYGPKG_IO_FLASH + requires CYGPKG_HAL_ARM_PID + + compile arm_pid_flash.c + + # Arguably this should do in the generic package + # but then there is a logic loop so you can never enable it. + cdl_interface CYGINT_DEVS_FLASH_ATMEL_AT29CXXXX_REQUIRED { + display "Generic AMD AM29F040 driver required" + } + + implements CYGINT_DEVS_FLASH_ATMEL_AT29CXXXX_REQUIRED +} diff --git a/packages/devs/flash/arm/pid/current/src/arm_pid_flash.c b/packages/devs/flash/arm/pid/current/src/arm_pid_flash.c new file mode 100644 --- /dev/null +++ b/packages/devs/flash/arm/pid/current/src/arm_pid_flash.c @@ -0,0 +1,56 @@ +//========================================================================== +// +// arm_pid_flash.c +// +// Flash programming for Atmel device on ARM PID board +// +//========================================================================== +//####COPYRIGHTBEGIN#### +// +// ------------------------------------------- +// The contents of this file are subject to the Red Hat eCos Public License +// Version 1.1 (the "License"); you may not use this file except in +// compliance with the License. You may obtain a copy of the License at +// http://www.redhat.com/ +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +// License for the specific language governing rights and limitations under +// the License. +// +// The Original Code is eCos - Embedded Configurable Operating System, +// released September 30, 1998. +// +// The Initial Developer of the Original Code is Red Hat. +// Portions created by Red Hat are +// Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc. +// All Rights Reserved. +// ------------------------------------------- +// +//####COPYRIGHTEND#### +//========================================================================== +//#####DESCRIPTIONBEGIN#### +// +// Author(s): jskov +// Contributors: jskov +// Date: 2001-02-21 +// Purpose: +// Description: +// +//####DESCRIPTIONEND#### +// +//========================================================================== + + +// There's a single AT29C040 on the PID board. + +#define CYGPKG_DEVS_FLASH_ATMEL_AT29C040A +#define CYGNUM_FLASH_INTERLEAVE (1) +#define CYGNUM_FLASH_SERIES (1) +#define CYGNUM_FLASH_BASE (0x4000000u) + +#include "cyg/io/flash_at29cxxxx.inl" + + +// ------------------------------------------------------------------------ +// EOF arm_pid_flash.c diff --git a/packages/devs/flash/atmel/at29cxxxx/current/ChangeLog b/packages/devs/flash/atmel/at29cxxxx/current/ChangeLog new file mode 100644 --- /dev/null +++ b/packages/devs/flash/atmel/at29cxxxx/current/ChangeLog @@ -0,0 +1,75 @@ +2001-02-23 Jesper Skov + + * include/flash_at29cxxxx.inl: Include type macros from IO driver. + +2001-02-22 Jesper Skov + + * include/flash_at29cxxxx.inl: Moved flash_query function. Call it + indirectly through the IO driver. + +2001-02-20 Jesper Skov + + * .../atmel/at29cxxxx: Cloned from am29xxxxx driver. + +2000-12-07 Jesper Skov + + * src/flash.h: Addresses and sizes are also affected by + interleaving. + * src/flash_erase_block.c: Plug in working loop. + * src/flash_program_buf.c: Same. + +2000-12-06 Jesper Skov + + * src/am29f040b_flash.c (flash_hwr_init): Use new query semantics. + * src/flash_query.c (flash_query): Changed accordingly. + + * src/flash.h (FLASH_Sector_Erase_Timer): Added. + + * src/flash_erase_block.c: Do not check error flag after operation + completes. + * src/flash_program_buf.c: Same. + +2000-12-05 Jonathan Larmour + + * src/am29f040b_flash.c (flash_code_overlaps): Define stext/etext + as array types so no assumptions can be made by the compiler about + location. + +2000-12-05 Jesper Skov + + * Cloned from MBX driver. + +2000-10-20 Gary Thomas + + * src/mbx_flash.c: + * src/flash_query.c: + * src/flash_program_buf.c: + * src/flash_erase_block.c: + * src/flash.h: + * cdl/flash_mbx.cdl: New package/file(s). + +//=========================================================================== +//####COPYRIGHTBEGIN#### +// +// ------------------------------------------- +// The contents of this file are subject to the Red Hat eCos Public License +// Version 1.1 (the "License"); you may not use this file except in +// compliance with the License. You may obtain a copy of the License at +// http://www.redhat.com/ +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +// License for the specific language governing rights and limitations under +// the License. +// +// The Original Code is eCos - Embedded Configurable Operating System, +// released September 30, 1998. +// +// The Initial Developer of the Original Code is Red Hat. +// Portions created by Red Hat are +// Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc. +// All Rights Reserved. +// ------------------------------------------- +// +//####COPYRIGHTEND#### +//=========================================================================== diff --git a/packages/devs/flash/atmel/at29cxxxx/current/cdl/flash_atmel_at29cxxxx.cdl b/packages/devs/flash/atmel/at29cxxxx/current/cdl/flash_atmel_at29cxxxx.cdl new file mode 100644 --- /dev/null +++ b/packages/devs/flash/atmel/at29cxxxx/current/cdl/flash_atmel_at29cxxxx.cdl @@ -0,0 +1,54 @@ +# ==================================================================== +# +# flash_atmel_at29cxxxx.cdl +# +# FLASH memory - Hardware support for Atmel AT29Cxxxx parts +# +# ==================================================================== +#####COPYRIGHTBEGIN#### +# +# ------------------------------------------- +# The contents of this file are subject to the Red Hat eCos Public License +# Version 1.1 (the "License"); you may not use this file except in +# compliance with the License. You may obtain a copy of the License at +# http://www.redhat.com/ +# +# Software distributed under the License is distributed on an "AS IS" +# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +# License for the specific language governing rights and limitations under +# the License. +# +# The Original Code is eCos - Embedded Configurable Operating System, +# released September 30, 1998. +# +# The Initial Developer of the Original Code is Red Hat. +# Portions created by Red Hat are +# Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc. +# All Rights Reserved. +# ------------------------------------------- +# +#####COPYRIGHTEND#### +# ==================================================================== +######DESCRIPTIONBEGIN#### +# +# Author(s): jskov +# Contributors: jskov +# Date: 2001-02-20 +# +#####DESCRIPTIONEND#### +# +# ==================================================================== + +cdl_package CYGPKG_DEVS_FLASH_ATMEL_AT29CXXXX { + display "Atmel AT29CXXXX FLASH memory support" + description "FLASH memory device support for Atmel AT29CXXXX" + parent CYGPKG_IO_FLASH + active_if CYGPKG_IO_FLASH + + active_if CYGINT_DEVS_FLASH_ATMEL_AT29CXXXX_REQUIRED + + implements CYGHWR_IO_FLASH_DEVICE + implements CYGHWR_IO_FLASH_DEVICE_IN_RAM + + include_dir cyg/io +} diff --git a/packages/devs/flash/atmel/at29cxxxx/current/include/flash_at29cxxxx.inl b/packages/devs/flash/atmel/at29cxxxx/current/include/flash_at29cxxxx.inl new file mode 100644 --- /dev/null +++ b/packages/devs/flash/atmel/at29cxxxx/current/include/flash_at29cxxxx.inl @@ -0,0 +1,281 @@ +#ifndef CYGONCE_DEVS_FLASH_ATMEL_AT29CXXXX_INL +#define CYGONCE_DEVS_FLASH_ATMEL_AT29CXXXX_INL +//========================================================================== +// +// at29cxxxx.inl +// +// Atmel AT29Cxxxx series flash driver +// +//========================================================================== +//####COPYRIGHTBEGIN#### +// +// ------------------------------------------- +// The contents of this file are subject to the Red Hat eCos Public License +// Version 1.1 (the "License"); you may not use this file except in +// compliance with the License. You may obtain a copy of the License at +// http://www.redhat.com/ +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +// License for the specific language governing rights and limitations under +// the License. +// +// The Original Code is eCos - Embedded Configurable Operating System, +// released September 30, 1998. +// +// The Initial Developer of the Original Code is Red Hat. +// Portions created by Red Hat are +// Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc. +// All Rights Reserved. +// ------------------------------------------- +// +//####COPYRIGHTEND#### +//========================================================================== +//#####DESCRIPTIONBEGIN#### +// +// Author(s): gthomas +// Contributors: gthomas, jskov +// Date: 2001-02-21 +// Purpose: +// Description: +// +// Notes: FLASH_P2V is not properly used. +// Needs locking. +//####DESCRIPTIONEND#### +// +//========================================================================== + +#include +#include +#include +#include CYGHWR_MEMORY_LAYOUT_H + +#define _FLASH_PRIVATE_ +#include + + +//---------------------------------------------------------------------------- +// Common device details. +#define FLASH_Read_ID FLASHWORD( 0x90 ) +#define FLASH_Read_ID_Exit FLASHWORD( 0xF0 ) +#define FLASH_Reset FLASHWORD( 0xFF ) +#define FLASH_Program FLASHWORD( 0xA0 ) +#define FLASH_Block_Erase FLASHWORD( 0x30 ) + +#define FLASH_Data FLASHWORD( 0x80 ) // Data complement +#define FLASH_Busy FLASHWORD( 0x40 ) // "Toggle" bit +#define FLASH_Err FLASHWORD( 0x20 ) +#define FLASH_Sector_Erase_Timer FLASHWORD( 0x08 ) + +#define FLASH_Setup_Addr1 (0x5555) +#define FLASH_Setup_Addr2 (0x2AAA) +#define FLASH_Setup_Code1 FLASHWORD( 0xAA ) +#define FLASH_Setup_Code2 FLASHWORD( 0x55 ) +#define FLASH_Setup_Erase FLASHWORD( 0x80 ) + +// Platform code must define the below +// #define CYGNUM_FLASH_INTERLEAVE : Number of interleaved devices (in parallel) +// #define CYGNUM_FLASH_SERIES : Number of devices in series +// #define CYGNUM_FLASH_BASE : Address of first device +// And select one of the below device variants + +#ifdef CYGPKG_DEVS_FLASH_ATMEL_AT29C040A +# define FLASH_BLOCK_SIZE (0x10000*CYGNUM_FLASH_INTERLEAVE) +# define FLASH_NUM_REGIONS (8) +# define CYGNUM_FLASH_BASE_MASK (0xFFF80000u) // 512kB devices +# define CYGNUM_FLASH_WIDTH (8) +# define CYGNUM_FLASH_BLANK (1) +# define CYGNUM_FLASH_ID_MANUFACTURER FLASHWORD(0x1F) +# define CYGNUM_FLASH_ID_DEVICE FLASHWORD(0xA4) +#endif + +#define FLASH_DEVICE_SIZE (FLASH_BLOCK_SIZE*FLASH_NUM_REGIONS) +#define CYGNUM_FLASH_DEVICES (CYGNUM_FLASH_INTERLEAVE*CYGNUM_FLASH_SERIES) + +//---------------------------------------------------------------------------- +// Now that device properties are defined, include magic for defining +// accessor type and constants. +#include + +//---------------------------------------------------------------------------- +// Functions that put the flash device into non-read mode must reside +// in RAM. +void flash_query(void* data) __attribute__ ((section (".2ram.flash_query"))); +int flash_erase_block(void* block, unsigned int size) + __attribute__ ((section (".2ram.flash_erase_block"))); +int flash_program_buf(void* addr, void* data, int len) + __attribute__ ((section (".2ram.flash_program_buf"))); + + +//---------------------------------------------------------------------------- +// Initialize driver details +int +flash_hwr_init(void) +{ + flash_data_t id[2]; + + flash_dev_query(id); + + // Check that flash_id data is matching the one the driver was + // configured for. + if (id[0] != CYGNUM_FLASH_ID_MANUFACTURER + || id[1] != CYGNUM_FLASH_ID_DEVICE) + return FLASH_ERR_DRV_WRONG_PART; + + // Hard wired for now + flash_info.block_size = FLASH_BLOCK_SIZE * CYGNUM_FLASH_INTERLEAVE; + flash_info.blocks = FLASH_NUM_REGIONS; + flash_info.start = (void *)CYGNUM_FLASH_BASE; + flash_info.end = (void *)(CYGNUM_FLASH_BASE+ (FLASH_NUM_REGIONS * FLASH_BLOCK_SIZE * CYGNUM_FLASH_INTERLEAVE * CYGNUM_FLASH_SERIES)); + return FLASH_ERR_OK; +} + +//---------------------------------------------------------------------------- +// Map a hardware status to a package error +int +flash_hwr_map_error(int e) +{ + return e; +} + + +//---------------------------------------------------------------------------- +// See if a range of FLASH addresses overlaps currently running code +bool +flash_code_overlaps(void *start, void *end) +{ + extern unsigned char _stext[], _etext[]; + + return ((((unsigned long)&_stext >= (unsigned long)start) && + ((unsigned long)&_stext < (unsigned long)end)) || + (((unsigned long)&_etext >= (unsigned long)start) && + ((unsigned long)&_etext < (unsigned long)end))); +} + +//---------------------------------------------------------------------------- +// Flash Query +// +// Only reads the manufacturer and part number codes for the first +// device(s) in series. It is assumed that any devices in series +// will be of the same type. + +void +flash_query(void* data) +{ + volatile flash_data_t *ROM; + flash_data_t* id = (flash_data_t*) data; + int i; + + ROM = (volatile flash_data_t*) CYGNUM_FLASH_BASE; + + ROM[FLASH_Setup_Addr1] = FLASH_Setup_Code1; + ROM[FLASH_Setup_Addr2] = FLASH_Setup_Code2; + ROM[FLASH_Setup_Addr1] = FLASH_Read_ID; + + // FIXME: 10ms delay + for (i = 10000; i > 0; i--); + + // Manufacturers' code + id[0] = ROM[0]; + // Part number + id[1] = ROM[1]; + + ROM[FLASH_Setup_Addr1] = FLASH_Setup_Code1; + ROM[FLASH_Setup_Addr2] = FLASH_Setup_Code2; + ROM[FLASH_Setup_Addr1] = FLASH_Read_ID_Exit; + + // FIXME: 10ms delay + for (i = 10000; i > 0; i--); +} + +//---------------------------------------------------------------------------- +// Erase Block +int +flash_erase_block(void* block, unsigned int size) +{ + // Erasing is not necessary. Alternatively, use program function + // to write 0xff + return FLASH_ERR_OK; +} + +//---------------------------------------------------------------------------- +// Program Buffer +int +flash_program_buf(void* addr, void* data, int len) +{ + volatile flash_data_t* ROM; + volatile flash_data_t* addr_ptr = (volatile flash_data_t*) addr; + volatile flash_data_t* data_ptr = (volatile flash_data_t*) data; + volatile flash_data_t* addr_ptr2; + volatile flash_data_t* data_ptr2; + + int res = FLASH_ERR_OK; + +#if 0 + CYG_ASSERT((unsigned long)data_ptr & (sizeof(flash_data_t)-1) == 0, + "Data not properly aligned"); + CYG_ASSERT((unsigned long)addr_ptr & (CYGNUM_FLASH_INTERLEAVE*sizeof(flash_data_t)-1) == 0, + "Addr not properly aligned (to first interleaved device)"); +#endif + + while ((FLASH_ERR_OK == res) && (len > 0)) { + int len2, i, timeout; + flash_data_t state, prev_state; + + // Base address of device(s) being programmed. + ROM = (volatile flash_data_t*)((unsigned long)addr & ~(FLASH_DEVICE_SIZE-1)); + + // Program data [byte] - 4 step sequence + ROM[FLASH_Setup_Addr1] = FLASH_Setup_Code1; + ROM[FLASH_Setup_Addr2] = FLASH_Setup_Code2; + ROM[FLASH_Setup_Addr1] = FLASH_Program; + + addr_ptr2 = addr_ptr; + data_ptr2 = data_ptr; + len2 = len; + + // Always load 256 bytes + for (i = 0; i < 256; i++) { + if (len2 > 0) { + *addr_ptr2++ = *data_ptr2++; + len2 -= sizeof(*data_ptr); + } else { + *addr_ptr2++ = FLASH_BlankValue; + } + } + + // Wait for completion (bit 6 stops toggling) + timeout = 5000000; + prev_state = *addr_ptr & FLASH_Busy; + while (true) { + state = *addr_ptr & FLASH_Busy; + if (prev_state == state) { + break; + } + if (--timeout == 0) { + res = FLASH_ERR_DRV_TIMEOUT; + break; + } + prev_state = state; + } + + // Verify loaded data bytes + for (i = 0; (len > 0) && (i < 256) ; i++) { + if (*addr_ptr != *data_ptr) { + // Only update return value if erase operation was OK + if (FLASH_ERR_OK == res) res = FLASH_ERR_DRV_VERIFY; + break; + } + addr_ptr++; + data_ptr++; + len -= sizeof(*data_ptr); + } + } + + + // Ideally, we'd want to return not only the failure code, but also + // the address/device that reported the error. + return res; +} + +#endif // CYGONCE_DEVS_FLASH_ATMEL_AT29CXXXX_INL diff --git a/packages/devs/flash/powerpc/mbx/current/ChangeLog b/packages/devs/flash/powerpc/mbx/current/ChangeLog --- a/packages/devs/flash/powerpc/mbx/current/ChangeLog +++ b/packages/devs/flash/powerpc/mbx/current/ChangeLog @@ -1,3 +1,13 @@ +2001-02-23 Jesper Skov + + * cdl/flash_mbx.cdl: Use new generic AMD driver. + * src/flash.h: [deleted] + * src/flash_erase_block.c: [deleted] + * src/flash_program_buf.c: [deleted] + * src/flash_query.c: [deleted] + * src/mbx_flash.c: [deleted] + * src/powerpc_mbx_flash.c: [added] + 2000-12-05 Jonathan Larmour * src/mbx_flash.c (flash_code_overlaps): Define stext/etext diff --git a/packages/devs/flash/powerpc/mbx/current/cdl/flash_mbx.cdl b/packages/devs/flash/powerpc/mbx/current/cdl/flash_mbx.cdl --- a/packages/devs/flash/powerpc/mbx/current/cdl/flash_mbx.cdl +++ b/packages/devs/flash/powerpc/mbx/current/cdl/flash_mbx.cdl @@ -49,36 +49,13 @@ cdl_package CYGPKG_DEVS_FLASH_MBX { implements CYGHWR_IO_FLASH_DEVICE - include_dir . - include_files ; # none _exported_ whatsoever - description "FLASH memory device support for Motorola PowerPC/860 MBX boards" - compile mbx_flash.c + compile powerpc_mbx_flash.c - make -priority 1 { - flash_query.o: $(REPOSITORY)/$(PACKAGE)/src/flash_query.c - $(CC) -S $(INCLUDE_PATH) $(CFLAGS) -g0 -msoft-float -mcpu=860 -fno-function-sections $(REPOSITORY)/$(PACKAGE)/src/flash_query.c - echo " .globl flash_query_end" >>flash_query.s - echo "flash_query_end:" >>flash_query.s - $(CC) -c -o flash_query.o flash_query.s - $(AR) rcs $(PREFIX)/lib/libtarget.a flash_query.o + # Arguably this should do in the generic package + # but then there is a logic loop so you can never enable it. + cdl_interface CYGINT_DEVS_FLASH_AMD_AM29XXXXX_REQUIRED { + display "Generic AMD AM29F040 driver required" } - make -priority 1 { - flash_erase_block.o: $(REPOSITORY)/$(PACKAGE)/src/flash_erase_block.c - $(CC) -S $(INCLUDE_PATH) $(CFLAGS) -g0 -msoft-float -mcpu=860 -fno-function-sections $(REPOSITORY)/$(PACKAGE)/src/flash_erase_block.c - echo " .globl flash_erase_block_end" >>flash_erase_block.s - echo "flash_erase_block_end:" >>flash_erase_block.s - $(CC) -c -o flash_erase_block.o flash_erase_block.s - $(AR) rcs $(PREFIX)/lib/libtarget.a flash_erase_block.o - } - - make -priority 1 { - flash_program_buf.o: $(REPOSITORY)/$(PACKAGE)/src/flash_program_buf.c - $(CC) -S $(INCLUDE_PATH) $(CFLAGS) -g0 -msoft-float -mcpu=860 -fno-function-sections $(REPOSITORY)/$(PACKAGE)/src/flash_program_buf.c - echo " .globl flash_program_buf_end" >>flash_program_buf.s - echo "flash_program_buf_end:" >>flash_program_buf.s - $(CC) -c -o flash_program_buf.o flash_program_buf.s - $(AR) rcs $(PREFIX)/lib/libtarget.a flash_program_buf.o - } + implements CYGINT_DEVS_FLASH_AMD_AM29XXXXX_REQUIRED } - diff --git a/packages/devs/flash/powerpc/mbx/current/src/flash.h b/packages/devs/flash/powerpc/mbx/current/src/flash.h deleted file mode 100644 --- a/packages/devs/flash/powerpc/mbx/current/src/flash.h +++ /dev/null @@ -1,63 +0,0 @@ -//========================================================================== -// -// flash.h -// -// Flash programming - device constants, etc. -// -//========================================================================== -//####COPYRIGHTBEGIN#### -// -// ------------------------------------------- -// The contents of this file are subject to the Red Hat eCos Public License -// Version 1.1 (the "License"); you may not use this file except in -// compliance with the License. You may obtain a copy of the License at -// http://www.redhat.com/ -// -// Software distributed under the License is distributed on an "AS IS" -// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the -// License for the specific language governing rights and limitations under -// the License. -// -// The Original Code is eCos - Embedded Configurable Operating System, -// released September 30, 1998. -// -// The Initial Developer of the Original Code is Red Hat. -// Portions created by Red Hat are -// Copyright (C) 1998, 1999, 2000 Red Hat, Inc. -// All Rights Reserved. -// ------------------------------------------- -// -//####COPYRIGHTEND#### -//========================================================================== -//#####DESCRIPTIONBEGIN#### -// -// Author(s): gthomas -// Contributors: gthomas -// Date: 2000-10-20 -// Purpose: -// Description: -// -//####DESCRIPTIONEND#### -// -//========================================================================== - -#ifndef _FLASH_HWR_H_ -#define _FLASH_HWR_H_ - -#define FLASH_Read_ID 0x90 -#define FLASH_Reset 0xFF -#define FLASH_Program 0xA0 -#define FLASH_Block_Erase 0x30 - -#define FLASH_Busy 0x40 // "Toggle" bit -#define FLASH_Err 0x20 - -#define FLASH_Setup_Addr1 0x555 -#define FLASH_Setup_Addr2 0x2AA -#define FLASH_Setup_Code1 0xAA -#define FLASH_Setup_Code2 0x55 -#define FLASH_Setup_Erase 0x80 - -#define FLASH_BLOCK_SIZE 0x10000 - -#endif // _FLASH_HWR_H_ diff --git a/packages/devs/flash/powerpc/mbx/current/src/flash_erase_block.c b/packages/devs/flash/powerpc/mbx/current/src/flash_erase_block.c deleted file mode 100644 --- a/packages/devs/flash/powerpc/mbx/current/src/flash_erase_block.c +++ /dev/null @@ -1,104 +0,0 @@ -//========================================================================== -// -// flash_erase_block.c -// -// Flash programming -// -//========================================================================== -//####COPYRIGHTBEGIN#### -// -// ------------------------------------------- -// The contents of this file are subject to the Red Hat eCos Public License -// Version 1.1 (the "License"); you may not use this file except in -// compliance with the License. You may obtain a copy of the License at -// http://www.redhat.com/ -// -// Software distributed under the License is distributed on an "AS IS" -// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the -// License for the specific language governing rights and limitations under -// the License. -// -// The Original Code is eCos - Embedded Configurable Operating System, -// released September 30, 1998. -// -// The Initial Developer of the Original Code is Red Hat. -// Portions created by Red Hat are -// Copyright (C) 1998, 1999, 2000 Red Hat, Inc. -// All Rights Reserved. -// ------------------------------------------- -// -//####COPYRIGHTEND#### -//========================================================================== -//#####DESCRIPTIONBEGIN#### -// -// Author(s): gthomas -// Contributors: gthomas -// Date: 2000-07-14 -// Purpose: -// Description: -// -//####DESCRIPTIONEND#### -// -//========================================================================== - -#include "flash.h" - -#include -#include -#include - -// -// CAUTION! This code must be copied to RAM before execution. Therefore, -// it must not contain any code which might be position dependent! -// - -int flash_erase_block(volatile unsigned char *block) -{ - volatile unsigned char *ROM; - int timeout = 50000; - int cache_on; - int len, block_size; - int erase_state, new_state; - - HAL_DCACHE_IS_ENABLED(cache_on); - if (cache_on) { - HAL_DCACHE_SYNC(); - HAL_DCACHE_DISABLE(); - } - - ROM = (volatile unsigned long *)((unsigned long)block & 0xFF800000); - - // Erase block - six step sequence - ROM[FLASH_Setup_Addr1] = FLASH_Setup_Code1; - ROM[FLASH_Setup_Addr2] = FLASH_Setup_Code2; - ROM[FLASH_Setup_Addr1] = FLASH_Setup_Erase; - ROM[FLASH_Setup_Addr1] = FLASH_Setup_Code1; - ROM[FLASH_Setup_Addr2] = FLASH_Setup_Code2; - *block = FLASH_Block_Erase; - for (timeout = 50; timeout--; timeout > 0) ; - erase_state = *block & FLASH_Busy; - timeout = 5000000; - while (true) { - new_state = *block; - if ((new_state & FLASH_Busy) == erase_state) break; // "toggle" stopped - erase_state = new_state & FLASH_Busy; - if (new_state & FLASH_Err) break; - if (--timeout == 0) break; - } - - // Restore ROM to "normal" mode - ROM[0] = FLASH_Reset; - - len = FLASH_BLOCK_SIZE; - while (len > 0) { - if (*block++ != 0xFF) break; - len -= sizeof(*block); - } - if (len == 0) new_state = 0; - - if (cache_on) { - HAL_DCACHE_ENABLE(); - } - - return new_state; -} diff --git a/packages/devs/flash/powerpc/mbx/current/src/flash_program_buf.c b/packages/devs/flash/powerpc/mbx/current/src/flash_program_buf.c deleted file mode 100644 --- a/packages/devs/flash/powerpc/mbx/current/src/flash_program_buf.c +++ /dev/null @@ -1,103 +0,0 @@ -//========================================================================== -// -// flash_program_buf.c -// -// Flash programming -// -//========================================================================== -//####COPYRIGHTBEGIN#### -// -// ------------------------------------------- -// The contents of this file are subject to the Red Hat eCos Public License -// Version 1.1 (the "License"); you may not use this file except in -// compliance with the License. You may obtain a copy of the License at -// http://www.redhat.com/ -// -// Software distributed under the License is distributed on an "AS IS" -// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the -// License for the specific language governing rights and limitations under -// the License. -// -// The Original Code is eCos - Embedded Configurable Operating System, -// released September 30, 1998. -// -// The Initial Developer of the Original Code is Red Hat. -// Portions created by Red Hat are -// Copyright (C) 1998, 1999, 2000 Red Hat, Inc. -// All Rights Reserved. -// ------------------------------------------- -// -//####COPYRIGHTEND#### -//========================================================================== -//#####DESCRIPTIONBEGIN#### -// -// Author(s): gthomas -// Contributors: gthomas -// Date: 2000-07-14 -// Purpose: -// Description: -// -//####DESCRIPTIONEND#### -// -//========================================================================== - -#include "flash.h" - -#include -#include -#include - -// -// CAUTION! This code must be copied to RAM before execution. Therefore, -// it must not contain any code which might be position dependent! -// - -int -flash_program_buf(volatile unsigned char *addr, unsigned char *data, int len) -{ - volatile unsigned char *ROM; - int timeout = 50000; - int cache_on; - int erase_state, new_state; - - HAL_DCACHE_IS_ENABLED(cache_on); - if (cache_on) { - HAL_DCACHE_SYNC(); - HAL_DCACHE_DISABLE(); - } - - ROM = (volatile unsigned long *)((unsigned long)addr & 0xFF800000); - - while (len > 0) { - // Program data [byte] - 4 step sequence - ROM[FLASH_Setup_Addr1] = FLASH_Setup_Code1; - ROM[FLASH_Setup_Addr2] = FLASH_Setup_Code2; - ROM[FLASH_Setup_Addr1] = FLASH_Program; - *addr = *data; - for (timeout = 50; timeout--; timeout > 0) ; - erase_state = *addr & FLASH_Busy; - while (true) { - new_state = *addr; - if ((new_state & FLASH_Busy) == erase_state) break; // "toggle" stopped - erase_state = new_state & FLASH_Busy; - if (new_state & FLASH_Err) break; - if (--timeout == 0) break; - } - ROM[0] = FLASH_Reset; - if (*addr++ != *data++) { - new_state = 0xFF; - break; - } - len -= sizeof(*data); - } - if (len == 0) new_state = 0; // Success - - // Restore ROM to "normal" mode - bad: - ROM[0] = FLASH_Reset; - - if (cache_on) { - HAL_DCACHE_ENABLE(); - } - return new_state; -} diff --git a/packages/devs/flash/powerpc/mbx/current/src/flash_query.c b/packages/devs/flash/powerpc/mbx/current/src/flash_query.c deleted file mode 100644 --- a/packages/devs/flash/powerpc/mbx/current/src/flash_query.c +++ /dev/null @@ -1,87 +0,0 @@ -//========================================================================== -// -// flash_query.c -// -// Flash programming - query device -// -//========================================================================== -//####COPYRIGHTBEGIN#### -// -// ------------------------------------------- -// The contents of this file are subject to the Red Hat eCos Public License -// Version 1.1 (the "License"); you may not use this file except in -// compliance with the License. You may obtain a copy of the License at -// http://www.redhat.com/ -// -// Software distributed under the License is distributed on an "AS IS" -// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the -// License for the specific language governing rights and limitations under -// the License. -// -// The Original Code is eCos - Embedded Configurable Operating System, -// released September 30, 1998. -// -// The Initial Developer of the Original Code is Red Hat. -// Portions created by Red Hat are -// Copyright (C) 1998, 1999, 2000 Red Hat, Inc. -// All Rights Reserved. -// ------------------------------------------- -// -//####COPYRIGHTEND#### -//========================================================================== -//#####DESCRIPTIONBEGIN#### -// -// Author(s): gthomas -// Contributors: gthomas -// Date: 2000-10-20 -// Purpose: -// Description: -// -//####DESCRIPTIONEND#### -// -//========================================================================== - -#include "flash.h" - -#include -#include -#include -#include CYGHWR_MEMORY_LAYOUT_H - -// -// CAUTION! This code must be copied to RAM before execution. Therefore, -// it must not contain any code which might be position dependent! -// - -int -flash_query(unsigned char *data) -{ - volatile unsigned char *ROM; - int cnt; - int cache_on; - - HAL_DCACHE_IS_ENABLED(cache_on); - if (cache_on) { - HAL_DCACHE_SYNC(); - HAL_DCACHE_DISABLE(); - } - - ROM = (volatile unsigned char *)0xFE000000; - - ROM[FLASH_Setup_Addr1] = FLASH_Setup_Code1; - ROM[FLASH_Setup_Addr2] = FLASH_Setup_Code2; - ROM[FLASH_Setup_Addr1] = FLASH_Read_ID; - - // Manufacturers' code - *data++ = ROM[0x00]; - // Part number - *data++ = ROM[0x01]; - - ROM[0] = FLASH_Reset; - - if (cache_on) { - HAL_DCACHE_ENABLE(); - } - - return 0; -} diff --git a/packages/devs/flash/powerpc/mbx/current/src/mbx_flash.c b/packages/devs/flash/powerpc/mbx/current/src/mbx_flash.c deleted file mode 100644 --- a/packages/devs/flash/powerpc/mbx/current/src/mbx_flash.c +++ /dev/null @@ -1,112 +0,0 @@ -//========================================================================== -// -// mbx_flash.c -// -// Flash programming -// -//========================================================================== -//####COPYRIGHTBEGIN#### -// -// ------------------------------------------- -// The contents of this file are subject to the Red Hat eCos Public License -// Version 1.1 (the "License"); you may not use this file except in -// compliance with the License. You may obtain a copy of the License at -// http://www.redhat.com/ -// -// Software distributed under the License is distributed on an "AS IS" -// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the -// License for the specific language governing rights and limitations under -// the License. -// -// The Original Code is eCos - Embedded Configurable Operating System, -// released September 30, 1998. -// -// The Initial Developer of the Original Code is Red Hat. -// Portions created by Red Hat are -// Copyright (C) 1998, 1999, 2000 Red Hat, Inc. -// All Rights Reserved. -// ------------------------------------------- -// -//####COPYRIGHTEND#### -//========================================================================== -//#####DESCRIPTIONBEGIN#### -// -// Author(s): gthomas -// Contributors: gthomas -// Date: 2000-10-20 -// Purpose: -// Description: -// -//####DESCRIPTIONEND#### -// -//========================================================================== - -#include -#include -#include - -#define _FLASH_PRIVATE_ -#include - -#include "flash.h" - -int -flash_hwr_init(void) -{ - int region_size = 0x10000; - int num_regions = 8; - extern char flash_query, flash_query_end; - typedef int code_fun(unsigned char *); - code_fun *_flash_query; - int code_len, stat; - unsigned char info[4]; - - // Copy 'program' code to RAM for execution - code_len = (unsigned long)&flash_query_end - (unsigned long)&flash_query; - _flash_query = (code_fun *)flash_info.work_space; - memcpy(_flash_query, &flash_query, code_len); - HAL_DCACHE_SYNC(); // Should guarantee this code will run - - stat = (*_flash_query)(info); -#if 0 - printf("stat = %x\n", stat); - dump_buf(info, sizeof(info)); -#endif - - // Hard wired for now - flash_info.block_size = region_size; - flash_info.blocks = num_regions; - flash_info.start = (void *)0xFE000000; - flash_info.end = (void *)(0xFE000000+(num_regions*region_size)); - return FLASH_ERR_OK; -} - -// Map a hardware status to a package error -int -flash_hwr_map_error(int err) -{ - if (err & 0x007E007E) { - printf("Err = %x\n", err); - if (err & 0x00100010) { - return FLASH_ERR_PROGRAM; - } else - if (err & 0x00200020) { - return FLASH_ERR_ERASE; - } else - return FLASH_ERR_HWR; // FIXME - } else { - return FLASH_ERR_OK; - } -} - -// See if a range of FLASH addresses overlaps currently running code -bool -flash_code_overlaps(void *start, void *end) -{ - extern char _stext[], _etext[]; - - return ((((unsigned long)&_stext >= (unsigned long)start) && - ((unsigned long)&_stext < (unsigned long)end)) || - (((unsigned long)&_etext >= (unsigned long)start) && - ((unsigned long)&_etext < (unsigned long)end))); -} diff --git a/packages/devs/flash/powerpc/mbx/current/src/powerpc_mbx_flash.c b/packages/devs/flash/powerpc/mbx/current/src/powerpc_mbx_flash.c new file mode 100644 --- /dev/null +++ b/packages/devs/flash/powerpc/mbx/current/src/powerpc_mbx_flash.c @@ -0,0 +1,61 @@ +//========================================================================== +// +// powerpc_mbx_flash.c +// +// Flash programming for Atmel device on POWERPC MBX board +// +//========================================================================== +//####COPYRIGHTBEGIN#### +// +// ------------------------------------------- +// The contents of this file are subject to the Red Hat eCos Public License +// Version 1.1 (the "License"); you may not use this file except in +// compliance with the License. You may obtain a copy of the License at +// http://www.redhat.com/ +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +// License for the specific language governing rights and limitations under +// the License. +// +// The Original Code is eCos - Embedded Configurable Operating System, +// released September 30, 1998. +// +// The Initial Developer of the Original Code is Red Hat. +// Portions created by Red Hat are +// Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc. +// All Rights Reserved. +// ------------------------------------------- +// +//####COPYRIGHTEND#### +//========================================================================== +//#####DESCRIPTIONBEGIN#### +// +// Author(s): jskov +// Contributors: jskov +// Date: 2001-02-22 +// Purpose: +// Description: +// +//####DESCRIPTIONEND#### +// +//========================================================================== + +//-------------------------------------------------------------------------- +// Device properties + +// We use the single AM29F040B on the MBX board. +#define CYGPKG_DEVS_FLASH_AMD_AM29F040B +#define CYGNUM_FLASH_INTERLEAVE (1) +#define CYGNUM_FLASH_SERIES (1) +#define CYGNUM_FLASH_BASE (0xfe000000u) + +//-------------------------------------------------------------------------- +// Platform specific extras + +//-------------------------------------------------------------------------- +// Now include the driver code. +#include "cyg/io/flash_am29xxxxx.inl" + +// ------------------------------------------------------------------------ +// EOF powerpc_mbx_flash.c diff --git a/packages/devs/serial/sh/sci/current/ChangeLog b/packages/devs/serial/sh/sci/current/ChangeLog --- a/packages/devs/serial/sh/sci/current/ChangeLog +++ b/packages/devs/serial/sh/sci/current/ChangeLog @@ -1,3 +1,8 @@ +2001-02-26 Jesper Skov + + * src/sh_sci_serial.c (sh_serial_er_DSR): Enable interrupts on + exit. + 2000-09-26 Jesper Skov * cdl/ser_sh_sci.cdl: Minor hack to allow both SCI and SCIF diff --git a/packages/devs/serial/sh/sci/current/src/sh_sci_serial.c b/packages/devs/serial/sh/sci/current/src/sh_sci_serial.c --- a/packages/devs/serial/sh/sci/current/src/sh_sci_serial.c +++ b/packages/devs/serial/sh/sci/current/src/sh_sci_serial.c @@ -492,7 +492,7 @@ sh_serial_er_ISR(cyg_vector_t vector, cy HAL_READ_UINT8(sh_chan->ctrl_base+SCI_SCSCR, _scr); _scr &= ~CYGARC_REG_SCSCR_RIE; // mask rx interrupts HAL_WRITE_UINT8(sh_chan->ctrl_base+SCI_SCSCR, _scr); - return CYG_ISR_CALL_DSR; // Cause DSR to be run + return CYG_ISR_CALL_DSR; // Cause DSR to be run } // Serial I/O - high level error interrupt handler (DSR) @@ -501,7 +501,7 @@ sh_serial_er_DSR(cyg_vector_t vector, cy { serial_channel *chan = (serial_channel *)data; sh_sci_info *sh_chan = (sh_sci_info *)chan->dev_priv; - cyg_uint8 _ssr, _ssr2; + cyg_uint8 _ssr, _ssr2, _scr; HAL_READ_UINT8(sh_chan->ctrl_base+SCI_SCSSR, _ssr); _ssr2 = CYGARC_REG_SCSSR_CLEARMASK; @@ -519,6 +519,10 @@ sh_serial_er_DSR(cyg_vector_t vector, cy sh_serial_error_per++; } HAL_WRITE_UINT8(sh_chan->ctrl_base+SCI_SCSSR, _ssr2); + + HAL_READ_UINT8(sh_chan->ctrl_base+SCI_SCSCR, _scr); + _scr |= CYGARC_REG_SCSCR_RIE; // unmask rx interrupts + HAL_WRITE_UINT8(sh_chan->ctrl_base+SCI_SCSCR, _scr); } #endif // ifdef CYGDAT_IO_SERIAL_SH_SCI_INL diff --git a/packages/devs/serial/sh/scif/current/ChangeLog b/packages/devs/serial/sh/scif/current/ChangeLog --- a/packages/devs/serial/sh/scif/current/ChangeLog +++ b/packages/devs/serial/sh/scif/current/ChangeLog @@ -1,3 +1,8 @@ +2001-02-26 Jesper Skov + + * src/sh_scif_serial.c (sh3_scif_er_DSR): Enable interrupts on + exit. Clear ER flag. + 2000-10-23 Jesper Skov * src/sh_scif_serial.c: Include cyg_ass.h diff --git a/packages/devs/serial/sh/scif/current/src/sh_scif_serial.c b/packages/devs/serial/sh/scif/current/src/sh_scif_serial.c --- a/packages/devs/serial/sh/scif/current/src/sh_scif_serial.c +++ b/packages/devs/serial/sh/scif/current/src/sh_scif_serial.c @@ -808,9 +808,9 @@ sh3_scif_er_ISR(cyg_vector_t vector, cyg cyg_uint8 _scr; HAL_READ_UINT8(sh_chan->ctrl_base+SCIF_SCSCR, _scr); - _scr &= ~CYGARC_REG_SCSCR2_RIE; // mask rx interrupts + _scr &= ~CYGARC_REG_SCSCR2_RIE; // mask rx interrupts HAL_WRITE_UINT8(sh_chan->ctrl_base+SCIF_SCSCR, _scr); - return CYG_ISR_CALL_DSR; // Cause DSR to be run + return CYG_ISR_CALL_DSR; // Cause DSR to be run } // Serial I/O - high level error interrupt handler (DSR) @@ -820,22 +820,25 @@ sh3_scif_er_DSR(cyg_vector_t vector, cyg serial_channel *chan = (serial_channel *)data; sh3_scif_info *sh_chan = (sh3_scif_info *)chan->dev_priv; cyg_uint16 _ssr, _ssr2; + cyg_uint8 _scr; #ifdef CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS cyg_serial_line_status_t stat; #endif HAL_READ_UINT16(sh_chan->ctrl_base+SCIF_SCSSR, _ssr); - _ssr2 = CYGARC_REG_SCSSR_CLEARMASK; + _ssr2 = CYGARC_REG_SCSSR2_CLEARMASK; + // Clear the ER bit + _ssr2 &= ~CYGARC_REG_SCSSR2_ER; if (_ssr & CYGARC_REG_SCSSR2_FER) { - _ssr2 &= ~CYGARC_REG_SCSSR2_FER; + // _ssr2 &= ~CYGARC_REG_SCSSR2_FER; // FER is read-only #ifdef CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS stat.which = CYGNUM_SERIAL_STATUS_FRAMEERR; (chan->callbacks->indicate_status)(chan, &stat ); #endif } if (_ssr & CYGARC_REG_SCSSR2_PER) { - _ssr2 &= ~CYGARC_REG_SCSSR2_PER; + // _ssr2 &= ~CYGARC_REG_SCSSR2_PER; // PER is read-only #ifdef CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS stat.which = CYGNUM_SERIAL_STATUS_PARITYERR; (chan->callbacks->indicate_status)(chan, &stat ); @@ -850,6 +853,10 @@ sh3_scif_er_DSR(cyg_vector_t vector, cyg #endif } HAL_WRITE_UINT16(sh_chan->ctrl_base+SCIF_SCSSR, _ssr2); + + HAL_READ_UINT8(sh_chan->ctrl_base+SCIF_SCSCR, _scr); + _scr |= CYGARC_REG_SCSCR2_RIE; // unmask rx interrupts + HAL_WRITE_UINT8(sh_chan->ctrl_base+SCIF_SCSCR, _scr); } #endif // ifdef CYGDAT_IO_SERIAL_SH_SCIF_INL diff --git a/packages/ecos.db b/packages/ecos.db --- a/packages/ecos.db +++ b/packages/ecos.db @@ -122,6 +122,36 @@ package CYGPKG_DEVS_FLASH_INTEL_BOOTBLOC This package contains hardware support for Intel boot block flash memory." } +package CYGPKG_DEVS_FLASH_AMD_AM29XXXXX { + alias { "Support for AMD AM29xxxxx flash memory" flash_amd_am29xxxxx } + directory devs/flash/amd/am29xxxxx + script flash_amd_am29xxxxx.cdl + hardware + description " + This package contains hardware support for AMD AM29xxxxx + flash memory devices." +} + +package CYGPKG_DEVS_FLASH_ATMEL_AT29CXXXX { + alias { "Support for Atmel AT29Cxxxx flash memory" flash_atmel_at29cxxxx } + directory devs/flash/atmel/at29cxxxx + script flash_atmel_at29cxxxx.cdl + hardware + description " + This package contains hardware support for Atmel AT29Cxxxx + flash memory devices." +} + +package CYGPKG_DEVS_FLASH_ARM_PID { + alias { "Support for flash memory on ARM/PID board" flash_arm_pid } + directory devs/flash/arm/pid + script flash_arm_pid.cdl + hardware + description " + This package contains hardware support for flash memory + on the ARM PID platform." +} + package CYGPKG_DEVS_FLASH_EBSA285 { alias { "FLASH memory support for StrongARM EBSA-285" flash_ebsa285 } directory devs/flash/arm/ebsa285 @@ -1354,6 +1384,8 @@ target pid { CYGPKG_HAL_ARM_PID CYGPKG_IO_SERIAL_GENERIC_16X5X CYGPKG_IO_SERIAL_ARM_PID + CYGPKG_DEVS_FLASH_ARM_PID + CYGPKG_DEVS_FLASH_ATMEL_AT29CXXXX } description " The pid target provides the packages needed to run eCos on an ARM @@ -1588,6 +1620,7 @@ target mbx { CYGPKG_IO_SERIAL_POWERPC_QUICC_SMC CYGPKG_DEVS_ETH_POWERPC_QUICC CYGPKG_DEVS_FLASH_MBX + CYGPKG_DEVS_FLASH_AMD_AM29XXXXX } description " The mbx target provides the packages needed to run diff --git a/packages/hal/arm/arch/current/ChangeLog b/packages/hal/arm/arch/current/ChangeLog --- a/packages/hal/arm/arch/current/ChangeLog +++ b/packages/hal/arm/arch/current/ChangeLog @@ -1,3 +1,20 @@ +2001-02-24 Gary Thomas + + * include/hal_mmu.h (MMU_Control_X): Add - used by Win/CE. + + * src/vectors.S (__exception_handlers): Change RESET vector + to use jump for ROM based applications [safer]. + (warm_reset): Only do 'swi' contortions when starting RAM + applications from Angel. + +2001-02-22 Jesper Skov + + * src/arm.ld: Relocate .2ram sections to the .data section. + +2001-02-20 Jesper Skov + + * cdl/hal_arm.cdl: Added CYGBLD_ARM_ENABLE_THUMB_INTERWORK. + 2001-02-13 Gary Thomas * src/vectors.S (handle_IRQ_or_FIQ): Change behaviour for diff --git a/packages/hal/arm/arch/current/cdl/hal_arm.cdl b/packages/hal/arm/arch/current/cdl/hal_arm.cdl --- a/packages/hal/arm/arch/current/cdl/hal_arm.cdl +++ b/packages/hal/arm/arch/current/cdl/hal_arm.cdl @@ -91,6 +91,19 @@ cdl_package CYGPKG_HAL_ARM { Enable use of the Thumb instruction set." } + # Note that when building a ROM monitor we include Thumb + # interworking in order to support Thumb applications running + # under a ARM ROM monitor. + cdl_option CYGBLD_ARM_ENABLE_THUMB_INTERWORK { + display "Enable Thumb interworking compiler option" + default_value { (CYGHWR_THUMB || CYGSEM_HAL_ROM_MONITOR) } + description " + This option controls the use of -mthumb-interwork in the + compiler flags. It defaults enabled in Thumb or ROM monitor + configurations, but can be overridden for reduced memory + footprint where interworking is not a requirement." + } + cdl_option CYGHWR_HAL_ARM_BIGENDIAN { display "Use big-endian mode" default_value 0 diff --git a/packages/hal/arm/arch/current/include/hal_mmu.h b/packages/hal/arm/arch/current/include/hal_mmu.h --- a/packages/hal/arm/arch/current/include/hal_mmu.h +++ b/packages/hal/arm/arch/current/include/hal_mmu.h @@ -98,6 +98,7 @@ #define MMU_Control_S 0x100 // Enable system protection #define MMU_Control_R 0x200 // Enable ROM protection #define MMU_Control_I 0x1000 // Enable Instruction cache +#define MMU_Control_X 0x2000 // Set interrupt vectors at 0xFFFF0000 #define MMU_Control_Init (MMU_Control_P|MMU_Control_D|MMU_Control_L) //----------------------------------------------------------------------------- diff --git a/packages/hal/arm/arch/current/src/arm.ld b/packages/hal/arm/arch/current/src/arm.ld --- a/packages/hal/arm/arch/current/src/arm.ld +++ b/packages/hal/arm/arch/current/src/arm.ld @@ -148,7 +148,8 @@ OUTPUT_FORMAT(elf32-bigarm) . = ALIGN (4); \ __CTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.ctors*))) __CTOR_END__ = ABSOLUTE (.); \ __DTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.dtors*))) __DTOR_END__ = ABSOLUTE (.); \ - *(.dynamic) *(.sdata*) *(.sbss*) } \ + *(.dynamic) *(.sdata*) *(.sbss*) \ + . = ALIGN (4); *(.2ram.*) } \ > _region_ \ __rom_data_start = LOADADDR (.data); \ __ram_data_end = .; PROVIDE (__ram_data_end = .); _edata = .; PROVIDE (edata = .); \ diff --git a/packages/hal/arm/arch/current/src/vectors.S b/packages/hal/arm/arch/current/src/vectors.S --- a/packages/hal/arm/arch/current/src/vectors.S +++ b/packages/hal/arm/arch/current/src/vectors.S @@ -119,6 +119,7 @@ // // But usually it's not defined, so the behaviour is the obvious. +#ifndef UNMAPPED #ifdef CYGHWR_HAL_ARM_HAS_MMU # ifndef CYGHWR_HAL_ROM_VADDR # define CYGHWR_HAL_ROM_VADDR __exception_handlers @@ -127,6 +128,7 @@ #else # define UNMAPPED(x) (x) #endif +#endif #define UNMAPPED_PTR(name) \ .##name: .word UNMAPPED(name) @@ -157,7 +159,13 @@ .section ".vectors","ax" .global __exception_handlers __exception_handlers: +#if defined(CYG_HAL_STARTUP_ROM) +// Assumption: ROM code has these vectors at the hardware reset address. +// A simple jump removes any address-space dependencies [i.e. safer] + b reset_vector // 0x00 +#else ldr pc,.reset_vector // 0x00 +#endif ldr pc,.undefined_instruction // 0x04 ldr pc,.software_interrupt // 0x08 start && software int ldr pc,.abort_prefetch // 0x0C @@ -178,7 +186,9 @@ PTR(abort_data) .word 0 // 0x34 PTR(IRQ) // 0x38 PTR(FIQ) // 0x3c +#ifdef CYGSEM_HAL_ARM_PID_ANGEL_BOOT PTR(start) // This is copied to 0x28 for bootup // 0x40 +#endif // location 0x40 is used for storing DRAM size if known // for some platforms. @@ -257,7 +267,7 @@ warm_reset: str r2,[r0,#0x08] -#if defined(CYG_HAL_STARTUP_RAM) +#if defined(CYGSEM_HAL_ARM_PID_ANGEL_BOOT) // Ugly hack to get into supervisor mode ldr r2,[r1,#0x40] str r2,[r0,#0x28] diff --git a/packages/hal/arm/cma230/current/ChangeLog b/packages/hal/arm/cma230/current/ChangeLog --- a/packages/hal/arm/cma230/current/ChangeLog +++ b/packages/hal/arm/cma230/current/ChangeLog @@ -1,3 +1,10 @@ +2001-02-20 Jesper Skov + + * cdl/hal_arm_cma230.cdl: Also enable -mthumb-interwork when + building ROM monitors (or calls from Thumb code would die on + return). + Reworked a bit. + 2001-02-13 Gary Thomas * src/cma230_misc.c (hal_IRQ_handler): diff --git a/packages/hal/arm/cma230/current/cdl/hal_arm_cma230.cdl b/packages/hal/arm/cma230/current/cdl/hal_arm_cma230.cdl --- a/packages/hal/arm/cma230/current/cdl/hal_arm_cma230.cdl +++ b/packages/hal/arm/cma230/current/cdl/hal_arm_cma230.cdl @@ -180,7 +180,7 @@ cdl_package CYGPKG_HAL_ARM_CMA230 { display "Global compiler flags" flavor data no_define - default_value { CYGHWR_THUMB ? "-mthumb-interwork -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" : + default_value { CYGBLD_ARM_ENABLE_THUMB_INTERWORK ? "-mthumb-interwork -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" : "-mcpu=arm7tdmi -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" } description " This option controls the global compiler flags which are used to @@ -214,7 +214,7 @@ cdl_package CYGPKG_HAL_ARM_CMA230 { display "Global linker flags" flavor data no_define - default_value { CYGHWR_THUMB ? "-g -nostdlib -Wl,--gc-sections -Wl,-static -mthumb-interwork" : + default_value { CYGBLD_ARM_ENABLE_THUMB_INTERWORK ? "-g -nostdlib -Wl,--gc-sections -Wl,-static -mthumb-interwork" : "-mcpu=arm7tdmi -g -nostdlib -Wl,--gc-sections -Wl,-static" } description " This option controls the global linker flags. Individual diff --git a/packages/hal/arm/ebsa285/current/ChangeLog b/packages/hal/arm/ebsa285/current/ChangeLog --- a/packages/hal/arm/ebsa285/current/ChangeLog +++ b/packages/hal/arm/ebsa285/current/ChangeLog @@ -1,3 +1,14 @@ +2001-02-23 Jesper Skov + + * include/hal_cache.h (HAL_FLASH_CACHES_OLD_MACROS): This platform + uses deprecated cache handling macros. + +2001-02-23 Gary Thomas + + * misc/redboot_ROM.ecm: Renamed from redboot_ROM.cfg + + * misc/redboot_RAM.ecm: Renamed from redboot_RAM.cfg + 2001-02-13 Gary Thomas * src/ebsa285_misc.c (hal_IRQ_handler): diff --git a/packages/hal/arm/ebsa285/current/include/hal_cache.h b/packages/hal/arm/ebsa285/current/include/hal_cache.h --- a/packages/hal/arm/ebsa285/current/include/hal_cache.h +++ b/packages/hal/arm/ebsa285/current/include/hal_cache.h @@ -53,6 +53,19 @@ //#include //----------------------------------------------------------------------------- +// FIXME: This definition forces the IO flash driver to use a +// known-good procedure for fiddling flash before calling flash device +// driver functions. The procedure breaks on other platform/driver +// combinations though so is depricated. Hence this definition. +// +// If you work on this target, please try to remove this definition +// and verify that the flash driver still works (both from RAM and +// flash). If it does, remove the definition and this comment for good +// [and the old macro definition if this happens to be the last client +// of that code]. +#define HAL_FLASH_CACHES_OLD_MACROS + +//----------------------------------------------------------------------------- // Cache dimensions #define HAL_DCACHE_SIZE 0x4000 // Size of data cache in bytes diff --git a/packages/hal/arm/ebsa285/current/misc/redboot_RAM.cfg b/packages/hal/arm/ebsa285/current/misc/redboot_RAM.cfg deleted file mode 100644 --- a/packages/hal/arm/ebsa285/current/misc/redboot_RAM.cfg +++ /dev/null @@ -1,79 +0,0 @@ -cdl_savefile_version 1; -cdl_savefile_command cdl_savefile_version {}; -cdl_savefile_command cdl_savefile_command {}; -cdl_savefile_command cdl_configuration { description hardware template package }; -cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; - -cdl_configuration eCos { - description "" ; - hardware ebsa285 ; - template redboot ; - package -hardware CYGPKG_HAL_ARM current ; - package -hardware CYGPKG_HAL_ARM_EBSA285 current ; - package -hardware CYGPKG_IO_PCI current ; - package -hardware CYGPKG_DEVS_ETH_ARM_EBSA285 current ; - package -hardware CYGPKG_IO_SERIAL_ARM_EBSA285 current ; - package -hardware CYGPKG_DEVICES_WATCHDOG_ARM_EBSA285 current ; - package -hardware CYGPKG_DEVS_FLASH_EBSA285 current ; - package -template CYGPKG_HAL current ; - package -template CYGPKG_INFRA current ; - package -template CYGPKG_REDBOOT current ; - package CYGPKG_IO_FLASH current ; - package CYGPKG_IO_ETH_DRIVERS current ; -}; - -cdl_option CYGBLD_BUILD_GDB_STUBS { - user_value 0 -}; - -cdl_option CYGDBG_DEVS_ETH_ARM_EBSA285_CHATTER { - user_value 0 -}; - -cdl_option CYGNUM_DEVS_ETH_ARM_EBSA285_DEV_COUNT { - user_value 1 -}; - -cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { - user_value 0 -}; - -cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { - inferred_value 0 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { - inferred_value 0 -}; - -cdl_option CYGSEM_HAL_VIRTUAL_VECTOR_DIAG { - user_value 1 -}; - -cdl_option CYGSEM_HAL_USE_ROM_MONITOR { - inferred_value 0 0 -}; - -cdl_component CYG_HAL_STARTUP { - user_value RAM -}; - -cdl_component CYGBLD_BUILD_REDBOOT { - user_value 1 -}; - -cdl_option CYGSEM_REDBOOT_BSP_SYSCALLS { - inferred_value 1 -}; - diff --git a/packages/hal/arm/ebsa285/current/misc/redboot_RAM.ecm b/packages/hal/arm/ebsa285/current/misc/redboot_RAM.ecm new file mode 100644 --- /dev/null +++ b/packages/hal/arm/ebsa285/current/misc/redboot_RAM.ecm @@ -0,0 +1,79 @@ +cdl_savefile_version 1; +cdl_savefile_command cdl_savefile_version {}; +cdl_savefile_command cdl_savefile_command {}; +cdl_savefile_command cdl_configuration { description hardware template package }; +cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; + +cdl_configuration eCos { + description "" ; + hardware ebsa285 ; + template redboot ; + package -hardware CYGPKG_HAL_ARM current ; + package -hardware CYGPKG_HAL_ARM_EBSA285 current ; + package -hardware CYGPKG_IO_PCI current ; + package -hardware CYGPKG_DEVS_ETH_ARM_EBSA285 current ; + package -hardware CYGPKG_IO_SERIAL_ARM_EBSA285 current ; + package -hardware CYGPKG_DEVICES_WATCHDOG_ARM_EBSA285 current ; + package -hardware CYGPKG_DEVS_FLASH_EBSA285 current ; + package -template CYGPKG_HAL current ; + package -template CYGPKG_INFRA current ; + package -template CYGPKG_REDBOOT current ; + package CYGPKG_IO_FLASH current ; + package CYGPKG_IO_ETH_DRIVERS current ; +}; + +cdl_option CYGBLD_BUILD_GDB_STUBS { + user_value 0 +}; + +cdl_option CYGDBG_DEVS_ETH_ARM_EBSA285_CHATTER { + user_value 0 +}; + +cdl_option CYGNUM_DEVS_ETH_ARM_EBSA285_DEV_COUNT { + user_value 1 +}; + +cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { + inferred_value 0 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { + inferred_value 0 +}; + +cdl_option CYGSEM_HAL_VIRTUAL_VECTOR_DIAG { + user_value 1 +}; + +cdl_option CYGSEM_HAL_USE_ROM_MONITOR { + inferred_value 0 0 +}; + +cdl_component CYG_HAL_STARTUP { + user_value RAM +}; + +cdl_component CYGBLD_BUILD_REDBOOT { + user_value 1 +}; + +cdl_option CYGSEM_REDBOOT_BSP_SYSCALLS { + inferred_value 1 +}; + diff --git a/packages/hal/arm/ebsa285/current/misc/redboot_ROM.cfg b/packages/hal/arm/ebsa285/current/misc/redboot_ROM.cfg deleted file mode 100644 --- a/packages/hal/arm/ebsa285/current/misc/redboot_ROM.cfg +++ /dev/null @@ -1,83 +0,0 @@ -cdl_savefile_version 1; -cdl_savefile_command cdl_savefile_version {}; -cdl_savefile_command cdl_savefile_command {}; -cdl_savefile_command cdl_configuration { description hardware template package }; -cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; - -cdl_configuration eCos { - description "" ; - hardware ebsa285 ; - template redboot ; - package -hardware CYGPKG_HAL_ARM current ; - package -hardware CYGPKG_HAL_ARM_EBSA285 current ; - package -hardware CYGPKG_IO_PCI current ; - package -hardware CYGPKG_DEVS_ETH_ARM_EBSA285 current ; - package -hardware CYGPKG_IO_SERIAL_ARM_EBSA285 current ; - package -hardware CYGPKG_DEVICES_WATCHDOG_ARM_EBSA285 current ; - package -hardware CYGPKG_DEVS_FLASH_EBSA285 current ; - package -template CYGPKG_HAL current ; - package -template CYGPKG_INFRA current ; - package -template CYGPKG_REDBOOT current ; - package CYGPKG_IO_FLASH current ; - package CYGPKG_IO_ETH_DRIVERS current ; -}; - -cdl_option CYGBLD_BUILD_GDB_STUBS { - user_value 0 -}; - -cdl_option CYGDBG_DEVS_ETH_ARM_EBSA285_CHATTER { - user_value 0 -}; - -cdl_option CYGNUM_DEVS_ETH_ARM_EBSA285_DEV_COUNT { - user_value 1 -}; - -cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { - user_value 0 -}; - -cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { - inferred_value 0 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { - inferred_value 0 -}; - -cdl_option CYGSEM_HAL_VIRTUAL_VECTOR_DIAG { - user_value 1 -}; - -cdl_option CYGSEM_HAL_ROM_MONITOR { - user_value 1 -}; - -cdl_option CYGSEM_HAL_USE_ROM_MONITOR { - inferred_value 0 0 -}; - -cdl_component CYG_HAL_STARTUP { - user_value ROM -}; - -cdl_component CYGBLD_BUILD_REDBOOT { - user_value 1 -}; - -cdl_option CYGSEM_REDBOOT_BSP_SYSCALLS { - inferred_value 1 -}; - diff --git a/packages/hal/arm/ebsa285/current/misc/redboot_ROM.ecm b/packages/hal/arm/ebsa285/current/misc/redboot_ROM.ecm new file mode 100644 --- /dev/null +++ b/packages/hal/arm/ebsa285/current/misc/redboot_ROM.ecm @@ -0,0 +1,83 @@ +cdl_savefile_version 1; +cdl_savefile_command cdl_savefile_version {}; +cdl_savefile_command cdl_savefile_command {}; +cdl_savefile_command cdl_configuration { description hardware template package }; +cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; + +cdl_configuration eCos { + description "" ; + hardware ebsa285 ; + template redboot ; + package -hardware CYGPKG_HAL_ARM current ; + package -hardware CYGPKG_HAL_ARM_EBSA285 current ; + package -hardware CYGPKG_IO_PCI current ; + package -hardware CYGPKG_DEVS_ETH_ARM_EBSA285 current ; + package -hardware CYGPKG_IO_SERIAL_ARM_EBSA285 current ; + package -hardware CYGPKG_DEVICES_WATCHDOG_ARM_EBSA285 current ; + package -hardware CYGPKG_DEVS_FLASH_EBSA285 current ; + package -template CYGPKG_HAL current ; + package -template CYGPKG_INFRA current ; + package -template CYGPKG_REDBOOT current ; + package CYGPKG_IO_FLASH current ; + package CYGPKG_IO_ETH_DRIVERS current ; +}; + +cdl_option CYGBLD_BUILD_GDB_STUBS { + user_value 0 +}; + +cdl_option CYGDBG_DEVS_ETH_ARM_EBSA285_CHATTER { + user_value 0 +}; + +cdl_option CYGNUM_DEVS_ETH_ARM_EBSA285_DEV_COUNT { + user_value 1 +}; + +cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { + inferred_value 0 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { + inferred_value 0 +}; + +cdl_option CYGSEM_HAL_VIRTUAL_VECTOR_DIAG { + user_value 1 +}; + +cdl_option CYGSEM_HAL_ROM_MONITOR { + user_value 1 +}; + +cdl_option CYGSEM_HAL_USE_ROM_MONITOR { + inferred_value 0 0 +}; + +cdl_component CYG_HAL_STARTUP { + user_value ROM +}; + +cdl_component CYGBLD_BUILD_REDBOOT { + user_value 1 +}; + +cdl_option CYGSEM_REDBOOT_BSP_SYSCALLS { + inferred_value 1 +}; + diff --git a/packages/hal/arm/edb7xxx/current/ChangeLog b/packages/hal/arm/edb7xxx/current/ChangeLog --- a/packages/hal/arm/edb7xxx/current/ChangeLog +++ b/packages/hal/arm/edb7xxx/current/ChangeLog @@ -1,5 +1,28 @@ +2001-02-23 Jesper Skov + + * include/hal_cache.h (HAL_FLASH_CACHES_OLD_MACROS): This platform + uses deprecated cache handling macros. + +2001-02-23 Gary Thomas + + * misc/edb7212_redboot_ROM.ecm: Renamed from edb7212_redboot_ROM.cfg + + * misc/edb7212_redboot.ecm: Renamed from edb7212_redboot.cfg + + * misc/edb7211_redboot_ROM.ecm: Renamed from edb7211_redboot_ROM.cfg + + * misc/edb7211_redboot.ecm: Renamed from edb7211_redboot.cfg + 2001-02-13 Gary Thomas + * include/pkgconf/mlt_arm_edb7211_ram.h: + * include/pkgconf/mlt_arm_edb7211_ram.mlt: + * include/pkgconf/mlt_arm_edb7211_ram.ldi: + * include/pkgconf/mlt_arm_edb7212_ram.h: + * include/pkgconf/mlt_arm_edb7212_ram.mlt: + * include/pkgconf/mlt_arm_edb7212_ram.ldi: Adjust memory map + for RedBoot [with networking]. + * src/edb7xxx_misc.c (hal_IRQ_handler): Return CYGNUM_HAL_INTERRUPT_NONE for spurious interrupts. diff --git a/packages/hal/arm/edb7xxx/current/include/hal_cache.h b/packages/hal/arm/edb7xxx/current/include/hal_cache.h --- a/packages/hal/arm/edb7xxx/current/include/hal_cache.h +++ b/packages/hal/arm/edb7xxx/current/include/hal_cache.h @@ -53,6 +53,19 @@ #include //----------------------------------------------------------------------------- +// FIXME: This definition forces the IO flash driver to use a +// known-good procedure for fiddling flash before calling flash device +// driver functions. The procedure breaks on other platform/driver +// combinations though so is depricated. Hence this definition. +// +// If you work on this target, please try to remove this definition +// and verify that the flash driver still works (both from RAM and +// flash). If it does, remove the definition and this comment for good +// [and the old macro definition if this happens to be the last client +// of that code]. +#define HAL_FLASH_CACHES_OLD_MACROS + +//----------------------------------------------------------------------------- // Cache dimensions #define HAL_UCACHE_SIZE 0x2000 // Size of data cache in bytes diff --git a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_ram.h b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_ram.h --- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_ram.h +++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_ram.h @@ -8,7 +8,7 @@ #endif #define CYGMEM_REGION_ram (0) -#define CYGMEM_REGION_ram_SIZE (0xfd9000) +#define CYGMEM_REGION_ram_SIZE (0xfd8000) #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W) #ifndef __ASSEMBLER__ extern char CYG_LABEL_NAME (__heap1) []; diff --git a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_ram.ldi b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_ram.ldi --- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_ram.ldi +++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_ram.ldi @@ -13,7 +13,7 @@ SECTIONS { SECTIONS_BEGIN SECTION_fixed_vectors (ram, 0x20, LMA_EQ_VMA) - SECTION_rom_vectors (ram, 0x10000, LMA_EQ_VMA) + SECTION_rom_vectors (ram, 0x20000, LMA_EQ_VMA) SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA) SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA) SECTION_rodata (ram, ALIGN (0x4), LMA_EQ_VMA) diff --git a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_ram.mlt b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_ram.mlt --- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_ram.mlt +++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_ram.mlt @@ -1,7 +1,7 @@ version 0 region ram 0 fd9000 0 !DRAM section fixed_vectors 0 1 0 1 1 0 1 0 20 20 ! -section rom_vectors 0 1 0 1 1 1 1 1 10000 10000 text text ! +section rom_vectors 0 1 0 1 1 1 1 1 20000 20000 text text ! section text 0 4 0 1 0 1 0 1 fini fini ! section fini 0 4 0 1 0 1 0 1 rodata rodata ! section rodata 0 4 0 1 0 1 0 1 rodata1 rodata1 ! diff --git a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_ram.h b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_ram.h --- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_ram.h +++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_ram.h @@ -8,7 +8,7 @@ #endif #define CYGMEM_REGION_ram (0) -#define CYGMEM_REGION_ram_SIZE (0xfd7000) +#define CYGMEM_REGION_ram_SIZE (0xfd6000) #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W) #define CYGMEM_REGION_sram (0x60000000) #define CYGMEM_REGION_sram_SIZE (0x9c00) diff --git a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_ram.ldi b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_ram.ldi --- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_ram.ldi +++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_ram.ldi @@ -14,7 +14,7 @@ SECTIONS { SECTIONS_BEGIN SECTION_fixed_vectors (ram, 0x20, LMA_EQ_VMA) - SECTION_rom_vectors (ram, 0x10000, LMA_EQ_VMA) + SECTION_rom_vectors (ram, 0x20000, LMA_EQ_VMA) SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA) SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA) SECTION_rodata (ram, ALIGN (0x4), LMA_EQ_VMA) diff --git a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_ram.mlt b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_ram.mlt --- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_ram.mlt +++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_ram.mlt @@ -2,7 +2,7 @@ version 0 region ram 0 fd7000 0 ! region sram 60000000 9c00 0 ! section fixed_vectors 0 1 0 1 1 0 1 0 20 20 ! -section rom_vectors 0 1 0 1 1 1 1 1 10000 10000 text text ! +section rom_vectors 0 1 0 1 1 1 1 1 20000 20000 text text ! section text 0 4 0 1 0 1 0 1 fini fini ! section fini 0 4 0 1 0 1 0 1 rodata rodata ! section rodata 0 4 0 1 0 1 0 1 rodata1 rodata1 ! diff --git a/packages/hal/arm/edb7xxx/current/misc/edb7211_redboot.cfg b/packages/hal/arm/edb7xxx/current/misc/edb7211_redboot.cfg deleted file mode 100644 --- a/packages/hal/arm/edb7xxx/current/misc/edb7211_redboot.cfg +++ /dev/null @@ -1,58 +0,0 @@ -cdl_savefile_version 1; -cdl_savefile_command cdl_savefile_version {}; -cdl_savefile_command cdl_savefile_command {}; -cdl_savefile_command cdl_configuration { description hardware template package }; -cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; - -cdl_configuration eCos { - description "" ; - hardware edb7211 ; - template redboot ; - package -hardware CYGPKG_HAL_ARM current ; - package -hardware CYGPKG_HAL_ARM_EDB7XXX current ; - package -hardware CYGPKG_DEVS_ETH_ARM_EDB7XXX current ; - package -hardware CYGPKG_IO_SERIAL_ARM_EDB7XXX current ; - package -template CYGPKG_HAL current ; - package -template CYGPKG_INFRA current ; - package -template CYGPKG_REDBOOT current ; - package CYGPKG_IO_ETH_DRIVERS current ; - package CYGPKG_IO_FLASH current ; - package CYGPKG_DEVS_FLASH_EDB7XXX current ; -}; - -cdl_option CYGBLD_BUILD_GDB_STUBS { - user_value 0 -}; - -cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { - user_value 0 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { - inferred_value 0 -}; - -cdl_option CYGSEM_HAL_USE_ROM_MONITOR { - inferred_value 0 0 -}; - -cdl_option CYGHWR_HAL_ARM_EDB7XXX_VARIANT { - user_value EP7211 -}; - -cdl_option CYGHWR_HAL_ARM_EDB7XXX_PROCESSOR_CLOCK { - user_value 73728 -}; - -cdl_option CYGBLD_BUILD_REDBOOT { - user_value 1 -}; - - diff --git a/packages/hal/arm/edb7xxx/current/misc/edb7211_redboot.ecm b/packages/hal/arm/edb7xxx/current/misc/edb7211_redboot.ecm new file mode 100644 --- /dev/null +++ b/packages/hal/arm/edb7xxx/current/misc/edb7211_redboot.ecm @@ -0,0 +1,58 @@ +cdl_savefile_version 1; +cdl_savefile_command cdl_savefile_version {}; +cdl_savefile_command cdl_savefile_command {}; +cdl_savefile_command cdl_configuration { description hardware template package }; +cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; + +cdl_configuration eCos { + description "" ; + hardware edb7211 ; + template redboot ; + package -hardware CYGPKG_HAL_ARM current ; + package -hardware CYGPKG_HAL_ARM_EDB7XXX current ; + package -hardware CYGPKG_DEVS_ETH_ARM_EDB7XXX current ; + package -hardware CYGPKG_IO_SERIAL_ARM_EDB7XXX current ; + package -template CYGPKG_HAL current ; + package -template CYGPKG_INFRA current ; + package -template CYGPKG_REDBOOT current ; + package CYGPKG_IO_ETH_DRIVERS current ; + package CYGPKG_IO_FLASH current ; + package CYGPKG_DEVS_FLASH_EDB7XXX current ; +}; + +cdl_option CYGBLD_BUILD_GDB_STUBS { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { + user_value 0 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { + inferred_value 0 +}; + +cdl_option CYGSEM_HAL_USE_ROM_MONITOR { + inferred_value 0 0 +}; + +cdl_option CYGHWR_HAL_ARM_EDB7XXX_VARIANT { + user_value EP7211 +}; + +cdl_option CYGHWR_HAL_ARM_EDB7XXX_PROCESSOR_CLOCK { + user_value 73728 +}; + +cdl_option CYGBLD_BUILD_REDBOOT { + user_value 1 +}; + + diff --git a/packages/hal/arm/edb7xxx/current/misc/edb7211_redboot_ROM.cfg b/packages/hal/arm/edb7xxx/current/misc/edb7211_redboot_ROM.cfg deleted file mode 100644 --- a/packages/hal/arm/edb7xxx/current/misc/edb7211_redboot_ROM.cfg +++ /dev/null @@ -1,74 +0,0 @@ -cdl_savefile_version 1; -cdl_savefile_command cdl_savefile_version {}; -cdl_savefile_command cdl_savefile_command {}; -cdl_savefile_command cdl_configuration { description hardware template package }; -cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; - -cdl_configuration eCos { - description "" ; - hardware edb7211 ; - template redboot ; - package -hardware CYGPKG_HAL_ARM current ; - package -hardware CYGPKG_HAL_ARM_EDB7XXX current ; - package -hardware CYGPKG_DEVS_ETH_ARM_EDB7XXX current ; - package -hardware CYGPKG_IO_SERIAL_ARM_EDB7XXX current ; - package -hardware CYGPKG_DEVS_FLASH_EDB7XXX current ; - package -template CYGPKG_HAL current ; - package -template CYGPKG_INFRA current ; - package -template CYGPKG_REDBOOT current ; - package CYGPKG_IO_ETH_DRIVERS current ; - package CYGPKG_IO_FLASH current ; -}; - -cdl_option CYGBLD_BUILD_GDB_STUBS { - user_value 0 -}; - -cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { - user_value 0 -}; - -cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { - inferred_value 0 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { - inferred_value 0 -}; - -cdl_option CYGSEM_HAL_ROM_MONITOR { - user_value 1 -}; - -cdl_option CYGSEM_HAL_USE_ROM_MONITOR { - inferred_value 0 0 -}; - -cdl_option CYGHWR_HAL_ARM_EDB7XXX_VARIANT { - user_value EP7211 -}; - -cdl_component CYG_HAL_STARTUP { - user_value ROM -}; - -cdl_option CYGHWR_HAL_ARM_EDB7XXX_PROCESSOR_CLOCK { - user_value 73728 -}; - -cdl_component CYGBLD_BUILD_REDBOOT { - user_value 1 -}; - - diff --git a/packages/hal/arm/edb7xxx/current/misc/edb7211_redboot_ROM.ecm b/packages/hal/arm/edb7xxx/current/misc/edb7211_redboot_ROM.ecm new file mode 100644 --- /dev/null +++ b/packages/hal/arm/edb7xxx/current/misc/edb7211_redboot_ROM.ecm @@ -0,0 +1,74 @@ +cdl_savefile_version 1; +cdl_savefile_command cdl_savefile_version {}; +cdl_savefile_command cdl_savefile_command {}; +cdl_savefile_command cdl_configuration { description hardware template package }; +cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; + +cdl_configuration eCos { + description "" ; + hardware edb7211 ; + template redboot ; + package -hardware CYGPKG_HAL_ARM current ; + package -hardware CYGPKG_HAL_ARM_EDB7XXX current ; + package -hardware CYGPKG_DEVS_ETH_ARM_EDB7XXX current ; + package -hardware CYGPKG_IO_SERIAL_ARM_EDB7XXX current ; + package -hardware CYGPKG_DEVS_FLASH_EDB7XXX current ; + package -template CYGPKG_HAL current ; + package -template CYGPKG_INFRA current ; + package -template CYGPKG_REDBOOT current ; + package CYGPKG_IO_ETH_DRIVERS current ; + package CYGPKG_IO_FLASH current ; +}; + +cdl_option CYGBLD_BUILD_GDB_STUBS { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { + inferred_value 0 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { + inferred_value 0 +}; + +cdl_option CYGSEM_HAL_ROM_MONITOR { + user_value 1 +}; + +cdl_option CYGSEM_HAL_USE_ROM_MONITOR { + inferred_value 0 0 +}; + +cdl_option CYGHWR_HAL_ARM_EDB7XXX_VARIANT { + user_value EP7211 +}; + +cdl_component CYG_HAL_STARTUP { + user_value ROM +}; + +cdl_option CYGHWR_HAL_ARM_EDB7XXX_PROCESSOR_CLOCK { + user_value 73728 +}; + +cdl_component CYGBLD_BUILD_REDBOOT { + user_value 1 +}; + + diff --git a/packages/hal/arm/edb7xxx/current/misc/edb7212_redboot.cfg b/packages/hal/arm/edb7xxx/current/misc/edb7212_redboot.cfg deleted file mode 100644 --- a/packages/hal/arm/edb7xxx/current/misc/edb7212_redboot.cfg +++ /dev/null @@ -1,58 +0,0 @@ -cdl_savefile_version 1; -cdl_savefile_command cdl_savefile_version {}; -cdl_savefile_command cdl_savefile_command {}; -cdl_savefile_command cdl_configuration { description hardware template package }; -cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; - -cdl_configuration eCos { - description "" ; - hardware edb7212 ; - template redboot ; - package -hardware CYGPKG_HAL_ARM current ; - package -hardware CYGPKG_HAL_ARM_EDB7XXX current ; - package -hardware CYGPKG_DEVS_ETH_ARM_EDB7XXX current ; - package -hardware CYGPKG_IO_SERIAL_ARM_EDB7XXX current ; - package -template CYGPKG_HAL current ; - package -template CYGPKG_INFRA current ; - package -template CYGPKG_REDBOOT current ; - package CYGPKG_IO_ETH_DRIVERS current ; - package CYGPKG_IO_FLASH current ; - package CYGPKG_DEVS_FLASH_EDB7XXX current ; -}; - -cdl_option CYGBLD_BUILD_GDB_STUBS { - user_value 0 -}; - -cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { - user_value 0 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { - inferred_value 0 -}; - -cdl_option CYGSEM_HAL_USE_ROM_MONITOR { - inferred_value 0 0 -}; - -cdl_option CYGHWR_HAL_ARM_EDB7XXX_VARIANT { - user_value EP7212 -}; - -cdl_option CYGHWR_HAL_ARM_EDB7XXX_PROCESSOR_CLOCK { - user_value 73728 -}; - -cdl_option CYGBLD_BUILD_REDBOOT { - user_value 1 -}; - - diff --git a/packages/hal/arm/edb7xxx/current/misc/edb7212_redboot.ecm b/packages/hal/arm/edb7xxx/current/misc/edb7212_redboot.ecm new file mode 100644 --- /dev/null +++ b/packages/hal/arm/edb7xxx/current/misc/edb7212_redboot.ecm @@ -0,0 +1,58 @@ +cdl_savefile_version 1; +cdl_savefile_command cdl_savefile_version {}; +cdl_savefile_command cdl_savefile_command {}; +cdl_savefile_command cdl_configuration { description hardware template package }; +cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; + +cdl_configuration eCos { + description "" ; + hardware edb7212 ; + template redboot ; + package -hardware CYGPKG_HAL_ARM current ; + package -hardware CYGPKG_HAL_ARM_EDB7XXX current ; + package -hardware CYGPKG_DEVS_ETH_ARM_EDB7XXX current ; + package -hardware CYGPKG_IO_SERIAL_ARM_EDB7XXX current ; + package -template CYGPKG_HAL current ; + package -template CYGPKG_INFRA current ; + package -template CYGPKG_REDBOOT current ; + package CYGPKG_IO_ETH_DRIVERS current ; + package CYGPKG_IO_FLASH current ; + package CYGPKG_DEVS_FLASH_EDB7XXX current ; +}; + +cdl_option CYGBLD_BUILD_GDB_STUBS { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { + user_value 0 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { + inferred_value 0 +}; + +cdl_option CYGSEM_HAL_USE_ROM_MONITOR { + inferred_value 0 0 +}; + +cdl_option CYGHWR_HAL_ARM_EDB7XXX_VARIANT { + user_value EP7212 +}; + +cdl_option CYGHWR_HAL_ARM_EDB7XXX_PROCESSOR_CLOCK { + user_value 73728 +}; + +cdl_option CYGBLD_BUILD_REDBOOT { + user_value 1 +}; + + diff --git a/packages/hal/arm/edb7xxx/current/misc/edb7212_redboot_ROM.cfg b/packages/hal/arm/edb7xxx/current/misc/edb7212_redboot_ROM.cfg deleted file mode 100644 --- a/packages/hal/arm/edb7xxx/current/misc/edb7212_redboot_ROM.cfg +++ /dev/null @@ -1,74 +0,0 @@ -cdl_savefile_version 1; -cdl_savefile_command cdl_savefile_version {}; -cdl_savefile_command cdl_savefile_command {}; -cdl_savefile_command cdl_configuration { description hardware template package }; -cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; - -cdl_configuration eCos { - description "" ; - hardware edb7212 ; - template redboot ; - package -hardware CYGPKG_HAL_ARM current ; - package -hardware CYGPKG_HAL_ARM_EDB7XXX current ; - package -hardware CYGPKG_DEVS_ETH_ARM_EDB7XXX current ; - package -hardware CYGPKG_IO_SERIAL_ARM_EDB7XXX current ; - package -hardware CYGPKG_DEVS_FLASH_EDB7XXX current ; - package -template CYGPKG_HAL current ; - package -template CYGPKG_INFRA current ; - package -template CYGPKG_REDBOOT current ; - package CYGPKG_IO_ETH_DRIVERS current ; - package CYGPKG_IO_FLASH current ; -}; - -cdl_option CYGBLD_BUILD_GDB_STUBS { - user_value 0 -}; - -cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { - user_value 0 -}; - -cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { - inferred_value 0 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { - inferred_value 0 -}; - -cdl_option CYGSEM_HAL_ROM_MONITOR { - user_value 1 -}; - -cdl_option CYGSEM_HAL_USE_ROM_MONITOR { - inferred_value 0 0 -}; - -cdl_option CYGHWR_HAL_ARM_EDB7XXX_VARIANT { - user_value EP7212 -}; - -cdl_component CYG_HAL_STARTUP { - user_value ROM -}; - -cdl_option CYGHWR_HAL_ARM_EDB7XXX_PROCESSOR_CLOCK { - user_value 73728 -}; - -cdl_component CYGBLD_BUILD_REDBOOT { - user_value 1 -}; - - diff --git a/packages/hal/arm/edb7xxx/current/misc/edb7212_redboot_ROM.ecm b/packages/hal/arm/edb7xxx/current/misc/edb7212_redboot_ROM.ecm new file mode 100644 --- /dev/null +++ b/packages/hal/arm/edb7xxx/current/misc/edb7212_redboot_ROM.ecm @@ -0,0 +1,74 @@ +cdl_savefile_version 1; +cdl_savefile_command cdl_savefile_version {}; +cdl_savefile_command cdl_savefile_command {}; +cdl_savefile_command cdl_configuration { description hardware template package }; +cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; + +cdl_configuration eCos { + description "" ; + hardware edb7212 ; + template redboot ; + package -hardware CYGPKG_HAL_ARM current ; + package -hardware CYGPKG_HAL_ARM_EDB7XXX current ; + package -hardware CYGPKG_DEVS_ETH_ARM_EDB7XXX current ; + package -hardware CYGPKG_IO_SERIAL_ARM_EDB7XXX current ; + package -hardware CYGPKG_DEVS_FLASH_EDB7XXX current ; + package -template CYGPKG_HAL current ; + package -template CYGPKG_INFRA current ; + package -template CYGPKG_REDBOOT current ; + package CYGPKG_IO_ETH_DRIVERS current ; + package CYGPKG_IO_FLASH current ; +}; + +cdl_option CYGBLD_BUILD_GDB_STUBS { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { + inferred_value 0 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { + inferred_value 0 +}; + +cdl_option CYGSEM_HAL_ROM_MONITOR { + user_value 1 +}; + +cdl_option CYGSEM_HAL_USE_ROM_MONITOR { + inferred_value 0 0 +}; + +cdl_option CYGHWR_HAL_ARM_EDB7XXX_VARIANT { + user_value EP7212 +}; + +cdl_component CYG_HAL_STARTUP { + user_value ROM +}; + +cdl_option CYGHWR_HAL_ARM_EDB7XXX_PROCESSOR_CLOCK { + user_value 73728 +}; + +cdl_component CYGBLD_BUILD_REDBOOT { + user_value 1 +}; + + diff --git a/packages/hal/arm/iq80310/current/ChangeLog b/packages/hal/arm/iq80310/current/ChangeLog --- a/packages/hal/arm/iq80310/current/ChangeLog +++ b/packages/hal/arm/iq80310/current/ChangeLog @@ -1,3 +1,18 @@ +2001-02-23 Jesper Skov + + * include/hal_cache.h (HAL_FLASH_CACHES_OLD_MACROS): This platform + uses deprecated cache handling macros. + +2001-02-23 Gary Thomas + + * misc/redboot_ROMA.ecm: Renamed from redboot_ROMA.cfg + + * misc/redboot_RAMA.ecm: Renamed from redboot_RAMA.cfg + + * misc/redboot_ROM.ecm: Renamed from redboot_ROM.cfg + + * misc/redboot_RAM.ecm: Renamed from redboot_RAM.cfg + 2001-02-13 Gary Thomas * src/iq80310_misc.c (hal_IRQ_handler): diff --git a/packages/hal/arm/iq80310/current/include/hal_cache.h b/packages/hal/arm/iq80310/current/include/hal_cache.h --- a/packages/hal/arm/iq80310/current/include/hal_cache.h +++ b/packages/hal/arm/iq80310/current/include/hal_cache.h @@ -53,6 +53,19 @@ //#include //----------------------------------------------------------------------------- +// FIXME: This definition forces the IO flash driver to use a +// known-good procedure for fiddling flash before calling flash device +// driver functions. The procedure breaks on other platform/driver +// combinations though so is depricated. Hence this definition. +// +// If you work on this target, please try to remove this definition +// and verify that the flash driver still works (both from RAM and +// flash). If it does, remove the definition and this comment for good +// [and the old macro definition if this happens to be the last client +// of that code]. +#define HAL_FLASH_CACHES_OLD_MACROS + +//----------------------------------------------------------------------------- // Cache dimensions #define HAL_DCACHE_SIZE 0x8000 // Size of data cache in bytes diff --git a/packages/hal/arm/iq80310/current/misc/redboot_RAM.cfg b/packages/hal/arm/iq80310/current/misc/redboot_RAM.cfg deleted file mode 100644 --- a/packages/hal/arm/iq80310/current/misc/redboot_RAM.cfg +++ /dev/null @@ -1,85 +0,0 @@ -cdl_savefile_version 1; -cdl_savefile_command cdl_savefile_version {}; -cdl_savefile_command cdl_savefile_command {}; -cdl_savefile_command cdl_configuration { description hardware template package }; -cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; - -cdl_configuration eCos { - description "" ; - hardware iq80310 ; - template redboot ; - package -hardware CYGPKG_HAL_ARM current ; - package -hardware CYGPKG_HAL_ARM_IQ80310 current ; - package -hardware CYGPKG_IO_PCI current ; - package -hardware CYGPKG_DEVS_ETH_ARM_IQ80310 current ; - package -hardware CYGPKG_IO_SERIAL_ARM_IQ80310 current ; - package -hardware CYGPKG_DEVS_FLASH_IQ80310 current ; - package -template CYGPKG_HAL current ; - package -template CYGPKG_INFRA current ; - package -template CYGPKG_REDBOOT current ; - package CYGPKG_IO_FLASH current ; - package CYGPKG_IO_ETH_DRIVERS current ; -}; - -cdl_option CYGBLD_BUILD_GDB_STUBS { - user_value 0 -}; - -cdl_option CYGDBG_DEVS_ETH_ARM_IQ80310_CHATTER { - user_value 0 -}; - -cdl_option CYGNUM_DEVS_ETH_ARM_IQ80310_DEV_COUNT { - user_value 1 -}; - -cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { - user_value 0 -}; - -cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { - inferred_value 0 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { - inferred_value 0 -}; - -cdl_option CYGSEM_HAL_USE_ROM_MONITOR { - inferred_value 0 0 -}; - -cdl_component CYG_HAL_STARTUP { - user_value RAM -}; - -cdl_option CYGBLD_BUILD_REDBOOT { - user_value 1 -}; - -cdl_option CYGSEM_REDBOOT_FLASH_CONFIG { - user_value 1 -}; - -cdl_option CYGSEM_REDBOOT_BSP_SYSCALLS { - inferred_value 1 -}; - -cdl_option CYGBLD_REDBOOT_MIN_IMAGE_SIZE { - inferred_value 0x40000 -}; - -cdl_option CYGNUM_IO_ETH_DRIVERS_NUM_PKT { - user_value 2 -}; diff --git a/packages/hal/arm/iq80310/current/misc/redboot_RAM.ecm b/packages/hal/arm/iq80310/current/misc/redboot_RAM.ecm new file mode 100644 --- /dev/null +++ b/packages/hal/arm/iq80310/current/misc/redboot_RAM.ecm @@ -0,0 +1,85 @@ +cdl_savefile_version 1; +cdl_savefile_command cdl_savefile_version {}; +cdl_savefile_command cdl_savefile_command {}; +cdl_savefile_command cdl_configuration { description hardware template package }; +cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; + +cdl_configuration eCos { + description "" ; + hardware iq80310 ; + template redboot ; + package -hardware CYGPKG_HAL_ARM current ; + package -hardware CYGPKG_HAL_ARM_IQ80310 current ; + package -hardware CYGPKG_IO_PCI current ; + package -hardware CYGPKG_DEVS_ETH_ARM_IQ80310 current ; + package -hardware CYGPKG_IO_SERIAL_ARM_IQ80310 current ; + package -hardware CYGPKG_DEVS_FLASH_IQ80310 current ; + package -template CYGPKG_HAL current ; + package -template CYGPKG_INFRA current ; + package -template CYGPKG_REDBOOT current ; + package CYGPKG_IO_FLASH current ; + package CYGPKG_IO_ETH_DRIVERS current ; +}; + +cdl_option CYGBLD_BUILD_GDB_STUBS { + user_value 0 +}; + +cdl_option CYGDBG_DEVS_ETH_ARM_IQ80310_CHATTER { + user_value 0 +}; + +cdl_option CYGNUM_DEVS_ETH_ARM_IQ80310_DEV_COUNT { + user_value 1 +}; + +cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { + inferred_value 0 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { + inferred_value 0 +}; + +cdl_option CYGSEM_HAL_USE_ROM_MONITOR { + inferred_value 0 0 +}; + +cdl_component CYG_HAL_STARTUP { + user_value RAM +}; + +cdl_option CYGBLD_BUILD_REDBOOT { + user_value 1 +}; + +cdl_option CYGSEM_REDBOOT_FLASH_CONFIG { + user_value 1 +}; + +cdl_option CYGSEM_REDBOOT_BSP_SYSCALLS { + inferred_value 1 +}; + +cdl_option CYGBLD_REDBOOT_MIN_IMAGE_SIZE { + inferred_value 0x40000 +}; + +cdl_option CYGNUM_IO_ETH_DRIVERS_NUM_PKT { + user_value 2 +}; diff --git a/packages/hal/arm/iq80310/current/misc/redboot_RAMA.cfg b/packages/hal/arm/iq80310/current/misc/redboot_RAMA.cfg deleted file mode 100644 --- a/packages/hal/arm/iq80310/current/misc/redboot_RAMA.cfg +++ /dev/null @@ -1,89 +0,0 @@ -cdl_savefile_version 1; -cdl_savefile_command cdl_savefile_version {}; -cdl_savefile_command cdl_savefile_command {}; -cdl_savefile_command cdl_configuration { description hardware template package }; -cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; - -cdl_configuration eCos { - description "" ; - hardware iq80310 ; - template redboot ; - package -hardware CYGPKG_HAL_ARM current ; - package -hardware CYGPKG_HAL_ARM_IQ80310 current ; - package -hardware CYGPKG_IO_PCI current ; - package -hardware CYGPKG_DEVS_ETH_ARM_IQ80310 current ; - package -hardware CYGPKG_IO_SERIAL_ARM_IQ80310 current ; - package -hardware CYGPKG_DEVS_FLASH_IQ80310 current ; - package -template CYGPKG_HAL current ; - package -template CYGPKG_INFRA current ; - package -template CYGPKG_REDBOOT current ; - package CYGPKG_IO_FLASH current ; - package CYGPKG_IO_ETH_DRIVERS current ; -}; - -cdl_option CYGBLD_BUILD_GDB_STUBS { - user_value 0 -}; - -cdl_option CYGDBG_DEVS_ETH_ARM_IQ80310_CHATTER { - user_value 0 -}; - -cdl_option CYGNUM_DEVS_ETH_ARM_IQ80310_DEV_COUNT { - user_value 1 -}; - -cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { - user_value 0 -}; - -cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { - inferred_value 0 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { - inferred_value 0 -}; - -cdl_option CYGSEM_HAL_USE_ROM_MONITOR { - inferred_value 0 0 -}; - -cdl_component CYG_HAL_STARTUP { - user_value RAM -}; - -cdl_option CYGBLD_BUILD_REDBOOT { - user_value 1 -}; - -cdl_option CYGSEM_REDBOOT_FLASH_CONFIG { - user_value 1 -}; - -cdl_option CYGSEM_REDBOOT_BSP_SYSCALLS { - inferred_value 1 -}; - -cdl_option CYGBLD_REDBOOT_MIN_IMAGE_SIZE { - inferred_value 0x40000 -}; - -cdl_option CYGBLD_REDBOOT_FLASH_BOOT_OFFSET { - inferred_value 0x40000 -}; - -cdl_option CYGNUM_IO_ETH_DRIVERS_NUM_PKT { - user_value 2 -}; diff --git a/packages/hal/arm/iq80310/current/misc/redboot_RAMA.ecm b/packages/hal/arm/iq80310/current/misc/redboot_RAMA.ecm new file mode 100644 --- /dev/null +++ b/packages/hal/arm/iq80310/current/misc/redboot_RAMA.ecm @@ -0,0 +1,89 @@ +cdl_savefile_version 1; +cdl_savefile_command cdl_savefile_version {}; +cdl_savefile_command cdl_savefile_command {}; +cdl_savefile_command cdl_configuration { description hardware template package }; +cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; + +cdl_configuration eCos { + description "" ; + hardware iq80310 ; + template redboot ; + package -hardware CYGPKG_HAL_ARM current ; + package -hardware CYGPKG_HAL_ARM_IQ80310 current ; + package -hardware CYGPKG_IO_PCI current ; + package -hardware CYGPKG_DEVS_ETH_ARM_IQ80310 current ; + package -hardware CYGPKG_IO_SERIAL_ARM_IQ80310 current ; + package -hardware CYGPKG_DEVS_FLASH_IQ80310 current ; + package -template CYGPKG_HAL current ; + package -template CYGPKG_INFRA current ; + package -template CYGPKG_REDBOOT current ; + package CYGPKG_IO_FLASH current ; + package CYGPKG_IO_ETH_DRIVERS current ; +}; + +cdl_option CYGBLD_BUILD_GDB_STUBS { + user_value 0 +}; + +cdl_option CYGDBG_DEVS_ETH_ARM_IQ80310_CHATTER { + user_value 0 +}; + +cdl_option CYGNUM_DEVS_ETH_ARM_IQ80310_DEV_COUNT { + user_value 1 +}; + +cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { + inferred_value 0 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { + inferred_value 0 +}; + +cdl_option CYGSEM_HAL_USE_ROM_MONITOR { + inferred_value 0 0 +}; + +cdl_component CYG_HAL_STARTUP { + user_value RAM +}; + +cdl_option CYGBLD_BUILD_REDBOOT { + user_value 1 +}; + +cdl_option CYGSEM_REDBOOT_FLASH_CONFIG { + user_value 1 +}; + +cdl_option CYGSEM_REDBOOT_BSP_SYSCALLS { + inferred_value 1 +}; + +cdl_option CYGBLD_REDBOOT_MIN_IMAGE_SIZE { + inferred_value 0x40000 +}; + +cdl_option CYGBLD_REDBOOT_FLASH_BOOT_OFFSET { + inferred_value 0x40000 +}; + +cdl_option CYGNUM_IO_ETH_DRIVERS_NUM_PKT { + user_value 2 +}; diff --git a/packages/hal/arm/iq80310/current/misc/redboot_ROM.cfg b/packages/hal/arm/iq80310/current/misc/redboot_ROM.cfg deleted file mode 100644 --- a/packages/hal/arm/iq80310/current/misc/redboot_ROM.cfg +++ /dev/null @@ -1,89 +0,0 @@ -cdl_savefile_version 1; -cdl_savefile_command cdl_savefile_version {}; -cdl_savefile_command cdl_savefile_command {}; -cdl_savefile_command cdl_configuration { description hardware template package }; -cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; - -cdl_configuration eCos { - description "" ; - hardware iq80310 ; - template redboot ; - package -hardware CYGPKG_HAL_ARM current ; - package -hardware CYGPKG_HAL_ARM_IQ80310 current ; - package -hardware CYGPKG_IO_PCI current ; - package -hardware CYGPKG_DEVS_ETH_ARM_IQ80310 current ; - package -hardware CYGPKG_IO_SERIAL_ARM_IQ80310 current ; - package -template CYGPKG_HAL current ; - package -template CYGPKG_INFRA current ; - package -template CYGPKG_REDBOOT current ; - package CYGPKG_IO_FLASH current ; - package CYGPKG_IO_ETH_DRIVERS current ; - package CYGPKG_DEVS_FLASH_IQ80310 current ; -}; - -cdl_option CYGBLD_BUILD_GDB_STUBS { - user_value 0 -}; - -cdl_option CYGDBG_DEVS_ETH_ARM_IQ80310_CHATTER { - user_value 0 -}; - -cdl_option CYGNUM_DEVS_ETH_ARM_IQ80310_DEV_COUNT { - user_value 1 -}; - -cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { - user_value 0 -}; - -cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { - inferred_value 0 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { - inferred_value 0 -}; - -cdl_option CYGSEM_HAL_ROM_MONITOR { - user_value 1 -}; - -cdl_option CYGSEM_HAL_USE_ROM_MONITOR { - inferred_value 0 0 -}; - -cdl_component CYG_HAL_STARTUP { - user_value ROM -}; - -cdl_option CYGBLD_BUILD_REDBOOT { - user_value 1 -}; - -cdl_option CYGSEM_REDBOOT_FLASH_CONFIG { - user_value 1 -}; - -cdl_option CYGSEM_REDBOOT_BSP_SYSCALLS { - inferred_value 1 -}; - -cdl_option CYGBLD_REDBOOT_MIN_IMAGE_SIZE { - inferred_value 0x40000 -}; - -cdl_option CYGNUM_IO_ETH_DRIVERS_NUM_PKT { - user_value 2 -}; diff --git a/packages/hal/arm/iq80310/current/misc/redboot_ROM.ecm b/packages/hal/arm/iq80310/current/misc/redboot_ROM.ecm new file mode 100644 --- /dev/null +++ b/packages/hal/arm/iq80310/current/misc/redboot_ROM.ecm @@ -0,0 +1,89 @@ +cdl_savefile_version 1; +cdl_savefile_command cdl_savefile_version {}; +cdl_savefile_command cdl_savefile_command {}; +cdl_savefile_command cdl_configuration { description hardware template package }; +cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; + +cdl_configuration eCos { + description "" ; + hardware iq80310 ; + template redboot ; + package -hardware CYGPKG_HAL_ARM current ; + package -hardware CYGPKG_HAL_ARM_IQ80310 current ; + package -hardware CYGPKG_IO_PCI current ; + package -hardware CYGPKG_DEVS_ETH_ARM_IQ80310 current ; + package -hardware CYGPKG_IO_SERIAL_ARM_IQ80310 current ; + package -template CYGPKG_HAL current ; + package -template CYGPKG_INFRA current ; + package -template CYGPKG_REDBOOT current ; + package CYGPKG_IO_FLASH current ; + package CYGPKG_IO_ETH_DRIVERS current ; + package CYGPKG_DEVS_FLASH_IQ80310 current ; +}; + +cdl_option CYGBLD_BUILD_GDB_STUBS { + user_value 0 +}; + +cdl_option CYGDBG_DEVS_ETH_ARM_IQ80310_CHATTER { + user_value 0 +}; + +cdl_option CYGNUM_DEVS_ETH_ARM_IQ80310_DEV_COUNT { + user_value 1 +}; + +cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { + inferred_value 0 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { + inferred_value 0 +}; + +cdl_option CYGSEM_HAL_ROM_MONITOR { + user_value 1 +}; + +cdl_option CYGSEM_HAL_USE_ROM_MONITOR { + inferred_value 0 0 +}; + +cdl_component CYG_HAL_STARTUP { + user_value ROM +}; + +cdl_option CYGBLD_BUILD_REDBOOT { + user_value 1 +}; + +cdl_option CYGSEM_REDBOOT_FLASH_CONFIG { + user_value 1 +}; + +cdl_option CYGSEM_REDBOOT_BSP_SYSCALLS { + inferred_value 1 +}; + +cdl_option CYGBLD_REDBOOT_MIN_IMAGE_SIZE { + inferred_value 0x40000 +}; + +cdl_option CYGNUM_IO_ETH_DRIVERS_NUM_PKT { + user_value 2 +}; diff --git a/packages/hal/arm/iq80310/current/misc/redboot_ROMA.cfg b/packages/hal/arm/iq80310/current/misc/redboot_ROMA.cfg deleted file mode 100644 --- a/packages/hal/arm/iq80310/current/misc/redboot_ROMA.cfg +++ /dev/null @@ -1,97 +0,0 @@ -cdl_savefile_version 1; -cdl_savefile_command cdl_savefile_version {}; -cdl_savefile_command cdl_savefile_command {}; -cdl_savefile_command cdl_configuration { description hardware template package }; -cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; - -cdl_configuration eCos { - description "" ; - hardware iq80310 ; - template redboot ; - package -hardware CYGPKG_HAL_ARM current ; - package -hardware CYGPKG_HAL_ARM_IQ80310 current ; - package -hardware CYGPKG_IO_PCI current ; - package -hardware CYGPKG_DEVS_ETH_ARM_IQ80310 current ; - package -hardware CYGPKG_IO_SERIAL_ARM_IQ80310 current ; - package -template CYGPKG_HAL current ; - package -template CYGPKG_INFRA current ; - package -template CYGPKG_REDBOOT current ; - package CYGPKG_IO_FLASH current ; - package CYGPKG_IO_ETH_DRIVERS current ; - package CYGPKG_DEVS_FLASH_IQ80310 current ; -}; - -cdl_option CYGBLD_BUILD_GDB_STUBS { - user_value 0 -}; - -cdl_option CYGDBG_DEVS_ETH_ARM_IQ80310_CHATTER { - user_value 0 -}; - -cdl_option CYGNUM_DEVS_ETH_ARM_IQ80310_DEV_COUNT { - user_value 1 -}; - -cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { - user_value 0 -}; - -cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { - inferred_value 0 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { - inferred_value 0 -}; - -cdl_option CYGSEM_HAL_ROM_MONITOR { - user_value 1 -}; - -cdl_option CYGSEM_HAL_USE_ROM_MONITOR { - inferred_value 0 0 -}; - -cdl_component CYG_HAL_STARTUP { - user_value ROM -}; - -cdl_option CYGBLD_BUILD_REDBOOT { - user_value 1 -}; - -cdl_option CYGSEM_REDBOOT_FLASH_CONFIG { - user_value 1 -}; - -cdl_option CYGSEM_REDBOOT_BSP_SYSCALLS { - inferred_value 1 -}; - -cdl_option CYGBLD_REDBOOT_MIN_IMAGE_SIZE { - inferred_value 0x40000 -}; - -cdl_option CYGSEM_HAL_ARM_IQ80310_ARMBOOT { - user_value 1 -}; - -cdl_option CYGBLD_REDBOOT_FLASH_BOOT_OFFSET { - inferred_value 0x40000 -}; - -cdl_option CYGNUM_IO_ETH_DRIVERS_NUM_PKT { - user_value 2 -}; diff --git a/packages/hal/arm/iq80310/current/misc/redboot_ROMA.ecm b/packages/hal/arm/iq80310/current/misc/redboot_ROMA.ecm new file mode 100644 --- /dev/null +++ b/packages/hal/arm/iq80310/current/misc/redboot_ROMA.ecm @@ -0,0 +1,97 @@ +cdl_savefile_version 1; +cdl_savefile_command cdl_savefile_version {}; +cdl_savefile_command cdl_savefile_command {}; +cdl_savefile_command cdl_configuration { description hardware template package }; +cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; + +cdl_configuration eCos { + description "" ; + hardware iq80310 ; + template redboot ; + package -hardware CYGPKG_HAL_ARM current ; + package -hardware CYGPKG_HAL_ARM_IQ80310 current ; + package -hardware CYGPKG_IO_PCI current ; + package -hardware CYGPKG_DEVS_ETH_ARM_IQ80310 current ; + package -hardware CYGPKG_IO_SERIAL_ARM_IQ80310 current ; + package -template CYGPKG_HAL current ; + package -template CYGPKG_INFRA current ; + package -template CYGPKG_REDBOOT current ; + package CYGPKG_IO_FLASH current ; + package CYGPKG_IO_ETH_DRIVERS current ; + package CYGPKG_DEVS_FLASH_IQ80310 current ; +}; + +cdl_option CYGBLD_BUILD_GDB_STUBS { + user_value 0 +}; + +cdl_option CYGDBG_DEVS_ETH_ARM_IQ80310_CHATTER { + user_value 0 +}; + +cdl_option CYGNUM_DEVS_ETH_ARM_IQ80310_DEV_COUNT { + user_value 1 +}; + +cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { + inferred_value 0 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { + inferred_value 0 +}; + +cdl_option CYGSEM_HAL_ROM_MONITOR { + user_value 1 +}; + +cdl_option CYGSEM_HAL_USE_ROM_MONITOR { + inferred_value 0 0 +}; + +cdl_component CYG_HAL_STARTUP { + user_value ROM +}; + +cdl_option CYGBLD_BUILD_REDBOOT { + user_value 1 +}; + +cdl_option CYGSEM_REDBOOT_FLASH_CONFIG { + user_value 1 +}; + +cdl_option CYGSEM_REDBOOT_BSP_SYSCALLS { + inferred_value 1 +}; + +cdl_option CYGBLD_REDBOOT_MIN_IMAGE_SIZE { + inferred_value 0x40000 +}; + +cdl_option CYGSEM_HAL_ARM_IQ80310_ARMBOOT { + user_value 1 +}; + +cdl_option CYGBLD_REDBOOT_FLASH_BOOT_OFFSET { + inferred_value 0x40000 +}; + +cdl_option CYGNUM_IO_ETH_DRIVERS_NUM_PKT { + user_value 2 +}; diff --git a/packages/hal/arm/iq80310/current/src/diag/pci_bios.h b/packages/hal/arm/iq80310/current/src/diag/pci_bios.h --- a/packages/hal/arm/iq80310/current/src/diag/pci_bios.h +++ b/packages/hal/arm/iq80310/current/src/diag/pci_bios.h @@ -45,9 +45,9 @@ /* Use: mon960 */ /* */ /* $Source: /dev/shm/cvs2hg/cvs/ecos/packages/hal/arm/iq80310/current/src/diag/Attic/pci_bios.h,v $ */ -/* $Revision: 1.2 $ */ +/* $Revision: 1.3 $ */ /* Last $Author: jlarmour $ */ -/* $Date: 2001/02/19 17:27:11 $ */ +/* $Date: 2001/02/27 01:21:46 $ */ /* */ /* Purpose: PCI BIOS Routines */ /* */ diff --git a/packages/hal/arm/pid/current/ChangeLog b/packages/hal/arm/pid/current/ChangeLog --- a/packages/hal/arm/pid/current/ChangeLog +++ b/packages/hal/arm/pid/current/ChangeLog @@ -1,3 +1,23 @@ +2001-02-24 Gary Thomas + + * cdl/hal_arm_pid.cdl: Add CYGSEM_HAL_ARM_PID_ANGEL_BOOT so + startup code only includes this cruft when necessary. + +2001-02-22 Jesper Skov + + * include/hal_diag.h: Added delay function [yes, this is a bad + location]. It uses Timer1 for delays. + + * cdl/hal_arm_pid.cdl: Added RedBoot options. + + * src/pid_misc.c (hal_delay_us): Added. + +2001-02-20 Jesper Skov + + * cdl/hal_arm_pid.cdl: Also enable -mthumb-interwork when building + ROM monitors (or calls from Thumb code would die on return). + Reworked a bit. + 2001-02-13 Gary Thomas * src/pid_misc.c (hal_IRQ_handler): diff --git a/packages/hal/arm/pid/current/cdl/hal_arm_pid.cdl b/packages/hal/arm/pid/current/cdl/hal_arm_pid.cdl --- a/packages/hal/arm/pid/current/cdl/hal_arm_pid.cdl +++ b/packages/hal/arm/pid/current/cdl/hal_arm_pid.cdl @@ -23,7 +23,7 @@ # # The Initial Developer of the Original Code is Red Hat. # Portions created by Red Hat are -# Copyright (C) 1998, 1999, 2000 Red Hat, Inc. +# Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc. # All Rights Reserved. # ------------------------------------------- # @@ -104,6 +104,16 @@ cdl_package CYGPKG_HAL_ARM_PID { This option controls the baud rate used for the GDB connection." } + cdl_option CYGSEM_HAL_ARM_PID_ANGEL_BOOT { + display "Support startup from Angel" + default_value 0 + description " + The Angel monitor can be used for some simple initial bootstrap + operations. However, since Angel starts applications in user + mode, the eCos startup code must jump through certain hoops + to get started." + } + cdl_option CYGHWR_HAL_ARM_PID_DIAG_LEDS { display "Enable use of PPx LEDs" default_value 0 @@ -196,24 +206,25 @@ cdl_package CYGPKG_HAL_ARM_PID { display "Global compiler flags" flavor data no_define - default_value { (CYGHWR_THUMB && CYGHWR_HAL_ARM_BIGENDIAN) ? "-mthumb-interwork -mbig-endian -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" : - CYGHWR_THUMB ? "-mthumb-interwork -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" : + default_value { (CYGBLD_ARM_ENABLE_THUMB_INTERWORK && CYGHWR_HAL_ARM_BIGENDIAN) ? "-mthumb-interwork -mbig-endian -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" : + CYGBLD_ARM_ENABLE_THUMB_INTERWORK ? "-mthumb-interwork -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" : (CYGHWR_HAL_ARM_CPU_FAMILY == "ARM9") && CYGHWR_HAL_ARM_BIGENDIAN ? "-mcpu=arm9 -mbig-endian -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" : (CYGHWR_HAL_ARM_CPU_FAMILY == "ARM9") && ! CYGHWR_HAL_ARM_BIGENDIAN ? "-mcpu=arm9 -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" : (CYGHWR_HAL_ARM_CPU_FAMILY != "ARM9") && CYGHWR_HAL_ARM_BIGENDIAN ? "-mcpu=arm7tdmi -mbig-endian -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" : "-mcpu=arm7tdmi -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" } description " - This option controls the global compiler flags which are used to - compile all packages by default. Individual packages may define - options which override these global flags." + This option controls the global compiler flags which + are used to compile all packages by default. + Individual packages may define options which override + these global flags." } cdl_option CYGBLD_GLOBAL_LDFLAGS { display "Global linker flags" flavor data no_define - default_value { (CYGHWR_THUMB && CYGHWR_HAL_ARM_BIGENDIAN) ? "-mthumb-interwork -mbig-endian -g -nostdlib -Wl,--gc-sections -Wl,-static" : - CYGHWR_THUMB ? "-mthumb-interwork -g -nostdlib -Wl,--gc-sections -Wl,-static" : + default_value { ((CYGHWR_THUMB || CYGSEM_HAL_ROM_MONITOR) && CYGHWR_HAL_ARM_BIGENDIAN) ? "-mthumb-interwork -mbig-endian -g -nostdlib -Wl,--gc-sections -Wl,-static" : + (CYGHWR_THUMB || CYGSEM_HAL_ROM_MONITOR) ? "-mthumb-interwork -g -nostdlib -Wl,--gc-sections -Wl,-static" : (CYGHWR_HAL_ARM_CPU_FAMILY == "ARM9") && CYGHWR_HAL_ARM_BIGENDIAN ? "-mcpu=arm9 -mbig-endian -g -nostdlib -Wl,--gc-sections -Wl,-static" : (CYGHWR_HAL_ARM_CPU_FAMILY == "ARM9") && ! CYGHWR_HAL_ARM_BIGENDIAN ? "-mcpu=arm9 -g -nostdlib -Wl,--gc-sections -Wl,-static" : (CYGHWR_HAL_ARM_CPU_FAMILY != "ARM9") && CYGHWR_HAL_ARM_BIGENDIAN ? "-mcpu=arm7tdmi -mbig-endian -g -nostdlib -Wl,--gc-sections -Wl,-static" : @@ -388,4 +399,31 @@ cdl_package CYGPKG_HAL_ARM_PID { the ROM monitor or boot ROM." } + + cdl_component CYGPKG_REDBOOT_HAL_OPTIONS { + display "Redboot HAL options" + flavor none + no_define + parent CYGPKG_REDBOOT + active_if CYGPKG_REDBOOT + description " + This option lists the target's requirements for a valid Redboot + configuration." + + cdl_option CYGBLD_BUILD_REDBOOT_BIN { + display "Build Redboot ROM binary image" + active_if CYGBLD_BUILD_REDBOOT + default_value 1 + no_define + description "This option enables the conversion of the Redboot ELF + image to a binary image suitable for ROM programming." + + make -priority 325 { + /bin/redboot.bin : /bin/redboot.elf + $(OBJCOPY) --strip-debug $< $(@:.bin=.img) + $(OBJCOPY) -O srec $< $(@:.bin=.srec) + $(OBJCOPY) -O binary $< $@ + } + } + } } diff --git a/packages/hal/arm/pid/current/include/hal_diag.h b/packages/hal/arm/pid/current/include/hal_diag.h --- a/packages/hal/arm/pid/current/include/hal_diag.h +++ b/packages/hal/arm/pid/current/include/hal_diag.h @@ -82,5 +82,11 @@ externC void hal_diag_read_char(char *c) externC void hal_diag_led(int n); /*---------------------------------------------------------------------------*/ +// delay + +extern void hal_delay_us(cyg_int32 usecs); +#define HAL_DELAY_US(n) hal_delay_us(n); + +/*---------------------------------------------------------------------------*/ /* end of hal_diag.h */ #endif /* CYGONCE_HAL_DIAG_H */ diff --git a/packages/hal/arm/pid/current/src/pid_misc.c b/packages/hal/arm/pid/current/src/pid_misc.c --- a/packages/hal/arm/pid/current/src/pid_misc.c +++ b/packages/hal/arm/pid/current/src/pid_misc.c @@ -58,6 +58,20 @@ /*------------------------------------------------------------------------*/ // Timer registers +#define CYG_DEVICE_TIMER1_BASE 0x0A800020 +#define CYG_DEVICE_TIMER1_LOAD \ + ((volatile cyg_uint32 *) (CYG_DEVICE_TIMER1_BASE + 0x00)) + // Load value, read/write +#define CYG_DEVICE_TIMER1_CURRENT \ + ((volatile cyg_uint32 *) (CYG_DEVICE_TIMER1_BASE + 0x04)) + // Current value, read +#define CYG_DEVICE_TIMER1_CONTROL \ + ((volatile cyg_uint32 *) (CYG_DEVICE_TIMER1_BASE + 0x08)) + // Control register, read/write +#define CYG_DEVICE_TIMER1_CLEAR \ + ((volatile cyg_uint32 *) (CYG_DEVICE_TIMER1_BASE + 0x0C)) + // Clears interrrupt, write only + #define CYG_DEVICE_TIMER_BASE 0x0A800020 #define CYG_DEVICE_TIMER_LOAD \ ((volatile cyg_uint32 *) (CYG_DEVICE_TIMER_BASE + 0x00)) @@ -127,6 +141,31 @@ void hal_clock_read(cyg_uint32 *pvalue) // and decreases } +// ------------------------------------------------------------------------- +// +// Delay for some number of micro-seconds +// +void hal_delay_us(cyg_int32 usecs) +{ + cyg_uint32 value; + cyg_uint64 ticks = ((usecs*CYGNUM_HAL_RTC_PERIOD*CYGNUM_HAL_RTC_DENOMINATOR)/1000000); + + HAL_WRITE_UINT32(CYG_DEVICE_TIMER1_CONTROL, CTL_DISABLE); // Turn off + HAL_WRITE_UINT32(CYG_DEVICE_TIMER1_LOAD, ticks); + HAL_WRITE_UINT32(CYG_DEVICE_TIMER1_CONTROL, + CTL_ENABLE | CTL_FREERUN | CTL_SCALE_16); + + // Wait for timer to underflow + do { + HAL_READ_UINT32(CYG_DEVICE_TIMER_CURRENT, value); + value &= 0xFFFF; + } while (value < 0x7fff); + + HAL_WRITE_UINT32(CYG_DEVICE_TIMER1_CONTROL, CTL_DISABLE); // Turn off +} + +// ------------------------------------------------------------------------- + void hal_hardware_init(void) { // Any hardware/platform initialization that needs to be done. diff --git a/packages/hal/arm/sa11x0/assabet/current/ChangeLog b/packages/hal/arm/sa11x0/assabet/current/ChangeLog --- a/packages/hal/arm/sa11x0/assabet/current/ChangeLog +++ b/packages/hal/arm/sa11x0/assabet/current/ChangeLog @@ -1,3 +1,45 @@ +2001-02-24 Gary Thomas + + * src/lcd_support.c: Make check for sscanf() consistent. + + * cdl/hal_arm_sa11x0_assabet.cdl: + Define machine type for Linux bootstrap. + + * src/redboot_linux_exec.c: + Removed - now handled by SA11x0 variant code. + +2001-02-23 Gary Thomas + + * misc/redboot_RAM.ecm: Renamed from redboot_RAM.cfg + + * misc/redboot_ROM.ecm: Renamed from redboot_ROM.cfg + +2001-02-22 Gary Thomas + + * src/redboot_linux_exec.c: Add new tagged parameter support for + latest Linux kernel. + +2001-02-20 Gary Thomas + + * cdl/hal_arm_sa11x0_assabet.cdl: Change Linux boot support. + + * src/redboot_linux_exec.c: New file - replaces redboot_cmds.c + Supports booting Linux kernel, including image relocation and + passing additional info to kernel such as ramdisk size/location. + + * src/redboot_cmds.c: Depreciated. + +2001-02-20 Jonathan Larmour + + * src/lcd_support.c: Warning cleanup. + Access frame buffer through volatile correctly. + Use isoinfra to identify presence of sscanf + +2001-02-20 Gary Thomas + + * cdl/hal_arm_sa11x0_assabet.cdl: Use new CDL to control + available serial ports - CYGHWR_HAL_ARM_SA11X0_UART1. + 2001-02-08 Jesper Skov * cdl/hal_arm_sa11x0_assabet.cdl: Respect channel configuration diff --git a/packages/hal/arm/sa11x0/assabet/current/cdl/hal_arm_sa11x0_assabet.cdl b/packages/hal/arm/sa11x0/assabet/current/cdl/hal_arm_sa11x0_assabet.cdl --- a/packages/hal/arm/sa11x0/assabet/current/cdl/hal_arm_sa11x0_assabet.cdl +++ b/packages/hal/arm/sa11x0/assabet/current/cdl/hal_arm_sa11x0_assabet.cdl @@ -23,7 +23,7 @@ # # The Initial Developer of the Original Code is Red Hat. # Portions created by Red Hat are -# Copyright (C) 1998, 1999, 2000 Red Hat, Inc. +# Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc. # All Rights Reserved. # ------------------------------------------- # @@ -57,6 +57,8 @@ cdl_package CYGPKG_HAL_ARM_SA11X0_ASSABE implements CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT implements CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT_GUARANTEED + implements CYGHWR_HAL_ARM_SA11X0_UART1 + define_proc { puts $::cdl_system_header "#define CYGBLD_HAL_TARGET_H " puts $::cdl_system_header "#define CYGBLD_HAL_VARIANT_H " @@ -64,6 +66,7 @@ cdl_package CYGPKG_HAL_ARM_SA11X0_ASSABE puts $::cdl_header "#define HAL_PLATFORM_CPU \"StrongARM 1110\"" puts $::cdl_header "#define HAL_PLATFORM_BOARD \"Assabet development system\"" puts $::cdl_header "#define HAL_PLATFORM_EXTRA \"\"" + puts $::cdl_header "#define HAL_PLATFORM_MACHINE_TYPE 25" puts $::cdl_header "#define HAL_ARCH_PROGRAM_NEW_STACK assabet_program_new_stack" } @@ -323,8 +326,6 @@ cdl_package CYGPKG_HAL_ARM_SA11X0_ASSABE This option lists the target's requirements for a valid Redboot configuration." - compile -library=libextras.a redboot_cmds.c - cdl_option CYGBLD_BUILD_REDBOOT_BIN { display "Build Redboot ROM binary image" active_if CYGBLD_BUILD_REDBOOT diff --git a/packages/hal/arm/sa11x0/assabet/current/misc/redboot_RAM.cfg b/packages/hal/arm/sa11x0/assabet/current/misc/redboot_RAM.cfg deleted file mode 100644 --- a/packages/hal/arm/sa11x0/assabet/current/misc/redboot_RAM.cfg +++ /dev/null @@ -1,77 +0,0 @@ -cdl_savefile_version 1; -cdl_savefile_command cdl_savefile_version {}; -cdl_savefile_command cdl_savefile_command {}; -cdl_savefile_command cdl_configuration { description hardware template package }; -cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; - -cdl_configuration eCos { - description "" ; - hardware assabet ; - template redboot ; - package -hardware CYGPKG_HAL_ARM current ; - package -hardware CYGPKG_HAL_ARM_SA11X0 current ; - package -hardware CYGPKG_HAL_ARM_SA11X0_ASSABET current ; - package -hardware CYGPKG_IO_SERIAL_ARM_SA11X0 current ; - package -hardware CYGPKG_DEVS_PCMCIA_ASSABET current ; - package -hardware CYGPKG_DEVS_FLASH_ASSABET current ; - package -template CYGPKG_HAL current ; - package -template CYGPKG_INFRA current ; - package -template CYGPKG_REDBOOT current ; - package CYGPKG_IO_PCMCIA current ; - package CYGPKG_DEVS_ETH_CF current ; - package CYGPKG_IO_FLASH current ; - package CYGPKG_IO_ETH_DRIVERS current ; -}; - -cdl_option CYGBLD_BUILD_GDB_STUBS { - user_value 0 -}; - -cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { - user_value 0 -}; - -cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { - inferred_value 0 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { - inferred_value 0 -}; - -cdl_option CYGSEM_HAL_USE_ROM_MONITOR { - inferred_value 0 0 -}; - -cdl_component CYG_HAL_STARTUP { - user_value RAM -}; - -cdl_component CYGBLD_BUILD_REDBOOT { - user_value 1 -}; - -cdl_component CYGPKG_REDBOOT_NETWORKING { - user_value 1 -}; - -cdl_component CYGSEM_REDBOOT_FLASH_CONFIG { - user_value 1 -}; - -cdl_option CYGSEM_REDBOOT_BSP_SYSCALLS { - inferred_value 1 -}; - - diff --git a/packages/hal/arm/sa11x0/assabet/current/misc/redboot_RAM.ecm b/packages/hal/arm/sa11x0/assabet/current/misc/redboot_RAM.ecm new file mode 100644 --- /dev/null +++ b/packages/hal/arm/sa11x0/assabet/current/misc/redboot_RAM.ecm @@ -0,0 +1,77 @@ +cdl_savefile_version 1; +cdl_savefile_command cdl_savefile_version {}; +cdl_savefile_command cdl_savefile_command {}; +cdl_savefile_command cdl_configuration { description hardware template package }; +cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; + +cdl_configuration eCos { + description "" ; + hardware assabet ; + template redboot ; + package -hardware CYGPKG_HAL_ARM current ; + package -hardware CYGPKG_HAL_ARM_SA11X0 current ; + package -hardware CYGPKG_HAL_ARM_SA11X0_ASSABET current ; + package -hardware CYGPKG_IO_SERIAL_ARM_SA11X0 current ; + package -hardware CYGPKG_DEVS_PCMCIA_ASSABET current ; + package -hardware CYGPKG_DEVS_FLASH_ASSABET current ; + package -template CYGPKG_HAL current ; + package -template CYGPKG_INFRA current ; + package -template CYGPKG_REDBOOT current ; + package CYGPKG_IO_PCMCIA current ; + package CYGPKG_DEVS_ETH_CF current ; + package CYGPKG_IO_FLASH current ; + package CYGPKG_IO_ETH_DRIVERS current ; +}; + +cdl_option CYGBLD_BUILD_GDB_STUBS { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { + inferred_value 0 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { + inferred_value 0 +}; + +cdl_option CYGSEM_HAL_USE_ROM_MONITOR { + inferred_value 0 0 +}; + +cdl_component CYG_HAL_STARTUP { + user_value RAM +}; + +cdl_component CYGBLD_BUILD_REDBOOT { + user_value 1 +}; + +cdl_component CYGPKG_REDBOOT_NETWORKING { + user_value 1 +}; + +cdl_component CYGSEM_REDBOOT_FLASH_CONFIG { + user_value 1 +}; + +cdl_option CYGSEM_REDBOOT_BSP_SYSCALLS { + inferred_value 1 +}; + + diff --git a/packages/hal/arm/sa11x0/assabet/current/misc/redboot_ROM.cfg b/packages/hal/arm/sa11x0/assabet/current/misc/redboot_ROM.cfg deleted file mode 100644 --- a/packages/hal/arm/sa11x0/assabet/current/misc/redboot_ROM.cfg +++ /dev/null @@ -1,77 +0,0 @@ -cdl_savefile_version 1; -cdl_savefile_command cdl_savefile_version {}; -cdl_savefile_command cdl_savefile_command {}; -cdl_savefile_command cdl_configuration { description hardware template package }; -cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; - -cdl_configuration eCos { - description "" ; - hardware assabet ; - template redboot ; - package -hardware CYGPKG_HAL_ARM current ; - package -hardware CYGPKG_HAL_ARM_SA11X0 current ; - package -hardware CYGPKG_HAL_ARM_SA11X0_ASSABET current ; - package -hardware CYGPKG_IO_SERIAL_ARM_SA11X0 current ; - package -hardware CYGPKG_DEVS_PCMCIA_ASSABET current ; - package -hardware CYGPKG_DEVS_FLASH_ASSABET current ; - package -template CYGPKG_HAL current ; - package -template CYGPKG_INFRA current ; - package -template CYGPKG_REDBOOT current ; - package CYGPKG_IO_PCMCIA current ; - package CYGPKG_DEVS_ETH_CF current ; - package CYGPKG_IO_FLASH current ; - package CYGPKG_IO_ETH_DRIVERS current ; -}; - -cdl_option CYGBLD_BUILD_GDB_STUBS { - user_value 0 -}; - -cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { - user_value 0 -}; - -cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { - inferred_value 0 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { - inferred_value 0 -}; - -cdl_option CYGSEM_HAL_ROM_MONITOR { - user_value 1 -}; - -cdl_option CYGSEM_HAL_USE_ROM_MONITOR { - inferred_value 0 0 -}; - -cdl_component CYG_HAL_STARTUP { - user_value ROM -}; - -cdl_component CYGBLD_BUILD_REDBOOT { - user_value 1 -}; - -cdl_component CYGPKG_REDBOOT_NETWORKING { - user_value 1 -}; - -cdl_component CYGSEM_REDBOOT_FLASH_CONFIG { - user_value 1 -}; - - diff --git a/packages/hal/arm/sa11x0/assabet/current/misc/redboot_ROM.ecm b/packages/hal/arm/sa11x0/assabet/current/misc/redboot_ROM.ecm new file mode 100644 --- /dev/null +++ b/packages/hal/arm/sa11x0/assabet/current/misc/redboot_ROM.ecm @@ -0,0 +1,77 @@ +cdl_savefile_version 1; +cdl_savefile_command cdl_savefile_version {}; +cdl_savefile_command cdl_savefile_command {}; +cdl_savefile_command cdl_configuration { description hardware template package }; +cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; + +cdl_configuration eCos { + description "" ; + hardware assabet ; + template redboot ; + package -hardware CYGPKG_HAL_ARM current ; + package -hardware CYGPKG_HAL_ARM_SA11X0 current ; + package -hardware CYGPKG_HAL_ARM_SA11X0_ASSABET current ; + package -hardware CYGPKG_IO_SERIAL_ARM_SA11X0 current ; + package -hardware CYGPKG_DEVS_PCMCIA_ASSABET current ; + package -hardware CYGPKG_DEVS_FLASH_ASSABET current ; + package -template CYGPKG_HAL current ; + package -template CYGPKG_INFRA current ; + package -template CYGPKG_REDBOOT current ; + package CYGPKG_IO_PCMCIA current ; + package CYGPKG_DEVS_ETH_CF current ; + package CYGPKG_IO_FLASH current ; + package CYGPKG_IO_ETH_DRIVERS current ; +}; + +cdl_option CYGBLD_BUILD_GDB_STUBS { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { + inferred_value 0 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { + inferred_value 0 +}; + +cdl_option CYGSEM_HAL_ROM_MONITOR { + user_value 1 +}; + +cdl_option CYGSEM_HAL_USE_ROM_MONITOR { + inferred_value 0 0 +}; + +cdl_component CYG_HAL_STARTUP { + user_value ROM +}; + +cdl_component CYGBLD_BUILD_REDBOOT { + user_value 1 +}; + +cdl_component CYGPKG_REDBOOT_NETWORKING { + user_value 1 +}; + +cdl_component CYGSEM_REDBOOT_FLASH_CONFIG { + user_value 1 +}; + + diff --git a/packages/hal/arm/sa11x0/assabet/current/src/lcd_support.c b/packages/hal/arm/sa11x0/assabet/current/src/lcd_support.c --- a/packages/hal/arm/sa11x0/assabet/current/src/lcd_support.c +++ b/packages/hal/arm/sa11x0/assabet/current/src/lcd_support.c @@ -48,6 +48,13 @@ #include #include +#ifdef CYGPKG_ISOINFRA +# include +# ifdef CYGINT_ISO_STDIO_FORMATTED_IO +# include // sscanf +# endif +#endif + #include "banner.xpm" #ifndef FALSE @@ -65,7 +72,7 @@ static struct lcd_frame { #define RGB_GREEN(x) (((x)&0x3F)<<5) #define RGB_BLUE(x) ((x)&0x1F) -static volatile struct lcd_frame *fp; +static struct lcd_frame * volatile fp; static int _hexdigit(char c) @@ -103,7 +110,7 @@ parse_color(char *cp) } } -#ifndef CYGPKG_LIBC_STDIO +#ifndef CYGINT_ISO_STDIO_FORMATTED_IO static int get_int(char **_cp) { @@ -132,7 +139,7 @@ show_xpm(char *xpm[]) unsigned short colors[256]; // Mapped by character index cp = xpm[0]; -#ifdef CYGPKG_LIBC_STDIO +#ifdef CYGINT_ISO_STDIO_FORMATTED_IO if (sscanf(cp, "%d %d %d", &ncols, &nrows, &nclrs) != 3) { #else if (((ncols = get_int(&cp)) < 0) || @@ -170,7 +177,7 @@ show_xpm(char *xpm[]) #define FONT_WIDTH 8 #define CURSOR_ON 0x5F #define CURSOR_OFF 0x20 -static char font_table[LAST_CHAR-FIRST_CHAR+1][8] = +static const char font_table[LAST_CHAR-FIRST_CHAR+1][8] = { { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* */ { 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x00 }, /* ! */ @@ -280,15 +287,15 @@ static char font_table[LAST_CHAR-FIRST_C #define PIXEL_MASK ((1< - -#include // Board definitions -#include -#include -#include - - -// Exported CLI function(s) -RedBoot_cmd("exec", - "Execute an image - with MMU off", - "[-w timeout] []", - do_exec - ); - -typedef void code_fun(void); - -static void -do_exec(int argc, char *argv[]) -{ - unsigned long entry; - unsigned long oldints; - code_fun *fun, *prg; - bool wait_time_set; - int wait_time, res, i; - struct option_info opts[1]; - char line[8]; - unsigned long _prg[32], *ip; - - entry = (unsigned long)entry_address; // Default from last 'load' operation - init_opts(&opts[0], 'w', true, OPTION_ARG_TYPE_NUM, - (void **)&wait_time, (bool *)&wait_time_set, "wait timeout"); - if (!scan_opts(argc, argv, 1, opts, 1, (void *)&entry, OPTION_ARG_TYPE_NUM, "starting address")) - { - return; - } - if (wait_time_set) { - printf("About to start execution at %p - abort with ^C within %d seconds\n", - (void *)entry, wait_time); - res = gets(line, sizeof(line), wait_time*1000); - if (res == _GETS_CTRLC) { - return; - } - } - ip = (unsigned long *)&&lab1; - for (i = 0; i < (unsigned long)&&end1-(unsigned long)&&lab1; i++) { - _prg[i] = *ip++; - } - HAL_DISABLE_INTERRUPTS(oldints); - HAL_DCACHE_SYNC(); - HAL_ICACHE_DISABLE(); - HAL_DCACHE_DISABLE(); - HAL_DCACHE_SYNC(); - HAL_ICACHE_INVALIDATE_ALL(); - HAL_DCACHE_INVALIDATE_ALL(); - ip = (unsigned long *)_prg; - // Not call this code - fun = (code_fun *)((entry & 0x0FFFFFFF) + SA11X0_RAM_BANK0_BASE); // Absolute address - prg = (code_fun *)((unsigned long)ip + SA11X0_RAM_BANK0_BASE); // Absolute address - asm volatile ("mov r5,%0" : : "r"(fun) : "r5"); - asm volatile ("mov r1,%0; mov pc,r1" : : "r"(prg)); - lab1: - // Tricky code. We are currently running with the MMU on and the - // memory map convoluted from 1-1. This code must be copied to RAM - // and then executed at the non-mapped address. Then when the code - // turns off the MMU, the control flow is unchanged and control can - // be passed safely to the program to be executed. - // This magic was created in order to be able to execute standard - // Linux kernels with as little change/perturberance as possible. - asm volatile ("mrs r0,cpsr;" - "msr spsr,r0;" - "bic r0,r0,#0x1F;" // Put processor in IRQ mode - "orr r0,r0,#0x12;" - "msr cpsr,r0;" - "mov lr,r5;" - "mov sp,r5;" // Give the kernel a stack just below the entry point - "mov r1,#0;" - "mcr p15,0,r1,c1,c0;" - "mov r0,#0;" // Set up Assabet load magic - "mov r1,#0x19;" - "movs pc,lr" : : ); - end1: -} diff --git a/packages/hal/arm/sa11x0/brutus/current/ChangeLog b/packages/hal/arm/sa11x0/brutus/current/ChangeLog --- a/packages/hal/arm/sa11x0/brutus/current/ChangeLog +++ b/packages/hal/arm/sa11x0/brutus/current/ChangeLog @@ -1,3 +1,14 @@ +2001-02-23 Gary Thomas + + * misc/redboot_ROM.ecm: Renamed from redboot_ROM.cfg + + * misc/redboot_RAM.ecm: Renamed from redboot_RAM.cfg + +2001-02-20 Gary Thomas + + * cdl/hal_arm_sa11x0_brutus.cdl: New CDL describing serial + ports - CYGHWR_HAL_ARM_SA11X0_UART1,3. + 2001-02-08 Jesper Skov * cdl/hal_arm_sa11x0_brutus.cdl: Respect channel configuration diff --git a/packages/hal/arm/sa11x0/brutus/current/cdl/hal_arm_sa11x0_brutus.cdl b/packages/hal/arm/sa11x0/brutus/current/cdl/hal_arm_sa11x0_brutus.cdl --- a/packages/hal/arm/sa11x0/brutus/current/cdl/hal_arm_sa11x0_brutus.cdl +++ b/packages/hal/arm/sa11x0/brutus/current/cdl/hal_arm_sa11x0_brutus.cdl @@ -57,6 +57,9 @@ cdl_package CYGPKG_HAL_ARM_SA11X0_BRUTUS implements CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT implements CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT_GUARANTEED + implements CYGHWR_HAL_ARM_SA11X0_UART1 + implements CYGHWR_HAL_ARM_SA11X0_UART3 + define_proc { puts $::cdl_system_header "#define CYGBLD_HAL_TARGET_H " puts $::cdl_system_header "#define CYGBLD_HAL_VARIANT_H " diff --git a/packages/hal/arm/sa11x0/brutus/current/misc/redboot_RAM.cfg b/packages/hal/arm/sa11x0/brutus/current/misc/redboot_RAM.cfg deleted file mode 100644 --- a/packages/hal/arm/sa11x0/brutus/current/misc/redboot_RAM.cfg +++ /dev/null @@ -1,61 +0,0 @@ -cdl_savefile_version 1; -cdl_savefile_command cdl_savefile_version {}; -cdl_savefile_command cdl_savefile_command {}; -cdl_savefile_command cdl_configuration { description hardware template package }; -cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; - -cdl_configuration eCos { - description "" ; - hardware brutus ; - template redboot ; - package -hardware CYGPKG_HAL_ARM current ; - package -hardware CYGPKG_HAL_ARM_SA11X0 current ; - package -hardware CYGPKG_HAL_ARM_SA11X0_BRUTUS current ; - package -hardware CYGPKG_IO_SERIAL_ARM_SA11X0 current ; - package -template CYGPKG_HAL current ; - package -template CYGPKG_INFRA current ; - package -template CYGPKG_REDBOOT current ; -}; - -cdl_option CYGBLD_BUILD_GDB_STUBS { - user_value 0 -}; - -cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { - user_value 0 -}; - -cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { - inferred_value 0 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { - inferred_value 0 -}; - -cdl_option CYGSEM_HAL_USE_ROM_MONITOR { - inferred_value 0 0 -}; - -cdl_component CYG_HAL_STARTUP { - user_value RAM -}; - -cdl_option CYGBLD_BUILD_REDBOOT { - user_value 1 -}; - -cdl_option CYGSEM_REDBOOT_BSP_SYSCALLS { - inferred_value 1 -}; diff --git a/packages/hal/arm/sa11x0/brutus/current/misc/redboot_RAM.ecm b/packages/hal/arm/sa11x0/brutus/current/misc/redboot_RAM.ecm new file mode 100644 --- /dev/null +++ b/packages/hal/arm/sa11x0/brutus/current/misc/redboot_RAM.ecm @@ -0,0 +1,61 @@ +cdl_savefile_version 1; +cdl_savefile_command cdl_savefile_version {}; +cdl_savefile_command cdl_savefile_command {}; +cdl_savefile_command cdl_configuration { description hardware template package }; +cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; + +cdl_configuration eCos { + description "" ; + hardware brutus ; + template redboot ; + package -hardware CYGPKG_HAL_ARM current ; + package -hardware CYGPKG_HAL_ARM_SA11X0 current ; + package -hardware CYGPKG_HAL_ARM_SA11X0_BRUTUS current ; + package -hardware CYGPKG_IO_SERIAL_ARM_SA11X0 current ; + package -template CYGPKG_HAL current ; + package -template CYGPKG_INFRA current ; + package -template CYGPKG_REDBOOT current ; +}; + +cdl_option CYGBLD_BUILD_GDB_STUBS { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { + inferred_value 0 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { + inferred_value 0 +}; + +cdl_option CYGSEM_HAL_USE_ROM_MONITOR { + inferred_value 0 0 +}; + +cdl_component CYG_HAL_STARTUP { + user_value RAM +}; + +cdl_option CYGBLD_BUILD_REDBOOT { + user_value 1 +}; + +cdl_option CYGSEM_REDBOOT_BSP_SYSCALLS { + inferred_value 1 +}; diff --git a/packages/hal/arm/sa11x0/brutus/current/misc/redboot_ROM.cfg b/packages/hal/arm/sa11x0/brutus/current/misc/redboot_ROM.cfg deleted file mode 100644 --- a/packages/hal/arm/sa11x0/brutus/current/misc/redboot_ROM.cfg +++ /dev/null @@ -1,65 +0,0 @@ -cdl_savefile_version 1; -cdl_savefile_command cdl_savefile_version {}; -cdl_savefile_command cdl_savefile_command {}; -cdl_savefile_command cdl_configuration { description hardware template package }; -cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; - -cdl_configuration eCos { - description "" ; - hardware brutus ; - template redboot ; - package -hardware CYGPKG_HAL_ARM current ; - package -hardware CYGPKG_HAL_ARM_SA11X0 current ; - package -hardware CYGPKG_HAL_ARM_SA11X0_BRUTUS current ; - package -hardware CYGPKG_IO_SERIAL_ARM_SA11X0 current ; - package -template CYGPKG_HAL current ; - package -template CYGPKG_INFRA current ; - package -template CYGPKG_REDBOOT current ; -}; - -cdl_option CYGBLD_BUILD_GDB_STUBS { - user_value 0 -}; - -cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { - user_value 0 -}; - -cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { - inferred_value 0 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { - inferred_value 0 -}; - -cdl_option CYGSEM_HAL_ROM_MONITOR { - user_value 1 -}; - -cdl_option CYGSEM_HAL_USE_ROM_MONITOR { - inferred_value 0 0 -}; - -cdl_component CYG_HAL_STARTUP { - user_value ROM -}; - -cdl_option CYGBLD_BUILD_REDBOOT { - user_value 1 -}; - -cdl_option CYGSEM_REDBOOT_BSP_SYSCALLS { - inferred_value 1 -}; diff --git a/packages/hal/arm/sa11x0/brutus/current/misc/redboot_ROM.ecm b/packages/hal/arm/sa11x0/brutus/current/misc/redboot_ROM.ecm new file mode 100644 --- /dev/null +++ b/packages/hal/arm/sa11x0/brutus/current/misc/redboot_ROM.ecm @@ -0,0 +1,65 @@ +cdl_savefile_version 1; +cdl_savefile_command cdl_savefile_version {}; +cdl_savefile_command cdl_savefile_command {}; +cdl_savefile_command cdl_configuration { description hardware template package }; +cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; + +cdl_configuration eCos { + description "" ; + hardware brutus ; + template redboot ; + package -hardware CYGPKG_HAL_ARM current ; + package -hardware CYGPKG_HAL_ARM_SA11X0 current ; + package -hardware CYGPKG_HAL_ARM_SA11X0_BRUTUS current ; + package -hardware CYGPKG_IO_SERIAL_ARM_SA11X0 current ; + package -template CYGPKG_HAL current ; + package -template CYGPKG_INFRA current ; + package -template CYGPKG_REDBOOT current ; +}; + +cdl_option CYGBLD_BUILD_GDB_STUBS { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { + inferred_value 0 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { + inferred_value 0 +}; + +cdl_option CYGSEM_HAL_ROM_MONITOR { + user_value 1 +}; + +cdl_option CYGSEM_HAL_USE_ROM_MONITOR { + inferred_value 0 0 +}; + +cdl_component CYG_HAL_STARTUP { + user_value ROM +}; + +cdl_option CYGBLD_BUILD_REDBOOT { + user_value 1 +}; + +cdl_option CYGSEM_REDBOOT_BSP_SYSCALLS { + inferred_value 1 +}; diff --git a/packages/hal/arm/sa11x0/sa1100mm/current/ChangeLog b/packages/hal/arm/sa11x0/sa1100mm/current/ChangeLog --- a/packages/hal/arm/sa11x0/sa1100mm/current/ChangeLog +++ b/packages/hal/arm/sa11x0/sa1100mm/current/ChangeLog @@ -1,3 +1,9 @@ +2001-02-23 Gary Thomas + + * misc/redboot_ROM.ecm: Renamed from redboot_ROM.cfg + + * misc/redboot_RAM.ecm: Renamed from redboot_RAM.cfg + 2001-02-08 Jesper Skov * cdl/hal_arm_sa11x0_sa1100mm.cdl: Respect channel configuration diff --git a/packages/hal/arm/sa11x0/sa1100mm/current/misc/redboot_RAM.cfg b/packages/hal/arm/sa11x0/sa1100mm/current/misc/redboot_RAM.cfg deleted file mode 100644 --- a/packages/hal/arm/sa11x0/sa1100mm/current/misc/redboot_RAM.cfg +++ /dev/null @@ -1,55 +0,0 @@ -cdl_savefile_version 1; -cdl_savefile_command cdl_savefile_version {}; -cdl_savefile_command cdl_savefile_command {}; -cdl_savefile_command cdl_configuration { description hardware template package }; -cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; - -cdl_configuration eCos { - description "" ; - hardware sa1100mm ; - template redboot ; - package -hardware CYGPKG_HAL_ARM current ; - package -hardware CYGPKG_HAL_ARM_SA11X0_SA1100MM current ; - package -hardware CYGPKG_IO_PCI current ; - package -hardware CYGPKG_IO_SERIAL_ARM_SA11X0 current ; - package -template CYGPKG_HAL current ; - package -template CYGPKG_INFRA current ; - package -template CYGPKG_REDBOOT current ; - package CYGPKG_IO_FLASH current ; - package CYGPKG_DEVS_FLASH_SA1100MM current ; -}; - -cdl_option CYGBLD_BUILD_GDB_STUBS { - user_value 0 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { - inferred_value 0 -}; - -cdl_option CYGSEM_HAL_VIRTUAL_VECTOR_DIAG { - user_value 1 -}; - -cdl_option CYGSEM_HAL_USE_ROM_MONITOR { - inferred_value 0 0 -}; - -cdl_option CYGBLD_BUILD_REDBOOT { - user_value 1 -}; - -cdl_component CYG_HAL_STARTUP { - user_value RAM -}; - -cdl_option CYGSEM_REDBOOT_BSP_SYSCALLS { - inferred_value 1 -}; diff --git a/packages/hal/arm/sa11x0/sa1100mm/current/misc/redboot_RAM.ecm b/packages/hal/arm/sa11x0/sa1100mm/current/misc/redboot_RAM.ecm new file mode 100644 --- /dev/null +++ b/packages/hal/arm/sa11x0/sa1100mm/current/misc/redboot_RAM.ecm @@ -0,0 +1,55 @@ +cdl_savefile_version 1; +cdl_savefile_command cdl_savefile_version {}; +cdl_savefile_command cdl_savefile_command {}; +cdl_savefile_command cdl_configuration { description hardware template package }; +cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; + +cdl_configuration eCos { + description "" ; + hardware sa1100mm ; + template redboot ; + package -hardware CYGPKG_HAL_ARM current ; + package -hardware CYGPKG_HAL_ARM_SA11X0_SA1100MM current ; + package -hardware CYGPKG_IO_PCI current ; + package -hardware CYGPKG_IO_SERIAL_ARM_SA11X0 current ; + package -template CYGPKG_HAL current ; + package -template CYGPKG_INFRA current ; + package -template CYGPKG_REDBOOT current ; + package CYGPKG_IO_FLASH current ; + package CYGPKG_DEVS_FLASH_SA1100MM current ; +}; + +cdl_option CYGBLD_BUILD_GDB_STUBS { + user_value 0 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { + inferred_value 0 +}; + +cdl_option CYGSEM_HAL_VIRTUAL_VECTOR_DIAG { + user_value 1 +}; + +cdl_option CYGSEM_HAL_USE_ROM_MONITOR { + inferred_value 0 0 +}; + +cdl_option CYGBLD_BUILD_REDBOOT { + user_value 1 +}; + +cdl_component CYG_HAL_STARTUP { + user_value RAM +}; + +cdl_option CYGSEM_REDBOOT_BSP_SYSCALLS { + inferred_value 1 +}; diff --git a/packages/hal/arm/sa11x0/sa1100mm/current/misc/redboot_ROM.cfg b/packages/hal/arm/sa11x0/sa1100mm/current/misc/redboot_ROM.cfg deleted file mode 100644 --- a/packages/hal/arm/sa11x0/sa1100mm/current/misc/redboot_ROM.cfg +++ /dev/null @@ -1,59 +0,0 @@ -cdl_savefile_version 1; -cdl_savefile_command cdl_savefile_version {}; -cdl_savefile_command cdl_savefile_command {}; -cdl_savefile_command cdl_configuration { description hardware template package }; -cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; - -cdl_configuration eCos { - description "" ; - hardware sa1100mm ; - template redboot ; - package -hardware CYGPKG_HAL_ARM current ; - package -hardware CYGPKG_HAL_ARM_SA11X0_SA1100MM current ; - package -hardware CYGPKG_IO_PCI current ; - package -hardware CYGPKG_IO_SERIAL_ARM_SA11X0 current ; - package -template CYGPKG_HAL current ; - package -template CYGPKG_INFRA current ; - package -template CYGPKG_REDBOOT current ; - package CYGPKG_IO_FLASH current ; - package CYGPKG_DEVS_FLASH_SA1100MM current ; -}; - -cdl_option CYGBLD_BUILD_GDB_STUBS { - user_value 0 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { - inferred_value 0 -}; - -cdl_option CYGSEM_HAL_VIRTUAL_VECTOR_DIAG { - user_value 1 -}; - -cdl_option CYGSEM_HAL_USE_ROM_MONITOR { - inferred_value 0 0 -}; - -cdl_option CYGBLD_BUILD_REDBOOT { - user_value 1 -}; - -cdl_component CYG_HAL_STARTUP { - user_value ROM -}; - -cdl_option CYGSEM_HAL_ROM_MONITOR { - user_value 1 -}; - -cdl_option CYGSEM_REDBOOT_BSP_SYSCALLS { - inferred_value 1 -}; diff --git a/packages/hal/arm/sa11x0/sa1100mm/current/misc/redboot_ROM.ecm b/packages/hal/arm/sa11x0/sa1100mm/current/misc/redboot_ROM.ecm new file mode 100644 --- /dev/null +++ b/packages/hal/arm/sa11x0/sa1100mm/current/misc/redboot_ROM.ecm @@ -0,0 +1,59 @@ +cdl_savefile_version 1; +cdl_savefile_command cdl_savefile_version {}; +cdl_savefile_command cdl_savefile_command {}; +cdl_savefile_command cdl_configuration { description hardware template package }; +cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; + +cdl_configuration eCos { + description "" ; + hardware sa1100mm ; + template redboot ; + package -hardware CYGPKG_HAL_ARM current ; + package -hardware CYGPKG_HAL_ARM_SA11X0_SA1100MM current ; + package -hardware CYGPKG_IO_PCI current ; + package -hardware CYGPKG_IO_SERIAL_ARM_SA11X0 current ; + package -template CYGPKG_HAL current ; + package -template CYGPKG_INFRA current ; + package -template CYGPKG_REDBOOT current ; + package CYGPKG_IO_FLASH current ; + package CYGPKG_DEVS_FLASH_SA1100MM current ; +}; + +cdl_option CYGBLD_BUILD_GDB_STUBS { + user_value 0 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { + inferred_value 0 +}; + +cdl_option CYGSEM_HAL_VIRTUAL_VECTOR_DIAG { + user_value 1 +}; + +cdl_option CYGSEM_HAL_USE_ROM_MONITOR { + inferred_value 0 0 +}; + +cdl_option CYGBLD_BUILD_REDBOOT { + user_value 1 +}; + +cdl_component CYG_HAL_STARTUP { + user_value ROM +}; + +cdl_option CYGSEM_HAL_ROM_MONITOR { + user_value 1 +}; + +cdl_option CYGSEM_REDBOOT_BSP_SYSCALLS { + inferred_value 1 +}; diff --git a/packages/hal/arm/sa11x0/var/current/ChangeLog b/packages/hal/arm/sa11x0/var/current/ChangeLog --- a/packages/hal/arm/sa11x0/var/current/ChangeLog +++ b/packages/hal/arm/sa11x0/var/current/ChangeLog @@ -1,3 +1,55 @@ +2001-02-24 Gary Thomas + + * cdl/hal_arm_sa11x0.cdl: Add RedBoot commands/options. + + * src/redboot_linux_exec.c: New file - RedBoot commands to + support booting Linux kernel. + +2001-02-23 Jesper Skov + + * include/hal_cache.h (HAL_FLASH_CACHES_OLD_MACROS): Some + platforms use deprecated cache handling macros. + +2001-02-20 Jonathan Larmour + + * cdl/hal_arm_sa11x0.cdl: Clarify CYGHWR_HAL_ARM_SA11X0_UART1,3 + description. + +2001-02-20 Gary Thomas + + * src/hal_diag.c: + * cdl/hal_arm_sa11x0.cdl: Add CDL to control which serial ports + are available/used. + +2001-02-20 Hugo Tyson +2001-02-12 Robin Farine + + * include/hal_sa11x0.h (SA11X0_IRQ_GPIO_9_EDGE_DETECT): Define + this to be 9 not 0 - simple typo. Thanks Robin! + +2001-02-19 Hugo Tyson +2001-02-12 Robin Farine + + * src/sa11x0_misc.c (hal_clock_reset): Handles SA11X0_OSCR as a + free running counter. + (hal_clock_read): Adapts to changes in hal_clock_reset(). + (hal_delay_us): Likewise. + + There is only one counting register (OSCR), but multiple match + registers and interrupt sources (OSMR1-OSMR3). Setting our match + register to COUNT and the counter register to 0 each tick makes it + very hard to use the other match registers - whereas they are + intended for easy general use. + + This change sets our match register OSMR0 to the next time + interval and leaves the OSCR freerunning so that other match + registers can easily be used, which is much more flexible, and + much more what was intented. + + Because the OSCR is just a counter, and the match registers + compare only for exact equality, no special measures to deal with + the counter wrapping/overflowing are needed. + 2001-02-08 Jesper Skov * src/hal_diag.c: Replace CYGSEM_HAL_DIAG_MANGLER_None with diff --git a/packages/hal/arm/sa11x0/var/current/cdl/hal_arm_sa11x0.cdl b/packages/hal/arm/sa11x0/var/current/cdl/hal_arm_sa11x0.cdl --- a/packages/hal/arm/sa11x0/var/current/cdl/hal_arm_sa11x0.cdl +++ b/packages/hal/arm/sa11x0/var/current/cdl/hal_arm_sa11x0.cdl @@ -103,6 +103,25 @@ cdl_package CYGPKG_HAL_ARM_SA11X0 { } } + # Control over hardware layout. + cdl_interface CYGHWR_HAL_ARM_SA11X0_UART1 { + display "UART1 available as diagnostic/debug channel" + description " + The SA11x0 chip has multiple serial channels which may be + used for different things on different platforms. This + interface allows a platform to indicate that the specified + serial port can be used as a diagnostic and/or debug channel." + } + + cdl_interface CYGHWR_HAL_ARM_SA11X0_UART3 { + display "UART3 available as diagnostic/debug channel" + description " + The SA11x0 chip has multiple serial channels which may be + used for different things on different platforms. This + interface allows a platform to indicate that the specified + serial port can be used as a diagnostic and/or debug channel." + } + cdl_option CYGPKG_HAL_ARM_SA11X0_TESTS { display "SA11x0 HAL tests" flavor data @@ -112,4 +131,24 @@ cdl_package CYGPKG_HAL_ARM_SA11X0 { This option specifies the set of tests for the SA11x0 HAL." } + cdl_component CYGPKG_REDBOOT_SA11X0_OPTIONS { + display "Redboot for SA11x0 options" + flavor none + no_define + parent CYGPKG_REDBOOT + active_if CYGPKG_REDBOOT + description " + This option lists the target's requirements for a valid Redboot + configuration." + + cdl_option CYGSEM_REDBOOT_SA11X0_LINUX_BOOT { + display "Support booting Linux via RedBoot" + flavor bool + default_value 1 + description " + This option enables RedBoot to support booting of a Linux kernel." + + compile -library=libextras.a redboot_linux_exec.c + } + } } diff --git a/packages/hal/arm/sa11x0/var/current/include/hal_cache.h b/packages/hal/arm/sa11x0/var/current/include/hal_cache.h --- a/packages/hal/arm/sa11x0/var/current/include/hal_cache.h +++ b/packages/hal/arm/sa11x0/var/current/include/hal_cache.h @@ -55,6 +55,22 @@ #include //----------------------------------------------------------------------------- +// FIXME: This definition forces the IO flash driver to use a +// known-good procedure for fiddling flash before calling flash device +// driver functions. The procedure breaks on other platform/driver +// combinations though so is depricated. Hence this definition. +// +// If you work on this target, please try to remove this definition +// and verify that the flash driver still works (both from RAM and +// flash). If it does, remove the definition and this comment for good +// [and the old macro definition if this happens to be the last client +// of that code]. +#if defined(CYGPKG_HAL_ARM_SA11X0_ASSABET) \ + || defined(CYGPKG_HAL_ARM_SA11X0_SA1100MM) +# define HAL_FLASH_CACHES_OLD_MACROS +#endif + +//----------------------------------------------------------------------------- // Cache dimensions #define HAL_ICACHE_SIZE SA11X0_ICACHE_SIZE diff --git a/packages/hal/arm/sa11x0/var/current/include/hal_sa11x0.h b/packages/hal/arm/sa11x0/var/current/include/hal_sa11x0.h --- a/packages/hal/arm/sa11x0/var/current/include/hal_sa11x0.h +++ b/packages/hal/arm/sa11x0/var/current/include/hal_sa11x0.h @@ -221,7 +221,7 @@ #define SA11X0_IRQ_GPIO_6_EDGE_DETECT 6 #define SA11X0_IRQ_GPIO_7_EDGE_DETECT 7 #define SA11X0_IRQ_GPIO_8_EDGE_DETECT 8 -#define SA11X0_IRQ_GPIO_9_EDGE_DETECT 0 +#define SA11X0_IRQ_GPIO_9_EDGE_DETECT 9 #define SA11X0_IRQ_GPIO_10_EDGE_DETECT 10 #define SA11X0_IRQ_GPIO_ANY_EDGE_DETECT 11 #define SA11X0_IRQ_LCD_CONT_SERVICE_REQUEST 12 diff --git a/packages/hal/arm/sa11x0/var/current/src/hal_diag.c b/packages/hal/arm/sa11x0/var/current/src/hal_diag.c --- a/packages/hal/arm/sa11x0/var/current/src/hal_diag.c +++ b/packages/hal/arm/sa11x0/var/current/src/hal_diag.c @@ -177,9 +177,13 @@ cyg_hal_plf_serial_getc(void* __ch_data) return ch; } -static channel_data_t ser_channels[2] = { +static channel_data_t ser_channels[] = { +#if CYGHWR_HAL_ARM_SA11X0_UART1 != 0 { (volatile struct sa11x0_serial*)SA11X0_UART1_BASE, 1000, CYGNUM_HAL_INTERRUPT_UART1 }, - { (volatile struct sa11x0_serial*)SA11X0_UART3_BASE, 1000, CYGNUM_HAL_INTERRUPT_UART3 } +#endif +#if CYGHWR_HAL_ARM_SA11X0_UART3 != 0 + { (volatile struct sa11x0_serial*)SA11X0_UART3_BASE, 1000, CYGNUM_HAL_INTERRUPT_UART3 }, +#endif }; static void @@ -311,40 +315,23 @@ cyg_hal_plf_serial_init(void) { hal_virtual_comm_table_t* comm; int cur = CYGACC_CALL_IF_SET_CONSOLE_COMM(CYGNUM_CALL_IF_SET_COMM_ID_QUERY_CURRENT); + int i; // Init channels - init_channel(&ser_channels[0]); -#if (CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS == 2) - init_channel(&ser_channels[1]); -#endif - - // Setup procs in the vector table - - // Set channel 0 - CYGACC_CALL_IF_SET_CONSOLE_COMM(0); - comm = CYGACC_CALL_IF_CONSOLE_PROCS(); - CYGACC_COMM_IF_CH_DATA_SET(*comm, &ser_channels[0]); - CYGACC_COMM_IF_WRITE_SET(*comm, cyg_hal_plf_serial_write); - CYGACC_COMM_IF_READ_SET(*comm, cyg_hal_plf_serial_read); - CYGACC_COMM_IF_PUTC_SET(*comm, cyg_hal_plf_serial_putc); - CYGACC_COMM_IF_GETC_SET(*comm, cyg_hal_plf_serial_getc); - CYGACC_COMM_IF_CONTROL_SET(*comm, cyg_hal_plf_serial_control); - CYGACC_COMM_IF_DBG_ISR_SET(*comm, cyg_hal_plf_serial_isr); - CYGACC_COMM_IF_GETC_TIMEOUT_SET(*comm, cyg_hal_plf_serial_getc_timeout); - -#if (CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS == 2) - // Set channel 1 - CYGACC_CALL_IF_SET_CONSOLE_COMM(1); - comm = CYGACC_CALL_IF_CONSOLE_PROCS(); - CYGACC_COMM_IF_CH_DATA_SET(*comm, &ser_channels[1]); - CYGACC_COMM_IF_WRITE_SET(*comm, cyg_hal_plf_serial_write); - CYGACC_COMM_IF_READ_SET(*comm, cyg_hal_plf_serial_read); - CYGACC_COMM_IF_PUTC_SET(*comm, cyg_hal_plf_serial_putc); - CYGACC_COMM_IF_GETC_SET(*comm, cyg_hal_plf_serial_getc); - CYGACC_COMM_IF_CONTROL_SET(*comm, cyg_hal_plf_serial_control); - CYGACC_COMM_IF_DBG_ISR_SET(*comm, cyg_hal_plf_serial_isr); - CYGACC_COMM_IF_GETC_TIMEOUT_SET(*comm, cyg_hal_plf_serial_getc_timeout); -#endif +#define NUMOF(x) (sizeof(x)/sizeof(x[0])) + for (i = 0; i < NUMOF(ser_channels); i++) { + init_channel(&ser_channels[i]); + CYGACC_CALL_IF_SET_CONSOLE_COMM(i); + comm = CYGACC_CALL_IF_CONSOLE_PROCS(); + CYGACC_COMM_IF_CH_DATA_SET(*comm, &ser_channels[i]); + CYGACC_COMM_IF_WRITE_SET(*comm, cyg_hal_plf_serial_write); + CYGACC_COMM_IF_READ_SET(*comm, cyg_hal_plf_serial_read); + CYGACC_COMM_IF_PUTC_SET(*comm, cyg_hal_plf_serial_putc); + CYGACC_COMM_IF_GETC_SET(*comm, cyg_hal_plf_serial_getc); + CYGACC_COMM_IF_CONTROL_SET(*comm, cyg_hal_plf_serial_control); + CYGACC_COMM_IF_DBG_ISR_SET(*comm, cyg_hal_plf_serial_isr); + CYGACC_COMM_IF_GETC_TIMEOUT_SET(*comm, cyg_hal_plf_serial_getc_timeout); + } // Restore original console CYGACC_CALL_IF_SET_CONSOLE_COMM(cur); diff --git a/packages/hal/arm/sa11x0/var/current/src/redboot_linux_exec.c b/packages/hal/arm/sa11x0/var/current/src/redboot_linux_exec.c new file mode 100644 --- /dev/null +++ b/packages/hal/arm/sa11x0/var/current/src/redboot_linux_exec.c @@ -0,0 +1,330 @@ +//========================================================================== +// +// redboot_linux_boot.c +// +// RedBoot command to boot Linux on StrongARM/SA11x0 +// +//========================================================================== +//####COPYRIGHTBEGIN#### +// +// ------------------------------------------- +// The contents of this file are subject to the Red Hat eCos Public License +// Version 1.1 (the "License"); you may not use this file except in +// compliance with the License. You may obtain a copy of the License at +// http://www.redhat.com/ +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +// License for the specific language governing rights and limitations under +// the License. +// +// The Original Code is eCos - Embedded Configurable Operating System, +// released September 30, 1998. +// +// The Initial Developer of the Original Code is Red Hat. +// Portions created by Red Hat are +// Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc. +// All Rights Reserved. +// ------------------------------------------- +// +//####COPYRIGHTEND#### +//========================================================================== +//#####DESCRIPTIONBEGIN#### +// +// Author(s): gthomas +// Contributors: gthomas +// Date: 2001-02-20 +// Purpose: +// Description: +// +// This code is part of RedBoot (tm). +// +//####DESCRIPTIONEND#### +// +//========================================================================== + +#include + +#include // Board definitions +#include +#include + +// Exported CLI function(s) +static void do_exec(int argc, char *argv[]); +RedBoot_cmd("exec", + "Execute an image - with MMU off", + "[-w timeout] [-b [-l ]]\n" + " [-r [-s ]]\n" + " [-c \"kernel command line\"] []", + do_exec + ); + +typedef void code_fun(void); +#define UNMAPPED_ADDR(x) (((unsigned long)x & 0x0FFFFFFF) + SA11X0_RAM_BANK0_BASE) + +// +// Parameter info for Linux kernel +// ** C A U T I O N ** This setup must match "asm-arm/setup.h" +// +// Info is passed at a fixed location, using a sequence of tagged +// data entries. +// + +typedef unsigned long u32; +typedef unsigned short u16; +typedef unsigned char u8; + +#define ATAG_NONE 0x00000000 +struct tag_header { + u32 size; // Size of tag (hdr+data) in *longwords* + u32 tag; +}; + +#define ATAG_CORE 0x54410001 +struct tag_core { + u32 flags; /* bit 0 = read-only */ + u32 pagesize; + u32 rootdev; +}; + +#define ATAG_MEM 0x54410002 +struct tag_mem32 { + u32 size; + u32 start; +}; + +#define ATAG_VIDEOTEXT 0x54410003 +struct tag_videotext { + u8 x; + u8 y; + u16 video_page; + u8 video_mode; + u8 video_cols; + u16 video_ega_bx; + u8 video_lines; + u8 video_isvga; + u16 video_points; +}; + +#define ATAG_RAMDISK 0x54410004 +struct tag_ramdisk { + u32 flags; /* b0 = load, b1 = prompt */ + u32 size; + u32 start; +}; + +#define ATAG_INITRD 0x54410005 +struct tag_initrd { + u32 start; + u32 size; +}; + +#define ATAG_SERIAL 0x54410006 +struct tag_serialnr { + u32 low; + u32 high; +}; + +#define ATAG_REVISION 0x54410007 +struct tag_revision { + u32 rev; +}; + +#define ATAG_VIDEOLFB 0x54410008 +struct tag_videolfb { + u16 lfb_width; + u16 lfb_height; + u16 lfb_depth; + u16 lfb_linelength; + u32 lfb_base; + u32 lfb_size; + u8 red_size; + u8 red_pos; + u8 green_size; + u8 green_pos; + u8 blue_size; + u8 blue_pos; + u8 rsvd_size; + u8 rsvd_pos; +}; + +#define ATAG_CMDLINE 0x54410009 +struct tag_cmdline { + char cmdline[1]; +}; + +#define ATAG_ACORN 0x41000101 +struct tag_acorn { + u32 memc_control_reg; + u32 vram_pages; + u8 sounddefault; + u8 adfsdrives; +}; + +#define ATAG_MEMCLK 0x41000402 +struct tag_memclk { + u32 fmemclk; +}; + +struct tag { + struct tag_header hdr; + union { + struct tag_core core; + struct tag_mem32 mem; + struct tag_videotext videotext; + struct tag_ramdisk ramdisk; + struct tag_initrd initrd; + struct tag_serialnr serialnr; + struct tag_revision revision; + struct tag_videolfb videolfb; + struct tag_cmdline cmdline; + + /* + * Acorn specific + */ + struct tag_acorn acorn; + + /* + * DC21285 specific + */ + struct tag_memclk memclk; + } u; +}; + + +static void +do_exec(int argc, char *argv[]) +{ + unsigned long entry; + unsigned long oldints; + code_fun *fun, *prg; + bool wait_time_set; + int wait_time, res, i; + bool base_addr_set, length_set, cmd_line_set; + bool ramdisk_addr_set, ramdisk_size_set; + unsigned long base_addr, length; + unsigned long ramdisk_addr, ramdisk_size; + struct option_info opts[6]; + char line[8]; + unsigned long *_prg, *ip; + char *cmd_line; + struct tag *params = (struct tag *)0x0100; + + entry = (unsigned long)entry_address; // Default from last 'load' operation + base_addr = 0x8000; + ramdisk_size = 4096*1024; + init_opts(&opts[0], 'w', true, OPTION_ARG_TYPE_NUM, + (void **)&wait_time, (bool *)&wait_time_set, "wait timeout"); + init_opts(&opts[1], 'b', true, OPTION_ARG_TYPE_NUM, + (void **)&base_addr, (bool *)&base_addr_set, "base address"); + init_opts(&opts[2], 'l', true, OPTION_ARG_TYPE_NUM, + (void **)&length, (bool *)&length_set, "length"); + init_opts(&opts[3], 'c', true, OPTION_ARG_TYPE_STR, + (void **)&cmd_line, (bool *)&cmd_line_set, "kernel command line"); + init_opts(&opts[4], 'r', true, OPTION_ARG_TYPE_NUM, + (void **)&ramdisk_addr, (bool *)&ramdisk_addr_set, "ramdisk_addr"); + init_opts(&opts[5], 's', true, OPTION_ARG_TYPE_NUM, + (void **)&ramdisk_size, (bool *)&ramdisk_size_set, "ramdisk_size"); + if (!scan_opts(argc, argv, 1, opts, 6, (void *)&entry, OPTION_ARG_TYPE_NUM, "starting address")) + { + return; + } + + // Set up parameters to pass to kernel + if (cmd_line_set || ramdisk_addr_set) { + // CORE tag must be present & first + params->hdr.size = (sizeof(struct tag_core) + sizeof(struct tag_header))/sizeof(long); + params->hdr.tag = ATAG_CORE; + params->u.core.flags = 0; + params->u.core.pagesize = 0; + params->u.core.rootdev = 0; + params = (struct tag *)((long *)params + params->hdr.size); + } + if (ramdisk_addr_set) { + params->hdr.size = (sizeof(struct tag_initrd) + sizeof(struct tag_header))/sizeof(long); + params->hdr.tag = ATAG_INITRD; + params->u.initrd.start = UNMAPPED_ADDR(ramdisk_addr); + params->u.initrd.size = ramdisk_size; + params = (struct tag *)((long *)params + params->hdr.size); + } + if (cmd_line_set) { +// Round up a quantity to a longword (32 bit) length +#define ROUNDUP(n) (((n)+3)&~3) + params->hdr.size = (ROUNDUP(strlen(cmd_line)) + sizeof(struct tag_header))/sizeof(long); + params->hdr.tag = ATAG_CMDLINE; + strcpy(params->u.cmdline.cmdline, cmd_line); + params = (struct tag *)((long *)params + params->hdr.size); + } + // Mark end of parameter list + params->hdr.size = 0; + params->hdr.tag = ATAG_NONE; + + if (wait_time_set) { + printf("About to start execution at %p - abort with ^C within %d seconds\n", + (void *)entry, wait_time); + res = gets(line, sizeof(line), wait_time*1000); + if (res == _GETS_CTRLC) { + return; + } + } + if (base_addr_set && !length_set) { + printf("Length required for non-standard base address\n"); + return; + } + ip = (unsigned long *)&&lab1; + _prg = (unsigned long *)0x1F00; // Should be a very safe location to execute from + fun = (code_fun *)UNMAPPED_ADDR(entry); + prg = (code_fun *)UNMAPPED_ADDR(_prg); + base_addr = UNMAPPED_ADDR(base_addr); + for (i = 0; i < (unsigned long)&&end1-(unsigned long)&&lab1; i++) { + *_prg++ = *ip++; + } + HAL_DISABLE_INTERRUPTS(oldints); + HAL_DCACHE_SYNC(); + HAL_ICACHE_DISABLE(); + HAL_DCACHE_DISABLE(); + HAL_DCACHE_SYNC(); + HAL_ICACHE_INVALIDATE_ALL(); + HAL_DCACHE_INVALIDATE_ALL(); + // Now call this code + asm volatile ("mov r5,%0;" + "mov r2,%1;" + "mov r3,%2;" + "mov r1,%3;" + "mov r7,%4;" + "ldr r6,=0xC0008000;" // Unmapped address Linux wants to load at + "mov pc,r1" : : + "r"(fun),"r"(base_addr),"r"(length),"r"(prg),"r"(HAL_PLATFORM_MACHINE_TYPE) : + "r7","r6","r5","r2","r3","r1"); + lab1: + // Tricky code. We are currently running with the MMU on and the + // memory map convoluted from 1-1. This code must be copied to RAM + // and then executed at the non-mapped address. Then when the code + // turns off the MMU, the control flow is unchanged and control can + // be passed safely to the program to be executed. + // This magic was created in order to be able to execute standard + // Linux kernels with as little change/perturberance as possible. + asm volatile ("mrs r1,cpsr;" + "bic r0,r1,#0x1F;" // Put processor in IRQ mode + "orr r0,r0,#0x12;" + "msr cpsr,r0;" + "msr spsr,r1;" + "mov lr,r5;" + "mov sp,r5;" // Give the kernel a stack just below the entry point + "mov r1,#0;" + "mcr p15,0,r1,c1,c0;" // Turns off MMU, caches + "nop;nop;nop;" + "cmp r2,r6;" // Default kernel load address + "beq 10f;" + "05:;" + "ldr r4,[r2],#4;" + "str r4,[r6],#4;" + "sub r3,r3,#4;" + "cmp r3,#0;" + "bne 05b;" + "10:;" + "mov r0,#0;" // Set up SA11x0[Assabet] load magic + "mov r1,r7;" + "movs pc,lr" : : ); + end1: +} diff --git a/packages/hal/arm/sa11x0/var/current/src/sa11x0_misc.c b/packages/hal/arm/sa11x0/var/current/src/sa11x0_misc.c --- a/packages/hal/arm/sa11x0/var/current/src/sa11x0_misc.c +++ b/packages/hal/arm/sa11x0/var/current/src/sa11x0_misc.c @@ -128,22 +128,28 @@ void hal_clock_initialize(cyg_uint32 per // Define this if you want to ensure that the clock is perfect (i.e. does // not drift). One reason to leave it turned off is that it costs some -// 1.5us per system clock interrupt for this maintenance. +// us per system clock interrupt for this maintenance. #undef COMPENSATE_FOR_CLOCK_DRIFT void hal_clock_reset(cyg_uint32 vector, cyg_uint32 period) { #ifdef COMPENSATE_FOR_CLOCK_DRIFT - cyg_int32 ctr = (cyg_int32)*SA11X0_OSCR; // Current value of the counter - ctr -= period; // Reset counter - if ((ctr < 0) || (ctr >= period)) ctr = 0; // Adjust for missed interrupts - *SA11X0_OSCR = ctr; - clock_period = period; + cyg_uint32 next = *SA11X0_OSMR0 + period; // Next interrupt time + *SA11X0_OSSR = SA11X0_OSSR_TIMER0; // Clear any pending interrupt + *SA11X0_OSMR0 = next; // Load new match value + { + cyg_uint32 ctr = *SA11X0_OSCR; + clock_period = next - ctr; + if ((clock_period - 1) >= period) { // Adjust for missed interrupts + *SA11X0_OSMR0 = ctr + period; + *SA11X0_OSSR = SA11X0_OSSR_TIMER0; // Clear pending interrupt + clock_period = period; + } + } #else - *SA11X0_OSCR = 0; + *SA11X0_OSMR0 = *SA11X0_OSCR + period; // Load new match value + *SA11X0_OSSR = SA11X0_OSSR_TIMER0; // Clear any pending interrupt #endif - *SA11X0_OSMR0 = period; // Load new match value - *SA11X0_OSSR = SA11X0_OSSR_TIMER0; // Clear any pending interrupt } // Read the current value of the clock, returning the number of hardware @@ -153,16 +159,16 @@ void hal_clock_reset(cyg_uint32 vector, // Note: The "contract" for this function is that the value is the number // of hardware clocks that have happened since the last interrupt (i.e. // when it was reset). This value is used to measure interrupt latencies. -// However, since the hardware counter does not automatically reset, as -// many do, the value may be larger than the system "tick" interval. -// If this turns out to be the case, the result will be adjusted to be -// within the interval [0..N-1], where N is the number of hardware clocks/tick. - +// However, since the hardware counter runs freely, this routine computes +// the difference between the current clock period and the number of hardware +// ticks left before the next timer interrupt. void hal_clock_read(cyg_uint32 *pvalue) { - cyg_uint32 ctr = *SA11X0_OSCR; - if (ctr > clock_period) ctr -= clock_period; - *pvalue = ctr; + int orig; + HAL_DISABLE_INTERRUPTS(orig); + *pvalue = clock_period + *SA11X0_OSCR - *SA11X0_OSMR0; + HAL_RESTORE_INTERRUPTS(orig); + } // @@ -170,22 +176,16 @@ void hal_clock_read(cyg_uint32 *pvalue) // void hal_delay_us(cyg_int32 usecs) { - int diff, diff2; - cyg_uint32 val1, val2; + cyg_uint32 val = 0; + cyg_uint32 ctr = *SA11X0_OSCR; while (usecs-- > 0) { - diff = 0; - while (diff < 3) { - val1 = *SA11X0_OSCR; - while ((val2 = *SA11X0_OSCR) == val1) ; - if (*SA11X0_OSMR0) { - // A kernel is running, the counter may get reset as we watch - diff2 = val2 - val1; - if (diff2 < 0) diff2 += *SA11X0_OSMR0; - diff += diff2; - } else { - diff += val2 - val1; + do { + if (ctr != *SA11X0_OSCR) { + val += 271267; // 271267ps (3.6865Mhz -> 271.267ns) + ++ctr; } - } + } while (val < 1000000); + val -= 1000000; } } @@ -455,4 +455,3 @@ cyg_uint32 hal_virt_to_uncached_address( /*------------------------------------------------------------------------*/ // EOF sa11x0_misc.c - diff --git a/packages/hal/common/current/ChangeLog b/packages/hal/common/current/ChangeLog --- a/packages/hal/common/current/ChangeLog +++ b/packages/hal/common/current/ChangeLog @@ -1,3 +1,14 @@ +2001-02-26 Mark Salter + + * src/generic-stub.c (__process_packet): Change 'k' packet to cause + return to original context. Change 'r' packet to respond with empty + packet before resetting board. + + * src/hal_stub.c (handle_exception_exit): New function. Restores + original context saved when stub was entered for the first time. + (handle_exception_cleanup): Save original context. + (__install_traps): Set __process_exit_vec to handle_exception_exit. + 2001-02-09 Jesper Skov * cdl/debugging.cdl: Make CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT and diff --git a/packages/hal/common/current/src/generic-stub.c b/packages/hal/common/current/src/generic-stub.c --- a/packages/hal/common/current/src/generic-stub.c +++ b/packages/hal/common/current/src/generic-stub.c @@ -1278,9 +1278,13 @@ int hal_flush_output(); #endif __process_exit_vec (); - return 1; + return -1; case 'r': /* Reset */ +#ifdef __ECOS__ + __putpacket (remcomOutBuffer); + hal_flush_output(); +#endif __reset (); break; diff --git a/packages/hal/common/current/src/hal_stub.c b/packages/hal/common/current/src/hal_stub.c --- a/packages/hal/common/current/src/hal_stub.c +++ b/packages/hal/common/current/src/hal_stub.c @@ -23,7 +23,7 @@ // // The Initial Developer of the Original Code is Red Hat. // Portions created by Red Hat are -// Copyright (C) 1998, 1999, 2000 Red Hat, Inc. +// Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc. // All Rights Reserved. // ------------------------------------------- // @@ -80,6 +80,7 @@ HAL_SavedRegisters *_hal_registers; target_register_t registers[NUMREGS]; target_register_t alt_registers[NUMREGS] ; // Thread or saved process state target_register_t * _registers = registers; // Pointer to current set of registers +target_register_t orig_registers[NUMREGS]; // Registers to get back to original state #if defined(HAL_STUB_HW_WATCHPOINT) || defined(HAL_STUB_HW_BREAKPOINT) static int _hw_stop_reason; // Reason we were stopped by hw. @@ -330,10 +331,22 @@ interruptible(int state) int cyg_hal_gdb_break; #endif +// Called at stub *kill* +static void +handle_exception_exit( void ) +{ + int i; + + for (i = 0; i < (sizeof(registers)/sizeof(registers[0])); i++) + registers[i] = orig_registers[i]; +} + // Called at stub *entry* static void handle_exception_cleanup( void ) { + static int orig_registers_set = 0; + interruptible(0); // Expand the HAL_SavedRegisters structure into the GDB register @@ -341,6 +354,13 @@ handle_exception_cleanup( void ) HAL_GET_GDB_REGISTERS(®isters[0], _hal_registers); _registers = ®isters[0]; + if (!orig_registers_set) { + int i; + for (i = 0; i < (sizeof(registers)/sizeof(registers[0])); i++) + orig_registers[i] = registers[i]; + orig_registers_set = 1; + } + #ifdef HAL_STUB_PLATFORM_STUBS_FIXUP // Some architectures may need to fix the PC in case of a partial // or fully executed trap instruction. GDB only takes correct action @@ -406,7 +426,7 @@ void __process_signal_vec = &cyg_hal_process_signal; // Set exit vector to reset vector. This will allow automatic reset on // some platforms. - __process_exit_vec = &__reset; + __process_exit_vec = &handle_exception_exit; __cleanup_vec = &handle_exception_cleanup; __init_vec = &handle_exception_init; diff --git a/packages/hal/mips/arch/current/ChangeLog b/packages/hal/mips/arch/current/ChangeLog --- a/packages/hal/mips/arch/current/ChangeLog +++ b/packages/hal/mips/arch/current/ChangeLog @@ -1,3 +1,8 @@ +2001-02-26 Chris Morrow + + * src/vectors.S (hal_zero_bss): Implemented in assembler for speed. + * src/hal_misc.c (hal_zero_bss): Delete. + 2001-02-15 Nick Garnett * src/hal_misc.c: Added option to call hal_ctrlc_isr() in default diff --git a/packages/hal/mips/arch/current/src/hal_misc.c b/packages/hal/mips/arch/current/src/hal_misc.c --- a/packages/hal/mips/arch/current/src/hal_misc.c +++ b/packages/hal/mips/arch/current/src/hal_misc.c @@ -252,17 +252,6 @@ void hal_copy_data(void) } #endif -extern CYG_SYM_ADDRESS __bss_start; -extern CYG_SYM_ADDRESS __bss_end; - -void hal_zero_bss(void) -{ - char *p = (char *)&__bss_start; - - while( p != (char *)&__bss_end ) - *p++ = 0; -} - /*------------------------------------------------------------------------*/ #ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG diff --git a/packages/hal/mips/arch/current/src/vectors.S b/packages/hal/mips/arch/current/src/vectors.S --- a/packages/hal/mips/arch/current/src/vectors.S +++ b/packages/hal/mips/arch/current/src/vectors.S @@ -768,6 +768,51 @@ FUNC_START(__gccmain) FUNC_END(__gccmain) ##----------------------------------------------------------------------------- +## hal_zero_bss +## Zero bss. Done in assembler to be optimal rather than using memset, +## which would risk zeroing bss while using it. + +FUNC_START(hal_zero_bss) +#ifdef CYGHWR_HAL_MIPS_64BIT +#define STORE_OP sd +#define BLOCK_SHIFT 6 +#else +#define STORE_OP sw +#define BLOCK_SHIFT 5 +#endif + la a0,__bss_start # start of bss + la a1,__bss_end # end of bss + andi a2,a0,mips_regsize-1 # is bss aligned? + bne a2,zero,1f # skip word copy + nop + + # loop with 8 stores per loop + subu a3,a1,a0 # get length + srl a3,a3,BLOCK_SHIFT # get number of blocks + sll a3,a3,BLOCK_SHIFT # get length of blocks + addu a3,a0,a3 # get end addr of blocks +2: STORE_OP zero,(mips_regsize*0)(a0) + STORE_OP zero,(mips_regsize*1)(a0) + STORE_OP zero,(mips_regsize*2)(a0) + STORE_OP zero,(mips_regsize*3)(a0) + STORE_OP zero,(mips_regsize*4)(a0) + STORE_OP zero,(mips_regsize*5)(a0) + STORE_OP zero,(mips_regsize*6)(a0) + STORE_OP zero,(mips_regsize*7)(a0) + addu a0,a0,mips_regsize*8 # next addr + bne a3,a0,2b # to next store + nop + + # finish 1 byte at a time +1: sb zero,0(a0) # zero memory + addiu a0,a0,1 # next addr + bne a0,a1,1b # to next store + nop + jr ra +FUNC_END(hal_zero_bss) + + +##----------------------------------------------------------------------------- ## VSR springboard for break instruction exceptions ## Both GCC and GDB use break instructions. GCC for division-by-zero ## notification and GDB for program-flow breakpoints. This springboard diff --git a/packages/hal/mips/vrc4373/current/ChangeLog b/packages/hal/mips/vrc4373/current/ChangeLog --- a/packages/hal/mips/vrc4373/current/ChangeLog +++ b/packages/hal/mips/vrc4373/current/ChangeLog @@ -1,3 +1,9 @@ +2001-02-26 Jonathan Larmour + + * include/platform.inc: Always do unsigned arithmetic on addresses + * src/platform.S: Ditto + Reported by Chris Morrow + 2001-02-05 Jesper Skov * include/plf_io.h: Ignore devices not on bus 0. diff --git a/packages/hal/mips/vrc4373/current/include/platform.inc b/packages/hal/mips/vrc4373/current/include/platform.inc --- a/packages/hal/mips/vrc4373/current/include/platform.inc +++ b/packages/hal/mips/vrc4373/current/include/platform.inc @@ -124,7 +124,7 @@ .set noat la \reg,\addr la $at,0x3fc00000 - add \reg,\reg,$at + addu \reg,\reg,$at .set at .endm #else @@ -133,11 +133,11 @@ move $at,ra # save ra la \reg,\addr # get address into register la ra,x\@ # get linked address of label - subu \reg,\reg,ra # subtract it from value + subiu \reg,\reg,ra # subtract it from value bal x\@ # branch and link to label nop # to get current actual address x\@: - addu \reg,\reg,ra # add actual address + addiu \reg,\reg,ra # add actual address move ra,$at # restore ra .set at .endm @@ -191,9 +191,9 @@ hal_mmu_setup_return: la t3,__ram_data_end # end dest addr 1: lw v0,0(t1) # get word - addi t1,t1,4 + addiu t1,t1,4 sw v0,0(t0) # write word - addi t0,t0,4 + addiu t0,t0,4 bne t0,t3,1b nop diff --git a/packages/hal/mips/vrc4373/current/src/platform.S b/packages/hal/mips/vrc4373/current/src/platform.S --- a/packages/hal/mips/vrc4373/current/src/platform.S +++ b/packages/hal/mips/vrc4373/current/src/platform.S @@ -92,11 +92,11 @@ hal_isr_springboard: sll s1,s2,2 # s1 = isr table index la v1,hal_interrupt_handlers - add v1,v1,s1 # v1 = isr handler address + addu v1,v1,s1 # v1 = isr handler address lw v1,0(v1) # v1 = isr handler la a1,hal_interrupt_data - add a1,a1,s1 # a1 = address of data ptr + addu a1,a1,s1 # a1 = address of data ptr lw a1,0(a1) # a1 = data pointer move a0,s2 # pass interrupt number @@ -317,7 +317,7 @@ FUNC_START(hal_mmu_setup) 2: bal resettlb nop - addi a0,a0,1 + addiu a0,a0,1 bne a0,NTLBENTRIES,2b nop @@ -345,7 +345,7 @@ loop: li tlblo_odd, TLBLO_V | TLBLO_D | TLBLO_G li tmp,PAGE_SIZE - add paddr1,paddr0,tmp + addu paddr1,paddr0,tmp li tmp,TLBHI_VPN2MASK and a1,vaddr,tmp @@ -373,8 +373,8 @@ loop: addi ix,ix,1 li tmp,PADDR_INC - add vaddr,vaddr,tmp - add paddr0,paddr0,tmp + addu vaddr,vaddr,tmp + addu paddr0,paddr0,tmp li tmp,NUMB_PG bne ix,tmp,loop diff --git a/packages/hal/powerpc/arch/current/ChangeLog b/packages/hal/powerpc/arch/current/ChangeLog --- a/packages/hal/powerpc/arch/current/ChangeLog +++ b/packages/hal/powerpc/arch/current/ChangeLog @@ -1,3 +1,7 @@ +2001-02-23 Jesper Skov + + * src/powerpc.ld: Added .2ram section matching to .data section. + 2001-02-05 Jesper Skov * src/ppc_stub.c (__computeSignal): Hack to allow thread debugging diff --git a/packages/hal/powerpc/arch/current/src/powerpc.ld b/packages/hal/powerpc/arch/current/src/powerpc.ld --- a/packages/hal/powerpc/arch/current/src/powerpc.ld +++ b/packages/hal/powerpc/arch/current/src/powerpc.ld @@ -104,6 +104,8 @@ GROUP(libtarget.a libgcc.a) KEEP(*(SORT(.dtors*))) __DTOR_END__ = ABSOLUTE(.); \ . = ALIGN(8); \ KEEP(*( SORT (.ecos.table.*))) ; \ + . = ALIGN(4); \ + *( .2ram.*) ; \ __GOT2_START__ = ABSOLUTE(.); *(.got2) __GOT2_END__ = ABSOLUTE(.); \ __GOT_START = ABSOLUTE(.); _GLOBAL_OFFSET_TABLE_ = ABSOLUTE(. + 32768); \ _SDA_BASE_ = ABSOLUTE(.); *(.got.plt) *(.got) \ diff --git a/packages/hal/powerpc/mbx/current/ChangeLog b/packages/hal/powerpc/mbx/current/ChangeLog --- a/packages/hal/powerpc/mbx/current/ChangeLog +++ b/packages/hal/powerpc/mbx/current/ChangeLog @@ -1,3 +1,14 @@ +2001-02-23 Gary Thomas + + * misc/redboot_RAM.ecm: Renamed from redboot_RAM.cfg + + * misc/redboot_ROM.ecm: Renamed from redboot_ROM.cfg + +2001-02-23 Jesper Skov + + * include/plf_cache.h (HAL_FLASH_CACHES_WANT_OPTIMAL): Added. + Removed again. + 2001-02-08 Jesper Skov * cdl/hal_powerpc_mbx.cdl: Respect channel configuration diff --git a/packages/hal/powerpc/mbx/current/images/redboot_RAM.img b/packages/hal/powerpc/mbx/current/images/redboot_RAM.img index 48a7a4361f8d144fe6dc5392af6d4502f0fe4a9a..f9e3a23cd9d373995f73679b9084621b251c254a GIT binary patch literal 194674 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 ARsaA1 diff --git a/packages/hal/powerpc/mbx/current/images/redboot_ROM.img b/packages/hal/powerpc/mbx/current/images/redboot_ROM.img index 670839058e3e616a42ea16a247231647ff623d9c..0206030484f4aadbcc53b6b4daa0b70521b3632d GIT binary patch literal 319507 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­(5n*sL#egZgCSbB?0aI*Z`IMMWc+Wr*n& zV$TrbzGtxfmjfT4P2-Ou9zd)PuyN*qDfa~8>xer7?20t}Zbp0*u_M6j8Tj=h<{&~| zoL~u<97hn5-huSaV%*O}M81w=c#gcrmm}i6@#X*<+Zr&H+5)Dj#}E$(*mL;yRD63X zzA?2Yz&17Dy~T+1i}GBGXAV4bbRy#W87SY>m538GHa+0BU40;X{&Pa)ndMOjKyklq$xn^DfGcEn@>Z$N&NQ2t4&I)%uHbdw4Z zbLhFeXXZFCO+tAm%~bA3iS#byS$?EfJ|^5p{;pJdE}zB7^eCe%=j8k4sDJqyB_HHJ z4DC`5+?2n1ayhRAZmuj>?#GJz8IST`He$bkM_0=9%L8l{zIhqH?!TVih3MyC&5cbF}7kDV;u?1glEC-XlAmbZ+YXRA6tQE6Y%~uex{YqV<}nX?C}-z zWF8}V9{z4?Oc~uH*rBmvUwZUoxSxr97}7DHC+acR{GvRcC;G7t+-pc+mi#+dGJdtZ zJ6QDu7Cek}i5c+_WA9)&IgAz4w|l>r0kKkfFHL<9_Y?8WU^kRlO6w?Rrb5Ps<9Sq3 zFt}g-_FO(c7_?U~Q(imE4Cfg<>>Cwm@ReWP>SfbPywQOMZ+XfwUwVqYfw2VCr`0#C zsFiTAd}#3CvQ;c`*^A7!>=TykT|H_+7Vv}owrBUS$FsMyvh4k=C(F-*gs%r4k12cL z4`IAK@OeyGhnX?^0cIlnc;llUD`!P{RA2kc%(SEe<;QcBgX)xgi-*^>6m>m_?<8he zcwH?ke#+RAVKVK3>{c&u;C=bBRy@n}#iK6T1k|Ol#LG~Zcy`Q(Pu`Nw61 zTEDv0UC~_M*u=&(yIY&tm?}@5hmC2huXHuLF3~UOc56!m8#A|}Vz#@r!rjn38!y+m z*%TuUyhilz?1YkN%$tjWCf-=r6@4E z8cS8+pEF5_5?;jw4eIa)#54uo$v9gI!GB_c#&q});#dX#2GJgdO~4z=QQ#p=S_dS2 z2`-%qOgJo5;4)kmEAU)gmMHK7T$U;@I1!jt7=9oU-=?RSv^Ge18!i_s@SC{oP~bn~ za;XB7jMo{4qiEb)uE0OSWw!!f+zY0h=d#~p!aG9;ZRQ?zR{sR-VsKX?W z4pHE5BHKIK7Wq8-!axLmqCq22PyDITn<*?&AsSjd$0C>IZQ9~7yU+n4H>JzAEP_=NEq!BO*}zU z-v4KS4fo3Dpc}JU@NGT48D$?!{3zDM+ueKt$(r&x=*E1JE_X^eL)hS1hD<-6Z104# zD3SlQWQSMao5?0mZ7Sggvd=5e7m=+Vxi?7o-T)u6*g6TXA{##7ObKrwdp=;lgkKc4 zeP)sHUYZ{OY?t->t3FpC%l`$*#tM8y$jN3+z8}Q*Xsk*Ta7;fuFAn1`=7)ew6?l*s zE4h6Y{Uiqcc`?y=s`!2k-YrFWf3#h~vly%KD{vjk(-SUFOcUx)G_+EF|IPrriR!am z!oMIL2ymIwUVD1A*Q*Ll_1~xD{~++ysnqYu0J{M+YT6gB?~Rto`reqKz)u6tRN&_U z7b@^efJ+qk4}e!H@LPZ%Rp9pluT$VZ1AazX{X3cMGv(!SKcvYR9OSGH1K z>R;m&dW`*;>=C%%Ea~O50GmSjXGr*K@CzCamgcedI-pzj>DJwV?%ngWB~a`GbSEyo#2Z#gP`f!=addIG)WJfpy%w;UD! zptl?qKcF{o)@k@$Bg&|G8@Y7m&?RdH-Uv zAL3QBe7}usfsy@xe1-zwO*TU1{c&V31SH3I;s@i8M)HI42O{~wc%^;g3do*`-$L0ikNdl~lSC(YJ3cf7o0an_R<_rof3Vb18rF|_KfR+Aa zxfHNMUlu!HrN3Bm0W1B<;smUWH zUbBFIO;q!52CU|PJ78rzwfF(oDDYi?mGR566tG&qdjTu_!_o~{#qUFa)$%+FSn02p z#{;IT6neC*1FX=8H*xp=PN+d2gBVg<%{Ke|JKp^uDK z>TA6Ou!3*vmB?SAS1b5mp+Zkq&|9H09$1S5rpZcww@yWW>#P79seZo#>6QLv z_29XpFIww+!7YFr6!^!0XDVj<#4jmmS3x099e#kw5N)%yOj7u*AQjRHRw zU>6a+Nqd9!Y2>HKlh#dQ?#+}D)}JdCeb)LK(kuPb`X-*gt~~z};KK_1VSu?6`nG-w zSkZs2hX5<~2B88tOfL^N<`c1eJu!8Rd z2Vk}QkQb|tDDdO}o2!=ZTEI&GOeh1qT!Ci*R_HOo1z4d+vTsDBpUc>lc`P)ZB|x66 z2LFlD!t_ynOnD#p_b}ysKVu!s2@?IEewci2%wI5L{=%5QFy=4*FPgtd=nAkpzkoS^ z!}waSz%jsWzHa{^e)${lPojC9e{LdQWWX~8|4evI`Xx*ILjv^EV#;rT93MUoum&na zj(q;N0K0|q%aicG0;~z+u}Rw36Y-6Lr7R?`Bm(yZoeGS)7IZ7{Xu!)A7~{{apx3BG znICx3m89RAMEMhE0Cp>IBjD6`@qFQa1;%*WmK=u3epcM0st-zn5yo$X(5%lC&e*GYSwJZ4VcQat6J^Rf?dnx*6zXrexKk2ssu=>3_ z04w2(_G#ao%ze!gBR_HTnJYWSsNrmX2%KS>wb?85ezLGQ@up(b4RRC7>futJ13jHKO z-}_0W0xtxt;3MfLfE9csbplrCCus#>r9G2=1z73dNlyS)=qc$Lz>0p5MEr}|L)w3n zUSsTTg})`e&)5=@&pRdj3HUjcNAmNe|7Gj}k{SH+`L`G^dRS<@=nvVUV5I_M?0tav zcZo>fAH0Rz8};Xq2d``h=ifgozb_A9Etlm~3U z&!bBJrSbm}Wxm|@4%$QS|7Z^z#_Nc;-Y#84jRmKAw#9z86u=6<8!#2Hg5Lq4r(Y}lX~1m23O^s<2CU$RB_YJ^=mWab>(7fbu@B$V(&-MdWt~{qu0Re-1d#*ux~hCkp;M0QCMO@n22!*MSzm zByURpr-4a;X*?P(;Z(r;S;&8BAnJ0ZZa)S87zlp`Igp!gkhS0pQ`#F#L?Ok1$NLn69q1yH75!@ znbxK#@U^r~MS;s`&58ogptU3l?4org3OpCE>d#UOSg9Y)pO>osItu`+aw+pc9-|>rpsZ41PnlCR?%limmWqyn1yUWz_{}!;)9yGsQ zrr76ce!EPm56y3vDf5dozg?#ItI+&*nKC~{^V?-g`_lY&nW8_^{C3%P1%51Gx|coSey0{rPvi5>|EIlg50mRE?mR6UEX>0)nuo@g<>mt(-W?62z7xu^QhX#d~uqrY!vy6!!vZk>Aks_NW3-D*DN z=f~9ZXO#aQ)6Xj+|2>xIHy=~?$0)x%ruV0T=U>w6eK|6JPWe;n!Q~f%ru~$iLa&d^ zm!bER;M;Q4Q~dmm?0=B{k|@SpJHMisw= zC-L)&f+sgB|7UsjCFD7pkmsEVdG1QclX$-9#(NU-+@Fx=(S$r2e}HdON*`qJClnr& zy`Rwbg}tB9_JzHlIH73R`w7+0lf9o%{Sw*x3H^K~?ES=9PcOd?_H+APu-o#9$UH@O zBK80Bz?hF>J?9Tv{92Cw?kVJ_B@g>}n^O2f`km6xb3wmT3H?rKeL}xeT7S^*l+qvR zcS_ygCjCyS``M)5DgFE+=~v@F^2bg3`8ec{o0NYoZ-G|%Z~5(!dFIW}5`1Fi62`8}Xj|GxYqpjH32{C?1<6peoB8S)p|FIXrEdQ1YU{94yg zWPU*QlYX=7s>nS5tfH@r%s;)CxCwm&&cD~=S631IbBccz{D>Zx^QfPGK=CB~YS(Xq zCV!Ltf$h$ox?C z16`<>f2jJAu0M^;k5qrvh5GnM%HO)qfL8rV*JD`Ph+6O0jQKOluTsBu{Wa|Mh_c@^ zI1d|``{X=iyYft@JrDPH`paR3zg<7Z_(v7L2>dXAiF!W&u*PG=|6%p~DaHR`m7gj8 z53Br4@qbw3G2;KQe*O{he^@KdkWr@qbv?SEwIv*7$(>@n*GNsvmDw z@^@bdT0P%{{GW37AH_Z?qxQSHF9NOl)9xV|(UA^();H@e@B_#pq2{h;pu0Qw3=L-x<3J}DS0PxnW0ebQ&n=ewJg zKX!k{@bkhh-nwD`3kaW2$o0O8^Ar9&#m~*EUZ(iCS=Gzk-;Gii^8GP&J(b^RzWsMh zKmUlTrzyUUsQQcI>xizO5MM`BeN6FnMAiEgUq@7aruaId?hjFX9XZn(Uq=%0bwoe! zi}<=l|Nj8u>lP&s#n&ymze0a@i`uWD{_GZ&PpCh;MLj>){X&$wNc;bbIIo_^>3$jK z)%~y@tmh(CPxmYZt@g8eUI$vma}VP6A{Ea)mw;CB+|v(Q#dFUF&?+8!wt-gh)sq3O z_CtC`K&yD~c_U~QKRx51RlN6H7p0b|{feH6DD@WQ4?S~rDwLF?z|{spvt zKJ6Ev6@K^bj#4Ys{oq%pa9-6Dz1QNrx?e+ht;Z8yuTcKp3;Ya@dii@NabEdL?_to& zpL>sjR{q#K16s>h1+DhKdqe0?)l0o6Ky`P7CR#5q9#h*o~ zb;M7eSE2k?IHk`2CC-1_pI-qySU>3TX2m~2pD!tW{uK1fp6-La*560Z-PrMc7e}eh zJH0>m_2POeKlfc0r8cU1tPl0z28EY>o1@ewb$_LA2ly#`=*xrF`whU`4eI_z->>0% z%3u3Xe{E3rZwVhasQ#tz8qoUr*q?${{S4vP2Gy_h?T7pdANme~R@bNJYd7lWU4Z`^ z_5KI&c%$0i=({OOO>6xGIIphXR|c*0@oKDhQ@=WY479?>zFR>nyzYblZBqHV?`@#f zdi&l1T0d_K{N1GTZQr|~Z;A)05BtbJ-TeUgU*AVTtLK&aP9vTuJ|&;^eZd(1|1;+= zz{{=F|8~iF^mpU>|DjNC74`p%qTVX%|F=ZFRn+@csJDu$f9iWWO6}O^{kQKQ!CyTu z)%T+)rJuL&`#F84jKm}4y9DpQ=vyzJB%m>#v@FHNSfP^;gfo{(trS zt9(AMHFC<*{f=foaCmo~_<{Spjq}706#WWI7oQXQl?nO+d!?-7ztqz9v!TutKX9M_ zaUT1@C0&tuKjBmV>qQ=UfhPGc0ltoLeRna>za$r#`$*@f?D$J|Mdlgu>3fBqh|I_M zd7(~z=PeU{g~&Wg^-oU5!ym7_SNIeDhsNw8xt9t38-PE`k4uIAFZB6;82+5h|5Rk% ziJT1jz2x)AhdV(I%6Yo~-=b4O|2=)aAn1F9Mm?QI47}n6p??yY2F1v@r7y)bbK8VJ z-d}n-@-shQBLxT}=3VzKoxa%(LV}?-UyGcIAD3{g>VznJ=DJ z=YKO2H758E3jYs9=JzQdUm@ck!1YiMq(uLhqE{Gu$=mNz)E;9mEBgOL)y(^-1LmKv z=8w7fuSwe<1fQ{zxJr-ciGCw{5|bIl!V?2{TlBdmt7T^j}Tt$OvKOm z);^aZ7hmxr07G zK;DVTOIiu}x~zPw#yhXSYBEZ_j_~T+G9P&G-hLC~$*N{#;n~Ue9{c&?sg>4$ zRssLVp7#E;3i_Fz@b+BwP-K2W_0!!#pFw=w@BMq#S26zqH6Q)$PK7tCegXfWdU}~1 ze>whKb;6&&e0^k|r0d<0Sg*w6<%5y=ZzSK7YwY}C;3d_2bHeY}Bl8{_pTyh8Wj^|o zOCR?3xV#>jPXeD(6GFc;GJin)j|lyND7Ea2_rJ?O0eP2teP8}r&@U-?4CEVGWPO6)mjfRj;eJHc_ad%;r`K=)(#RA^zJ}2Kz|)e6@vk5Gqj6e| zzap~bh}gUT#>lj3{C#pB{&DtsAAkL~MYbGp^gO^_-8F{y&V&$B%k_ z_rv}>slSwb(*F;U*$nwpqR;-9BJ)l;I!k zZR_%Q6Ti;4@w5i9G&bSmYb|On`}rn9cOf6Xtmsvp__ua@lzP=!@6T&TBJ(}6ui)3( zH=5Murx&@t#NS%vD*il)rB?p6hmoJiKP6wUos)V=?6LN3z!R!x1V7f^O`o?+eVNer zN2%qQpIWy#o~?Z(GAC%iLhQHp&)w(ES^3ufZDi(%mU?6D51b^CudGPO{~9a*x<7%u_xSa#qxw?e?9WcyH1%H&)1JazK6Vg>nA$bvmW^Po_^vl z=j-5iuR4Fb%SUqlw<7a0>ao-}EKSch@b5@cHX>TKspz z#hvTla5?%7%D>WYY}jZ_#;Ef<5s!3z!TSySB3ZV*-Ujp|JCB~*AH09BvHVb<{v7e2 za@Rw=eTedTSF%2o@yJgN!V9VYHlSWDP`(iS-|+Rwe5v96dBb-i+ipAgfY&GP_wsLi zRb<;&Ilpned{>L$%f?aIW5U~G;{o{FN)yM|##=h;hmFUOzsP?je{H-YG8>U^QWC!# z-wk`b;O(&y_1KRo{_m3W525}?Po3Ik@q+$;pUxNkZ0eHriGOd})QQiV@~9W6K9_vD3Htfo z%ZdiR?4bX*J1ul0G7miO<0pPyk?;>E5AyZL&UpDZ!FFSl>iVCF%)e5+IR1~I-k?1e ziT_QAm&ZuI`-FZfG9Li`rKG;x^n(2i_>|=HP4JIL?(+KH1pFD^=k4$P(aN{^^{8*D zpOpS#^JSv%q<+PJyc*mvQMM z-k&z3{{0s1QAxkF8TG**w7mW{|NF?)pEC>V)hXfk`;pxql6csRSRX&C_|x1(FN&ZI?=NoeVr;+(1+J6#%+D4zlzS8sG_B!CzSG+#AT}t0` z=lx|H`q9Uhdi`wM8JXWezx*ok|7~xI>~^Tc%eE@&k2@8=+oIHk*LwN3{cdNz*mk!` z?J$bIH!?30{=8SlLtl^H=k>YmGw}Z-lHb5*+vg!K)f18rw|y(YAN^^UmhWY`y&~tg z6Y@T%XHlw~#wYgYQo?@+@cHYczb6y%ChOaQ`tiXRyg%;9boP5Yc18Af zgXn9=k;uH%@AvcK*QD@+eumEX>!r^=%PM{C_)o~U_xkNg?=MOF??C1U-Su9K%qJ-SNq;){+Q{A>lJyO4itO#6 zq<>3)JP7GAtI<86>WAMCW3Z?KB`c*4Z{W1gRtcM$&aMdd$(AHsU?_Uj$|!_Izt z@Uu~>hxW7XItM@WXG5gV30t2G{vGPopLqMmFTsn!f9~uT(ie!m-nhEcUr*Wb>E2F% zPOk@ks(hISzBFn7A&KvjKhxJl=4TY2cPGx@Dd%s1yu?rPar$Uv);urQBl_*AU&$W? zPtqSi{jd6u^!B3r~H0u2L13cN+?eYjrjYcZ+LrUpsx>7y(RIIc_=cc zuQhS~kogkiyH?2ueE!rU9$zzvr}LD2*^4^kAq#x@*Oeyj_p$?#+{TmfyCYLw=KVdX z&n(r45BTe6=OcT2(#`*m$R|hq`m-NIzf1lh`8SLHv$T&s&p5$f^|z;#|7X#!70>tn zl|}P?)syP_XFKse`@CZ)H2Ssg0B@GaenGA)5}2~`(!DmdKQeaHHM3@$j5UT|cA%$Wr;XBNnuSs-&} zfy|i&GG`XZoLL}qc7e>P zD0yUJOdSZuu0JrjXKFGywD<6y#K1T28JoOb&kpuXjqRD3+|D&uswF-P zcKdftB@dnJ3J3P@rK9`z>?a$LkYRm3d89CJ!a)tu94>^5g>b46 zZq#fTh!eQ41yk>Xa;;>7pi*mUe!kmwV+8dsyUrx zSS}t{WT{-O9509J2*mEBWbIngN^Pc2;%DerwqtmuV|J64O5duMmcN-!-lCwnLakIS zFLp{xeqy>kqqWnr2OvUD9X)tr&+&4{8YbmPyIGhmn`*sK3d+@)pfXQnFjqd25#h4( zHz$Ad@^?u74$I#W`8(EP(#*NXSu~B=uCbTZs8`w8Yx)`Qw=4fD^$e|%P zU8OdVNwZg2->~ml$LTEp&hc-)P@1ol=1ZmdTIo?X3D32BGCViKb2B_Q!*eq{H^Xx? zJU7F0vx9Cy&Rl7ynzYjmWGK}G$U1AR)q+ZKzG3F-)lx7A&nAkTtPHm*nVCw{`UJhH zR+{$BOjs`Sn{r4oLGR#)<(7R*8sj&`uuPFOU9BT}nw8sex>{(?aSYP=+v*{riq0}= z%}dMR#b>Q^^5V0+_$)6z%ZtzQ;L+(6JnI&9O@J)-{+@o;l^2Q=U2HS)x48&GXzm&&~7PA)Y(LbBB2D5YHXrxkJ|9 zcBSQ5zFB zC{%dy>aY`YxWZfKB3=6SV4gL(cv#J`96 zH;-W#9%A(k4cQ|+o?Uo|)jh;6Jj6jT#Ev`!N3LXwEd9Wc3FfCy@cRGUjymAOl;@N^BD|7PN_DKRPlCyd48L4>!M5DFqh%igV>syDEoDl_q`hs85nj!vlEeOwI7$)*OkcX0~gK9}mm( z#rpj9?bh!0%uJc`b(Wze%XY~yfMz*AWJcIu86>iK8zvkE47C}amEjzc1%NtT-r6pQ zCu6F~dO{5p;K(dWyr2-0mvL%w`8MqmZrWwsv`e{Zmvb{NS7qYT!sV)r%T*bd$TN;} z#&OO#&Kbu!<2c7zFzYyH;{w5P&N|Ln$2sdbXC3FP9Ot~_oOhgIRjL<*RvW6dkKb$VG+9K-|owGZ2{(11q5ie+S5R% z#z`u=QBjl;k?mT8E9{df7vw#av6UtQ${naxrimfHrx?|PZBSH7CZ5V~upA2f&LLD0 zx9UQNo?g(SY2&4Q6qx>jmj#18&qnsf} zIcJP=?iuCWGs?MVbcBC%1{&oIlumPEN!!$!wy861Q)ik|C;hQyL7LNK+SU*th)LR( z0OnK2 znI}%(z8|S_KHxPG=?_u)H^&`y+8Q!#?QfmIdWLlqwwg7e^8-_9P%a9C`9iBWM^vRm zog!Bi7)sT>jRu4!R}zh5ExfhIYVG-;(%?UZ(Eg1ZA0k>|q1K$YAW40w4NC+R_ees) zXBxIgr*N#+(GTHGSmwzVjIHA!e^+Y2q&nj=&9eOzi5Q;X_dJot3IMRg@}9OSU`Vc@ zxUk}g<{;+C9ORIsUmSjE)0!6`z}mp}Rz@sZ=)kB6VWx7EOYcTKYz<`n+hNn1X*CEs z%Y}IkQsT+M%(2XYO9tW4Lfwdw1F#csMuf*LR5^k-D;&`}0mQ16V|u=#j8A2;eAk`L83)gJJ zy~u#u!V35=a)Khr3CkVeOPdmV>)Mzjb0p;EXHTYDe zp3oadJH3&!VHuoa7#B|Rr(qUlAqN?H<-Ns4HQEW{{!&eF9Dq=-Rtq6D_Ds&9(W68% zXB$4G{{fVr!p5327854a(zvDDy+N)`Vgu(#+)!my-gp?cp}}C2<4uSmHuezj8w|4{ zbDZIGysMDo<2i<;9D_)nF)Gi_ksq;6z@fx7LZ0z0&mfZ@jh8~^uZNY{Sj|juqIE+G z&1QSPtn2`186J)q5GdLBnXcDc9=xX;ZZDLo(?R%Dv3fh_QFPRk*N>4SK(Mg^_Z3(B4%}z*LDjzqt5rz=K zAYKc5dZY>7V+&M;$QN%_r-S)Q6ZnX%<5WT6WP#c3)>h%ORpK&RC$THXOO>o~S16T( zI$XM1XfzE)VRDlf>5ox2<{xy_saRRN$nRre0LjolmT)dV}$FsLz zY>^Jpaiw7V(7~pkTx^G-oel1`f(lp%GzEoNgNyHJ+P;weBd@9%gi;GESwjRPT!^7B zkcN?r99Rel%OzG51E@d>B$%m(C_k0o;5=RM(C$NrPS7pBgOfqvw!Xs<1&nK3j~7B@ z8tP`x;V-xSQ%>&H4wgOG31epwL6 z4S;!|06P|3ChQo>5Z6T2721HPQu9f07IgTXMM7&M?%xZ?;*{OVd?7-$Yx9NXF=Ynv zaP4J5Fiv+O_Z%39cC~!g0f?zsTZf9hV`1anZ!}C>_M|s*mjHk?P5XaPa3P$o;Ft|7 z^w!13yx4N?HtIVXF~+y*=QiYEfdgOm7kz%{K%sN^K%Sga{O^e9q&!rp>_wcN%uDEwApEo zx}7Ah#utK7BbYx)-I>GqO6_?4m`(8PVs!>+udoCA_d4X|9Du?mp&E4;_Z*3X4IX#@ z*1_Ql|IZZXtUq@BfvfjkBP(bIle>01*W}$&+aTA2c&nMB)s|?iL&wHns9B$B5rPKg z`F1QY<(IHstC4j%3V2iQT=LQVY;qA&vyBD2K$~W$swz}l9SQH6>nAfYWHFhJmqGYx zZ=VxCE;#s3p1-Gr0EM;$9tk&T_q$NFS%>eN$Jv8&3#fzT(r$v(y$AMAvd#j*2#4M= zNW^!q#8($Fq20_NIGwETt+f_2e>}}*Eud#2liIq9B=A|-2|2cZJeEe$UFg65IU zd9Q=ytTerNZr{8zTPsu(JqxK)ZgGfxs1o8<7hc>{shb`wV4EgGMedR}3mp)_5=ezw zF3#0EpHf&n+-y@sA-8bF)&q74ycNm3sw3^N@?87XvXZftaPhZ&F z%)TY5MB_@mLEV_Pl4uB5fXT~;M77$FuikrzW;C6>z?PDNEpR&G1(-Hln=gyIxEN#2 z#|2QF%&i`d$5m>K(#I=dtBtvK)7x!1l$xC(-C1k2YlY*5N|k3UW)VV;5WOx^b-S@p zI&u(R6Ld*A#SQS6a~@1Pb+!TFJ-u^es2QXgzklhfrbLIKib=L%;_gV}EfC3TtXszhQR!+>@`d9uN}g)m%L#S~hAoHGqw{=wCq%;k_@a$O&H0+$!{W*y;2mXU3SVgnkStmu4Rdj& zat$!f_Rw;()Nb($`f~f@1hpxcdlK6gS(7@iAUJ~FeAOG@<5gYyC|__ zoKR}vjwUTmisSqCsKK305$_GVRq$hHR#y_}K6VOWajqlhS2!EDV69{s%19d*T#|n} zJzt*lvDJW!6O;*RK~Q+S(IL2NMT3)6W=={W&YN*$Co zn<4M&@K%7ACocCE_1oR-x6Naf28WYfdZ~O|DrP}Sr`fr3p^=V*-9kTIP#5I#I2GrC z8aI8h-;OKPU3BNjm7qSUq1~|wEr_wom2p6y$z8rw*%p|MYN16^n|WoNUxyK}SCymT#+Y z{M)o(Wzi!#3M_HEMI{{Ke(jvQD;&6PGlW*6)y(y`YiT=JsGX$+MYHpeM5eG_)RBCh zF{p2a!s8W|?47C4^Reku1!c5a%eDrg<&? z6bh!|!WJHqmhBTvvbRw58;o`nrlYe{$-o5H?7M#Vu6@DvS6_W-58D|FjaO%5p4Ufd z>s?sw*$l-or?Y5kdM_s?XV>_cH91WD!KL8E;n5{ z#WhM261>I<5*De3Y`F!_ep`#BE?}j#IPnsHwy^EwxNPp&YcL%fUDAniGvT)q;hE5! zY$i7C*1s~5f3R7@0dJ&x%VSbGwC$ei=TCy$Ja5ntaMLX&o(>%U8{-+4Me?Vdl!F~Iex5NJHp68G0`q?XtZBKT diff --git a/packages/hal/powerpc/mbx/current/images/redboot_ROM.srec b/packages/hal/powerpc/mbx/current/images/redboot_ROM.srec --- a/packages/hal/powerpc/mbx/current/images/redboot_ROM.srec +++ b/packages/hal/powerpc/mbx/current/images/redboot_ROM.srec @@ -1,4 +1,4 @@ -S02B00002F776F726B2F6D62782F726564626F6F742F524F4D2F696E7374616C6C2F62696E2F726564626F6FF9 +S02B00002F65787472612F6563632D6275696C642F6D62782D726564626F6F742D726F6D2F696E7374616C6CB7 S31AFE0000007C7143A67C9243A67CB343A67C80002638A0000054B4 S31AFE000015A5D1BE3C600000606330007C63282E7CA802A67C682A S31AFE00002A03A6386000004E80002000000000000000000000008E @@ -395,24 +395,24 @@ S31AFE002015600400606300007C0004AC7C788B S31AFE00202A00004C00012C7C708BA64C00012C7C70C2A664632053 S31AFE00203F007C70C3A67C78C2A6646320007C78C3A63C600000F7 S31AFE002054606330027C0004AC7C6001247C0004AC3C4000006049 -S31AFE00206942BB487C631A787C7C43A67C8422787C9D43A64800E3 -S31AFE00207E49B13C20000060214C807C3043A63C60FE00606300B4 +S31AFE00206942C3547C631A787C7C43A67C8422787C9D43A64800CF +S31AFE00207E4B953C200000602154A07C3043A63C60FE00606300A6 S31AFE002093003C800000608400003CA0FE0060A51F347C0328407B S31AFE0020A8418200203863FFFC3884FFFC38A5FFFC8403000494F8 S31AFE0020BD0400047C0328404180FFF43C60FE00606321E43C8049 S31AFE0020D20000608430003884FFFC38A000209464000438A5FF5A S31AFE0020E7FF2C0500004082FFF43C60FE00606322EC3C800000D4 -S31AFE0020FC6084300090640014906400243C60FE01606350C03CED -S31AFE002111800000608433003CA0000060A53B587C0428404182FF +S31AFE0020FC6084300090640014906400243C60FE01606363E83CB2 +S31AFE002111800000608433003CA0000060A543647C0428404182EB S31AFE002126001C800300009004000038630004388400047C042866 -S31AFE00213B404180FFEC3C60000060633C803C800001608425A816 +S31AFE00213B404180FFEC3C600000606344A03C80000160842EFC91 S31AFE002150380000007C0320404182001490030000386300047CDA -S31AFE0021650320404180FFF43C60000060633B583C8000006084B8 -S31AFE00217A3C7C7C0320404182001490030000386300047C03200D +S31AFE0021650320404180FFF43C600000606343643C8000006084A4 +S31AFE00217A449C7C0320404182001490030000386300047C0320E5 S31AFE00218F404180FFF43821FFF438000000900100009001000895 -S31AFE0021A49421FFC84800440D4800486148003F0D3C600000608C -S31AFE0021B96330327C0004AC7C6001247C0004AC48003F614800BF -S31AFE0021CE3E2D48003FA14800646548008E0148000405480000E4 +S31AFE0021A49421FFC8480045F148004A45480040A13C600000602C +S31AFE0021B96330327C0004AC7C6001247C0004AC480040F548002A +S31AFE0021CE413948003FBD4800671D48008CF9480092014800007E S31AFE0021E3003821FF64906100989081008090A100883C600000B8 S31AFE0021F8606330327C0004AC7C6001247C0004AC7C7142A690EB S31AFE00220D61000C7C9242A6908100107CB342A690A10014900147 @@ -425,7 +425,7 @@ S31AFE00228B6C9381007093A1007493C1007893 S31AFE0022A091E1003C7C6102A67C8902A67CBA02A67CDB02A690D8 S31AFE0022B56100849081008C90A1009490C100907C230B7838216D S31AFE0022CAFFC83800000090010000900100089421FFC83CA0FE7C -S31AFE0022DF0060A5247C7CA803A648003D703821FF64906100983A +S31AFE0022DF0060A5247C7CA803A648003F043821FF6490610098A4 S31AFE0022F49081008090A100883C600000606330327C0004AC7C1E S31AFE0023096001247C0004AC7C7142A69061000C7C9242A6908131 S31AFE00231E00107CB342A690A1001490010000904100087C230B26 @@ -436,13 +436,13 @@ S31AFE002372004C9281005092A1005492C10058 S31AFE0023876093210064934100689361006C9381007093A10074FD S31AFE00239C93C1007893E1007C91C1003891E1003C7C6102A67C33 S31AFE0023B18902A67CBA02A67CDB02A6906100849081008C90A1C2 -S31AFE0023C6009490C100907C2E0B783C60000060634C803C800075 -S31AFE0023DB0060843C807CA408514180000C7CA1185141810008B3 +S31AFE0023C6009490C100907C2E0B783C600000606354A03C80004D +S31AFE0023DB00608444A07CA408514180000C7CA11851418100088B S31AFE0023F07C611B7895C1FFFC3821FFC83800000090010000909A S31AFE0024050100089421FFC881EE009855EFB7FF418200183DE040 S31AFE00241AFF0061EF001C89EF000055EFF0BE39EF000191EE002C -S31AFE00242F9855EF103A3C60000060633C0891C30000806E0098F1 -S31AFE0024443CC0000060C633A87CC6782E3C800000608434947CB6 +S31AFE00242F9855EF103A3C600000606343F091C30000806E009802 +S31AFE0024443CC0000060C6342C7CC6782E3C800000608435187CAC S31AFE00245984782E7CC903A64E800421802100703821FFC83800F6 S31AFE00246E000090010000900100089421FFC83821007080610005 S31AFE002483848081008880A1008C7C6103A67C8803A67CA903A685 @@ -455,3757 +455,4088 @@ S31AFE002501C1007883E1007C7C0000A6386000 S31AFE00251604AC7C0001247C0004AC800100008041000880610004 S31AFE00252B808081009480A100907C6FF1207C9A03A67CBB03A636 S31AFE0025408061000C8081001080A10014802100047C0004AC4C32 -S31AFE00255500012C4C0000647C230B783C80000060844C80388446 +S31AFE00255500012C4C0000647C230B783C800000608454A038841E S31AFE00256AFFE87C8123789061000C7C6000A6906100107C680273 S31AFE00257FA6906100143800000090010000900100087C0000A614 S31AFE00259460638000506004207C0004AC7C0001247C0004AC948A -S31AFE0025A921FFC848007EBD38210038806100147C6803A680A17A +S31AFE0025A921FFC848007DB538210038806100147C6803A680A183 S31AFE0025BE000C806100107C0000A6506004207C0004AC7C000168 -S31AFE0025D3247C0004AC7CA12B784E8000209421FED87C0802A63A -S31AFE0025E89321010C93410110936101149381011893A1011C931A -S31AFE0025FDC1012093E101249001012C3FA000003BBD3200813DC5 -S31AFE00261200343860FFFF7D2803A63B8000003BE000013F400041 -S31AFE002627004E800021813D00347C7E1B78386000007D2803A646 -S31AFE00263C3F6000003F2000004E800021801D00483C60000360B4 -S31AFE002651630D407C0803A63D2000003D60000093893B5893EB6C -S31AFE0026663B784E8000213C000040901B3B5C939A3B74480006D1 -S31AFE00267B6D3C60FE013C80FE013CA0FE01386329A4388429D487 -S31AFE00269038A529E0480094313C60FE013C80FE013CA0FE013CD1 -S31AFE0026A5C0FE0138C62A20386329EC38842A0438A52A14480018 -S31AFE0026BA940D3C60FE0138632A2448009401809A3B7480BB3BC6 -S31AFE0026CF5C3C60FE0138632A48480093ED3D2000003D6000002C -S31AFE0026E438093B383BAB3B287C1D00003D20000093893B6C41E6 -S31AFE0026F98200207C1C0378813D00003BBD00087D2803A64E8039 -S31AFE00270E00217C1DE0004082FFEC3F600000835B3B802C1A00ED -S31AFE002723004182006C3D20000083A93B603C8010621FBD03E855 -S31AFE00273860844DD37C9D20967FA0FE707C8436707C8020501CFA -S31AFE00274DA403E83C60FE0138632A547CA5E850480093693D2036 -S31AFE00276200003B80000093893B807FA5EB7838610008388001EB -S31AFE00277700480099BD2C03FFFE4082000C939B3B804800000878 -S31AFE00278C935B3B807FFDFB787F3CCB787FDBF3782C1D0000414F -S31AFE0027A18200143C60FE0138632A98480093193BA00000386129 -S31AFE0027B600083880010038A000FA480099752C03000040800032 -S31AFE0027CB1C3D20000080093B842C0000004182FFC44800B71D66 -S31AFE0027E04BFFFFBC40820020393C3200800900347F63DB787CE4 -S31AFE0027F50803A64E800021480077C94BFFFF9C386100084800D5 -S31AFE00280A93792C0300004081004C3FA000003F40000138610075 -S31AFE00281F08389D3B7038BA208848009E717C631B794182001CD5 -S31AFE0028348003000C807D3B70389A20887C0803A64E8000214876 -S31AFE0028490000143C60FE0138632AA4388100084800926D3BA07B -S31AFE00285E00014BFFFF3C9421FFF07C0802A693E1000C900100FA -S31AFE002873142C0300027C9F237840820144807F00043C80FE018C -S31AFE00288838842AC4480093852C030000408200447D6000A67DF8 -S31AFE00289D605B7839200000512004207C0001243C0002004C00D6 -S31AFE0028B2012C7C108BA64C00012C3D4002007C0004AC7D588B9F -S31AFE0028C7A67C0000A6516004207C000124480000F8807F000477 -S31AFE0028DC3C80FE0138842AC84800932D2C030000408200C07D44 -S31AFE0028F16000A67D605B7839200000512004207C000124392030 -S31AFE0029060000380000807C0903A6612010003D400E007C000436 -S31AFE00291BAC7D398BA67D588BA67C198BA67D588BA639290010CC -S31AFE0029304200FFE03C0004004C00012C7C108BA64C00012C3D41 -S31AFE0029454004007C0004AC7D588BA639200000380000807C096D -S31AFE00295A03A6612010003D400E007C0004AC7D398BA67D588B2C -S31AFE00296FA67C198BA67D588BA6392900104200FFE03C000C0002 -S31AFE0029844C00012C7C108BA64C00012C3D400C007C0004AC7D59 -S31AFE002999588BA67C0000A6516004207C000124480000243C60FC -S31AFE0029AEFE01809F000438632ACC4800910D480000103C60FE85 -S31AFE0029C30138632AE4480090FD800100147C0803A683E1000C4A -S31AFE0029D8382100104E8000209421FFE87C0802A693A1000C93F4 -S31AFE0029EDC1001093E100149001001C3D6000003D20000039296F -S31AFE002A023A683BEB39F87C1F48004182002C7D3D4B783FC0FE76 -S31AFE002A1701809F000480BF000080DF0008387E2AF04800909D97 -S31AFE002A2C3BFF00107C1FE8004082FFE48001001C7C0803A683D2 -S31AFE002A41A1000C83C1001083E10014382100184E8000209421EF -S31AFE002A56FFA87C0802A69381004893A1004C93C1005093E100A0 -S31AFE002A6B549001005C7C7D1B787C9C23783D20FE0139292B00E9 -S31AFE002A80386100083880006238A0000138C0000038E100383927 -S31AFE002A9501003C48009F293D20FE0139292B1038610020388071 -S31AFE002AAA006C38A0000138C0000038E100403901004448009F18 -S31AFE002ABF053D40FE017FA3EB787F84E378394A2A2038A00001F4 -S31AFE002AD438C1000838E00002390000003920000048009EF92C31 -S31AFE002AE9030000418200408001003C2C000000408200143C6073 -S31AFE002AFEFE0138632B1848008FC148000024800100442C0000ED -S31AFE002B13004082000C3800002090010040806100388081004058 -S31AFE002B2848009A758001005C7C0803A68381004883A1004C83F4 -S31AFE002B3DC1005083E10054382100584E8000209421FFB87C0827 -S31AFE002B5202A69381003893A1003C93C1004093E1004490010029 -S31AFE002B674C3D20000080093B7C7C7D1B787C9C23783D20FE01D1 -S31AFE002B7C9001002839292B30386100083880007738A0000138E9 -S31AFE002B91C0000038E100203901002448009E253D40FE017FA32B -S31AFE002BA6EB787F84E378394A2B4038A0000138C1000838E00075 -S31AFE002BBB01390100283920000048009E192C030000418200F85C -S31AFE002BD0800100242C000000418200343C60FE018081002880E0 -S31AFE002BE5A1002038632B5448008ED980A10020386100301CA582 -S31AFE002BFA03E838800008480095352C03FFFE418200BC81410098 -S31AFE002C0F287D6000A67D605B7839200000512004207C000124C2 -S31AFE002C2439200000380000807C0903A6612010003D600E007CA0 -S31AFE002C390004AC7D398BA67D788BA67C198BA67D788BA6392977 -S31AFE002C4E00104200FFE03C0004004C00012C7C108BA64C000179 -S31AFE002C632C3D6004007C0004AC7D788BA6392000003800008028 -S31AFE002C787C0903A6612010003D600E007C0004AC7D398BA67D49 -S31AFE002C8D788BA67C198BA67D788BA6392900104200FFE03C00CA -S31AFE002CA20C004C00012C7C108BA64C00012C3D600C007C000435 -S31AFE002CB7AC7D788BA67D4803A64E8000218001004C7C0803A6DB -S31AFE002CCC8381003883A1003C83C1004083E10044382100484E38 -S31AFE002CE18000204E8000209421FFE07C0802A693A1001493C1F0 -S31AFE002CF6001893E1001C90010024380000003D2000003FC000D4 -S31AFE002D0B003BA93B8090093B80901E3B6C48000A992C0300004D -S31AFE002D20418200EC3D20000080893B943D600000800B3B903D86 -S31AFE002D352000003BE97C747C8422147C8400507FE3FB7838A01E -S31AFE002D4A0400480085757FE3FB78388003FC480004F9801F03B7 -S31AFE002D5FFC7C030000408200303D20000081697C743C000BADC3 -S31AFE002D746000FACE7C0B000040820018813F03F83C00DEAD60DB -S31AFE002D8900DEAD7C090000418200283C60FE0138633A38480046 -S31AFE002D9E8D293C60000038637C743880000038A00400480085DE -S31AFE002DB3E9480000583C60FE01386338103881000838A0000166 -S31AFE002DC848000061800100082C000000418200303C60FE0138CE -S31AFE002DDD6338287FA4EB7838A00004480000413C60FE013C80D8 -S31AFE002DF200003863386438843B6038A0000248000029380000B7 -S31AFE002E0701901E3B6C800100247C0803A683A1001483C10018F6 -S31AFE002E1C83E1001C382100204E8000209421FFD87C0802A6936B -S31AFE002E3121000C93410010936100149381001893A1001C93C19F -S31AFE002E46002093E100249001002C3D2000003D6000003B493B45 -S31AFE002E5B287C7B1B787C9D23787CB92B783BCB3A6848000945E2 -S31AFE002E702C0300003B800004418200CC7C1ED000418200B43DAE -S31AFE002E8520000039297C74807E00007FFC4A147F64DB7848006D -S31AFE002E9A8D112C0300004082007C807E00107C03C800408200FD -S31AFE002EAF5C3803FFFF280000054181008C3D60FE01396B3A2060 -S31AFE002EC45400103A7D4B002E3D20FE0139293A207D4A4A147DA7 -S31AFE002ED94903A64E800420801F0000901D00004800005CA01F4D -S31AFE002EEE0004813F0000B01D0004913D00004800004893FD0048 -S31AFE002F0300480000403C60FE01386339D07F64DB7848008BB134 -S31AFE002F184800002C807E00103BDE0018480002DD7C1ED0007FDD -S31AFE002F2D9C1A144082FF543C60FE01386339FC7F64DB784800C3 -S31AFE002F428B858001002C7C0803A68321000C8341001083610024 -S31AFE002F57148381001883A1001C83C1002083E100243821002884 -S31AFE002F6C4E8000209421FBB87C0802A6930104289321042C9393 -S31AFE002F81410430936104349381043893A1043C93C1044093E1C6 -S31AFE002F9604449001044C3D2000003D6000003B093A683B2B3B78 -S31AFE002FAB287C7C1B787C9B2378480007FD2C0300003B400000B2 -S31AFE002FC07F1FC3783BC00004418202083C80000038847C7438B3 -S31AFE002FD561000838A00400480082E53BA104083D6000003D200D -S31AFE002FEAFE01934B3B80392939307FA3EB783880006C38A000EA -S31AFE002FFF0038C0000238E1042039000000480099B53D40FE0137 -S31AFE0030147F83E3787F64DB787FA6EB78394A2FB038A000013815 -S31AFE003029E000013900000039200000480099A92C03000041829F -S31AFE00303E01947C1FC800418200A480A104207FE3FB787FC4F3CA -S31AFE003053784800026538030001280000054181FFE03D60FE0197 -S31AFE003068396B39B85400103A7D4B002E3D20FE01392939B87DFA -S31AFE00307D4A4A147D4903A64E8004203C60000038637C74388151 -S31AFE003092000838A0040048008229480001343B400001807F0056 -S31AFE0030A7103BFF0018480001557FDE1A144BFFFF8C7FE9C2780E -S31AFE0030BC3129FFFF7D294910381FFFE87C0048787FE948387DC5 -S31AFE0030D13F03784BFFFF6C3C60FE0138633948480089E54BFFC0 -S31AFE0030E6FF5C2C1A0000418200E43C000BAD3D6000006000FA9E -S31AFE0030FBCE3D20DEAD3B8B7C746129DEAD900B7C74913C03F8E8 -S31AFE0031107F83E378388003FC480001393D2000003FE000008014 -S31AFE0031251F3B9481693B90907C03FC7C0002143C60FE017FC077 -S31AFE00313A58503863395C480094812C03000041820088809F3B73 -S31AFE00314F943BA104247FC3F3787FA5EB784800BA617C7F1B79A9 -S31AFE0031644182002C83A104247FE3FB784800BD697C661B783C23 -S31AFE00317960FE013863321C7FA4EB787FE5FB784800893D480042 -S31AFE00318E00447FC3F3787F84E3787FA6EB7838A004004800BB72 -S31AFE0031A38D7C7F1B794182002883A104247FE3FB784800BD25C1 -S31AFE0031B87C661B783C60FE01386339887FA4EB787FE5FB7848ED -S31AFE0031CD0088F98001044C7C0803A6830104288321042C834122 -S31AFE0031E20430836104348381043883A1043C83C1044083E104F0 -S31AFE0031F744382104484E8000203803FFFF280000054D81002094 -S31AFE00320C3D60FE01396B39185400103A7D4B002E3D20FE0139EF -S31AFE0032212939187D4A4A147D4903A64E800420386000044E802A -S31AFE0032360020386000084E800020386000004E800020386002B1 -S31AFE00324B004E800020388400035484F0BE7C8023782C00000074 -S31AFE00326038C0000038E000003884FFFF40810044816300007C26 -S31AFE0032758A23787D68383038E7000168E900102C0A00007D2A70 -S31AFE00328AFE707D404A787C0050507D6B43787C00FE707CC65AF9 -S31AFE00329F78386300047CE700383884FFFF4181FFC47CC333783B -S31AFE0032B44E8000209421FF707C0802A693010070932100749304 -S31AFE0032C94100789361007C9381008093A1008493C1008893E127 -S31AFE0032DE008C900100947C7B1B78807B00087C9F23782C0300B4 -S31AFE0032F3007CB82B78418200383881006038A000014BFFFB2594 -S31AFE003308801B000C2C00000041820014800100602C00000041B4 -S31AFE00331D82019848000010800100602C000000408201883D206F -S31AFE003332000039297C743C60FE01809B00047FBF4A1438633807 -S31AFE003347784800877D813B00103809FFFF280000054181014866 -S31AFE00335C3D60FE01396B38E85400103A7D4B002E3D20FE0139CF -S31AFE0033712938E87D4A4A147D4903A64E800420801D00002C00AB -S31AFE0033860000418200103D20FE0138893884480000303D20FEAF -S31AFE00339B013889388C480000243C60FE01809D00003863389408 -S31AFE0033B048008715480000EC7FA3EB784800AF457C641B783C7C -S31AFE0033C560FE0138633880480086F9480000D07FBEEB783BE0A3 -S31AFE0033DA00003F80FE013FA0FE017C9EF8AE387C38984800862C -S31AFE0033EFD9281F00044181000C387D38A0480086C93BFF000174 -S31AFE003404281F00054081FFDC3C60FE017FDDF378386338A448A6 -S31AFE0034190086AD480000843C60FE01386338A8480000883C6019 -S31AFE00342EFE01386338AC48008691881D00007FBEEB782C000037 -S31AFE003443007FBFEB78418200583F20FE013B4000003B80000A16 -S31AFE003458881E00002C00000A418200187FEBFB788C0B00012C03 -S31AFE00346D00000A4082FFF87D7F5B787FC4F3789B5F000038795B -S31AFE00348238B0480086413BDF00019B9F0000881E00007FDFF3EE -S31AFE003497782C0000004082FFBC2C180000418200183C60FE0141 -S31AFE0034AC386338AC48008615386000024800022C801B00102CBE -S31AFE0034C100000441820054386100083880005038A0000048000E -S31AFE0034D68C612C0300003860FFFF4180020438610008480086F5 -S31AFE0034EB992C0300004182FFC4880100082C00002E4082000CC1 -S31AFE00350038600000480001E02C00005E4082000C3860000348B6 -S31AFE0035150001D0813B00103809FFFF28000005418101BC3D6078 -S31AFE00352AFE01396B39005400103A7D4B002E3D20FE0139293921 -S31AFE00353F007D4A4A147D4903A64E80042083FD000038610008CC -S31AFE0035547FA4EB784800994D4800003083FD0000386100087F92 -S31AFE003569A4EB7838A0000038C00000480097C14800001483FDF6 -S31AFE00357E0000386100087FA4EB784800AC112C03000041820115 -S31AFE0035933C801D00007FE002787C09FE707D2302787C634850E9 -S31AFE0035A87C63FE707C6018F8546307FE540007BC7C630378485C -S31AFE0035BD000128801D0000A17D00049001005839210058B16958 -S31AFE0035D20004380100087D3A4B78900100683BC000003F60FE90 -S31AFE0035E7013BE100643B810068806100687FE4FB787F85E378A8 -S31AFE0035FC38DB38A0480097352C030000418200B4881F00037CEB -S31AFE0036111DF1AE3BDE0001281E00054081FFD4480000C03C6047 -S31AFE003626FE017FBEEB78386338B84800849548000044880100EB -S31AFE00363B083BE100082C000000418200287FC4F3787FEBFB78A8 -S31AFE003650880B0000980400008D2B0001388400012C0900004047 -S31AFE00366582FFEC7C9E23783800000A981E00003BDE00013800E0 -S31AFE00367A00003C60FE01981E0000386338E44800843D3861008D -S31AFE00368F083880005038A0000048008A9D2C0300003860FFFF06 -S31AFE0036A44180004038610008480084D52C0300004082FF84480E -S31AFE0036B9000028A01A000481210058B01D0004913D00003860E1 -S31AFE0036CE0004480000143C60FE01386338A8480083E938600021 -S31AFE0036E301800100947C0803A683010070832100748341007843 -S31AFE0036F88361007C8381008083A1008483C1008883E1008C3839 -S31AFE00370D2100904E8000209421FFF07C0802A693C1000893E164 -S31AFE003722000C900100147C7E1B782C1E00017C9F23784181008D -S31AFE003737143C60FE01386337D0480013C94800005448000069B7 -S31AFE00374C2C030000418200483C6000003C80000080BF00043857 -S31AFE003761633988388439F8480090957C631B794182001C8003FC -S31AFE003776000C7FC3F3787FE4FB787C0803A64E80002148000047 -S31AFE00378B103C60FE01386337E448001375800100147C0803A632 -S31AFE0037A083C1000883E1000C382100104E8000209421FFE07CED -S31AFE0037B50802A6934100089361000C9381001093A1001493C1AF -S31AFE0037CA001893E1001C900100243D200000800933002C000044 -S31AFE0037DF004082009C3FE00000807F3B5C3800000190093300B9 -S31AFE0037F43C63FFFF3C8000014800B2AD7C641B79418200183C30 -S31AFE00380960FE0138633778480082B538600000480000683F6097 -S31AFE00381E00003F40000038600000389B3B8C38BA3B904800B328 -S31AFE003833213FA000003F800000387D3B94389C3B984800B34156 -S31AFE003848809B3B8C80BA3B9080DC3B983C60FE0180FD3B943832 -S31AFE00385D6337A048008265813D3B94801F3B5C3D2900017C093A -S31AFE00387200503D600000900B3B9C38600001800100247C080319 -S31AFE003887A6834100088361000C8381001083A1001483C100181E -S31AFE00389C83E1001C382100204E8000209421FFA87C0802A69311 -S31AFE0038B181004893A1004C93C1005093E100549001005C380024 -S31AFE0038C600007C7D1B787C9C23783D20FE0190010040392936E5 -S31AFE0038DBDC9001003C386100083880006238A0000138C000009F -S31AFE0038F038E100383901003C480090C93D20FE01392936F83833 -S31AFE0039056100203880006338A0000038C0000238E100403900A9 -S31AFE00391A0000480090A53D40FE017FA3EB787F84E378394A36FF -S31AFE00392FA438A0000238C1000838E0000239010044392000010E -S31AFE003944480090992C030000408200143C60FE013863343C4806 -S31AFE0039590011B1480000E080610044480011ED7C7D1B794082B1 -S31AFE00396E00183C60FE0180810044386336C44800814948000059 -S31AFE003983BC8001003C2C0000004082000C801D0014900100383E -S31AFE0039983D20000080093B74806100387C0300404180001C804C -S31AFE0039ADBD00183D20000081693B5C7C032A147C0058404180BC -S31AFE0039C200143C60FE013863370C480080F94800006C809D00CD -S31AFE0039D710480078E9801D00FC817D001C2C0000003D200000E2 -S31AFE0039EC91693B7C4182004C80610038809D00204800121180C1 -S31AFE003A019D00FC7C7C1B787C1C2000418200143C60FE013863C3 -S31AFE003A1637247F85E378480080A9800100402C000000418200BC -S31AFE003A2B143C60FE01386337647F84E3784800808D8001005C0D -S31AFE003A407C0803A68381004883A1004C83C1005083E100543800 -S31AFE003A552100584E8000209421FFD87C0802A693410010936161 -S31AFE003A6A00149381001893A1001C93C1002093E1002490010016 -S31AFE003A7F2C3D40FE01394A36A438A0000238C0000038E000003F -S31AFE003A94390100083920000148008F412C030000408200143C24 -S31AFE003AA960FE013863343C48001059480001843D6000003D2022 -S31AFE003ABE000080A93B94800B3B903FA000007F650050807D3B56 -S31AFE003AD39C7F64DB78480077E983DD3B9C3BA000003BDE020033 -S31AFE003AE83BE000024800000C3BFF00013BDE01003F4000008000 -S31AFE003AFD1A3B945400C23E7C1F004040800040881E00002C00C6 -S31AFE003B1200FF4182FFDC806100087FC4F378480080892C0300E6 -S31AFE003B27004082FFC83C60FE0180810008386336B048008A897C -S31AFE003B3C2C030000418200F83BA000012C1D0000408200183C4B -S31AFE003B5160FE0180810008386336C448007F69480000D83B8152 -S31AFE003B66000C807E0010809E00187F85E3784800B0497C7F1B40 -S31AFE003B7B794182002883A1000C7FE3FB784800B3517C661B7807 -S31AFE003B903C60FE01386336447FA4EB787FE5FB7848007F257FA4 -S31AFE003BA5C3F378388000FF38A00100480077E9809A3B947F63D6 -S31AFE003BBADB787F85E3784800AFFD7C7F1B794182002C83A100AA -S31AFE003BCF0C7FE3FB784800B3057C661B783C60FE0138633644D7 -S31AFE003BE47FA4EB787FE5FB7848007ED9480000483D200000805F -S31AFE003BF9893B9C80BA3B947F63DB787F86E3784800B1257C7F9C -S31AFE003C0E1B794182002883A1000C7FE3FB784800B2BD7C661B65 -S31AFE003C23783C60FE01386336647FA4EB787FE5FB7848007E918C -S31AFE003C388001002C7C0803A6834100108361001483810018832E -S31AFE003C4DA1001C83C1002083E10024382100284E800020942191 -S31AFE003C62FFA07C0802A69381005093A1005493C1005893E10072 -S31AFE003C775C90010064380000007C7D1B787C9C23783D20FE0110 -S31AFE003C8C90010044392933E09001003C38610008388000663811 -S31AFE003CA1A0000138C0000038E100383901003C48008D113D2067 -S31AFE003CB6FE0139293688386100203880006C38A0000138C00028 -S31AFE003CCB0038E100403901004448008CED3D40FE017FA3EB7847 -S31AFE003CE07F84E378394A2FB038A0000238C1000838E0000239DD -S31AFE003CF50000003920000048008CE12C030000408200143C6007 -S31AFE003D0AFE013863343C48000DF9480001048001003C2C000012 -S31AFE003D1F0041820010800100442C000000408200143C60FE0156 -S31AFE003D343863369048000DD1480000DC806100384800ADC97C78 -S31AFE003D497C1B794082002080610038800100407C630214386305 -S31AFE003D5EFFFF4800ADAD7C7C1B794182004483A100387F83E3D8 -S31AFE003D73784800B1657C651B783C60FE01386334987FA4EB7865 -S31AFE003D8848007D3D3D2000003D6000003C60FE0180893B8C803B -S31AFE003D9DAB3B90386334B848007D2148000070808100388001B8 -S31AFE003DB200407C8323787C8402143884FFFF4800B2FD2C030028 -S31AFE003DC700418200143C60FE01386335C848007CF1480000409C -S31AFE003DDC806100388081004038A100484800ADD57C7C1B7941BC -S31AFE003DF182002883A100487F83E3784800B0DD7C661B783C6060 -S31AFE003E06FE01386336447FA4EB787F85E37848007CB1800100B4 -S31AFE003E1B647C0803A68381005083A1005483C1005883E1005CD5 -S31AFE003E30382100604E8000209421FF187C0802A6934100D093A3 -S31AFE003E456100D4938100D893A100DC93C100E093E100E4900116 -S31AFE003E5A00EC380000007C7D1B787C9C23783D20FE01900100FF -S31AFE003E6FC4392933A49001009C900100A4900100AC900100B459 -S31AFE003E84900100BC386100083880006238A0000138C000003814 -S31AFE003E99E100983901009C48008B213D20FE01392933B838618B -S31AFE003EAE00203880007238A0000138C0000038E100A0390100ED -S31AFE003EC3A448008AFD3D20FE01392933CC3861003838800065C8 -S31AFE003ED838A0000138C0000038E100A8390100AC48008AD93876 -S31AFE003EEDE100B03D20FE017CFE3B78392933E03861005038808C -S31AFE003F02006638A0000138C00000390100B448008AB13D20FEA3 -S31AFE003F1701392933FC386100683880006C38A0000138C0000009 -S31AFE003F2C38E100B8390100BC48008A8D3D20FE01392934143818 -S31AFE003F416100803880007338A0000138C0000038E100C0390177 -S31AFE003F5600C448008A693D40FE017FA3EB787F84E378394A343D -S31AFE003F6B3038A0000238C1000838E00006390100C839200001B8 -S31AFE003F8048008A5D2C030000408200143C60FE013863343C4806 -S31AFE003F95000B75480004B08001009C2C0000004182001C8001EE -S31AFE003FAA00BC2C00000041820010800100C82C0000004082000C -S31AFE003FBF143C60FE013863345048000B414800047C800100C47A -S31AFE003FD4814100B82C00000040820008914100C03D20000080F5 -S31AFE003FE9093B94816100C07D2A02143929FFFF7D2903963F406A -S31AFE003FFE00007D2901D67C095840912100B8408000143C60FE38 -S31AFE004013013863346C48007AAD4800042C800100B42C00000010 -S31AFE00402841820070806100B04800AADD7C7C1B794082002080FE -S31AFE00403D6100B0800100C07C6302143863FFFF4800AAC17C7CDF -S31AFE0040521B794182004483A100B07F83E3784800AE797C651B1E -S31AFE004067783C60FE01386334987FA4EB7848007A513D200000D0 -S31AFE00407C3D6000003C60FE0180893B8C80AB3B90386334B8485E -S31AFE004091007A35480003B43FE0000080810098801F3B747C04E2 -S31AFE0040A600404180001C800100C03D20000081693B5C7C040243 -S31AFE0040BB147C005840418000283C60FE01386334D4480079F9E3 -S31AFE0040D03D2000003C60FE01809F3B7480A93B5C386334B84882 -S31AFE0040E50079E1806100C848007A952803000F408100183C60B9 -S31AFE0040FAFE013863350038800010480079C14800034080010088 -S31AFE00410FB42C0000004082002C808100B87FC3F37848000351C7 -S31AFE0041242C030000408200183C60FE01808100B83863353048DD -S31AFE00413900798D4800030C3F8000003D20000080BC3B94800960 -S31AFE00414E3B903FA000007F650050807D3B9C7F64DB78480071B7 -S31AFE00416361801C3B9483FD3B9C5409C23F3BA000003B8000002C -S31AFE004178418200883FC0FE01881F00002C0000FF418200608070 -S31AFE00418D6100C87FE4FB7848007A152C0300004082004C800185 -S31AFE0041A200B42C00000041820014813F0010800100B07C0900C7 -S31AFE0041B7004082022C813F0018800100B87C0900004082022C79 -S31AFE0041CC808100C8387E35AC480083ED2C0300004182026C3B27 -S31AFE0041E18000014800001C801A3B943BBD00015400C23E7C1D91 -S31AFE0041F600403BFF01004180FF842C1C0000814100C080610046 -S31AFE00420BB04082004C3D20000080093B943D6000005400C23E36 -S31AFE0042207C1C004083EB3B9C3BA000004800001C3D200000804C -S31AFE004235093B943BBD00015400C23E7C1D00403BFF0100408077 -S31AFE00424A0010881F00002C0000FF4082FFDC7C8352143884FFBC -S31AFE00425FFF4800AE5D2C030000418200143C60FE01386335C8BB -S31AFE00427448007851480001D038A100CC806100B0808100B87C9C -S31AFE004289BE2B784800A9317C7C1B793BA000014182002C83A11E -S31AFE00429E00CC7F83E3784800AC357C661B783C60FE017FA4EB97 -S31AFE0042B378386335FC7F85E378480078093BA000002C1D000062 -S31AFE0042C841820044806100B08081009880A100C07FC6F37848D3 -S31AFE0042DD00AA517C7C1B794182002883A100CC7F83E3784800C1 -S31AFE0042F2ABE97C661B783C60FE01386336207FA4EB787F85E3B1 -S31AFE00430778480077BD7FE3FB783880000038A00100480070810A -S31AFE00431C808100C87FE3FB78480078B9800100A4812100B02CCE -S31AFE004331000000913F001040820020800100B42C00000041828D -S31AFE004346000C812100B04800001081210098480000088121007C -S31AFE00435BA0800100AC913F00142C000000408200103D2000003D -S31AFE00437080093B7C48000008800100A8901F001C800100B890E7 -S31AFE0043851F0018812100C0913F002080610098808100C0480014 -S31AFE00439A08753D200000907F00FC80893B947F63DB787FC5F3E1 -S31AFE0043AF784800A80D7C7C1B794182004C83A100CC7F83E37898 -S31AFE0043C44800AB157C661B783C60FE01386336447FA4EB787FAE -S31AFE0043D985E378480076E9480000683C60FE0138633558480089 -S31AFE0043EE76D9480000583C60FE0138633584480076C948000009 -S31AFE004403483D20000080893B9C80BA3B947F63DB787FC6F3782D -S31AFE0044184800A9157C7C1B794182002883A100CC7F83E3784879 -S31AFE00442D00AAAD7C661B783C60FE01386336647FA4EB787F8550 -S31AFE004442E37848007681800100EC7C0803A6834100D0836100B5 -S31AFE004457D4838100D883A100DC83C100E083E100E4382100E8EF -S31AFE00446C4E8000203D20000080E93B943D600000814B3B8C3D47 -S31AFE0044812000007C073A1481093B907D4A02147D4953787C09E9 -S31AFE00449640404080007054E0F0BE7C0603785407103A800A004F -S31AFE0044AB002C00FFFF4182004C7C095000418200147C095050EE -S31AFE0044C07C0016707C002040408000587D4953787C0940404017 -S31AFE0044D580002054CB103A7D295A147C09404040800010800953 -S31AFE0044EA00002C00FFFF4082FFEC7D2A4B78480000087D4A3A27 -S31AFE0044FF147C0A40404180FFA47C095000418200207C09505049 -S31AFE0045147C0016707C0020404180001091230000386000014E44 -S31AFE004529800020386000004E8000209421FFE07C0802A693619F -S31AFE00453E000C9381001093A1001493C1001893E1001C9001005F -S31AFE004553243D20000080093B943D600000814B3B8C3D200000E9 -S31AFE00456883C93B907C0002147FEA02147C1FF0407FE4FB783F32 -S31AFE00457D600000408000883F80FE013FA00000801F00002C0015 -S31AFE004592FFFF4182005C7C04F80041820010387C338C7FE5FBD6 -S31AFE0045A7784800751D7C1FF0407FE4FB7840800034801F000075 -S31AFE0045BC2C00FFFF41820028801D3B945400F0BE5409103A7C40 -S31AFE0045D1844A147C04F04040800010800400002C00FFFF4082FF -S31AFE0045E6FFEC7C9F237848000014801B3B945400F0BE540010EF -S31AFE0045FB3A7FFF02147C1FF0404180FF887C04F8004182001477 -S31AFE0046103C60FE013863338C7FE5FB78480074A9800100247C3F -S31AFE0046250803A68361000C8381001083A1001483C1001883E1CF -S31AFE00463A001C382100204E8000209421FFC87C0802A693810028 -S31AFE00464F2893A1002C93C1003093E100349001003C7C7D1B7845 -S31AFE0046647C9C2378380000003D20FE0190010020392932F43885 -S31AFE0046796100083880006338A0000038C0000238E10020390060 -S31AFE00468E0000480083313D40FE017FA3EB787F84E378394A2F06 -S31AFE0046A3B038A0000238C1000838E000013900000039200000C8 -S31AFE0046B8480083252C030000418200B4810100203D2000003D17 -S31AFE0046CD60000081493B90800B3B942C0800007FA050503FE073 -S31AFE0046E20000418200103D20FE01388933484800000C3D20FEA5 -S31AFE0046F701388933543C60FE0138633308480073C13D20000017 -S31AFE00470C80093B943B8000005409C23F4182005C3FC0FE01887E -S31AFE0047211D00002C0000FF418200348001002080BD00102C0026 -S31AFE00473600004182000C80DD00FC4800000880DD001480FD0004 -S31AFE00474B18811D001C387E33607FA4EB784800736D801F3B941E -S31AFE0047603B9C00015400C23E7C1C00403BBD01004180FFB08053 -S31AFE00477501003C7C0803A68381002883A1002C83C1003083E16D -S31AFE00478A0034382100384E8000209421FFB87C0802A693210017 -S31AFE00479F2C93410030936100349381003893A1003C93C1004059 -S31AFE0047B493E100449001004C7C7D1B787C9C23783BE000003DC0 -S31AFE0047C920FE013929319093E10020386100083880006638A06A -S31AFE0047DE000038C0000238E1002039000000480081D53D40FE3D -S31AFE0047F3017FA3EB787F84E378394A2FB038A0000238C100088C -S31AFE00480838E000013900000039200000480081C92C03000041EA -S31AFE00481D8202C03C60FE01386331BC48007D992C0300004082CC -S31AFE00483200143C60FE01386331EC480072894800029C3C60FE43 -S31AFE00484701386331F848007279800100202C0000004182006C64 -S31AFE00485C3D20000080893B983D600000800B3B943D200000387E -S31AFE00487184FFFC80693B8C7C8401D63BA100247C0002147C63B7 -S31AFE00488602147FA5EB784800A3317C7C1B797FBEEB7841820071 -S31AFE00489B3C83A100247F83E3784800A6357C661B783C60FE01F0 -S31AFE0048B03863321C7FA4EB787F85E37848007209480000143CC6 -S31AFE0048C560FE0138633244480071F93BC100243F400000839AFC -S31AFE0048DA3B943C0000027F9C00003F20000083B93B9C4FFEEBF3 -S31AFE0048EF827C000026540007FE7C0000D07C0900F87F9C003817 -S31AFE0049045529039C7F9C4B787FA3EB783880000038A001004841 -S31AFE004919006A813D20FE013F6000003969328C801B3B8C814913 -S31AFE00492E328C810B0004939D0018915D0000911D0004901D008D -S31AFE00494314901D00103BBD01007FA3EB783880000038A001007B -S31AFE00495848006A413D60FE01801B3B8C810B3294392B32948059 -S31AFE00496DE9000C81690004814900087C00E214939D0018911D14 -S31AFE0049820000917D0004915D000890FD000C901D0014901D000D -S31AFE004997103BBD01007FA3EB783880000038A00100480069F146 -S31AFE0049AC3D20FE01800932A4396932A4812B0008814B0004A19A -S31AFE0049C10B000C913D0008901D0000915D0004B11D000C880BE4 -S31AFE0049D6000E3F800000981D000E817A3B94801C3B907D2B5A05 -S31AFE0049EB147C090050901D0014917D0018901D00103BBD01002D -S31AFE004A007FA3EB783880000038A001004800698D801C3B908062 -S31AFE004A159A3B943D60FE01814B32B47F640050392B32B4A109AA -S31AFE004A2A000C8009000481690008915D0000901D0004917D003B -S31AFE004A3F08B11D000C909D0018937D0010937D00147F63DB78BE -S31AFE004A547FC5F3784800A1653BFF00013BFF00017C7C1B793B0F -S31AFE004A69FF00013BFF00014182002C83A100247F83E37848001D -S31AFE004A7EA45D7C661B783C60FE013863321C7FA4EB787F85E3B8 -S31AFE004A9378480070314800004480993B9C7F63DB7857E5402E4E -S31AFE004AA87FC6F3784800A2817C7C1B794182002883A100247F9C -S31AFE004ABD83E3784800A4197C661B783C60FE01386332C47FA439 -S31AFE004AD2EB787F85E37848006FED8001004C7C0803A6832100C7 -S31AFE004AE72C83410030836100348381003883A1003C83C100405E -S31AFE004AFC83E10044382100484E8000209421FFF87C0802A69002 -S31AFE004B1101000C7C641B783C60FE013863316848006FA53C6044 -S31AFE004B2600003C8000003CA0FE0138633988388439F838A53188 -S31AFE004B3B8848007E018001000C7C0803A6382100084E80002009 -S31AFE004B509421FFE87C0802A69381000893A1000C93C100109331 -S31AFE004B65E100149001001C3F8000003D20000080BC3B94808965 -S31AFE004B7A3B903FA000007C7F1B78807D3B9C7C852050480067F6 -S31AFE004B8F35801C3B9483BD3B9C5409C23F3B8000003FC000003E -S31AFE004BA441820044881D00002C0000FF418200207FE3FB787FEA -S31AFE004BB9A4EB7848006FED2C0300004082000C7FA3EB7848006E -S31AFE004BCE0020801E3B943B9C00015400C23E7C1C00403BBD0144 -S31AFE004BE3004180FFC4386000008001001C7C0803A683810008C7 -S31AFE004BF883A1000C83C1001083E10014382100184E8000203811 -S31AFE004C0D8400035484F0BE7C8023782C00000039600000388469 -S31AFE004C22FFFF408100207C802378812300002C00000038630098 -S31AFE004C37047D6B4A783884FFFF4181FFE87D635B784E800020B2 -S31AFE004C4C9421FF207C0802A67D800026934100C8936100CC933D -S31AFE004C618100D093A100D493C100D893E100DC900100E49181DE -S31AFE004C7600C43BA000007C7B1B787C9A237893A1009893A1004B -S31AFE004C8BB0386100083880000038A0000C480067013D20000115 -S31AFE004CA08149211C3B8100183800000C396000013D20FE017F67 -S31AFE004CB583E378B0010010B161000E91410008B3A1000C39298B -S31AFE004CCA2D703880007638A0000038C0000238E1009039000052 -S31AFE004CDF0048007CE13D20FE0139292D783861003038800072C1 -S31AFE004CF438A0000038C0000238E100943900000048007CBD3D31 -S31AFE004D0920FE0139292D88386100483880006238A0000138C08F -S31AFE004D1E000038E100983901009C48007C993D20FE0139292DAD -S31AFE004D3398386100603880006D38A0000138C0000138E100A026 -S31AFE004D48390100A448007C753D20FE0139292DBC38610078384B -S31AFE004D5D80006838A0000138C0000138E100A8390100AC480094 -S31AFE004D727C513D40FE017F86E3787F63DB787F44D378394A2D8C -S31AFE004D87D438A0000138E00005390100B03920000148007C45FC -S31AFE004D9C2C0300003B8000004182030C800100AC2C00000041A8 -S31AFE004DB182002C806100A838810008480093DD2C030000408248 -S31AFE004DC600183C60FE01808100A838632DE048006CF1480002E1 -S31AFE004DDBD8800100A42C000000418200E883A100A03BBD00012E -S31AFE004DF07FA3EB7848006D8D7C651B783C80FE017FA3EB7838F7 -S31AFE004E05842DF848006EB52C0300004082006C812100A07D2440 -S31AFE004E1A4B78892900003809FFBF280000194181000C380900BB -S31AFE004E2F205409063E7D204B782C0000794182002841810010E7 -S31AFE004E442C00007841820014480000282C00007A4182001848A1 -S31AFE004E5900001C3B8000014800006C3B800002480000643B8090 -S31AFE004E6E00034800005C3C60FE0148000048806100A03C80FE1E -S31AFE004E830138842E1448006D892C030000408200283D20000063 -S31AFE004E9880093B843B8000002C000000408200283C60FE013815 -S31AFE004EAD632E1C48006C15480001FC3C60FE01808100A038635A -S31AFE004EC22E0048006C01480001E82E1C00004092007480610052 -S31AFE004ED7B02C030000408200283C60FE0138632E4448006BDDC1 -S31AFE004EEC3C60FE013C80000038632E583884330C48006BC94876 -S31AFE004F010001B03BA100B43881000838A000017FA6EB784800EC -S31AFE004F16800D7C7B1B7940800014806100B483A100B048008362 -S31AFE004F2BA5480000403C60FE01808100903863D0C8480001C1D7 -S31AFE004F40480000543BA100B4806100B07F84E3787FA5EB78486E -S31AFE004F5500A6797C7B1B7940800028806100B483A100B0480000 -S31AFE004F6AAA017C651B783C60FE0138632E687FA4EB7848006B0A -S31AFE004F7F49480001303C60FE01808100903863F7504800016D93 -S31AFE004F943D2000013BE922343B8000003B4100B84800000C7F6A -S31AFE004FA97CD1AE3B9C0001281C0003418100184800016D7C7B4E -S31AFE004FBE1B794080FFE8801F0110900100B42C1B0000418000A2 -S31AFE004FD3D44800010D800100942C000000418200548001009C26 -S31AFE004FE82C000000408200143C60FE0138632E8048006ACD4803 -S31AFE004FFD0000A8838100984800000C987C00003B9C00014800CF -S31AFE00501201157C631B794080FFF03C60FE018081009838632E50 -S31AFE005027A47F85E37848006A99480000743C80FE0138842EBC05 -S31AFE00503C386100B938A0000348006C2D2C0300003B8100B8406A -S31AFE0050518200143C60FE0038635124480006DD480000448801C6 -S31AFE00506600B82C00005340820028893C00013929FFD0280900E8 -S31AFE00507B09418100183C60FE008081009838635124480001C9E4 -S31AFE005090480000143C60FE01808100B838632EC048006A2540B7 -S31AFE0050A592000C7FA3EB7848008009800100E4818100C47C084F -S31AFE0050BA03A6834100C8836100CC838100D083A100D483C100E8 -S31AFE0050CFD883E100DC7D808120382100E04E8000203D2000018D -S31AFE0050E4392922348009010C3969000490090108916901044ED0 -S31AFE0050F98000203D600001392B22343940000038000100906BF9 -S31AFE00510E2234914901189009010C90890114914901084E8000BA -S31AFE005123209421FFF07C0802A693C1000893E1000C9001001402 -S31AFE0051383D2000013BE9223483DF01082C1E00004080000C38CD -S31AFE00514D60FFFF480000EC408200C4801F01142C00000041828E -S31AFE0051620038817F01183D200000392933047C8958AE396B003E -S31AFE005177013C60FE01917F011838632D6848006941801F011880 -S31AFE00518C280000064081000893DF01183D2000013BE922348030 -S31AFE0051A11F010C2C0000FF41810020801F01142C000000418219 -S31AFE0051B6FF983C60FE0138632D6C480069054BFFFF883D200096 -S31AFE0051CB0181292234381F00047C0303783880010038BF0110B4 -S31AFE0051E07D2803A6901F01044E8000212C030000907F010C90EA -S31AFE0051F57F010841810020801F01142C0000004182FF483C60B1 -S31AFE00520AFE0138632D6C480068B54BFFFF383D400001394A224F -S31AFE00521F34812A0108816A01043929FFFF912A0108886B000087 -S31AFE005234396B0001916A0104800100147C0803A683C10008832B -S31AFE005249E1000C382100104E8000209421FF707C0802A69281A5 -S31AFE00525E006092A1006492C1006892E1006C93010070932100EE -S31AFE00527374934100789361007C9381008093A1008493C10088CA -S31AFE00528893E1008C900100947C7D1B787C9523783B6000003ADB -S31AFE00529D8000013B2000003AC000003AE0FFFF480002602C052F -S31AFE0052B20053418200183C60FE0138632C087F64DB7848006865 -S31AFE0052C701480002547FA803A63B7B00024E80002138A1005887 -S31AFE0052DC38000000547C063E7CBA2B78900100587FA3EB7838EE -S31AFE0052F1800001480002697C7F1B79408000183C60FE013863D3 -S31AFE0053062C347F64DB78480067B94800020C381CFFD0280000EF -S31AFE00531B093B7B0001418101AC3D60FE01396B2D405400103AFF -S31AFE0053307D4B002E3D20FE0139292D407D4A4A147D4903A64E61 -S31AFE0053458004207FA3EB78389CFFD17F45D378480002092C14E0 -S31AFE00535A00007C7E1B78381BFFD17FD8F3787F60E21441820030 -S31AFE00536F2C2C1500004182001C7F3EA8503C60FE0138632C586A -S31AFE0053847F24CB784800673D480000083B2000003A8000003D9C -S31AFE00539920000081693B747FDECA147D39F0507C1748107C00AA -S31AFE0053AE01107C0003B87D2900787C1E58407EE000387C174BDA -S31AFE0053C378418000143D20000080093B5C7C1E00404081001854 -S31AFE0053D83C60FE0138632C707FC4F378480066E14800013438F8 -S31AFE0053ED1F002E7FFC00507FE9FB782C0900007F7BFA143BFF3D -S31AFE005402FFFF408100307F5CD3787FA3EB78388000017F85E357 -S31AFE00541778480001457FE0FB782C000000987E00003BDE000148 -S31AFE00542C3BFFFFFF4181FFDC7FA3EB783880000138A000004834 -S31AFE00544100011D88A1005B7C6318F85466063E7C0628003B7B63 -S31AFE005456000190A10058418200183C60FE0138632CAC7F04C384 -S31AFE00546B7848006659480000AC7D39F0507C09B0107C000110ED -S31AFE0054807C0003B87D2900787EC000387C164B78480000547FD8 -S31AFE005495A3EB78209C003B7F45D378480000BD7C7E1B783D2003 -S31AFE0054AA00003C60FE0193C93B7C38632CE87FC4F3787EE5BBC0 -S31AFE0054BF787EC6B37848006601480000543C60FE0138632D102F -S31AFE0054D47F64DB787F85E378480065E94800003C7F7FDB787F40 -S31AFE0054E9BEEB78480000083BFF00017FC803A64E8000212C03F0 -S31AFE0054FE000A4082FFF07FDDF3787FFBFB787FA803A64E800088 -S31AFE005513217C651B794181FD98800100947C0803A682810060ED -S31AFE00552882A1006482C1006882E1006C830100708321007483DA -S31AFE00553D4100788361007C8381008083A1008483C1008883E1E0 -S31AFE005552008C382100904E8000209421FFE07C0802A693610029 -S31AFE0055670C9381001093A1001493C1001893E1001C9001002402 -S31AFE00557C7C9E23787FC0F3782C0000007C7B1B787CBC2B783BEB -S31AFE005591A000003BDEFFFF408101787F6803A64E8000217F68AA -S31AFE0055A603A6547F063E4E800021393FFFD0381FFFBF21290097 -S31AFE0055BB09392000007D29491420000005380000007C00011484 -S31AFE0055D07D270379546B063E3920000040820010381FFF9F2857 -S31AFE0055E500000541810008392000012C09000041820104392B23 -S31AFE0055FAFFD0380BFFBF7D2A4B787C0803785529063E54000643 -S31AFE00560F3E21290009392000007D294914200000053800000038 -S31AFE0056247C0001147D2703793920000040820010380BFF9F2888 -S31AFE00563900000541810008392000012C090000418200B0393F0F -S31AFE00564EFFD05520063E2800000957BD402E4181000C7D234B4F -S31AFE0056637848000030381FFF9F280000054181000C387FFFA9EF -S31AFE0056784800001C381FFFBF393FFFC9200000057C0001107C32 -S31AFE00568D0003B87C0348385540063E280000094181000C7D49AC -S31AFE0056A2537848000030380BFF9F280000054181000C392BFF6D -S31AFE0056B7A94800001C5500063E392BFFC9200000057C00011056 -S31AFE0056CC7C0003B87C094838546020362C1C00007C034B787F76 -S31AFE0056E1BD1B784182001C801C00007C001A14901C0000480047 -S31AFE0056F6000C3860FFFF480000187FC0F3782C0000003BDEFFAB -S31AFE00570BFF4181FE907FA3EB78800100247C0803A68361000CEF -S31AFE0057208381001083A1001483C1001883E1001C382100204E81 -S31AFE0057358000209421FFF87C0802A69001000C3C60FE01386310 -S31AFE00574A2BEC480063798001000C7C0803A6382100084E800022 -S31AFE00575F203860001C4E8000209421FFE87C0802A693A1000C67 -S31AFE00577493C1001093E100149001001C7C7D1B78813D000483B2 -S31AFE005789C900044800002C73E00012418200107FA3EB787FE4A6 -S31AFE00579EFB784800004973E000084182000C7FA3EB78480001F6 -S31AFE0057B3A9B3FE0010A01E00107000001A541F043E2C1F00001B -S31AFE0057C84082FFC88001001C7C0803A683A1000C83C10010836E -S31AFE0057DDE10014382100184E8000209421FFE87C0802A6938183 -S31AFE0057F2000893A1000C93C1001093E100149001001C7C7D1BA9 -S31AFE0058077883DD000483FE0018A01F0000700090002C00100018 -S31AFE00581C408200683B9E0028813D0000801E0010816900247C52 -S31AFE00583100F850816B00085400F87AA13F00007C9C002E7FA314 -S31AFE005846EB7838A000007D6803A67129EFFFB13F00004E80003A -S31AFE00585B21A01F0000700920004182000C83FE0010480000080B -S31AFE0058703BFF0008A01F0000700090002C0010004182FFA493E9 -S31AFE005885FE00188001001C7C0803A68381000883A1000C83C1AA -S31AFE00589A001083E10014382100184E8000209421FFE87C0802EC -S31AFE0058AFA693A1000C93C1001093E100149001001C81230004B9 -S31AFE0058C48169000C83EB00047C188AA654000FFE2C00000041D1 -S31AFE0058D9820028812B0004A00B00022C000000408100187C002E -S31AFE0058EE4BAC7C0004AC3400FFF0392900104181FFF02C050007 -S31AFE00590300408100387C9E23787CBD2B78807E00002C030000D4 -S31AFE0059184182001880BE00047FE4FB784800599D801E00047F24 -S31AFE00592DFF021437BDFFFF3BDE00084082FFD88001001C7C087F -S31AFE00594203A683A1000C83C1001083E10014382100184E800068 -S31AFE005957209421FFE87C0802A693A1000C93C1001093E1001423 -S31AFE00596C9001001C7C7D1B7883DD000483FE001C4800004881D7 -S31AFE0059813D000093FE000C816900247FA3EB78800B0004A09FD2 -S31AFE00599600027C0803A64E800021A01F000060008000B01F006C -S31AFE0059AB00A13F0000712020004182000C83FE0014480000089E -S31AFE0059C03BFF0008A01F0000700090002C0010004182FFB0938C -S31AFE0059D5FE001C8001001C7C0803A683A1000C83C1001083E1ED -S31AFE0059EA0014382100184E8000209421FFD87C0802A6930100E5 -S31AFE0059FF089321000C93410010936100149381001893A1001C5F -S31AFE005A1493C1002093E100249001002C83C300047C9823788334 -S31AFE005A29BE00087CBB2B78A01D00007CD93378700980007CFA98 -S31AFE005A3E3B78418200447FBFEB783F80FE01A01F0000700920DE -S31AFE005A53004182000C83FE0010480000083BFF00087C1FE800C5 -S31AFE005A684082000C387C2BAC48006055A01F00007009800040D7 -S31AFE005A7D82FFD07FFDFB78A01D00007009200041820010801E09 -S31AFE005A9200107C0903784800000C381D0008813E0010901E00BD -S31AFE005AA7087C09E8502C1B00005400F87A393E0028B33D000283 -S31AFE005ABC7F49012E83FD0004408100307F1EC3787F7CDB7880BF -S31AFE005AD19E000080BE00047FE3FB78480057E5801E0004379C0E -S31AFE005AE6FFFF3BDE00087FFF02144082FFE07C188AA654000F2C -S31AFE005AFBFE2C00000041820028813D0004A01D00022C000000D0 -S31AFE005B10408100187C004BAC7C0004AC3400FFF039290010412E -S31AFE005B2581FFF0A01D00006000DC00B01D00008001002C7C0800 -S31AFE005B3A03A6830100088321000C83410010836100148381009D -S31AFE005B4F1883A1001C83C1002083E10024382100284E8000208A -S31AFE005B648123000481690008A06B000054638BFE686300014E29 -S31AFE005B79800020688401003004FFFF7C6021104E8000208123B5 -S31AFE005B8E000481690004800B000060000030900B00004E800088 -S31AFE005BA3208123000481690004800B000054000732900B000080 -S31AFE005BB84E8000209421FFD87C0802A69321000C9341001093F7 -S31AFE005BCD6100149381001893A1001C93C1002093E10024900131 -S31AFE005BE2002C83230008839900047FDE9AA677DEFFFF3C800004 -S31AFE005BF700388433A03860000838A0000648000D2D7F788AA6DF -S31AFE005C0C577B0FFE39200000380000807C0903A6612010003C94 -S31AFE005C21C00E007C0004AC7D398BA67CD88BA67C198BA67CD8EA -S31AFE005C368BA6392900104200FFE03D2004007C0004AC7D388BC4 -S31AFE005C4BA63FA000003CC0FE003CE0FE013D20000038C65FD01C -S31AFE005C6038E7EA7C391D3B8839297C583860001C388000007F6C -S31AFE005C7525CB7848004811807D3B883BFE3C004800482D386083 -S31AFE005C8A001C48004C393860001C48004AE1801E0A003B5E0AA6 -S31AFE005C9F005400073293FC0000901E0A00935C00047FE3FB7850 -S31AFE005CB43880000038A000A4480056DD38C000047CC903A62F0F -S31AFE005CC99B0000391E2C00395E2C203D2000003D60000038E0AF -S31AFE005CDE000038009000915C001C39294CA0396B6460911C0079 -S31AFE005CF310911C0008911C0018915C0014915C000CB0EA000278 -S31AFE005D08912A0004B00A0000392905F0394A00084200FFECA456 -S31AFE005D1D0AFFF87D09437860002000B00A0000394000047D49AE -S31AFE005D3203A6399F007238000000B009000291690004B00900BB -S31AFE005D4700396B05F0392900084200FFEC7D284B78A408FFF808 -S31AFE005D5C3B60000160002000B0080000A13E09523BA0001061D4 -S31AFE005D71290003B13E0952A01E0950390005F05400043AB01EFE -S31AFE005D860950A13E09543B80FFFF7129FFFDB13E0954A01E090D -S31AFE005D9B623D40DEBB7000FFCFB01E0962A13E0960614A20E30A -S31AFE005DB07129FFCFB13E0960A01E09643960000060000030B016 -S31AFE005DC51E0964A13E09523860888861290A00B13E0952A01EBC -S31AFE005DDA09503880000F7000F5FFB01E0950813E0AEC38C00553 -S31AFE005DEFEE5529002E913E0AEC801E0AEC38E000406000003DB3 -S31AFE005E04901E0AEC813E0AEC38002C20552906B0913E0AEC931C -S31AFE005E197E0030B01F000039202C00B13F00029BBF00049BBFC4 -S31AFE005E2E0005B11F0006939F0030915F0034917F0038917F00A2 -S31AFE005E433C917F0040B07F0044B17F0044B09F0046B17F0048C6 -S31AFE005E58B0DF004AB0FF004CB11F004EB11F005038000006B130 -S31AFE005E6D7F00587C0903A6B17F005A3CA00000B17F005CB17FF5 -S31AFE005E82005E38A533A67D8963788C05FFFF9809000039290080 -S31AFE005E97014200FFF438000000B01F0078B01F0094B01F009675 -S31AFE005EACB01F0098B01F009AB01F009EB01F00A0B01F00A23987 -S31AFE005EC1200001B13E09C0A01E09C070060001418200187FC9CE -S31AFE005ED6F378A00909C0700A00014082FFF87D3E4B783800FFED -S31AFE005EEBFFB01A00103920001AB13A0014396000003C001088E6 -S31AFE005F00917A00046000000C901A00003920D555B13A000E38AF -S31AFE005F1500280AB01A0008392000903D60FA10992B0000A01E5D -S31AFE005F2A096260000001B01E0962A13E09605529043CB13E095B -S31AFE005F3F60419E00103D6002007C0004AC7D788BA6813900004F -S31AFE005F543C800000816900247F23CB78800B0000388433A07CEF -S31AFE005F690803A64E800021386000018001002C7C0803A6832168 -S31AFE005F7E000C83410010836100148381001883A1001C83C10092 -S31AFE005F932083E10024382100284E8000209421FFF87C0802A606 -S31AFE005FA89001000C4BFFF7BD3860001C480049113860001C48F3 -S31AFE005FBD0047B98001000C7C0803A6382100084E80002094210D -S31AFE005FD2FFF87C0802A69001000C3860001C48004631386000EB -S31AFE005FE7038001000C7C0803A6382100084E8000209421FFF0F1 -S31AFE005FFC7C0802A693C1000893E1000C900100143D6000003D05 -S31AFE006011200000392939883BEB39847C1F4840418000207D3E91 -S31AFE0060264B78813F00003BFFFFFC7D2803A64E8000217C1FF0E1 -S31AFE00603B404080FFEC800100147C0803A683C1000883E1000CE3 -S31AFE006050382100104E8000209421FFF87C0802A69001000C3D2E -S31AFE006065200000800937042C00000041820010800937049003E8 -S31AFE00607A0094480000243D20000090693BF0480018197C16027F -S31AFE00608FA628007A124081000C38007A127C1603A68001000C45 -S31AFE0060A47C0803A6382100084E8000204E800020386000004E93 -S31AFE0060B98000209421FFF07C0802A693E1000C900100144800F1 -S31AFE0060CE05F13D2000003889366C800400083BE000002C000030 -S31AFE0060E300418200307FE3FB787C9F2378809F000080BF0004C4 -S31AFE0060F880DF000888FF000C3BFF0010480004C1801F00082C6B -S31AFE00610D0000004082FFE0800100147C0803A683E1000C38214D -S31AFE00612200104E8000203C000A007C0004AC7C108BA67C0004B7 -S31AFE006137AC7C188BA63C000C004C00012C7C108BA64C00012CE7 -S31AFE00614C7C0004AC7C188BA63C0002004C00012C7C108BA64C89 -S31AFE00616100012C7C0004AC7C188BA64E8000209421FFF87C08E9 -S31AFE00617602A69001000C480000ED38007A127C1603A680010016 -S31AFE00618B0C7C0803A6382100084E8000203D20002F6129AF08A6 -S31AFE0061A07C6349D63C00431B6000DE837C0300967C63FE707CAF -S31AFE0061B50096707D6300507D3602A67D605B782C000000396BC0 -S31AFE0061CAFFFF4C810020394BFFFF7C1602A67C0900004182FFCE -S31AFE0061DFF87C0903787D605B782C0000007D4B53784181FFE09F -S31AFE0061F44E8000209421FFF87C0802A69001000C3D20FF006172 -S31AFE00620929093038000001B00900007C0006ACA00900007C00D5 -S31AFE00621E06AC5400AAFF38600000418200302060003A3D6000D6 -S31AFE006233005460103A396B33A87D6B002E3D2000003929349438 -S31AFE0062487C89002E7D6803A64E800021546307FA8001000C7CCC -S31AFE00625D0803A6382100084E8000203D200000394933A8390035 -S31AFE00627200407C0A402E3D20FE00392960B47C00480041820087 -S31AFE00628718800A00403D20FE013929B2187C00480040820034DA -S31AFE00629C3D20FE00392961F83D600000380000007D2A412E6088 -S31AFE0062B100DEAD396B34947C0B412E3D2000003929358038003B -S31AFE0062C600007C09412E3D60FE01800B3AAC3D20FE0139293AC6 -S31AFE0062DB707D2902147D2903A64E8004203D20FF006129001443 -S31AFE0062F0800900007C0006AC64000001900900007C0006AC486A -S31AFE0063050000E83D20FF0061290200A00900007C0006AC600078 -S31AFE00631A0008B00900007C0006AC480000C83D20FF0061290283 -S31AFE00632F00A00900007C0006AC60000004B00900007C0006AC33 -S31AFE006344480000A83D20FF0061290240A00900007C0006AC60F1 -S31AFE006359000004B00900007C0006AC480000883D20FF0061298A -S31AFE00636E0220A00900007C0006AC60000008B00900007C00067A -S31AFE006383AC480000683D20FF0061290220A00900007C0006ACC6 -S31AFE00639860000004B00900007C0006AC480000483D20FF006154 -S31AFE0063AD290940800900007C0006AC60000080900900007C00B9 -S31AFE0063C206AC480000283D20FF0061290948816900007C0006FD -S31AFE0063D7AC3C00800054005D7E7D6B0378916900007C0006AC8B -S31AFE0063EC3D60FE01800B3BBC3D20FE0139293B587D2902147DF0 -S31AFE0064012903A64E8004203D20FF0061290200A00900007C00B1 -S31AFE00641606AC5400063E60000100B00900007C0006AC48000093 -S31AFE00642B683D20FF0061290240A00900007C0006AC5400063E59 -S31AFE00644060000100B00900007C0006AC480000443D20FF0061B2 -S31AFE006455290220A00900007C0006AC5400063E60000100B0095A -S31AFE00646A00007C0006AC480000203D20FF0061290940800900CB -S31AFE00647F007C0006AC6000E000900900007C0006AC3D60FE0133 -S31AFE006494800B3CA43D20FE0139293C407D2902147D2903A64EF1 -S31AFE0064A98004203D20FF0061290014800900007C0006AC600025 -S31AFE0064BE0040900900007C0006AC4E8000203D20FF00612902E8 -S31AFE0064D300A00900007C0006AC60000008B00900007C0006AC8A -S31AFE0064E84E8000203D20FF0061290200A00900007C0006AC608E -S31AFE0064FD000004B00900007C0006AC4E8000203D20FF006129C7 -S31AFE0065120240A00900007C0006AC60000004B00900007C0006B8 -S31AFE006527AC4E8000203D20FF0061290220A00900007C0006ACE2 -S31AFE00653C60000008B00900007C0006AC4E8000203D20FF00614C -S31AFE006551290220A00900007C0006AC60000004B00900007C0076 -S31AFE00656606AC4E8000203D20FF0061290940800900007C000642 -S31AFE00657BAC60000080900900007C0006AC4E8000203D20FF006A -S31AFE00659061290948816900007C0006AC3C00800054000FFE7D65 -S31AFE0065A56B0378916900007C0006AC4E8000207C1E22A660001F -S31AFE0065BA00077C1E23A64E8000209421FFF093E1000C54E0FF19 -S31AFE0065CFFE70FF00012F0000002F8300207CC0FE707D60002697 -S31AFE0065E4556B1FFE54A500267D400026554ADFFE7C0600507DF4 -S31AFE0065F94A00D07CE0002654E7EFFE7D6B00D060A808FF5400AA -S31AFE00660E0FFE7D0858787D4950F860A508FD7CFF00387CAB58C7 -S31AFE00662338714A000D2F9F00007D654378548400267129001D3E -S31AFE0066387D4A4B78608402003960000039000020419E005C5458 -S31AFE00664D6B402E7D55C3A67D70C3A67C93C3A67CB6C3A660A0B7 -S31AFE00666201007D5DC3A67D78C3A67C9BC3A67C1EC3A63863005F -S31AFE006677013CC6FF807F8340007CC0FE707C0600507D20002607 -S31AFE00668C5529EFFE54000FFE7D2700393C8400803CA50080406B -S31AFE0066A182FFAC656020007C10C3A67C18C3A683E1000C382113 -S31AFE0066B600104E800020380000007C19C3A6380000207C0903B7 -S31AFE0066CBA639200000380000007C15C3A67D30C3A67C13C3A677 -S31AFE0066E07C16C3A67C1DC3A67D38C3A67C1BC3A67C1EC3A6394A -S31AFE0066F52901004200FFD83C00200060001F007C10C3A67C18E5 -S31AFE00670AC3A64E8000209421FDE87CDE9AA674C6FFFF3D600016 -S31AFE00671F00812B36BC2C090000408202003940003038000001E8 -S31AFE0067347D4903A6900B36BCB12609C43800000039263C807DDC -S31AFE006749284B789806086038E62E0838A1000838862E0038618C -S31AFE00675E00093981021198090000392900014200FFF839202E88 -S31AFE00677300B1280002396000103940020938002E089968000591 -S31AFE00678899680004B0080000B14800063920A800B1262E0838F6 -S31AFE00679D000101B007000290A700047C8B2378B14B0002380015 -S31AFE0067B200A59801000890AB0004B1262E003800000098060866 -S31AFE0067C7643920005099260868380000019806086039200111D3 -S31AFE0067DCB12609C0A00609C070090001418200187CC93378A0B0 -S31AFE0067F10909C0700A00014082FFF87D264B7838000211B00622 -S31AFE00680609C0A12609C071200001418200187CC93378A0090911 -S31AFE00681BC0700A00014082FFF87D264B78392000007D2903A662 -S31AFE006830380000819806086C7D4902A6614AC3517D4903A6A048 -S31AFE0068450B000070098000418200084200FFF4394001007D49F6 -S31AFE00685A03A63D2000013929807439600000380000FF7C09591A -S31AFE00686FAE396B00014200FFF87D8763787C6B1B787C0B38006C -S31AFE0068844182009C3CA00001880B00002C00004D4082008088E9 -S31AFE0068990B00012C00004F40820074880B00022C000054408252 -S31AFE0068AE00688C0B000839400000892B00015400402E7C084B0B -S31AFE0068C3787C0A4000396B000240800054388580747C651B789F -S31AFE0068D8880B0000396B00017D693A787D23FE707C0451AE7CCE -S31AFE0068ED604A787C0018507C00FE70394A00017CA900787C0AFB -S31AFE00690240007D6000387C0B4B784180FFCC48000010396B0055 -S31AFE006917017C0B38004082FF70380000009806086038210218C5 -S31AFE00692C4E8000209421FFE87C0802A693A1000C93C100109365 -S31AFE006941E100149001001C7C7D1B787C9F23787CBE2B784BFF32 -S31AFE006956FDBD3D20000139698074394B01007C0B50404080001E -S31AFE00696B8457A8063E880B00007C00400040820054886B0001F3 -S31AFE006980396B00027F83F0004FFEE3827C000026540007FE7C3D -S31AFE0069950000D07FC900787C6000387C034B794081004C7C6910 -S31AFE0069AA03A67D695B787FE4FB7888090000392900019804000C -S31AFE0069BF00388400014200FFF048000028886B00013803000230 -S31AFE0069D47D2B00EE5529063E2C0900FF4182000C7C0B504041F7 -S31AFE0069E980FF88386000008001001C7C0803A683A1000C83C1B8 -S31AFE0069FE001083E10014382100184E8000209421FFF87C080267 -S31AFE006A13A69001000C4800463D8001000C7C0803A63821000841 -S31AFE006A284E8000203C80FF00608400007C9E9BA63CA0FA106027 -S31AFE006A3DA500013C60000060630000986500007C788AA63C607E -S31AFE006A520A007C0004AC7C788BA63C600C007C0004AC7C788B7D -S31AFE006A67A63C6004007C0004AC7C788BA63C6001007C0004ACB6 -S31AFE006A7C7C788BA63C6007007C0004AC7C788BA67C708AA63C90 -S31AFE006A91600A007C708BA64C00012C3C600C007C708BA64C00DB -S31AFE006AA6012C3C6004007C708BA64C00012C7C0004AC3C6000AC -S31AFE006ABB6060632400906400003C60FFFF6063FF8890640004AB -S31AFE006AD03C600000606300C2B06402003C6055CC6063AA339089 -S31AFE006AE564032090640324906403289064032C386000C3B06445 -S31AFE006AFA022038600083B06402403CA0FE0060A56C9C3CC0FE0F -S31AFE006B0F0060C66D9C7CE530507CE7167038C000008065000097 -S31AFE006B249064017C90C4016838A5000438C600017C063800414F -S31AFE006B3980FFE838600200B064017A3C601880606310009064B8 -S31AFE006B4E01703C60FE00606304013CA0FF8060A509609064019D -S31AFE006B630090A401043C600000606300813CA0FFC060A504005C -S31AFE006B789064010890A4010C3C600000606300803CA0000060AB -S31AFE006B8DA504009064011090A401143C600000606300803CA03D -S31AFE006BA2000060A504009064011890A4011C3C60FA0060630416 -S31AFE006BB7013CA0FFE060A509309064012090A401243C60800041 -S31AFE006BCC606300013CA0A00060A501089064012890A4012C3CA8 -S31AFE006BE160FA21606300013CA0FFFF60A501089064013090A41B -S31AFE006BF601343C60FC00606300013CA0FF8060A5094090640157 -S31AFE006C0B3890A4013C3C60020060630000906402808064028486 -S31AFE006C205463653E2C030000418200103C605F506063D00048D9 -S31AFE006C3500000C3C6000006063D000906402843C4000003C6079 -S31AFE006C4AFF0060630014904300003C400000604200007C42109C -S31AFE006C5FF87C5603A6384000013C60FF0060630200B0430000DD -S31AFE006C743CA0FA1060A500013C60000060630008986500007C3B -S31AFE006C896802A67063FFFF6463FE007C6803A64E800020CFAF53 -S31AFE006C9EC0040FAFC4040CAF8C0410AF0C04F0AF0C00F3BF48D4 -S31AFE006CB305FFFFC005FFFFC005CFAFC0040FAFC4040CAF8C042A -S31AFE006CC800AF0C0407AF0C080CAF0C0401AF0C040FAF0C080CC1 -S31AFE006CDDAF0C0401AF0C040FAF0C080CAF0C0410AF0C04F0AF14 -S31AFE006CF2C000F3BF4805FFFFC005CFFF00040FFF04040CFF0C08 -S31AFE006D070013FF4804FFFFC004FFFFC005FFFFC005FFFFC0050A -S31AFE006D1CCFFF00040FFF04040CFF0C0003FF0C0C0CFF0C00032B -S31AFE006D31FF0C0C0CFF0C0003FF0C0C0CFF0C0013FF4804FFFF8E -S31AFE006D46C004FFFFC005FFFFC005FFFFC005FFFFC005FFFFC0A6 -S31AFE006D5B05FCFFC004C0FFC00401FFC0040FFFC0041FFFC00460 -S31AFE006D70FFFFC004FFFFC005FFFFC005FFFFC005FFFFC005FF3D -S31AFE006D85FFC005FFFFC005FFFFC007FFFFC007FFFFC007FFFF21 -S31AFE006D9AC0077063000E3C80FA1060840001986400004E8000C3 -S31AFE006DAF203C80FA106084000138A0000A98A400003CA0000AFC -S31AFE006DC47CA903A64200000038A0000C98A400003CA0000A7C24 -S31AFE006DD9A903A6420000003863FFFF2C0300004080FFD038A0DE -S31AFE006DEE000698A400003CA000147CA903A6420000004E80007C -S31AFE006E03203D20FE0139293D285463073E7C6918AE4E8000209E -S31AFE006E189421FFF87C0802A69001000C3D200000806936D82C6C -S31AFE006E2D0300004181000C4800291D4800000C3800FFFF9009CA -S31AFE006E4236D88001000C7C0803A6382100084E8000203803FFE6 -S31AFE006E579F280000054181000C3863FFA94E8000203923FFD02C -S31AFE006E6C5520063E280000094181000C7D234B784E80002038CC -S31AFE006E8103FFBF280000054081000C3860FFFF4E80002038631E -S31AFE006E96FFC94E8000209421FFE07C0802A69001002438000080 -S31AFE006EAB0098010018906100104BFFFF655463063E38810008B2 -S31AFE006EC04800001D2C0300014082FFEC800100247C0803A6386D -S31AFE006ED52100204E8000209421FFF07C0802A693C1000893E1D5 -S31AFE006EEA000C900100147C9F2378897F00102C0B000040820017 -S31AFE006EFF282C03002440820098392000013800FFFF901F000462 -S31AFE006F14993F0010917F0000917F000C4800007C2C0B00014014 -S31AFE006F298200542C03002340820020815F0008817F000C380019 -S31AFE006F3E00007C0A59AE39200002993F001048000050817F00D2 -S31AFE006F530C2C0B0800418200E8801F0000813F00087C001A141E -S31AFE006F68901F00007C6959AE380B0001901F000C480000242CDE -S31AFE006F7D0B0002408200245463063E4BFFFECD546320363800B3 -S31AFE006F920003907F0004981F001038600000480000AC2C0B0046 -S31AFE006FA703408200985463063E4BFFFEA5801F0004893F00031E -S31AFE006FBC7C001B787C090000901F0004418200103860002D4895 -S31AFE006FD10027454800006C3860002B48002739813F00088809C3 -S31AFE006FE600022C00003A4082004C8869000083DF000C4800274E -S31AFE006FFB1D813F00088869000148002711396000037C0BF040D3 -S31AFE007010418100287FCAF3787FE4FB78812400087C0958AE7D3E -S31AFE0070252B4A14396B00017C0B50409809FFFD4081FFE8386030 -S31AFE00703A00014800001038000000981F00103860FFFF800100CE -S31AFE00704F147C0803A683C1000883E1000C382100104E800020D4 -S31AFE0070649421FFE07C0802A69361000C9381001093A100149354 -S31AFE007079C1001893E1001C900100243D20FE013B693D287C7C83 -S31AFE00708E1B7838600024480026818BFC00003BC000002C1F00DE -S31AFE0070A3003BA00000418200247FE3FB78480026657C1DFA14C3 -S31AFE0070B83BDE00017FFCF0AE541D063E2C1F00004082FFE438AF -S31AFE0070CD6000234800264557A0E13E7C7B00AE4800263957A01B -S31AFE0070E2073E7C7B00AE4800262D4BFFFD2D5463067E2C030032 -S31AFE0070F72B4082FF98800100247C0803A68361000C8381001026 -S31AFE00710C83A1001483C1001883E1001C382100204E800020945B -S31AFE00712121FFD87C0802A6936100149381001893A1001C93C159 -S31AFE007136002093E100249001002C3D20000081693BA03D40002C -S31AFE00714B002C0B000038000000900A36DC3F6000003F800000B2 -S31AFE007160408101383FC000003FA000003D20000080093BAC2C45 -S31AFE0071750000004182006C801C3BA03D600000280000034081D2 -S31AFE00718A0018801E3BA4700900034082000C3BE00004480000A6 -S31AFE00719F34801C3BA03BE000012800000140810024800B3BA498 -S31AFE0071B4540007FE7C0000D07C00FE707C0900F8540007FE5508 -S31AFE0071C92907BC7C1F4B78808B3BA4386100087FE5FB784800B9 -S31AFE0071DE312948000014813E3BA43BE0000188090000980100FE -S31AFE0071F3083D200000800936DC2C0000004082009839000000C4 -S31AFE0072087C08F8004080006C3D20FE0138C93D2838A100083CE6 -S31AFE00721DE000003C8000007D6828AE81473BA85560E13E7D26DF -S31AFE00723200AE992A0000800436DC394A00012C00000091473B79 -S31AFE007247A8408200505560073E7D2600AE396A0001992A0000C2 -S31AFE00725C801B36DC91673BA82C00000040820030390800017CB5 -S31AFE00727108F8004180FFB0813D3BA0801E3BA47D3F48502C09F5 -S31AFE00728600007C00FA14901E3BA4913D3BA04181FED880010016 -S31AFE00729B2C7C0803A6836100148381001883A1001C83C10020C9 -S31AFE0072B083E10024382100284E8000209421FFE87C0802A69373 -S31AFE0072C5A1000C93C1001093E100149001001C2C0600003D20DB -S31AFE0072DA00003D6000003D4000003D00000090893BA8906B3B12 -S31AFE0072EFA490AA3BA090C83BAC418200303FA000003800000084 -S31AFE007304901D36DC813D36DC4BFFFE15813D36DC801D36DC2CD9 -S31AFE00731900000041820010386000004800001C4BFFFDF93D60AF -S31AFE00732E0000812B3BA83800000098090000806B3BA88001008F -S31AFE0073431C7C0803A683A1000C83C1001083E10014382100187B -S31AFE0073584E8000209421FFC07C0802A69281001092A100149292 -S31AFE00736DC1001892E1001C930100209321002493410028936123 -S31AFE007382002C9381003093A1003493C1003893E1003C9001004D -S31AFE007397443D20000080093BA03B6000002C0000003D200000B4 -S31AFE0073AC936936DC3E8000003EA00000408101703D200000810E -S31AFE0073C1693BA43F000000880B00002C000000418201583EC053 -S31AFE0073D600003F4000003EE0000080163BAC2C00000041820095 -S31AFE0073EB5880153BA02800000340810018801A3BA870090003C4 -S31AFE0074004082000C3BC000044800003C80153BA03BC00001288E -S31AFE0074150000014081002C801A3BA8540007FE7C0000D07C00D2 -S31AFE00742AFE707C0900F8540007FE552907BC7C1E4B784800001F -S31AFE00743F083BC000013BE000007C1FF000408000743FA0000077 -S31AFE0074543F2000003B810008813D3BA48869000039290001917A -S31AFE0074693D3BA45463063E4BFFF9E5801936DC547B26362C00C9 -S31AFE00747E0000408200A881383BA4886900003929000191383B9B -S31AFE007493A45463063E4BFFF9BD801436DC7F631B782C000000FA -S31AFE0074A8547B063E4082007C7F7FE1AE3BFF00017C1FF00041E6 -S31AFE0074BD80FFA080163BAC2C00000041820018809A3BA838617D -S31AFE0074D200087FC5F37848002E8D4800000C813A3BA89B6900F1 -S31AFE0074E7003D200000800936DC2C0000004082003481373BA0DF -S31AFE0074FC801A3BA87D3E48502C0900007C00F214901A3BA891D2 -S31AFE007511373BA04081001481383BA4880900002C000000408263 -S31AFE007526FEBC800100447C0803A68281001082A1001482C10013 -S31AFE00753B1882E1001C8301002083210024834100288361002C38 -S31AFE0075508381003083A1003483C1003883E1003C382100404E93 -S31AFE0075658000209421FFE87C0802A693A1000C93C1001093E18D -S31AFE00757A00149001001C2C0600003D2000003D6000003D40008E -S31AFE00758F003D00000090693BA4908B3BA890AA3BA090C83BAC7C -S31AFE0075A4418200303FA0000038000000901D36DC813D36DC4BEA -S31AFE0075B9FFFDA5813D36DC801D36DC2C00000041820010386002 -S31AFE0075CE0000480000104BFFFD893D20000080693BA8800100D2 -S31AFE0075E31C7C0803A683A1000C83C1001083E1001438210018D9 -S31AFE0075F84E8000209421FFF87C0802A69001000C480028453D25 -S31AFE00760D20000038000001900936C08001000C7C0803A6382169 -S31AFE00762200084E8000209421FFE87C0802A693A1000C93C100FD -S31AFE0076371093E100149001001C7C9E23783BA000007C7F1B78D7 -S31AFE00764C93BE000048000024801E0000813F0000540020367CE4 -S31AFE007661001B7839290001901E0000913F00003BBD0001813FE3 -S31AFE0076760000886900002C030000418200104BFFF7D17C631BFC -S31AFE00768B794080FFC87FA3EB788001001C7C0803A683A1000C67 -S31AFE0076A083C1001083E10014382100184E8000207C84237939D1 -S31AFE0076B54000004082001838000030980300019803000038606B -S31AFE0076CA00024E800020392500077D20FE7054001F7E7D2902AE -S31AFE0076DF147D251E71418200603D20FE0138C93D2838E5FFFF4D -S31AFE0076F454E018387C88043068A90001200900007D204914315B -S31AFE00770968FFFF7C0B41107C0B4B79418200285508063E5500FD -S31AFE00771EE13E7D6600AE5509073E7C0648AE996300009C0300EC -S31AFE0077330138630001394A00027CE53B794082FFB07D4353780A -S31AFE0077484E8000209421FFF07C0802A693E1000C900100143D08 -S31AFE00775D20000080A93BE07C641B782C050000386000004081B2 -S31AFE00777200843FE00000801F36E42C000000418200103860000B -S31AFE007787017C0803A64E8000212C030001408200103D2000006D -S31AFE00779C986936E048000054801F36E42123FFFF216900007D1F -S31AFE0077B12B4914216000007C0B01147C0B4B79418200343D207B -S31AFE0077C6000080093BBC2C00000041820024386000017C0803F7 -S31AFE0077DBA64E8000212C030000418200103D2000003800000168 -S31AFE0077F0980936E1800100147C0803A683E1000C382100104EDF -S31AFE0078058000209421FFF07C0802A693E1000C900100143FE0B6 -S31AFE00781A0000881F36E02C000000418200343D20000080093659 -S31AFE00782FE42C000000418200243D20000080A93BE03860000010 -S31AFE007844388000007C0803A64E80002138000000981F36E03F13 -S31AFE007859E00000881F36E12C000000418200283D20000080097B -S31AFE00786E3BBC2C00000041820018386000007C0803A64E800070 -S31AFE0078832138000000981F36E1800100147C0803A683E1000C93 -S31AFE007898382100104E8000209421FFF07C0802A693C1000893C1 -S31AFE0078ADE1000C900100143D200000800936D42C000000418251 -S31AFE0078C20010800936D47C0803A64E8000213D20000080093BCD -S31AFE0078D7F42C000000418200143800000090093BF43BE0000284 -S31AFE0078EC48000010480084E5480084197C7F1B78480085A12C6D -S31AFE00790103000041820008480085CD4800858D4BFFFEF9480022 -S31AFE007916853D386000034800288938600003480028192C1F0093 -S31AFE00792B00418200203FC00000813E36C47FE3FB787D2803A685 -S31AFE0079404E8000212C0300004082FFEC480085493D2000008070 -S31AFE0079550936D02C00000041820010800936D07C0803A64E8081 -S31AFE00796A0021800100147C0803A683C1000883E1000C3821000C -S31AFE00797F104E8000209421FFB87C0802A69361003493810038E5 -S31AFE00799493A1003C93C1004093E100449001004C7C7E1B783B79 -S31AFE0079A9E000003F6000003B810028801B3BC03BA000012C00C4 -S31AFE0079BE00004182001C7FE3FB787F84E3787C0803A64E8000A3 -S31AFE0079D3217C7D1B78480000107FE3FB7848001D0D9061002836 -S31AFE0079E8381FFFE02800001F7C0A03782F9D00003BFF00017F82 -S31AFE0079FD83E3784181004C390000047D0903A6386100087C6B91 -S31AFE007A121B7838000000392000007C0B49AE392900014200FF15 -S31AFE007A27F8380000047C0903A67C6943787F8BE378880B00004C -S31AFE007A3C396B000198090000392900014200FFF0419E00302028 -S31AFE007A510A001F7C0001107C0500F85400077A54A507387FC49D -S31AFE007A66F3787C052B7838C000004BFFF84D7C7E1B784800001C -S31AFE007A7B58212A001F7D2949107D2048F8540006F65529073847 -S31AFE007A907D2903782C0900007FCBF378380000783929FFFF4181 -S31AFE007AA58200182C090000980B0000396B00013929FFFF40828F -S31AFE007ABAFFF0280A001F4181000C3BDE0010480000083BDE0013 -S31AFE007ACF082C1F00464081FEE08001004C7C0803A68361003454 -S31AFE007AE48381003883A1003C83C1004083E10044382100484ED2 -S31AFE007AF98000209421FFD07C0802A67D8000269381002093A199 -S31AFE007B0E002493C1002893E1002C900100349181001C880300A0 -S31AFE007B2300386300012C0000507C9D237890610008392000002B -S31AFE007B383BC0004740820070386100083881000C4BFFFAE12C09 -S31AFE007B4D030000418200288121000888090000392900012C0067 -S31AFE007B62003D91210008408200108121000C3BC9000148000046 -S31AFE007B77383D20FE0188093D407FA4EB782C00000039693D4082 -S31AFE007B8C418200D8880B0000980400008D2B0001388400012C74 -S31AFE007BA10900004082FFEC480000BC7D3F4B787C1FF000408047 -S31AFE007BB600803B800000397FFFE020AB001F7CA5291039210046 -S31AFE007BCB103881000C7CA028F87C8428787CA9483854A5077AD1 -S31AFE007BE054000738806100082A0B001F7CA503787D2423789351 -S31AFE007BF581001038C000004BFFF96D808100107FE3FB78480010 -S31AFE007C0A1AF94191001081210008392900104800000C8121005A -S31AFE007C1F0839290008912100083BFF00017C1FF0004180FF8C0E -S31AFE007C343D20FE0188093D447FA4EB782C00000039693D4441B3 -S31AFE007C4982001C880B0000980400008D2B0001388400012C09AA -S31AFE007C5E00004082FFEC380000009804000080010034818100D5 -S31AFE007C731C7C0803A68381002083A1002483C1002883E1002C47 -S31AFE007C887D808120382100304E8000209421FF307C0802A6932B -S31AFE007C9DC100C893E100CC900100D43BC000003D6000017C7F0C -S31AFE007CB21B789BCB8B04893F00003809FFC12800003441810842 -S31AFE007CC7903D60FE01396B3D985400103A7D4B002E3D20FE010F -S31AFE007CDC39293D987D4A4A147D4903A64E800420480080E948D9 -S31AFE007CF100801D3D20FE0139293D285460E73E7D0900AE5463F6 -S31AFE007D06073E7CE918AE3D40000138000053392A8B04980A8BCC -S31AFE007D1B0439600000996900039909000198E900024800083CFB -S31AFE007D303D20FE0188093D483D6000012C000000396B8B043992 -S31AFE007D45493D48418207E8880A00008D2A0001980B00002C0983 -S31AFE007D5A0000396B00014082FFEC480007CC387F000148000B98 -S31AFE007D6F99480007F8387F000148000D5D480007EC3C600001D9 -S31AFE007D8438638B044BFFFBFD480007DC881F00012C000000403B -S31AFE007D998200404800092D3D20FE0188093D443D6000012C0059 -S31AFE007DAE0000396B8B0439493D4441820778880A00008D2A00FB -S31AFE007DC301980B00002C090000396B00014082FFEC4800075CD1 -S31AFE007DD8381F0001900100883BC1008C3BE100887FE3FB787FA1 -S31AFE007DEDC4F3784BFFF8392C030000418200A481210088880982 -S31AFE007E020000392900012C00002C912100884082008C7FE3FBC7 -S31AFE007E1778388100904BFFF80D2C0300004182007881210088AE -S31AFE007E2C88090000392900012C00002C91210088408200608015 -S31AFE007E4181008C2C0400004182003880610090480008B97C6496 -S31AFE007E561B79418200148061008880A1008C38C000004BFFF759 -S31AFE007E6B018001008C812100887C0002147D290214912100883E -S31AFE007E8081210088880900002C00002C40820010380900019032 -S31AFE007E950100884BFFFF5081210088880900002C000000408209 -S31AFE007EAA003C3D20FE0188093D443D6000012C000000396B8B1C -S31AFE007EBF0439493D444182066C880A00008D2A0001980B000081 -S31AFE007ED42C090000396B00014082FFEC480006503D20FE01888C -S31AFE007EE9093D883D6000012C000000396B8B0439493D884182AB -S31AFE007EFE0634880A00008D2A0001980B00002C090000396B006B -S31AFE007F13014082FFEC480006183C8000017FE3FB7838848B0464 -S31AFE007F284BFFFBD54800063C381F00013BE10094900100947FF0 -S31AFE007F3DE3FB78388100984BFFF6E52C0300004182009081213B -S31AFE007F52009488090000392900012C00002C912100944082002E -S31AFE007F67787FE3FB783881009C4BFFF6B92C0300004182006410 -S31AFE007F7C806100983C80000180A1009C38848B0438C000014B6A -S31AFE007F91FFF32D2C030000408205D03D60FE01880B3D8C3D209D -S31AFE007FA600012C00000039498B04396B3D8C4182001C880B00A5 -S31AFE007FBB008D2B0001980A00002C090000394A00014082FFECEC -S31AFE007FD038000000980A0000480005903D20FE0188093D883DF2 -S31AFE007FE56000012C000000396B8B0439493D884182053C880AE6 -S31AFE007FFA00008D2A0001980B00002C090000396B00014082FF78 -S31AFE00800FEC480005203BC00001381F00013BE100A0900100A0BE -S31AFE0080247FE3FB78388100A44BFFF5FD2C030000418201F88169 -S31AFE0080392100A088090000392900012C00002C912100A040820D -S31AFE00804E01E07FE3FB78388100A84BFFF5D12C030000418201FF -S31AFE008063CC806100A088030000386300012C00003A906100A099 -S31AFE008078408201B42C1E000041820124800100A82C00000041B0 -S31AFE00808D8200A8800100A83BE000007C1F004040800054394103 -S31AFE0080A20008816100A0892B0000396B00017D204B782C000056 -S31AFE0080B77D7D2AF9AE916100A040820018880B0000392B000181 -S31AFE0080CC600000207C0AF9AE912100A03BFF0001281F007F415A -S31AFE0080E1810010800100A87C1F00404180FFB8808100A438613B -S31AFE0080F600087FE5FB78480022697C03F80040820024812100C0 -S31AFE00810BA8800100A47D3F48502C0900007C00FA14900100A446 -S31AFE008120912100A84082FF6C800100A82C0000004082003C3D2F -S31AFE00813520FE0188093D443D6000012C000000396B8B04394981 -S31AFE00814A3D44418203E4880A00008D2A0001980B00002C0900CF -S31AFE00815F00396B00014082FFEC480003C83D20FE0188093D8CEC -S31AFE0081743D6000012C000000396B8B0439493D8C418203AC88B0 -S31AFE0081890A00008D2A0001980B00002C090000396B00014082DC -S31AFE00819EFFEC48000390808100A480A100A838C000014BFFF35E -S31AFE0081B3B92C0300004182003C3D20FE0188093D443D600001C0 -S31AFE0081C82C000000396B8B0439493D444182035C880A00008DFB -S31AFE0081DD2A0001980B00002C090000396B00014082FFEC4800EC -S31AFE0081F203403D20FE0188093D8C3D6000012C000000396B8B82 -S31AFE0082070439493D8C41820324880A00008D2A0001980B000038 -S31AFE00821C2C090000396B00014082FFEC480003083D20FE01888B -S31AFE008231093D903D6000012C000000396B8B0439493D9041824F -S31AFE00824602EC880A00008D2A0001980B00002C090000396B006B -S31AFE00825B014082FFEC480002D0881F0000395F0001680900533E -S31AFE008270216900007D2B491468000043216000007C0B01147C22 -S31AFE0082850B4B7939600000914100AC916100B03BC100AC4182ED -S31AFE00829A00287FC3F378388100B04BFFF385812100AC880900EC -S31AFE0082AF002C00003B4082000C38090001900100AC7FC3F37855 -S31AFE0082C4388100B44BFFF3612C0300004182000C806100B448BB -S31AFE0082D9007B113860000348001EC53860000348001E55806103 -S31AFE0082EE00B02C0300004182004C3D200000800936CC2C000075 -S31AFE008303004182001C800936CC7C0803A64E8000217C631B7968 -S31AFE00831840820008906100B0800100B02C000000418200183871 -S31AFE00832D000009900100B03860000948000339480002384800FE -S31AFE00834215852C0300004182001838000063981F00003D2000CF -S31AFE0083570038000001900936F4881F000068090053216900001C -S31AFE00836C7D2B491468000073216000007C0B01147C0B4B79416F -S31AFE008381820024386000004BFFF3C53D200001392923503D60D3 -S31AFE0083960000912B36F048007A754800000C386000014BFFF38B -S31AFE0083ABA53860000348001DF53860000348001D853860FFFF04 -S31AFE0083C0480001B83D200000800936C87C0803A64E800021386B -S31AFE0083D5600001480001A048001BB1480001883C800001387FEC -S31AFE0083EA000138848B0438A0012C48000E0D480001703C800051 -S31AFE0083FF01387F000138848B0438A0012C48000D7D48000158E9 -S31AFE008414381F0001900100B8386100B8388100BC4BFFF2052C7B -S31AFE0084290300004182007C812100B888090000392900012C007E -S31AFE00843E002C912100B84082006488090000392900012C000049 -S31AFE00845343912100B840820010806100BC480027254800000C0C -S31AFE008468806100BC480027113D20FE0188093D443D6000012CA6 -S31AFE00847D000000396B8B0439493D44418200A8880A00008D2AFC -S31AFE0084920001980B00002C090000396B00014082FFEC4800005E -S31AFE0084A78C3D20FE0188093D883D6000012C000000396B8B0481 -S31AFE0084BC39493D8841820070880A00008D2A0001980B00002C14 -S31AFE0084D1090000396B00014082FFEC48000054381F00019001B2 -S31AFE0084E600C0386100C0388100C44BFFF1392C03000040820082 -S31AFE0084FB443D20FE0188093D943D6000012C000000396B8B0469 -S31AFE00851039493D944182001C880A00008D2A0001980B00002C07 -S31AFE008525090000396B00014082FFEC38000000980B00004800BF -S31AFE00853A00303C60FE0138633D444BFFEB21806100C4480012EC -S31AFE00854F3D480000183C8000017FE3FB7838848B0438A0012C94 -S31AFE00856448001E653C60000138638B044BFFEAF538600000802B -S31AFE0085790100D47C0803A683C100C883E100CC382100D04E80B4 -S31AFE00858E00209421FFE87C0802A693A1000C93C1001093E100D4 -S31AFE0085A3149001001C3FA00001389D8B0448001A1D387D8B04F7 -S31AFE0085B84BFFEAAD8001001C7C0803A683A1000C83C1001083F8 -S31AFE0085CDE10014382100184E8000209421FFF07C0802A693E1FD -S31AFE0085E2000C900100143D200000800936D82C000000408000EF -S31AFE0085F7084BFFFF993FE00001387F83044BFFE899387F83041A -S31AFE00860C4BFFF6897C631B794182FFEC7C6318F854630FFE8038 -S31AFE0086210100147C0803A683E1000C382100104E8000204E8069 -S31AFE00863600209421FFF87C0802A69001000C4BFFEFB948001844 -S31AFE00864B493860002B480010C58001000C7C0803A638210008D2 -S31AFE0086604E8000203D200000906936D84E8000209421FFF87C99 -S31AFE0086750802A69001000C3D20FE0139293D285460E73E7D49DD -S31AFE00868A00AE5463073E7D0918AE3D60000138000058386B8B85 -S31AFE00869F04980B8B0439200000994300019903000299230003F9 -S31AFE0086B44BFFE9B18001000C7C0803A6382100084E8000203D83 -S31AFE0086C920000138A00000392993543CC0000038E0FFFF3C8088 -S31AFE0086DE00003D6000013D4000003D0000003800000190E63B41 -S31AFE0086F3B490AB9304912A3BB8900836E890A43BB04E80002077 -S31AFE0087089421FFF07C0802A693C1000893E1000C900100143DCA -S31AFE00871D200000800936E87C7F1B782C0000007C9E237840824B -S31AFE00873200084BFFFF952C1F0012418100243D600000800B3BA2 -S31AFE008747B83D200001392993547C0900507C00F21428000080BB -S31AFE00875C4081000C386000004800006C3CE0000080073BB47CDD -S31AFE0087711F00004182004C3D00000080083BB07C1F00004180B5 -S31AFE0087860020395F00013D20000139299304554B103A380000A8 -S31AFE00879B007C09592E91483BB03D600000814B3BB83D2000013B -S31AFE0087B03929930457E0103A7D49012E93E73BB43D20000080FB -S31AFE0087C5693BB87C03F21490093BB8800100147C0803A683C128 -S31AFE0087DA000883E1000C382100104E8000209421FFD87C0802A5 -S31AFE0087EFA6936100149381001893A1001C93C1002093E100243B -S31AFE0088049001002C3D600000800B36EC7C7D1B782C0000007C20 -S31AFE0088199E23787CBF2B7840820058380000013D20000139291C -S31AFE00882E93D4900B36EC39400000380000087C0903A6390A00E3 -S31AFE00884301554BC00E5547103A2C0B00005560083C4080000CCB -S31AFE0088586C0004C168001DB77C0B03784200FFE87D0A43782805 -S31AFE00886D0A00FF7C09392E4081FFC43D600000380000003D2047 -S31AFE00888200013B6993D4900B36DC3F800000480000248921004F -S31AFE0088970857E0463E7C004A785400103A7D7B002E57E9402E55 -S31AFE0088AC7D3F5A783BBD00012C1E00003BDEFFFF4182002038B0 -S31AFE0088C16100087FA4EB7838A0000148001A39801C36DC2C0061 -S31AFE0088D600004182FFBC7FE3FB788001002C7C0803A683610078 -S31AFE0088EB148381001883A1001C83C1002083E100243821002897 -S31AFE0089004E8000209421FFD87C0802A693A1001C93C100209361 -S31AFE008915E100249001002C3D2000013800000098098B043BA9DD -S31AFE00892A8B047C691B7890610008880900002C00004340820072 -S31AFE00893FF4880900012C000052408200E88BC900022C1E00438E -S31AFE008954408200DC880900032C00003A408200D0380900043B60 -S31AFE008969E10008900100087FE3FB783881000C4BFFECB12C03C3 -S31AFE00897E0000418201388121000888090000392900012C00001A -S31AFE0089932C91210008408201207FE3FB78388100104BFFEC85A9 -S31AFE0089A82C0300004182010C8061000C8081001038A0FFFF4B98 -S31AFE0089BDFFFE2D3D20000083E936DC2C1F0000418200403D20F1 -S31AFE0089D2FE0188093D887FA3EB782C00000039693D884182005C -S31AFE0089E71C880B00008D2B0001980300002C09000038630001A3 -S31AFE0089FC4082FFEC3800000098030000480000B07C641B78383F -S31AFE008A117D000138A000204BFFEC993D2000019BC98B0438631B -S31AFE008A2600017FFD19AE4800008C81210008880900007D2B4BF1 -S31AFE008A3B782C00004C386900017C0903784182002041810010DB -S31AFE008A502C0000434182003C4800004C2C0900504182001C485F -S31AFE008A650000403C80000138848B0438A0012C4800095D4800B5 -S31AFE008A7A00403C80000138848B0438A0012C48000A914800006B -S31AFE008A8F2C3C80000138848B0438A00800480005FD4800001810 -S31AFE008AA43C8000017D635B7838848B0438A0012C480019058013 -S31AFE008AB901002C7C0803A683A1001C83C1002083E100243821C5 -S31AFE008ACE00284E8000209421FFF87C0802A69001000C88030079 -S31AFE008AE3002C000070408200183C80000138848B0438A0012CF7 -S31AFE008AF848000709480000143C80000138848B0438A0012C485C -S31AFE008B0D0018B58001000C7C0803A6382100084E80002039231D -S31AFE008B22011C7C0348404C800020800400003884000490030053 -S31AFE008B3700386300047C0348404180FFEC4E8000203800004568 -S31AFE008B4C98030000392000309D230001380000329C03000138E9 -S31AFE008B616300014E8000203800004F980300003920004B9D2323 -S31AFE008B760001386300014E8000209421FFE87C0802A693A1005F -S31AFE008B8B0C93C1001093E100149001001C7C9E23797C7D1B78EA -S31AFE008BA03BE0000041820038887D00003BBD00014BFFE2A537A0 -S31AFE008BB5DEFFFF7FFF1B7857E920367C00002654001FFE7C0095 -S31AFE008BCA00D07D2900787FE000387C1F4B784082FFD07FE3FBC1 -S31AFE008BDF788001001C7C0803A683A1000C83C1001083E100143F -S31AFE008BF4382100184E8000209421FFE87C0802A6938100089392 -S31AFE008C09A1000C93C1001093E100149001001C7C7D1B787C9C68 -S31AFE008C1E2378388000024BFFFF5D907C0000387D0002800100FE -S31AFE008C331C7C0803A68381000883A1000C83C1001083E10014D7 -S31AFE008C48382100184E8000209421FFE87C0802A693810008933D -S31AFE008C5DA1000C93C1001093E100149001001C7C7D1B787C9C14 -S31AFE008C722378388000084BFFFF09907C0000387D0008800100F2 -S31AFE008C871C7C0803A68381000883A1000C83C1001083E1001483 -S31AFE008C9C382100184E8000203803FF9F2800000541810014384C -S31AFE008CB103FFA990040000386000014E8000203803FFBF2800C3 -S31AFE008CC600054181000C3803FFC94BFFFFE43863FFD05460066E -S31AFE008CDB3E280000094081000C386000004E80002090640000CA -S31AFE008CF0386000014E8000209421FFE87C0802A693A1000C9349 -S31AFE008D05C1001093E100149001001C7C7D1B78887D00003BBDC6 -S31AFE008D1A00014BFFFF897FA3EB788001001C7C0803A683A100FA -S31AFE008D2F0C83C1001083E10014382100184E8000203D20FE0198 -S31AFE008D445480E13E39293E707D6900AE5484073E7C0920AE9976 -S31AFE008D596300009C030001386300014E8000209421FFE07C085C -S31AFE008D6E02A69381001093A1001493C1001893E1001C9001004B -S31AFE008D83247C7F1B787C9C23783BC000003BA100084800001833 -S31AFE008D988001000857DE20365400073E7FDE03783BFF0001887A -S31AFE008DAD7F00007FA4EB784BFFFEF12C0300004082FFDC93DC34 -S31AFE008DC200007FE3FB78800100247C0803A68381001083A100B9 -S31AFE008DD71483C1001883E1001C382100204E8000209421FFE890 -S31AFE008DEC7C0802A69381000893A1000C93C1001093E10014906A -S31AFE008E0101001C7C7F1B783B9F00107C1FE0407C9E2378408093 -S31AFE008E160038887F00004BFFE0398C1F00017C7D1B787C0303E7 -S31AFE008E2B784BFFE02957BD20363BFF00017FBD1B787C1FE04034 -S31AFE008E409BBE00003BDE00014180FFD07FE3FB788001001C7C28 -S31AFE008E550803A68381000883A1000C83C1001083E100143821F2 -S31AFE008E6A00184E8000209421FFE87C0802A693A1000C93C1008D -S31AFE008E7F1093E100149001001C7C9D237857A4463E4BFFFEB169 -S31AFE008E9457A4863E4BFFFEA957A4C63E4BFFFEA157A4063E4BA3 -S31AFE008EA9FFFE998001001C7C0803A683A1000C83C1001083E168 -S31AFE008EBE0014382100184E8000209421FFE87C0802A693A1002C -S31AFE008ED30C93C1001093E100149001001C7C9E2378881E000086 -S31AFE008EE83BE000002C000000393E0001418200207FFDFB788858 -S31AFE008EFD0900003BBD00012C000000392900014082FFF07FBFDC -S31AFE008F12EB782F9F00C97C0000265400EFFE7C0000D07C090098 -S31AFE008F27F87FE00038712900C87C1F4B7857E4063E7FFDFB7874 -S31AFE008F3C4BFFFE052C1D00003BFFFFFF4081005C7FFDFB787FC3 -S31AFE008F51C4F378896400007FAAEB78210B00007C085914696970 -S31AFE008F660023210900007D2849147C004B783000FFFF7C0001B9 -S31AFE008F7B107C0900F87129002A7D6B00387D6B4B782C0A00008B -S31AFE008F909963000038840001386300013BBDFFFF4181FFB48088 -S31AFE008FA501001C7C0803A683A1000C83C1001083E10014382114 -S31AFE008FBA00184E8000209421FFF07C0802A693C1000893E100F8 -S31AFE008FCF0C900100143BC300107C03F0407C9F2378408000188D -S31AFE008FE4889F00003BFF00014BFFFD557C03F0404180FFF08097 -S31AFE008FF90100147C0803A683C1000883E1000C382100104E802A -S31AFE00900E0020392000047D2903A638000000980300003863000F -S31AFE009023014200FFF87C80C670980300007C8986709D23000171 -S31AFE0090387C8046709C030001988300014E8000203963000438EB -S31AFE00904D600000394000037D405378892B00002C000000546012 -S31AFE009062402E7C034B78396B0001394AFFFF4181FFE44E8000AC -S31AFE00907720380000087C0903A68804000038840001980300006E -S31AFE00908C386300014200FFF04E8000209421FFE87C0802A693B5 -S31AFE0090A1C1001093E100149001001C3BC100087C9F23787FC3B4 -S31AFE0090B6F37848001AE12C0300004182003038000051981F0091 -S31AFE0090CB00392000439D3F00017FC3F3784BFFFF717C641B7839 -S31AFE0090E03BFF00017FE3FB784BFFFD894800000C7FE3FB784B23 -S31AFE0090F5FFFA557C7F1B7838000000981F00008001001C7C0876 -S31AFE00910A03A683C1001083E10014382100184E8000209421FFC4 -S31AFE00911FC87C0802A693A1002C93C1003093E100349001003CEA -S31AFE0091343BA100207C641B787FA3EB784BFFFED17FA3EB783858 -S31AFE00914981000848001AF52C03000041820014800100103860FE -S31AFE00915E00012C00000040820008386000008001003C7C080325 -S31AFE009173A683A1002C83C1003083E10034382100384E80002062 -S31AFE0091889421FFE07C0802A693A1001493C1001893E1001C903A -S31AFE00919D0100247C7D1B787C9F2378388100084BFFFBBD7C1DF6 -S31AFE0091B2180041820020806100084BFFFF612C03000041820024 -S31AFE0091C7107FE3FB784BFFF99D4800000C7FE3FB784BFFF971ED -S31AFE0091DC3800000098030000800100247C0803A683A10014831A -S31AFE0091F1C1001883E1001C382100204E8000209421FFD87C0895 -S31AFE00920602A693A1001C93C1002093E100249001002C892300E2 -S31AFE00921B003800FFFF2C0900677C9F237890010008386300017D -S31AFE0092304182008C418100102C09006341820024480000C02C51 -S31AFE009245090070408200B8388100084BFFFAA9388100104BFF5C -S31AFE00925AFB91480000B0880300002C00002D4082002088030026 -S31AFE00926F012C000031408200143D2000003800000090093BE069 -S31AFE009284480000103C80000038843BE04BFFFAD93D20000080EC -S31AFE009299693BE02C030000418200104BFFFE792C030000418283 -S31AFE0092AE00547FE3FB784BFFF8B5480000503FA00000389D3B00 -S31AFE0092C3DC4BFFFAA5809D3BDC386100104BFFFD41801D3BDCB4 -S31AFE0092D82C00FFFF4182000C2C000000408200103800000290BC -S31AFE0092ED0100084800001C3800000190010008480000107FE36F -S31AFE009302FB784BFFF8457C7F1B78800100082C00000041820052 -S31AFE00931728418100102C00FFFF4182008C4800007C2C000001D9 -S31AFE00932C418200242C00000241820060480000683D20000139A9 -S31AFE0093412923503D600000912B36F0480000603FA000013C80B4 -S31AFE009356000138842350387D246C4BFFF7C13861001038800026 -S31AFE00936B4738BD246C480019292C03000041820028381D246C94 -S31AFE0093803D2000007FE3FB78900936F04BFFF7DD480000187FE6 -S31AFE009395E3FB784BFFF7D14800000C7FE3FB784BFFF7A57C7F4D -S31AFE0093AA1B7838000000981F00008001002C7C0803A683A1002A -S31AFE0093BF1C83C1002083E10024382100284E8000209421FFD09A -S31AFE0093D47C0802A693210014934100189361001C9381002093C9 -S31AFE0093E9A1002493C1002893E1002C900100347C9F23787CBDD6 -S31AFE0093FE2B78388100084BFFF8F53881000C3F8000004BFFF7F6 -S31AFE009413ED389C3BCC4BFFF9D1380000513BBDFFE67F3FEA1442 -S31AFE009428981F00003920004D9D3F00013BFF00017FFAFB787F4B -S31AFE00943D43D378388000004BFFF8FD7C7F1B787FFEFB783800DB -S31AFE0094520030389C3BCC981E0000387E00014BFFFB617C7F1BCD -S31AFE009467783B8000003F600000480000247FE3FB78389D3BD4F5 -S31AFE00947C4BFFFB457C7F1B78389D3BD43B9C0001387B3BCC4BFE -S31AFE009491FFFBE97C1FC840408000408001000C7C1C0000408057 -S31AFE0094A60034806100083C8000003FA0000038843BCC38BD3B02 -S31AFE0094BBD4480017292C03000038000000900100084082FFA8D3 -S31AFE0094D038000031981E00007F43D3785784063E4BFFF861385D -S31AFE0094E5000000981F0000800100347C0803A683210014834159 -S31AFE0094FA00188361001C8381002083A1002483C1002883E10005 -S31AFE00950F2C382100304E8000209421FFC07C0802A693A1003498 -S31AFE00952493C1003893E1003C90010044380000007C9F2378909F -S31AFE00953901001C900100109001001490010018388100204BFFEA -S31AFE00954EF7053BA100287FA4EB784BFFF8917FA3EB783881006D -S31AFE00956308480016DD2C030000418200E438000071981F000076 -S31AFE009578392000709D3F000180810020387F00014BFFF8E938F8 -S31AFE00958D8100084BFFFA31800100207C7F1B787009000241825A -S31AFE0095A20020388000024BFFF8C9388000024BFFF79188810036 -S31AFE0095B7134BFFF7897C7F1B7880010020700900044182002827 -S31AFE0095CC800100142C0000004182001C7FE3FB78388000044B0A -S31AFE0095E1FFF891808100144BFFF8E17C7F1B7880010020700909 -S31AFE0095F6000841820028800100182C0000004182001C7FE3FB68 -S31AFE00960B78388000084BFFF861808100184BFFF8B17C7F1B78D1 -S31AFE0096208001002070090010418200348001001C2C0000004106 -S31AFE0096358200287FE3FB78388000104BFFF8318081001C4BFFFB -S31AFE00964AF8814800000C7FE3FB784BFFF4F57C7F1B783800006C -S31AFE00965F00981F0000800100447C0803A683A1003483C1003875 -S31AFE00967483E1003C382100404E8000209421FFD87C0802A6936B -S31AFE0096896100149381001893A1001C93C1002093E1002490013A -S31AFE00969E002C3B8100087C7D1B787C9B23787CA42B787F83E3DD -S31AFE0096B3784BFFF95D7F83E3787FA4EB787F65DB7848001631DD -S31AFE0096C88001002C7C0803A6836100148381001883A1001C83D8 -S31AFE0096DDC1002083E10024382100284E8000203D200000816955 -S31AFE0096F236F05463103A7C63582E4E8000203D20000081693668 -S31AFE009707F05463103A7C83592E4E8000209421FFF87C0802A60C -S31AFE00971C9001000C3D20000039293200816900185464063E8028 -S31AFE0097316B0000800B000C7C0803A64E8000218001000C7C08F0 -S31AFE00974603A6382100084E8000209421FFF87C0802A6900100A9 -S31AFE00975B0C3D2000003929320081690018806B0000800B001070 -S31AFE0097707C0803A64E8000218001000C7C0803A6382100084E5B -S31AFE0097858000209421FFF87C0802A69001000C3D2000003929F7 -S31AFE00979A3200816900187C651B78806B0000800B0014388000CC -S31AFE0097AF007C0803A64E8000218001000C7C0803A6382100086A -S31AFE0097C44E8000209421FFE87C0802A693A1000C93C10010939F -S31AFE0097D9E100149001001C3FC00000817E3BE43D2000002C0B24 -S31AFE0097EE0000380000003BBE3BE4900936F47C7F1B78418200FE -S31AFE009803187D635B7848000055801E3BE42C0000004082002C0D -S31AFE009818813F00003C007D82913D000460001008901F000093B0 -S31AFE00982DFE3BE43860000348000971386000034800090180013A -S31AFE009842001C7C0803A683A1000C83C1001083E100143821006F -S31AFE009857184E8000209421FFF87C0802A69001000C3D20000020 -S31AFE00986C816936F42C0B0000408200183D20000080093BE43980 -S31AFE009881493BE47C0300004182000C3860000048000024800A8A -S31AFE009896000491693BE490030000386000034800090138600084 -S31AFE0098AB0348000891386000018001000C7C0803A6382100080C -S31AFE0098C04E8000203D20000080093BE43120FFFF7C6901104E09 -S31AFE0098D58000209421FFF87C0802A69001000C2C030000418273 -S31AFE0098EA00483D400000812A36F83929FFFF2C090000912A3641 -S31AFE0098FFF8418100683D20000039293200816900183800000003 -S31AFE009914900A36F8806B0000800B0014388000057C0803A64EB0 -S31AFE0099298000214800003C3D600000812B36F8392900012C09F1 -S31AFE00993E0001912B36F8408200243D2000003929320081690064 -S31AFE0099531838800004806B0000800B00147C0803A64E80002181 -S31AFE0099688001000C7C0803A6382100084E8000209421FFF87CB5 -S31AFE00997D0802A69001000C3D2000003929320081690018806BA6 -S31AFE0099920000800B00107C0803A64E8000218001000C7C0803F1 -S31AFE0099A7A6382100084E8000209421FFC87C0802A692C10010A7 -S31AFE0099BC92E10014930100189321001C934100209361002493F0 -S31AFE0099D181002893A1002C93C1003093E100349001003C2C044B -S31AFE0099E6000D418201B43D600000814B36FC3D200001392997F1 -S31AFE0099FBD47C8951AE2C04000A394A0001914B36FC3F40000030 -S31AFE009A104182000C2C0A0064408201843D200000392932008319 -S31AFE009A25C900187EE000A67EE0BB7839600000516004207C00C8 -S31AFE009A3A01243D20FE013AC93E84807E0000813E000C3880004C -S31AFE009A4F247D2803A63B6000003BE0004F4E800021807E00009A -S31AFE009A64813E000C3880004F7D2803A64E800021801A36FC7C92 -S31AFE009A791B0000408000703D2000013D60FE013B0997D43B2B7A -S31AFE009A8E3E847D38D8AE807E00005520E13E7F9900AE817E006B -S31AFE009AA30C7F84E3787D6803A65529073E7FB948AE3B7B00010A -S31AFE009AB84E800021807E0000813E000C7FA4EB787D2803A64EBB -S31AFE009ACD800021801A36FC7F9FE214579F063E7C1B00007FBFF0 -S31AFE009AE2EA1457BF063E4180FFA8807E0000813E000C3880002A -S31AFE009AF7237D2803A64E800021807E0000813E000C57E0E13ED7 -S31AFE009B0C7C9600AE7D2803A64E800021807E0000813E000C5723 -S31AFE009B21E0073E7C9600AE7D2803A64E800021807E0000813E4C -S31AFE009B3600107D2803A64E8000215460063E2C00002B98610081 -S31AFE009B4B08418200383861000838800001480016492C030000CE -S31AFE009B6040820014880100082C00002D4082FFC44BFFFED43D4E -S31AFE009B752000003929320038000001900900443D600000392017 -S31AFE009B8A0000912B36FC7C0000A652E004207C0001248001003A -S31AFE009B9F3C7C0803A682C1001082E10014830100188321001C1E -S31AFE009BB483410020836100248381002883A1002C83C100308339 -S31AFE009BC9E10034382100384E8000209421FFE87C0802A693A1F3 -S31AFE009BDE000C93C1001093E100149001001C7CBF2B787FE0FB91 -S31AFE009BF3782C0000007C7D1B787C9E23783BFFFFFF4182002455 -S31AFE009C08889E00007FA3EB784BFFFDA17FE0FB782C0000003B77 -S31AFE009C1DDE00013BFFFFFF4082FFE48001001C7C0803A683A184 -S31AFE009C32000C83C1001083E10014382100184E8000209421FF2E -S31AFE009C47E87C0802A693A1000C93C1001093E100149001001C17 -S31AFE009C5C7CBF2B787FE0FB782C0000007C7D1B787C9E23783B97 -S31AFE009C71FFFFFF418200247FA3EB784BFFFCFD7FE0FB782C0030 -S31AFE009C860000987E00003BDE00013BFFFFFF4082FFE480010037 -S31AFE009C9B1C7C0803A683A1000C83C1001083E1001438210018FA -S31AFE009CB04E8000209421FF909081000C90A1001090C100149016 -S31AFE009CC5E100189101001C912100209141002438600000382126 -S31AFE009CDA00704E8000209421FFF87C0802A69001000C38600006 -S31AFE009CEF004BFFFBE93D600001380000207C0903A63D200000AD -S31AFE009D0481493BF0396B23503D000000392000007C09502E7C25 -S31AFE009D1909592E392900044200FFF47D6A5B783D200000816905 -S31AFE009D2E3BF0800B0094900A0100812B0090912A0104800B00B0 -S31AFE009D4380900A0108812B0088912A010C800B008C900A011026 -S31AFE009D58812B0084912A01143D4000003D600000800B36F43DE6 -S31AFE009D6D2000012C00000039292350912A36F0418200183800C7 -S31AFE009D820000900836F4386000404BFFF9614BFFFACD386000E1 -S31AFE009D97404BFFF9554BFFFAC13D20000090693BF48001000CC4 -S31AFE009DAC7C0803A6382100084E8000209421FFF87C0802A690BA -S31AFE009DC101000C380000207C0903A63D20000081493BF03D6007 -S31AFE009DD60001396B2350392000007C09582E7C09512E39290092 -S31AFE009DEB044200FFF47D6A5B783D20000081693BF0800A01006F -S31AFE009E00900B0094812A0104912B0090800A0108900B008081EF -S31AFE009E152A010C912B0088800A0110900B008C812A0114912B7B -S31AFE009E2A0084386000014BFFFAA98001000C7C0803A638210002 -S31AFE009E3F084E800020386000004E8000203D20FE0139299E44EE -S31AFE009E543D400000912A36CC3D60FE01396B9F8C3D2000009162 -S31AFE009E696936C83D40FE013D600000394A9CE0914B36D43D201E -S31AFE009E7EFE0139299DB83D600000912B36D04E8000209421FF14 -S31AFE009E93F07C0802A693C1000893E1000C900100143D200000BC -S31AFE009EA8800937002C000000408200C4380000019009370048DE -S31AFE009EBD0060493D2000003BC93200813E00343860FFFF7D2822 -S31AFE009ED203A64E800021813E00347C7F1B783860FFFD7D280322 -S31AFE009EE7A64E800021815E00143D20FE0139299BD4912A0004EE -S31AFE009EFC3D60FE016FE0FFFF396B9C446800FFFE3D20FE01918E -S31AFE009F116A0008392999B03100FFFF7CE80110912A000C3D6012 -S31AFE009F26FE01301FFFFF7D00F910396B99783D20FE017CE040A3 -S31AFE009F3B39916A001039299CB4912A001441820014813E00347E -S31AFE009F507FE3FB787D2803A64E800021801E0030386000007C04 -S31AFE009F650803A64E800021386000044BFFCE2D800100147C0849 -S31AFE009F7A03A683C1000883E1000C382100104E8000209421FF5E -S31AFE009F8FF87C0802A69001000C3D20000039293200800900403E -S31AFE009FA42C0000004182000C7C0803A64E8000218001000C7C84 -S31AFE009FB90803A6382100084E8000207FE000084E800020942185 -S31AFE009FCEFFD87C0802A6936100149381001893A1001C93C1009F -S31AFE009FE32093E100249001002C7C9D23787C7C1B783800005425 -S31AFE009FF8981D00007F8326704BFFCE059C7D00017F83E3784B24 -S31AFE00A00DFFCDF97FBFEB789C7F0001380000749C1F00013920F7 -S31AFE00A02200689D3F0001380000729C1F0001392000659D3F00E0 -S31AFE00A03701380000619C1F0001392000643BA0003A9D3F00010B -S31AFE00A04C9FBF000148000D01906100083BFF00017FE4FB783804 -S31AFE00A06161000838A0000438C000004BFFD2517C7F1B783B80F3 -S31AFE00A076003B9B9F0000386000044BFFCD859C7F000138600070 -S31AFE00A08B404BFFCD799C7F00019FBF0001386000404BFFF65108 -S31AFE00A0A03B61000C9061000C3BFF00017FE4FB787F63DB783884 -S31AFE00A0B5A0000438C000004BFFD2017C7F1B789B9F0000386079 -S31AFE00A0CA00004BFFCD399C7F0001386000014BFFCD2D9C7F0019 -S31AFE00A0DF019FBF0001386000014BFFF6059061000C3BFF0001F2 -S31AFE00A0F47FE4FB787F63DB7838A0000438C000004BFFD1B97C24 -S31AFE00A1097F1B7838000000981F00019B9F00008001002C7C08D0 -S31AFE00A11E03A6836100148381001883A1001C83C1002083E10063 -S31AFE00A13324382100284E8000202C030001418200202803000141 -S31AFE00A148418000502C030002418200242C030003418200304868 -S31AFE00A15D00003C3C0002004C00012C7C108BA64C00012C480078 -S31AFE00A17200283C0004004C00012C7C108BA64C00012C48000075 -S31AFE00A187143C000C004C00012C7C108BA64C00012C7C708AA698 -S31AFE00A19C54630FFE4E8000202C03000141820020280300014178 -S31AFE00A1B18000682C030002418200202C03000341820028480034 -S31AFE00A1C600543C0002007C0004AC7C188BA6480000443D6004D0 -S31AFE00A1DB007C0004AC7D788BA648000034380000807C0903A6B7 -S31AFE00A1F039200000612010003D600E007C0004AC7D398BA67D31 -S31AFE00A205788BA67C198BA67D788BA6392900104200FFE07C7824 -S31AFE00A21A8AA654630FFE4E8000203D60000038000001900B36A2 -S31AFE00A22FDC3D20FE013929A2F43D600000912B37043D400000D5 -S31AFE00A24448000098800A3BEC2800000340810030708000034021 -S31AFE00A259820028706000034082002080030000386300049004D7 -S31AFE00A26E0000812A3BEC388400043929FFFC4800005C3D6000A7 -S31AFE00A28300800B3BEC2800000140810034708000014082002C13 -S31AFE00A2987060000140820024A003000038630002B00400008181 -S31AFE00A2AD2B3BEC388400023929FFFE912B3BEC48000020880353 -S31AFE00A2C200003863000198040000812A3BEC388400013929FF5B -S31AFE00A2D7FF912A3BEC800A3BEC2C0000004082FF643D2000002E -S31AFE00A2EC38000000900936DC3D20000038000000900937044EBF -S31AFE00A3018000209421FFE87C0802A69381000893A1000C93C12B -S31AFE00A316001093E100149001001C7C601B787CBC2B787C83237D -S31AFE00A32B783FA000007C040378939D3BEC4BFFFEED807D3BEC17 -S31AFE00A3407C63E0508001001C7C0803A68381000883A1000C836C -S31AFE00A355C1001083E10014382100184E8000209421FFE87C0827 -S31AFE00A36A02A69381000893A1000C93C1001093E1001490010059 -S31AFE00A37F1C7CBC2B783FA00000939D3BEC4BFFFE99807D3BEC93 -S31AFE00A3947C63E0508001001C7C0803A68381000883A1000C8318 -S31AFE00A3A9C1001083E10014382100184E800020386000004E808D -S31AFE00A3BE0020386000004E800020386000004E8000209421FFA6 -S31AFE00A3D3F07C0802A693C1000893E1000C900100143D20000077 -S31AFE00A3E880093BFC2C000000418200603FE000003BC000007DB6 -S31AFE00A3FD4000A67D40537839200000512004207C000124817F4A -S31AFE00A4123BFC800B0014901F3BFC808B001893CB00187C000060 -S31AFE00A427A6514004207C000124812B000C80AB0010806B000042 -S31AFE00A43C7D2803A64E800021801F3BFC2C0000004082FFB080D7 -S31AFE00A4510100147C0803A683C1000883E1000C382100104E80BD -S31AFE00A46600209421FFF87C0802A69001000C4BFFFF5D80010021 -S31AFE00A47B0C7C0803A6382100084E80002090690000380000000F -S31AFE00A490900900149089000490A90010900900189128000090A6 -S31AFE00A4A5C9000890E9000C4E800020812300002C0900004182BE -S31AFE00A4BA00F8810300043809FFFF28000039418100E83D60FE24 -S31AFE00A4CF01396B3E985400103A7D4B002E3D20FE0139293E98D1 -S31AFE00A4E47D4A4A147D4903A64E8004203D20FF0061290200A150 -S31AFE00A4F96900007C0006AC556B063E38000000600080007C001B -S31AFE00A50E46307D600378540B043EB16900007C0006AC48000035 -S31AFE00A523903D20FF0061290240A16900007C0006AC556B063E2B -S31AFE00A53838000000600080007C0046307D600378540B043EB156 -S31AFE00A54D6900007C0006AC4800005C3D20FF0061290220A169A8 -S31AFE00A56200007C0006AC556B063E38000000600080007C0046D4 -S31AFE00A577307D600378540B043EB16900007C0006AC48000028EA -S31AFE00A58C3D20FF0061290940800900007C0006AC540004DE5545 -S31AFE00A5A10B68247C005B78900900007C0006AC800300003D2014 -S31AFE00A5B60000394933A85408103A7C0A402E3D20FE0039296078 -S31AFE00A5CBB47C004800418200187C0A402E3D20FE013929B218A8 -S31AFE00A5E07C0048004C820020800300083D6000007C0A412E8112 -S31AFE00A5F5430010396B34943D2000007D4B412E392935807C69FE -S31AFE00A60A412E4E8000207C631B794D8200203803FFFF28000017 -S31AFE00A61F397C0803784D8100203D60FE01396B3F805500103A5E -S31AFE00A6347D4B002E3D20FE0139293F807D4A4A147D4903A64EB8 -S31AFE00A6498004203D20FF0061290014816900007C0006AC3C0006 -S31AFE00A65E80007C0044307D6B0078916900007C0006AC4E80001D -S31AFE00A673203D20FF0061290200A00900007C0006AC7000FFF789 -S31AFE00A6885400043EB00900007C0006AC4E8000203D20FF006191 -S31AFE00A69D290200A00900007C0006AC7000FFFB5400043EB009E9 -S31AFE00A6B200007C0006AC4E8000203D20FF0061290240A00900A2 -S31AFE00A6C7007C0006AC7000FFFB5400043EB00900007C0006AC65 -S31AFE00A6DC4E8000203D20FF0061290220A00900007C0006AC7028 -S31AFE00A6F100FFF75400043EB00900007C0006AC4E8000203D2092 -S31AFE00A706FF0061290220A00900007C0006AC7000FFFB540004F6 -S31AFE00A71B3EB00900007C0006AC4E8000203D20FF0061290940E3 -S31AFE00A730800900007C0006AC5400066E900900007C0006AC4E7C -S31AFE00A7458000203D20FF0061290948816900007C0006AC394390 -S31AFE00A75AFFE53C0080007C0054307D6B0078916900007C00066A -S31AFE00A76FAC4E8000207C631B794D8200203803FFFF280000393B -S31AFE00A7847C0803784D8100203D60FE01396B40685500103A7DCB -S31AFE00A7994B002E3D20FE01392940687D4A4A147D4903A64E8066 -S31AFE00A7AE04203D20FF0061290014816900007C0006AC3C0080A0 -S31AFE00A7C3007C0044307D6B0378916900007C0006AC4E80002014 -S31AFE00A7D83D20FF0061290200A00900007C0006AC60000008B091 -S31AFE00A7ED0900007C0006AC4E8000203D20FF0061290200A0099D -S31AFE00A80200007C0006AC60000004B00900007C0006AC4E8000F6 -S31AFE00A817203D20FF0061290240A00900007C0006AC60000004A5 -S31AFE00A82CB00900007C0006AC4E8000203D20FF0061290220A096 -S31AFE00A8410900007C0006AC60000008B00900007C0006AC4E80AA -S31AFE00A85600203D20FF0061290220A00900007C0006AC6000008A -S31AFE00A86B04B00900007C0006AC4E8000203D20FF0061290940CC -S31AFE00A880800900007C0006AC60000080900900007C0006AC4E13 -S31AFE00A8958000203D20FF0061290948816900007C0006AC39433F -S31AFE00A8AAFFE53C0080007C0054307D6B0378916900007C000616 -S31AFE00A8BFAC4E8000207C631B794D8200203803FFFF28000039EA -S31AFE00A8D47C0803784D8100203D60FE01396B41505500103A7D91 -S31AFE00A8E94B002E3D20FE01392941507D4A4A147D4903A64E802C -S31AFE00A8FE04203D20FF0061290010816900007C0006AC3C008053 -S31AFE00A913007C0044307D6B0378916900007C0006AC4E800020C2 -S31AFE00A9283D20FF0061290200A00900007C0006AC60000080B0C7 -S31AFE00A93D0900007C0006AC4E8000203D20FF0061290200A0094B -S31AFE00A95200007C0006AC60000040B00900007C0006AC4E800069 -S31AFE00A967203D20FF0061290240A00900007C0006AC60000080D8 -S31AFE00A97CB00900007C0006AC4E8000203D20FF0061290220A045 -S31AFE00A9910900007C0006AC60000080B00900007C0006AC4E80E1 -S31AFE00A9A600203D20FF0061290220A00900007C0006AC60000039 -S31AFE00A9BB40B00900007C0006AC4E8000203D20FF006129094C33 -S31AFE00A9D0816900007C0006AC3943FFE53C0080007C0054307DBD -S31AFE00A9E56B0378916900007C0006AC4E8000207C8723787C63E0 -S31AFE00A9FA1B794D8200203803FFFF280000397C0803784D81005A -S31AFE00AA0F203D60FE01396B42385500103A7D4B002E3D20FE0163 -S31AFE00AA24392942387D4A4A147D4903A64E8004203C0080007C7F -S31AFE00AA390044303D60FF00616B0018808B00007C0006AC7C84D7 -S31AFE00AA4E00787CEAFE707D493A787D2950507D29FE707C8003D2 -S31AFE00AA63787C0048787C8948387D240378908B00007C0006AC3C -S31AFE00AA784E8000207C8823787C631B794D8200203803FFFF2875 -S31AFE00AA8D0000394D8100203D60FE01396B43205400103A7D4B80 -S31AFE00AAA2002E3D20FE01392943207D4A4A147D4903A64E8004E6 -S31AFE00AAB7203D20FF0061290200A08900007C0006AC5484063E0B -S31AFE00AACC38000000600080007C0046307C8003785404043EB0A6 -S31AFE00AAE18900007C0006AC4E8000203D20FF0061290240A08966 -S31AFE00AAF600007C0006AC5484063E38000000600080007C004623 -S31AFE00AB0B307C8003785404043EB08900007C0006AC4E8000209B -S31AFE00AB203D20FF0061290220A08900007C0006AC5484063E3869 -S31AFE00AB35000000600080007C0046307C8003785404043EB089EB -S31AFE00AB4A00007C0006AC4E8000203D20FF00612909408009001E -S31AFE00AB5F007C0006AC540004DE550B68247C005B7890090000A5 -S31AFE00AB747C0006AC4E800020386000014E800020386000014E3E -S31AFE00AB898000203D20000090693C044E8000209421FFF87C085F -S31AFE00AB9E02A69001000C3D2000003D60000181493C04906B98C1 -S31AFE00ABB338814A0000388B98382C0A0000386000004182001052 -S31AFE00ABC8386000027D4803A64E8000218001000C7C0803A6388B -S31AFE00ABDD2100084E8000209421FFF87C0802A69001000C3D2076 -S31AFE00ABF200013D600000814B3C049069983839099838908800AD -S31AFE00AC070490A80008814A00002C0A00004082000C3860000089 -S31AFE00AC1C480000147D044378386000037D4803A64E800021800F -S31AFE00AC3101000C7C0803A6382100084E8000209421FFF87C0851 -S31AFE00AC4602A69001000C3D2000013D600000814B3C0490699818 -S31AFE00AC5B383909983890880004814A00002C0A00004082000CAB -S31AFE00AC7038600000480000147D044378386000047D4803A64E43 -S31AFE00AC858000218001000C7C0803A6382100084E800020942157 -S31AFE00AC9AFFF87C0802A69001000C3D2000013D600000814B3CDE -S31AFE00ACAF0490699838390998389088000490A80008814A000086 -S31AFE00ACC42C0A00004082000C38600000480000147D044378380B -S31AFE00ACD96000057D4803A64E8000218001000C7C0803A638218D -S31AFE00ACEE00084E8000209421FFF87C0802A69001000C3D200085 -S31AFE00AD03013D600000814B3C0490699838390998389088000496 -S31AFE00AD1890A80008814A00002C0A00004082000C386000004833 -S31AFE00AD2D0000147D044378386000077D4803A64E800021800140 -S31AFE00AD42000C7C0803A6382100084E8000209421FFE87C08024E -S31AFE00AD57A693E100149001001C3BE100087FE3FB784BFFFE3196 -S31AFE00AD6C2C0300004082000C3860000048000008A07F00068044 -S31AFE00AD8101001C7C0803A683E10014382100184E8000209421E3 -S31AFE00AD96FFF87C0802A69001000C4BFFB3F98001000C7C0803DA -S31AFE00ADABA6382100084E8000203C00FE00600001007C0903A6D1 -S31AFE00ADC04E8004209421FFF87C0802A69001000C4BFFFFE538AD -S31AFE00ADD56000008001000C7C0803A6382100084E800020386064 -S31AFE00ADEA00004E8000209421FFE87C0802A693A1000C93C10006 -S31AFE00ADFF1093E100149001001C7C7F1B78386000003BA00001F4 -S31AFE00AE14380000002C1FFFFE41820040418100102C1FFFFD4148 -S31AFE00AE2982004C480000502C1FFFFF408200483D200000812950 -S31AFE00AE3E37082C0900003BA9FFFF4181003C7D3D4B7840820068 -S31AFE00AE53343BA0FFFD4800002C3D200000392932003D600000D9 -S31AFE00AE689069001893EB3708480000143BE00000480000083B01 -S31AFE00AE7DFF0001380000012C000000418200803D2000003BC9B3 -S31AFE00AE923200813E00182C09000041820018806900008009001C -S31AFE00AEA714388000047C0803A64E8000213D200001392998440A -S31AFE00AEBC57E028347C004A143D2000002C030000901E0018932B -S31AFE00AED1E93708813E00184182001C806900008009001438804C -S31AFE00AEE600057C0803A64E800021480000188069000080090060 -S31AFE00AEFB14388000047C0803A64E8000217FA3EB788001001C30 -S31AFE00AF107C0803A683A1000C83C1001083E10014382100184E40 -S31AFE00AF2580002039400001380000002C03FFFE418200404181D0 -S31AFE00AF3A00102C03FFFD4182004C480000502C03FFFF4082002D -S31AFE00AF4F483D2000008129370C2C0900003949FFFF4181003CA4 -S31AFE00AF647D2A4B78408200343940FFFD4800002C3D20000039F5 -S31AFE00AF792932003D60000090090014906B370C480000143860E8 -S31AFE00AF8E00004800000838630001380000012C00000041820096 -S31AFE00AFA3283D20000139299844546028343D6000007C004A144A -S31AFE00AFB8396B32003D200000900B00149069370C7D4353784E89 -S31AFE00AFCD8000204E8000204E8000204E8000209421FFE87C08E1 -S31AFE00AFE202A693E100149001001C3D200000392932008169009E -S31AFE00AFF7183800000090010008812B0000800B00187C651B7895 -S31AFE00B00C7C8623787D234B78388100087C0803A64E80002180CE -S31AFE00B0210100087C7F1B782C000000418200103D20000080693A -S31AFE00B0363C08480001997FE3FB788001001C7C0803A683E100D8 -S31AFE00B04B14382100184E8000209421FFE87C0802A693A1000C71 -S31AFE00B06093C1001093E100149001001C380000407C0903A63D5B -S31AFE00B0752000003D60FE0139293200396BADE8394000007D69DA -S31AFE00B08A512E394A00044200FFF83D2000013D60FE013929987A -S31AFE00B09F44396BADE839000000550A28343808000139000008A5 -S31AFE00B0B47D0903A67D69512E394A00044200FFF87C0803782C04 -S31AFE00B0C90800024081FFDC3FA0000038000013901D32003D6022 -S31AFE00B0DE00003BBD3200396B33A8917D00043D200000392930AF -S31AFE00B0F3003D60FE01913D0008396BADB4917D00403D20FE0123 -S31AFE00B1083929ADC43D60FE01913D0010396BAD94917D00483D69 -S31AFE00B11D20FE013929ADF03D60FE01913D0030396BAF283D4069 -S31AFE00B132FE01917D0034394AAFD03D20FE01915D00203929AF46 -S31AFE00B147D4913D001C3860FFFE4BFFFCA13860FFFE4BFFFDD108 -S31AFE00B15C38000000901D0024901D0028901D004C901D004438DA -S31AFE00B1717D003C4BFFFA193D20FE01392997C8913D008C8001B7 -S31AFE00B186001C7C0803A683A1000C83C1001083E1001438210012 -S31AFE00B19B184E8000207C842379418200243884FFFF7C0320AE0B -S31AFE00B1B02C0000034082000C386000014E8000202C0400004092 -S31AFE00B1C582FFE4386000004E8000209421FFF87C0802A690011D -S31AFE00B1DA000C7C631B793D20FE013809B2084182000880030038 -S31AFE00B1EF943D200000392932008129008C7C0303787D2803A644 -S31AFE00B2044E8000218001000C7C0803A6382100084E80002094A5 -S31AFE00B21921FFF07C0802A693C1000893E1000C900100143D2002 -S31AFE00B22E0000800932007C7F1B782C000014396932007C9E236D -S31AFE00B243783860FFFF4082001C812B001838800006806900009B -S31AFE00B258800900147C0803A64E8000217C1F18004082001C7F14 -S31AFE00B26DE3FB787FC4F3784BFFFD697C601B797C0303784082E8 -S31AFE00B28200287FE3FB787FC4F3784BFFAE257C601B787C09FEF9 -S31AFE00B297707D2302787C6348507C63FE707C03183880010014EC -S31AFE00B2AC7C0803A683C1000883E1000C382100104E8000202821 -S31AFE00B2C10500037C691B78408100107C801B78700B0003418253 -S31AFE00B2D600302C05000038A5FFFF4D820020880400002C050077 -S31AFE00B2EB0098090000388400013929000138A5FFFF4082FFE805 -S31AFE00B3004E8000202805000F7C6B1B78408100388004000038DB -S31AFE00B315A5FFF0900B0000852400042805000F952B00048404BB -S31AFE00B32A0004940B000485240004952B000438840004396B008E -S31AFE00B33F044181FFD028050003408100208004000038A5FFFCF3 -S31AFE00B35428050003900B000038840004396B00044181FFE82CD8 -S31AFE00B3690500007D695B7838A5FFFF4D820020880400002C0586 -S31AFE00B37E000098090000388400013929000138A5FFFF4082FF59 -S31AFE00B393E84E800020280500037C691B784081000C7060000383 -S31AFE00B3A8418200282C05000038A5FFFF4D8200202C05000098DD -S31AFE00B3BD8900003929000138A5FFFF4082FFF04E800020548439 -S31AFE00B3D2063E5480402E7C0023785409801E7C004B787C6B1B89 -S31AFE00B3E7782805000F40810024900B0000940B000438A5FFF0AA -S31AFE00B3FC940B00042805000F940B0004396B00044181FFE42841 -S31AFE00B4110500034081001838A5FFFC28050003900B0000396BFA -S31AFE00B42600044181FFF02C0500007D695B784D8200207CA90357 -S31AFE00B43BA698890000392900014200FFF84E8000209421FFA84B -S31AFE00B4507C631B79394100087D47537839000000408200143818 -S31AFE00B4650000309801000839410009480000247C032B967D2031 -S31AFE00B47A29D67D2918507D6648AE7C030379996A0000394A0052 -S31AFE00B48F014082FFE47C0A3800418200287D0343787CE93B7802 -S31AFE00B4A48C0AFFFF386300017C0A4800980400003884000140F8 -S31AFE00B4B982FFEC7C681B7838000000980400007D03437838212E -S31AFE00B4CE00584E8000209421FF987C0802A67D800026924100B1 -S31AFE00B4E330926100349281003892A1003C92C1004092E10044F5 -S31AFE00B4F8930100489321004C93410050936100549381005893F4 -S31AFE00B50DA1005C93C1006093E100649001006C9181002C7C994C -S31AFE00B52223788BB900003AE100082C1D00007EF2BB787C7B1B10 -S31AFE00B537787CB82B783BC000003AA000003B390001418204801B -S31AFE00B54C2C1D00254082043C8BB900003B3900012C1D002D3A0D -S31AFE00B561C000003BE00000408200108BB900003B3900013AC071 -S31AFE00B57600012C1D0030408200148BB900003B8000013B3900F8 -S31AFE00B58B01480000083B800000381DFFD0280000094181003C48 -S31AFE00B5A07FA3EB787F24CB787FE9FB781D29000A3929FFD07D4E -S31AFE00B5B5291A1488640000388400013803FFD028000009408181 -S31AFE00B5CAFFE47D3F4B787C9923787C7D1B782C1D002E40820091 -S31AFE00B5DF3C8BB900003B390001381DFFD0280000093B9C000131 -S31AFE00B5F4418100247F24CB7888640000388400013803FFD02897 -S31AFE00B6090000094081FFF07C7D1B787C9923782C1D006C3A80C4 -S31AFE00B61E00004082000C8BB900003B390001381DFFA828000068 -S31AFE00B633203A790001418101F83D60FE01396B44405400103A0D -S31AFE00B6487D4B002E3D20FE01392944407D4A4A147D4903A64ECF -S31AFE00B65D800420386000307F6803A63B8000013BE000084E802B -S31AFE00B6720021386000787F6803A64E800021897800005569064A -S31AFE00B6873E38090001280000084181001C801800085529103AB4 -S31AFE00B69C396B00017C604A1499780000480000302809000741B4 -S31AFE00B6B181001C807800043800000839230004981800009138CE -S31AFE00B6C60004480000108078000438030004901800042C1D00DF -S31AFE00B6DB648063000041820028418100102C1D00584182004CA2 -S31AFE00B6F0480000602C1D0070418200342C1D00784182002C48F1 -S31AFE00B70500004C2C0300004080000C3A80002D7C6300D03CC052 -S31AFE00B71AFE0138C644083881000838A0000A480000203CC0FEC8 -S31AFE00B72F0138C644144800000C3CC0FE0138C644283881000830 -S31AFE00B74438A000104BFFFD057C751B787E579378480000EC8997 -S31AFE00B7597800005569063E38090001280000084181001C801875 -S31AFE00B76E00085529103A396B00017C604A1499780000480000BA -S31AFE00B78330280900074181001C807800043800000839230004CB -S31AFE00B798981800009138000448000010807800043803000490F8 -S31AFE00B7AD18000482E300007EE3BB78480003C97C751B7848008E -S31AFE00B7C20080897800005569063E3809000128000008418100B7 -S31AFE00B7D71C801800085529103A396B00017D404A149978000004 -S31AFE00B7EC48000030280900074181001C81580004380000083960 -S31AFE00B8012A000498180000913800044800001081580004380A0C -S31AFE00B816000490180004886A00037F6803A63BDE00014E8000FC -S31AFE00B82B214800018C3860003F7F6803A63BDE00014E8000219E -S31AFE00B8407F55F8503134FFFF7D294910381AFFFF7C0048782FB6 -S31AFE00B8559C00007F4948387D3A03782C140000419E00243BA0A6 -S31AFE00B86A0030418200207E83A3787F6803A63BDE00013A800032 -S31AFE00B87F004E800021480000083BA000202C1400002E160000F2 -S31AFE00B8943AD5FFFF7F8000264092003C7F40D3782C0000003BEA -S31AFE00B8A95AFFFF4081002C7F5FD3787FA3EB787F6803A63BDEEA -S31AFE00B8BE00014E8000217FE0FB782C0000003BFFFFFF4181FF8A -S31AFE00B8D3E47FFAFB787F880120418200147E83A3787F6803A6E1 -S31AFE00B8E83BDE00014E8000217EA0AB782C0000007ED5B3784013 -S31AFE00B8FD8100547EBDAB787EFCBB788BFC00007F6803A67FE3D9 -S31AFE00B912FB783B9C00013BDE00014E8000212C1F000A408200B1 -S31AFE00B927143860000D7F6803A63BDE00014E8000217FA0EB7833 -S31AFE00B93C2C0000003BBDFFFF4181FFC47F97E3787FB5EB784102 -S31AFE00B9519200687F40D3782C0000003B5AFFFF408100587F5F23 -S31AFE00B966D378386000207F6803A63BDE00014E8000217FE0FBD2 -S31AFE00B97B782C0000003BFFFFFF4181FFE4480000307FA3EB7835 -S31AFE00B9907F6803A63BDE00013A7900014E8000212C1D000A40BE -S31AFE00B9A58200143860000D7F6803A63BDE00014E8000218BB971 -S31AFE00B9BA00007E799B782C1D00004082FB887FC3F378800100AE -S31AFE00B9CF6C8181002C7C0803A682410030826100348281003853 -S31AFE00B9E482A1003C82C1004082E10044830100488321004C8382 -S31AFE00B9F9410050836100548381005883A1005C83C1006083E188 -S31AFE00BA0E00647D808120382100684E8000203D20000081693CEB -S31AFE00BA230C38000000986B0000396B000191693C0C980B000039 -S31AFE00BA384E8000209421FF707C0802A693A1008493C100889390 -S31AFE00BA4DE1008C900100943D60000090A10010906B3C0C38A154 -S31AFE00BA6200083BA1009838000002396000003C60FE0190A100B0 -S31AFE00BA77789081000C90C1001490E100189101001C91210020B3 -S31AFE00BA8C91410024980100709961007193A100743863BA1C38E6 -S31AFE00BAA1A100704BFFFA31800100947C0803A683A1008483C1D8 -S31AFE00BAB6008883E1008C382100904E8000209421FF707C08027E -S31AFE00BACBA693A1008493C1008893E1008C9001009490A10010C2 -S31AFE00BAE09081000C7C641B789061000838A100083BA100983837 -S31AFE00BAF5000001396000003C60FE0190A1007890C1001490E184 -S31AFE00BB0A00189101001C91210020914100249801007099610091 -S31AFE00BB1F7193A100743863BD7838A100704BFFF9A980010094DA -S31AFE00BB347C0803A683A1008483C1008883E1008C382100904E30 -S31AFE00BB498000209421FFF87C0802A69001000C7C601B787C855E -S31AFE00BB5E23783C60FE013863BD787C0403784BFFF969800100A0 -S31AFE00BB730C7C0803A6382100084E80002088030000392000004D -S31AFE00BB884800000C88030000392900012C00000038630001405A -S31AFE00BB9D82FFF07D234B784E8000207C691B78480000102C03CE -S31AFE00BBB20000386000004D8200208869000088040000388400BA -S31AFE00BBC7017C030000392900014182FFE07C6018504E800020AE -S31AFE00BBDC880400007C691B784800001098030000880400003895 -S31AFE00BBF16300012C000000388400014082FFEC3800000098036E -S31AFE00BC0600007D234B784E8000207C6B1B78480000102C0300D3 -S31AFE00BC1B00386000004D820020886B0000396B00013803FFBFF8 -S31AFE00BC30280000194181000C380300205403063E892400003811 -S31AFE00BC458400013809FFBF280000194181000C38090020540995 -S31AFE00BC5A063E7D204B787C0300004182FFB47C6018504E800026 -S31AFE00BC6F207CA02B797C691B787C0903A64082001438600000C8 -S31AFE00BC844E8000207C6018504E800020886900008804000038D2 -S31AFE00BC998400017C030000392900014082FFE42C030000418294 -S31AFE00BCAE00084200FFE0386000004E8000207CA02B797C6B1B0C -S31AFE00BCC3787C0903A640820018386000004E8000207C6018501E -S31AFE00BCD84E80002042400050886B0000396B00013803FFBF28DA -S31AFE00BCED0000194181000C380300205403063E892400003884F8 -S31AFE00BD0200013809FFBF280000194181000C3809002054090655 -S31AFE00BD173E7D204B787C0300004082FFB42C0300004082FFB4DD -S31AFE00BD2C386000004E8000204800002C89230000880400003894 -S31AFE00BD418400017C09000038630001418200148803FFFF8864F7 -S31AFE00BD56FFFF7C6300504E8000207CA02B782C00000038A5FFF2 -S31AFE00BD6BFF4082FFCC386000004E8000209421FFE87C0802A6E5 -S31AFE00BD809381000893A1000C93C1001093E100149001001C3D78 -S31AFE00BD9520000080093B587C7D1B782C000000408200743D200E -S31AFE00BDAA000039293200800900343860FFFF7C0803A67D3E4B66 -S31AFE00BDBF783BE000004E8000217C7C1B78813E00347FE3FB7896 -S31AFE00BDD47D2803A64E800021813E00147FA4EB78806900008057 -S31AFE00BDE909000C7C0803A64E80002137FF00014081FFD43D20E8 -S31AFE00BDFE000039293200800900347F83E3787C0803A64E800083 -S31AFE00BE1321480000483D20000039293200816900142C0B00003F -S31AFE00BE284182001C806B0000800B000C7FA4EB787C0803A64E9F -S31AFE00BE3D8000214800001C816900187FA4EB78806B0000800BE9 -S31AFE00BE52000C7C0803A64E8000218001001C7C0803A6838100E1 -S31AFE00BE670883A1000C83C1001083E10014382100184E8000205F -S31AFE00BE7C9421FFF07C0802A693E1000C900100143D2000003922 -S31AFE00BE91293200816900147C7F1B782C0B0000408200088169C6 -S31AFE00BEA60018806B0000800B00107C0803A64E800021987F00B2 -S31AFE00BEBB00800100147C0803A683E1000C382100104E800020E5 -S31AFE00BED09421FFE07C0802A69361000C9381001093A10014939A -S31AFE00BEE5C1001893E1001C900100243D20000080093B587C7DB4 -S31AFE00BEFA1B782C000000408200883D20000039293200800900AC -S31AFE00BF0F343860FFFF7C0803A67D3C4B783BE000004E8000219C -S31AFE00BF247C7B1B78813C00347FE3FB787D2803A64E80002181F6 -S31AFE00BF397C00147FA4EB78806B0000800B001C7C0803A64E804C -S31AFE00BF4E00217C7E1B7941820010881D00002C000000408200C5 -S31AFE00BF634C37FF00014081FFC03D200000392932008009003414 -S31AFE00BF787F63DB787C0803A64E800021480000643D200000391D -S31AFE00BF8D293200816900142C0B000041820034806B0000800B9E -S31AFE00BFA2001C7FA4EB7848000034817C00307FE3FB787D68037E -S31AFE00BFB7A63D2000003800000190093B584E80002148000020B2 -S31AFE00BFCC816900187FA4EB78806B0000800B001C7C0803A64EC7 -S31AFE00BFE18000217C7E1B787FC3F378800100247C0803A68361B6 -S31AFE00BFF6000C8381001083A1001483C1001883E1001C382100A5 -S31AFE00C00B204E8000209421FFE87C0802A69381000893A1000CEA -S31AFE00C02093C1001093E100149001001C3D20000080093B587C79 -S31AFE00C0357D1B782C000000408200803D200000392932008009FA -S31AFE00C04A00343860FFFF7C0803A67D3E4B783BE000004E80007F -S31AFE00C05F217C7C1B78813E00347FE3FB787D2803A64E80002117 -S31AFE00C074813E00142C0900004182001C8069000080090014380E -S31AFE00C0898000077FA5EB787C0803A64E80002137FF000140817C -S31AFE00C09EFFC83D20000039293200800900347F83E3787C080330 -S31AFE00C0B3A64E800021480000303D2000003929320081290014B8 -S31AFE00C0C82C0900004182001C8069000080090014388000077F87 -S31AFE00C0DDA5EB787C0803A64E8000213D2000003929320081298B -S31AFE00C0F200182C0900004182001C80690000800900147FA5EB74 -S31AFE00C10778388000077C0803A64E8000218001001C7C0803A602 -S31AFE00C11C8381000883A1000C83C1001083E10014382100184E43 -S31AFE00C1318000209421FFD07C0802A69301001093210014934165 -S31AFE00C14600189361001C9381002093A1002493C1002893E1003C -S31AFE00C15B2C900100347C7D1B787CBE2B787FBFEB783B60000035 -S31AFE00C1703F2000003F8000003B40000081393B802C0900004132 -S31AFE00C185820020896900002C0B000041820014380900019961C3 -S31AFE00C19A000890193B80480000647FC0FE707C1E005054000F7A -S31AFE00C1AFFE7FE9EA78216900007D2B49147C0B48394182003C19 -S31AFE00C1C4386000324BFFFE49480000083BDEFFCE2C1E00004047 -S31AFE00C1D9810014386100084BFFFCF17C7B1B794182FFE82C1B64 -S31AFE00C1EE0000408200143860FFFF48000180386100084BFFFC1C -S31AFE00C2037D880100089B5F00007C0303785400063E2C00000D4F -S31AFE00C2184182007C418100282C000008418200D4418100102C1B -S31AFE00C22D00000341820038480001142C00000A41820058480004 -S31AFE00C24201082C00002B418200E8418100102C000024418200F3 -S31AFE00C257DC480000F02C00007F41820098480000E47C1FE80005 -S31AFE00C26C408200183C60FE01386344C84BFFF84D3860FFFE4831 -S31AFE00C2810000F8987F00003BFF00013F000000480000DC89214D -S31AFE00C29600083F0000002C09000A40820010881837102C000024 -S31AFE00C2AB0D418200182C09000D40820018881837102C00000A59 -S31AFE00C2C04082000C9B410008480000A4801C3B782C000000410B -S31AFE00C2D58200143860000D4BFFFA9D3860000A4BFFFA95880130 -S31AFE00C2EA00083860000198183710480000847C1FE8003F000015 -S31AFE00C2FF004182006C801C3B782C0000004182001C38600008FD -S31AFE00C3144BFFFA65386000204BFFFA5D386000084BFFFA553B9A -S31AFE00C329FFFFFF480000407C1FE800408200145463063E4BFFD8 -S31AFE00C33EC3293860000048000034801C3B782C000000418200A8 -S31AFE00C3530C886100084BFFFA21880100083F000000981F0000E8 -S31AFE00C3683BFF000188010008981837104BFFFE08800100347C78 -S31AFE00C37D0803A68301001083210014834100188361001C8381CA -S31AFE00C392002083A1002483C1002883E1002C382100304E8000D7 -S31AFE00C3A7209421FFC07C0802A6924100089261000C92810010C0 -S31AFE00C3BC92A1001492C1001892E1001C93010020932100249308 -S31AFE00C3D14100289361002C9381003093A1003493C1003893E11E -S31AFE00C3E6003C900100447C9D23787C7C1B787D3DE0107D294955 -S31AFE00C3FB107D294BB87C1CE8507C0048787FA948387D3D037986 -S31AFE00C4107CB62B78408101403E40FE012C16000041820014386E -S31AFE00C4257244CC7C96E0504BFFF69948000010387244CC7F844C -S31AFE00C43AE3784BFFF6897FBEEB787F9DE3783BE000003E80FED7 -S31AFE00C44F013EA0FE013E60FE013B5EFFF03AFD00103F00FE014C -S31AFE00C4643F60FE013F20FE017C1FF000408000147C9DF8AE386D -S31AFE00C4797844D84BFFF6494800000C387944E04BFFF63D7FFC6C -S31AFE00C48EFE707C1CF8507C000E707C0002147C00F8502C0000CB -S31AFE00C4A3014082000C387B44E44BFFF61957801F7E7C1F021458 -S31AFE00C4B87C001E70540018387C00F8502C0000074082000C38C0 -S31AFE00C4CD7B44E44BFFF5F53BFF00012C1F000F4081FF907FBC5F -S31AFE00C4E2EB787FDDF378387444E84BFFF5D97EBEAB783BE000AD -S31AFE00C4F7007C1FE8004080002C7C9CF8AE3804FFE02000005E66 -S31AFE00C50C7C0001107C0003B87C0900F87C8000387129002E7C5D -S31AFE00C521044B784800000838800020387E44EC4BFFF5953BFF1E -S31AFE00C53600012C1F000F4081FFBC387344F04BFFF5817F5DD3C7 -S31AFE00C54B797EFCBB784181FECC800100447C0803A68241000868 -S31AFE00C5608261000C8281001082A1001482C1001882E1001C832C -S31AFE00C57501002083210024834100288361002C8381003083A170 -S31AFE00C58A003483C1003883E1003C382100404E8000209421FF0D -S31AFE00C59FF87C0802A69001000C38A000004BFFFDFD8001000C19 -S31AFE00C5B47C0803A6382100084E8000209421FF607C0802A6931F -S31AFE00C5C961008C9381009093A1009493C1009893E1009C900173 -S31AFE00C5DE00A49081000C388100A83FA000003B80000038000050 -S31AFE00C5F3013961000890810074837D3B809061000890A1001012 -S31AFE00C60890C1001490E100189101001C9121002091410024981D -S31AFE00C61D010070916100789B810071388100704BFFF5213C6077 -S31AFE00C632FE01386344F44BFFF48D939D3B803861008038800096 -S31AFE00C6470838A000004BFFFAE988610080937D3B806860005978 -S31AFE00C65C212000007C09011468630079212300007C6919147CD4 -S31AFE00C671630378800100A47C0803A68361008C8381009083A158 -S31AFE00C686009483C1009883E1009C382100A04E8000209421FF90 -S31AFE00C69BE87C0802A69381000893A1000C93C1001093E100142A -S31AFE00C6B09001001C7C9C23787CBD2B787C7F1B783BC000004864 -S31AFE00C6C50000C857C0103A7FFD012E881F00003BDE000148007F -S31AFE00C6DA0098881F00002C0000224082008457C0103A7D60EA4C -S31AFE00C6EF14812BFFFC7C09F8004082000C3BFF000193EBFFFC78 -S31AFE00C704893F0000692000227C0000D07D2900D055290FFE5408 -S31AFE00C719000FFE7D2B00394182002C7FE3FB788D23000169201B -S31AFE00C72E00227C0000D07D2900D055290FFE54000FFE7D2B007A -S31AFE00C743394082FFE47C7F1B78881F00002C0000004082002CB0 -S31AFE00C7583C60FE013863450C4BFFF365480000083BFF0001888C -S31AFE00C76D1F00002C0000004182004C2C0000204082FF603800B4 -S31AFE00C7820000981F00003BFF0001881F00002C00000041820016 -S31AFE00C7972C2C000020408200187FE3FB788C0300012C00002086 -S31AFE00C7AC4182FFF87C7F1B78881F00002C0000004082FF0C3C50 -S31AFE00C7C16000003C80000080BD000093DC0000386339F838840F -S31AFE00C7D63A68480000258001001C7C0803A68381000883A10041 -S31AFE00C7EB0C83C1001083E10014382100184E8000209421FFD872 -S31AFE00C8007C0802A6930100089321000C93410010936100149318 -S31AFE00C81581001893A1001C93C1002093E100249001002C7C7F5D -S31AFE00C82A1B787CBC2B787C9A23787F83E3784BFFF3497FFDFB7C -S31AFE00C83F787C1DD0007C7B1B78418200C0809D00007F83E37878 -S31AFE00C8547F65DB784BFFF4652C0300004082009C807D00004B1C -S31AFE00C869FFF3197C03D800408100847C1FD0003BC000014182E5 -S31AFE00C87E00603F00FE013F20FE017C1DF80041820044809F00EE -S31AFE00C893007F83E3787F65DB784BFFF4212C0300004082002C7C -S31AFE00C8A82C1E00004182001880BD0000387845207F84E3784B57 -S31AFE00C8BDFFF2093BC00000809F0000387945484BFFF1F93BFFA2 -S31AFE00C8D200107C1FD0004082FFB02C1E0000408200143C60FEA7 -S31AFE00C8E7013863454C4BFFF1D9480000187FA3EB7848000014B6 -S31AFE00C8FC3BBD00107C1DD0004082FF48386000008001002C7CE8 -S31AFE00C9110803A6830100088321000C8341001083610014838150 -S31AFE00C926001883A1001C83C1002083E10024382100284E800065 -S31AFE00C93B209421FFE87C0802A69381000893A1000C93C100103B -S31AFE00C95093E100149001001C7C601B783C60FE017C9D23787C5F -S31AFE00C9651F03787CBE2B78386345504BFFF1557C1FE80041823C -S31AFE00C97A00283F80FE0180BF000080DF0008387C45587FC4F391 -S31AFE00C98F784BFFF1353BFF00107C1FE8004082FFE48001001C98 -S31AFE00C9A47C0803A68381000883A1000C83C1001083E10014380D -S31AFE00C9B92100184E800020912300149883000090A3000490C3D1 -S31AFE00C9CE000890E3000C910300104E8000209421FFB07C08024D -S31AFE00C9E3A691C1000891E1000C92010010922100149241001868 -S31AFE00C9F89261001C9281002092A1002492C1002892E1002C93E0 -S31AFE00CA0D01003093210034934100389361003C9381004093A133 -S31AFE00CA22004493C1004893E1004C900100547D344B787D16432C -S31AFE00CA37783016FFFF7D20B1106A800001216000007C0B0114C4 -S31AFE00CA4C7D2B00397C701B787C9823787CD133787CF53B787D29 -S31AFE00CA615353783B4000013A40000041820008925600007C1267 -S31AFE00CA76A8007E3F8B78408000507EA903A67FEBFB7839000049 -S31AFE00CA8B00812B00102C0900004182000891090000814B00046C -S31AFE00CAA02C0A000040820020800B00082C0000004182000C2CAB -S31AFE00CAB50000024082000C812B000C91490000396B0018420008 -S31AFE00CACAFFC47CBD2B787C1D8000408002043DC0FE013DE0FEBE -S31AFE00CADF0157BE103A7C9EC02E880400002C00002D4082014CE2 -S31AFE00CAF4396000007C0BA8008AE400017E3F8B78392000003B9E -S31AFE00CB097D0001408001147F9EC2143B200001881F00007C1737 -S31AFE00CB1E0000408200F0813F00102C09000041820020800900DB -S31AFE00CB33002C00000041820014809F0014386E45644BFFEF81AA -S31AFE00CB483B400000801F00042C00000041820080813C00008802 -S31AFE00CB5D0900023BC900032C00003D4182000C83DC00043BBD1A -S31AFE00CB720001801F00082C000000418200102C00000141820013 -S31AFE00CB873C48000040809F000C7FC3F37838A0000038C0000029 -S31AFE00CB9C480001992C0300004082002480BF00147FC4F3783850 -S31AFE00CBB16F45844BFFEF113B4000004800000C813F000C93C9F2 -S31AFE00CBC60000813F00103B7D000148000034801F00082C00007E -S31AFE00CBDB00418200102C0000024182001C48000020817F000CED -S31AFE00CBF0812B000039290001912B00004800000C813F000C93AE -S31AFE00CC052900003960000148000014392900017C09A8003BFF2D -S31AFE00CC1A00184180FEFC2C0B0000408200A83C60FE0138634512 -S31AFE00CC2FAC7EE4BB784BFFEE91480000902C160000418200788D -S31AFE00CC442C12000041820014386E45647E649B784BFFEE713B9A -S31AFE00CC594000002C140000418200102C1400014182003C4800E7 -S31AFE00CC6E00407C7EC02E7EC4B37838A0000038C0000048000000 -S31AFE00CC83B52C030000408200247C9EC02E386F45847E659B7860 -S31AFE00CC984BFFEE2D3B4000004800000C7C1EC02E901600003BE6 -S31AFE00CCAD7D00013A400001480000183C60FE01386345CC3B7D16 -S31AFE00CCC200014BFFEE013B4000007F7DDB787C1D80004180FE7D -S31AFE00CCD70C7F43D378800100547C0803A681C1000881E1000C71 -S31AFE00CCEC8201001082210014824100188261001C828100208266 -S31AFE00CD01A1002482C1002882E1002C830100308321003483410A -S31AFE00CD1600388361003C8381004083A1004483C1004883E10010 -S31AFE00CD2B4C382100504E8000208803000038E000012C0000201C -S31AFE00CD403900000A39800000408200108C0300012C00002041EF -S31AFE00CD5582FFF8880300002C0000004182012C2C0700004182AF -S31AFE00CD6A0038880300002C0000304082002C892300013809FFB6 -S31AFE00CD7FBF280000194181000C380900205409063E2C0900781E -S31AFE00CD944082000C39000010386300028943000038E0000039B5 -S31AFE00CDA92AFFD0380AFFBF21290009392000007D2949142000A9 -S31AFE00CDBE0005380000007C0001147D2B03793863000139200075 -S31AFE00CDD30040820010380AFF9F28000005418100083920000144 -S31AFE00CDE82C09000041820068392AFFD05520063E280000094175 -S31AFE00CDFD81000C7D2B4B7848000030380AFF9F280000054181DE -S31AFE00CE12000C396AFFA94800001C380AFFBF200000057C0001AA -S31AFE00CE27107C0003B8392AFFC97C0B48387C0B40004080001CD6 -S31AFE00CE3C880300007D2C41D62C0000007D895A144082FF1848D1 -S31AFE00CE5100003C2C0600004182002C88060000480000088C06FB -S31AFE00CE6600012C000000418200187C0A00004082FFF0880600E6 -S31AFE00CE7B002C0000004082000C386000004E8000202C050000ED -S31AFE00CE90918400004182000890650000386000014E80002088A5 -S31AFE00CEA50300002C000020408200108C0300012C0000204182B4 -S31AFE00CEBAFFF88863000068690074200900007D2049146860004D -S31AFE00CECF54214000007C0A01147D2B03794182001038000001CA -S31AFE00CEE4900400004800003068690046200900007D2049146887 -S31AFE00CEF9600066214000007C0A01147C0A4B794082000C3860AE -S31AFE00CF0E00004E80002091640000386000014E8000209421FFEC -S31AFE00CF23E07C0802A69361000C9381001093A1001493C1001811 -S31AFE00CF3893E1001C900100243D200001396998D0800BFFD47C59 -S31AFE00CF4D9C23782C0000007CDB33784182000C3800000A48000D -S31AFE00CF62012838000001B00998D088030000396B00022C0000D6 -S31AFE00CF77002F85000041820018980B00008C030001396B00013A -S31AFE00CF8C2C0000004082FFF038000000980B0000396B000140EF -S31AFE00CFA19E00103D20FE01386946004800001C2C05000141822D -S31AFE00CFB6000C3800000A480000CC3D20FE013869460C88030026 -S31AFE00CFCB002C00000041820018980B00008C030001396B00016E -S31AFE00CFE02C0000004082FFF03D2000013BA998B83800000098F9 -S31AFE00CFF50B00007FA3EB783880000038A0000C4BFFE3953D6098 -S31AFE00D00A0000812B37183BFDFFEC38000001B13F0018B01F00DF -S31AFE00D01F1AA01C0004392900012C0000003BC00000912B371889 -S31AFE00D03493DF00144082000C38000045B01C00047F85E37838AB -S31AFE00D0497D0018388002057FA6EB7848003CAD2C0300004180D1 -S31AFE00D05E002838000001901DFFEC3920FFFF93DF0004913F0023 -S31AFE00D0731093DF000C93DF00083860000048000010380000096B -S31AFE00D088901B00003860FFFF800100247C0803A68361000C8309 -S31AFE00D09D81001083A1001483C1001883E1001C382100204E808E -S31AFE00D0B200203D20000138000000900998A4386000004E800074 -S31AFE00D0C7209421FFC87C0802A692C1001092E1001493010018F2 -S31AFE00D0DC9321001C93410020936100249381002893A1002C9330 -S31AFE00D0F1C1003093E100349001003C7C9923783B6000007C1BDE -S31AFE00D106C8003D2000013BC998D07C7A1B787CBC2B7840800159 -S31AFE00D11B783BFEFFD43B0100083AE000043AC00009813F000C46 -S31AFE00D1302C0900004081005C7C1BC8507F890000809F02347F09 -S31AFE00D14543D3784FFEE3827FA0002657BD07FE7FBD00D07C00AB -S31AFE00D15AE8787D3DE8387FBD03787FA5EB784BFFE159801F021F -S31AFE00D16F34813F000C7C00EA147D3D4850901F0234913F000C1A -S31AFE00D1847F7BEA147F5AEA14480000FC801F0010280001FF4068 -S31AFE00D1998100F838000001900100083920000091380004387F55 -S31AFE00D1AE002C3880020538BF002038DF00147F07C37848003CF6 -S31AFE00D1C36D7C631B794080002C813F0004392900012C09000F1C -S31AFE00D1D8913F000441810010801F00082C000000408200443887 -S31AFE00D1ED0000084800008CA81E00002C00000340820064813F72 -S31AFE00D2020008A97E0002392900017C0B48004082001C3863FF38 -S31AFE00D217FC381E0004907F000C901F0234917F0008907F001071 -S31AFE00D22CA01F000AB2FE0000B01E0002387F002C3880000438C9 -S31AFE00D241BF002038DF001448003AB92C0300004080003892DCFA -S31AFE00D25600003860FFFF480000382C00000540820014A81E00DC -S31AFE00D26B023860FFFF901C0000480000203800000B901C00000F -S31AFE00D2803860FFFF480000107C1BC8004180FEA07F63DB788034 -S31AFE00D29501003C7C0803A682C1001082E100148301001883210C -S31AFE00D2AA001C83410020836100248381002883A1002C83C100A3 -S31AFE00D2BF3083E10034382100384E8000203803FFFF2800000BA3 -S31AFE00D2D43D20FE01386946144D8100203D60FE01396B473054F1 -S31AFE00D2E900103A7D4B002E3D20FE01392947307D4A4A147D49CC -S31AFE00D2FE03A64E8004203C60FE01386346244E8000203C60FE54 -S31AFE00D31301386346344E8000203C60FE01386346484E8000204B -S31AFE00D3283C60FE013863466C4E8000203C60FE01386346844EC8 -S31AFE00D33D8000203C60FE01386346984E8000203C60FE013863FF -S31AFE00D35246AC4E8000203C60FE01386346BC4E8000203C60FE22 -S31AFE00D36701386346D04E8000203C60FE01386346EC4E800020B7 -S31AFE00D37C3C60FE01386347004E8000203C60FE01386347144E4E -S31AFE00D3918000209421FFE87C0802A693A1000C93C1001093E103 -S31AFE00D3A600149001001C3D200000800937207C9F23782C00008E -S31AFE00D3BB004082007C48004C153D20000138699ADC8003000476 -S31AFE00D3D02C00000540820018A00300162C0000004082005048FA -S31AFE00D3E5004CE9480000482C00000040820014480008D9380007 -S31AFE00D3FA000A981F0000480000603FA00001389DA12038A00063 -S31AFE00D40F8048004D512C0300003BBDA1203D2000003D600000BC -S31AFE00D42493A93C28906B37204082000C38600000480000303DE2 -S31AFE00D439400000816A3C283D000000880B0000396B0001981F1F -S31AFE00D44E000081283720916A3C283929FFFF912837203860005E -S31AFE00D463018001001C7C0803A683A1000C83C1001083E10014E9 -S31AFE00D478382100184E8000209421FFE07C0802A693A1001493A1 -S31AFE00D48DC1001893E1001C900100243D2000003BA932007C7EFB -S31AFE00D4A21B783BE000644800002837FFFFFF40820010480000A1 -S31AFE00D4B7513BE0006448000014813D0048386000647D2803A6E0 -S31AFE00D4CC4E8000217FC3F378388100084BFFFEBD2C0300004175 -S31AFE00D4E182FFCC88610008800100247C0803A683A1001483C1A6 -S31AFE00D4F6001883E1001C382100204E8000209421FFE87C0802FC -S31AFE00D50BA693A1000C93C1001093E100149001001C3D2000012A -S31AFE00D5203BA9A1A04800003080BE37247FE3FB787FA4EB784819 -S31AFE00D535004D417C631B7940810014801E37247FBD1A147C0325 -S31AFE00D54A0050901E372448004A853FC00000801E37242C000034 -S31AFE00D55F00418200303D2000013BE99ADC801F00042C000005F4 -S31AFE00D5744082000C7FE3FB7848004B51801F00042C0000004008 -S31AFE00D58982FFA0480007413D2000003BC93200801E00443D2006 -S31AFE00D59E00012C0000003929A1A03D6000003D4000003BE0006F -S31AFE00D5B300912B3C2C93EA372441820010386000004BFFDC0DC5 -S31AFE00D5C893FE00448001001C7C0803A683A1000C83C1001083A4 -S31AFE00D5DDE10014382100184E8000209421FFF07C0802A693E19D -S31AFE00D5F2000C900100143D600000812B3C2C2C04002498890049 -S31AFE00D6070039290001912B3C2C40820010380000013D2000001B -S31AFE00D61C90093C103FE00000801F3C10688B0023212B00007D27 -S31AFE00D6316959143140FFFF7D2A01107D2058394182001C3D4059 -S31AFE00D6460000392000013D60000038000000912A3C14900B3CBA -S31AFE00D65B183D600000812B3724392900012C090100912B37244A -S31AFE00D6704182002C3D20000080093C142C000000418200283D28 -S31AFE00D685600000812B3C18392900012C090003912B3C184082BF -S31AFE00D69A00104BFFFE6938000000901F3C10800100147C080367 -S31AFE00D6AFA683E1000C382100104E8000209421FFE87C0802A62D -S31AFE00D6C493A1000C93C1001093E100149001001C4800055D7C4E -S31AFE00D6D97D1B783C60FE013C80FE0138A000EC38844828386347 -S31AFE00D6EE48204BFFE3D57FA3EB78480005A58001001C7C08031E -S31AFE00D703A683A1000C83C1001083E10014382100184E8000200C -S31AFE00D7189421FFE87C0802A693A1000C93C1001093E100149074 -S31AFE00D72D01001C480005017C7D1B783C60FE013C80FE0138A0BE -S31AFE00D74200FE38844838386348204BFFE3797FA3EB7848000519 -S31AFE00D757498001001C7C0803A683A1000C83C1001083E10014AA -S31AFE00D76C382100184E8000209421FFE87C0802A69381000893CE -S31AFE00D781A1000C93C1001093E100149001001C7C7D1B787C9EA3 -S31AFE00D79623784BFFFD6D3D2000008009371C3D6000001FE00056 -S31AFE00D7AB0A3B8B320048000014813C0048386000647D2803A6B8 -S31AFE00D7C04E8000217FA3EB787FC4F3784BFFFBC97C631B79406D -S31AFE00D7D58200102C1F00003BFFFFFF4082FFD48001001C7C0870 -S31AFE00D7EA03A68381000883A1000C83C1001083E100143821001C -S31AFE00D7FF184E8000209421FF787C0802A693C1008093E10084E7 -S31AFE00D8149001008C7C8023782C00000590A1001090C1001490E0 -S31AFE00D829E100189101001C91210020914100249081000C3BC05F -S31AFE00D83E00004182002C28000005418100102C000004418201EF -S31AFE00D85394480003482C000006418203082C0000074182030C90 -S31AFE00D868480003343FE00000801F37283D6000002C0000003909 -S31AFE00D87D200001912B372C40820014480011C1907F37282C03C5 -S31AFE00D892000041820308811F37283808FFFF280000394181024D -S31AFE00D8A7F83D60FE01396B48485400103A7D4B002E3D20FE01B0 -S31AFE00D8BC392948487D4A4A147D4903A64E8004203D20FF00611E -S31AFE00D8D1290014816900007C0006AC3948FFFF3C0080007C0032 -S31AFE00D8E654307D6B0378916900007C0006AC480002A83D20FFCC -S31AFE00D8FB0061290200A00900007C0006AC60000008B009000090 -S31AFE00D9107C0006AC480002883D20FF0061290200A00900007CF1 -S31AFE00D9250006AC60000004B00900007C0006AC480002683D20DD -S31AFE00D93AFF0061290240A00900007C0006AC60000004B0090015 -S31AFE00D94F007C0006AC480002483D20FF0061290220A00900004E -S31AFE00D9647C0006AC60000008B00900007C0006AC480002283D7E -S31AFE00D97920FF0061290220A00900007C0006AC60000004B009D6 -S31AFE00D98E00007C0006AC480002083D20FF006129094080090048 -S31AFE00D9A3007C0006AC60000080900900007C0006AC480001E865 -S31AFE00D9B83D20FF0061290948816900007C0006AC3948FFE53C66 -S31AFE00D9CD0080007C0054307D6B0378916900007C0006AC4800EE -S31AFE00D9E201BC3D60000083CB372C38000000900B372C3D20008E -S31AFE00D9F700814937282C0A00004182019C7D4853783808FFFF8A -S31AFE00DA0C280000394181018C3D60FE01396B49305400103A7D7D -S31AFE00DA214B002E3D20FE01392949307D4A4A147D4903A64E80DA -S31AFE00DA3604203D20FF0061290014816900007C0006AC3948FF21 -S31AFE00DA4BFF3C0080007C0054307D6B0078916900007C0006AC7F -S31AFE00DA604800013C3D20FF0061290200A00900007C0006AC70F9 -S31AFE00DA7500FFF75400043EB00900007C0006AC480001183D2067 -S31AFE00DA8AFF0061290200A00900007C0006AC7000FFFB5400045F -S31AFE00DA9F3EB00900007C0006AC480000F43D20FF0061290240E5 -S31AFE00DAB4A00900007C0006AC7000FFFB5400043EB00900007C4D -S31AFE00DAC90006AC480000D03D20FF0061290220A00900007C004D -S31AFE00DADE06AC7000FFF75400043EB00900007C0006AC48000052 -S31AFE00DAF3AC3D20FF0061290220A00900007C0006AC7000FFFB25 -S31AFE00DB085400043EB00900007C0006AC480000883D20FF0061FA -S31AFE00DB1D290940800900007C0006AC5400066E900900007C00E9 -S31AFE00DB3206AC480000683D20FF0061290948816900007C0006D5 -S31AFE00DB47AC3948FFE53C0080007C0054307D6B0078916900009E -S31AFE00DB5C7C0006AC4800003C3D20000083C93728480000303945 -S31AFE00DB7161000838010090392000039BC1007199210070900185 -S31AFE00DB860074916100783D200000800B000883C9371C90093749 -S31AFE00DB9B1C7FC3F3788001008C7C0803A683C1008083E10084C2 -S31AFE00DBB0382100884E8000209421FFE07C0802A693A1001493F2 -S31AFE00DBC5C1001893E1001C900100247C7D1B787C9F23787CA3C8 -S31AFE00DBDA2B784BFFCCE938000000901F00007FA3EB783881006B -S31AFE00DBEF084BFFF7A52C03000041820018880100082C00000365 -S31AFE00DC044082000C38000001901F000038600001800100247C97 -S31AFE00DC190803A683A1001483C1001883E1001C382100204E80E6 -S31AFE00DC2E00209421FFE87C0802A69381000893A1000C93C10045 -S31AFE00DC431093E100149001001C3FA000003BBD3200813D003488 -S31AFE00DC583860FFFF7D2803A64E800021801D00347C7C1B78384C -S31AFE00DC6D6000007C0803A64E8000217F83E3788001001C7C08A4 -S31AFE00DC8203A68381000883A1000C83C1001083E100143821007F -S31AFE00DC97184E8000209421FFF87C0802A69001000C3D2000009C -S31AFE00DCAC39293200800900347C0803A64E8000218001000C7CE9 -S31AFE00DCC10803A6382100084E8000209421FFE87C0802A693A14E -S31AFE00DCD6000C93C1001093E100149001001C3FA000003BBD3287 -S31AFE00DCEB00817D00343D20000080693C207D6803A63D20000061 -S31AFE00DD003800000090093B584E800021801D00303D200000800D -S31AFE00DD15693C247C0803A64E8000213D200000380000019009E1 -S31AFE00DD2A3B788001001C7C0803A683A1000C83C1001083E1007B -S31AFE00DD3F14382100184E8000209421FFE87C0802A693A1000C50 -S31AFE00DD5493C1001093E100149001001C3FA000003BBD32008193 -S31AFE00DD691D00343860FFFF7D0803A63D400000392000013D6018 -S31AFE00DD7E000038000000912A3B58900B3B784E8000213D20006C -S31AFE00DD930090693C20813D0034386000017D2803A64E8000215A -S31AFE00DDA8813D00303860FFFF7D2803A64E8000213D20000080C4 -S31AFE00DDBD1D003090693C24386000017C0803A64E800021800171 -S31AFE00DDD2001C7C0803A683A1000C83C1001083E100143821009A -S31AFE00DDE7184E8000209421FFE87C0802A69381000893A1000CF9 -S31AFE00DDFC93C1001093E100149001001C3FE00000801F37302C24 -S31AFE00DE11000000408200A03FA000003BBD3200813D0034386003 -S31AFE00DE26FFFF7D2803A64E800021813D00347C7C1B7838600093 -S31AFE00DE3B017D2803A64E800021815D00143D20FE013929D6BC4E -S31AFE00DE50912A00043D60FE01396BD7183D20FE01916A00083933 -S31AFE00DE6529D5E8912A000C3D60FE01396BD4803D20FE01916A0C -S31AFE00DE7A00103929D804912A00143D60FE01396BDBB83D20FE44 -S31AFE00DE8F01916A00183929D774912A001C801D00347F83E378B4 -S31AFE00DEA47C0803A64E80002138000001901F37303D2000003F5E -S31AFE00DEB9A00001A0893B6A387D9ADC480041353BBD9ADC801DED -S31AFE00DECE00043D20000090093C1C8001001C7C0803A68381001B -S31AFE00DEE30883A1000C83C1001083E10014382100184E800020C3 -S31AFE00DEF89421FFF07C0802A693E1000C90010014480040CD3D8A -S31AFE00DF0D2000013BE99ADC3D200000817F000480093C1C7C0082 -S31AFE00DF225800418200602C0B0004408200484BFFFE193C600029 -S31AFE00DF37013D2000013929A1A03C80000038C3A1203CA000007B -S31AFE00DF4C396000013940000D3D0000003CE0000038000000907B -S31AFE00DF61C43C28916537209943A12091283C2C90073724801FE3 -S31AFE00DF7600042C000000408200084BFFFE6D3D20000180099A62 -S31AFE00DF8BE03D600000900B3C1C800100147C0803A683E1000CDB -S31AFE00DFA0382100104E8000209421FFE87C0802A693A1000C9376 -S31AFE00DFB5C1001093E100149001001C3D20000080E93B6C2C07AD -S31AFE00DFCA0000408200283D000000392000013D6000003D4000A3 -S31AFE00DFDF003800232891283B6490EB3C50900A3B684800007C46 -S31AFE00DFF43C60FE013C8000003863479C38843C5038A000014BD3 -S31AFE00E009FF4E213C60FE013C8000003863477438843B6838A0AC -S31AFE00E01E00024BFF4E093C60FE013C800000386347CC38843B4A -S31AFE00E0336438A000014BFF4DF13C60FE013C800000386347E8EE -S31AFE00E0483884395838A000054BFF4DD93C60FE013C8000013895 -S31AFE00E05D6348103884211C38A000054BFF4DC13D20000038002C -S31AFE00E072000090093B844800034D480031813D6000003D2000B1 -S31AFE00E0870039293B483BEB3B387C1F48004182003C7D3D4B78A3 -S31AFE00E09C3BC00001813F00047FE3FB787D2803A64E8000217C1D -S31AFE00E0B1631B794182000C93DF000C48000008907F000C3BFF6D -S31AFE00E0C600107C1FE8004082FFD43D20000080093C542C000077 -S31AFE00E0DB00408200143C60FE0138634A184BFFD9DD48000090E6 -S31AFE00E0F03D20000080093B642C000000418200283C60000138A6 -S31AFE00E105632108480027912C030000418200143C60FE01386339 -S31AFE00E11A4A384BFFD9A9480000103D2000003800000190093BDC -S31AFE00E12F843D20000080093B842C000000418200403C600000E3 -S31AFE00E14438633958480001B97C641B783C60FE0138634A644BF2 -S31AFE00E159FFD96D3C6000013863211C4800019D7C641B783C60FE -S31AFE00E16EFE0138634A6C4BFFD9514BFFFC758001001C7C0803F5 -S31AFE00E183A683A1000C83C1001083E10014382100184E80002082 -S31AFE00E1989421FFF093E1000C380000047C0903A67C9F237838F2 -S31AFE00E1AD800000398000188963000038E000012C0B000038A0F4 -S31AFE00E1C2000038C0000A38630001418201106960003021200098 -S31AFE00E1D7007C0901147CE9003941820030892300003809FFBF59 -S31AFE00E1EC280000194181000C380900205409063E2C090078401C -S31AFE00E2018200108D63000138C0001038630001392BFFD0380B67 -S31AFE00E216FFBF7D2A4B787C0803785529063E5400063E21290024 -S31AFE00E22B09392000007D29491420000005380000007C00011487 -S31AFE00E2407D27037938E000003920000040820010380BFF9F2859 -S31AFE00E25500000541810008392000012C09000041820068554092 -S31AFE00E26A063E280000094181000C7D49537848000030380BFF0D -S31AFE00E27F9F280000054181000C392BFFA94800001C5500063EE3 -S31AFE00E294200000057C0001107C0003B8392BFFC97C0948387CDB -S31AFE00E2A909300040800020896300007C0531D62C0B00007CA07C -S31AFE00E2BE4A14386300014082FF0C480000142C0B002E418200FC -S31AFE00E2D30C386000004800001C7CA060307C840378398CFFF847 -S31AFE00E2E84200FECC909F00003860000183E1000C382100104E22 -S31AFE00E2FD8000209421FFE87C0802A693A1000C93C1001093E188 -S31AFE00E31200149001001C890300033FA0000188A3000088C3004C -S31AFE00E3270188E300023C80FE0138844A88387DA2A04BFFD70509 -S31AFE00E33C387DA2A08001001C7C0803A683A1000C83C100108300 -S31AFE00E351E10014382100184E800020812300007C09180041825B -S31AFE00E366002081230004908900008003000490640000900400AE -S31AFE00E37B04908300044E80002090890004908900009124000095 -S31AFE00E390912400044E8000207C6B1B78806B00007C0358004150 -S31AFE00E3A582001880030000900B000081230000916900044E8037 -S31AFE00E3BA0020386000004E8000209421FFE87C0802A693A100A8 -S31AFE00E3CF0C93C1001093E100149001001C3D0000003CE0000037 -S31AFE00E3E439283C3839673C3091283C3891673C303D400001919F -S31AFE00E3F92900043BCAA2C0916B00043FA000003BE000107FC42A -S31AFE00E40EF378387D3C304BFFFF4937FFFFFF3BDE06104082FFB3 -S31AFE00E423EC8001001C7C0803A683A1000C83C1001083E100142E -S31AFE00E438382100184E8000209421FFF87C0802A69001000C8077 -S31AFE00E44D040000A124000490030010B123001480040000A10435 -S31AFE00E46200043D20000039693C4890093C483D400000B10B00C4 -S31AFE00E47704906A3C54480000158001000C7C0803A63821000886 -S31AFE00E48C4E8000209421FFF87C0802A69001000C812300003838 -S31AFE00E4A18300108009000038A000007C0803A64E8000218001D1 -S31AFE00E4B6000C7C0803A6382100084E8000209421FF587C080233 -S31AFE00E4CBA67D80002693410090936100949381009893A1009C07 -S31AFE00E4E093C100A093E100A4900100AC9181008C3D20000039A6 -S31AFE00E4F529320083A9004C3D6000002C1D00007C7B1B787C9AB5 -S31AFE00E50A23787CBC2B7883EB3C543BC00005418200547FBFEB44 -S31AFE00E51F78815F0000801F000C816A00243D2000002C00000048 -S31AFE00E53439293734916A0028912A00244082002C800A00003C4B -S31AFE00E54980000038843C487FE3FB7838A000007C0803A64E8051 -S31AFE00E55E0021801F000C60000001901F000C2E1D000048000029 -S31AFE00E5733C813F00007FE3FB788009001C7C0803A64E800021FD -S31AFE00E5883D20000039293200800900483C60000360630D407C8D -S31AFE00E59D0803A64E80002137DEFFFF408100E4813F00007FE3EB -S31AFE00E5B2FB788009000C7C0803A64E8000212C0300004182FF3B -S31AFE00E5C7B0813F00003D6000008149001038A0000238EB3C40DB -S31AFE00E5DC9361000893410010938100147FE3FB78388100083850 -S31AFE00E5F1DC000E7D4803A63800000E392000009001000C912BC1 -S31AFE00E6063C404E8000213D20000080093C503FC000002C0000F3 -S31AFE00E61B00418200384BFFF6117C7D1B783C60FE0138634A94FA -S31AFE00E6304BFFD4957F63DB783880000E4BFFDF617F43D3787F0D -S31AFE00E64584E3784BFFDF557FA3EB784BFFF64D801E3C402C0007 -S31AFE00E65A0000408200307FFDFB787FDFF378813D00007FA3EB32 -S31AFE00E66F788009001C7C0803A64E800021801F3C402C00000012 -S31AFE00E6844182FFE47FBFEB7841920018813F00003800000081D2 -S31AFE00E6996900289009002891690024800100AC8181008C7C08B9 -S31AFE00E6AE03A683410090836100948381009883A1009C83C1003E -S31AFE00E6C3A083E100A47D808120382100A84E8000209421FFF85D -S31AFE00E6D87C0802A69001000C3D20000038093C407C0400004086 -S31AFE00E6ED8200103800000190093C404800001881230000816946 -S31AFE00E7020028800B00087C0803A64E8000218001000C7C080313 -S31AFE00E717A6382100084E8000209421FFE07C0802A69361000C34 -S31AFE00E72C9381001093A1001493C1001893E1001C900100243D7A -S31AFE00E741200000392932008389004C3D6000002C1C00007C7DD5 -S31AFE00E7561B787C9B237883CB3C54418200547F9EE378815E0019 -S31AFE00E76B00801E000C816A00243D2000002C0000003929373486 -S31AFE00E780916A0028912A00244082002C800A00003C8000003812 -S31AFE00E795843C487FC3F37838A000007C0803A64E800021801E24 -S31AFE00E7AA000C60000001901E000C813E00007FC3F3788009003A -S31AFE00E7BF1C7C0803A64E8000213C60000038633C384BFFFBC950 -S31AFE00E7D47C7F1B7941820054393F000CA009000C817F000C81C0 -S31AFE00E7E949000481090008B01D000C917D0000915D0004911DB1 -S31AFE00E7FE000880BF00087F63DB7838A5FFF2389F001A4BFFCAAB -S31AFE00E813B13C60000038633C307FE4FB784BFFFB3D807F000839 -S31AFE00E82848000008386000002C1C000041820018813E000038D5 -S31AFE00E83D000000816900289009002891690024800100247C08A8 -S31AFE00E85203A68361000C8381001083A1001483C1001883E10008 -S31AFE00E8671C382100204E8000209421FFE87C0802A693A1000C0D -S31AFE00E87C93C1001093E100149001001C7CA02B797C0903A640BC -S31AFE00E89181003C7C9F23787FC902A63FA00000807F000080BFEE -S31AFE00E8A60004809D3C444BFFCA15801D3C44813F000437DEFF9A -S31AFE00E8BBFF7C004A143BFF0008901D3C444082FFD88001001CC6 -S31AFE00E8D07C0803A683A1000C83C1001083E10014382100184E47 -S31AFE00E8E58000209421FF607C0802A69361008C9381009093A1E2 -S31AFE00E8FA009493C1009893E1009C900100A47C7E1B783C600017 -S31AFE00E90F007C9B237838633C304BFFFA817C7C1B787F89FE7070 -S31AFE00E9247D20E2787C004850817E00007C00FE70393C000C7DE8 -S31AFE00E9393F0038800B001493E100089361000C7FC3F3783881CD -S31AFE00E94E000838A000017C0803A64E8000213D20000080093C91 -S31AFE00E963502C000000418200384BFFF2C57C7D1B783C60FE01FC -S31AFE00E97838634AA44BFFD1497FE3FB783880000E4BFFDC15388B -S31AFE00E98D7F000E389BFFF24BFFDC097FA3EB784BFFF301813E6F -S31AFE00E9A20000800900282C0000004182005C3C600000386339F0 -S31AFE00E9B758389F001E38A000044BFFD3752C030000418200405A -S31AFE00E9CC815E00007FC3F378812A00287F64DB78800900043DD3 -S31AFE00E9E160FE017C0803A683AA0014396BE8703D20000093E97B -S31AFE00E9F63C44916A00144E800021813E000093A900142C1C0033 -S31AFE00EA0B00418200183C600000937C000838633C387F84E378F7 -S31AFE00EA204BFFF93D800100A47C0803A68361008C838100908384 -S31AFE00EA35A1009483C1009883E1009C382100A04E80002094211B -S31AFE00EA4AFFF87C0802A69001000C3D20000080693C5481630039 -S31AFE00EA5F00800B00207C0803A64E8000218001000C7C0803A61D -S31AFE00EA74382100084E8000209421FFF87C0802A69001000C7C49 -S31AFE00EA89641B783C60FE0138634AB44BFFD0318001000C7C08ED -S31AFE00EA9E03A6382100084E8000209421FFF07C0802A693E10023 -S31AFE00EAB30C900100143D2000013BE92588801F001C2C00000083 -S31AFE00EAC84082002C90692588909F00044800049D7C631B7940D2 -S31AFE00EADD82001C801F0008392000017C0000D0913F001C901F9A -S31AFE00EAF2001038600000800100147C0803A683E1000C382100D8 -S31AFE00EB07104E8000203D200001392925888009001C7C6B1B786B -S31AFE00EB1C2C0000004082000C386000074E800020800900147C40 -S31AFE00EB310B00404180001480090018386000007C0B00404D80DE -S31AFE00EB460020386000014E8000203D20000139692588800B00D7 -S31AFE00EB5B1C2C0000004182001C812B001438600000912400006D -S31AFE00EB70800B0018900500004E800020386000074E8000203D9C -S31AFE00EB8520000139692588800B001C7C6A1B782C0000004182F8 -S31AFE00EB9A001C812B000838600000912A0000800B000C90040014 -S31AFE00EBAF004E800020386000074E8000209421FFD87C0802A61A -S31AFE00EBC49321000C93410010936100149381001893A1001C937D -S31AFE00EBD9C1002093E100249001002C3D200001800925A47C7F42 -S31AFE00EBEE1B782C0000007C9E23787CBA2B783B80000040820044 -S31AFE00EC030C38600007480000F83D20000183A925883C80FE011B -S31AFE00EC183CA0FE013884FAA038A5FBC87CA428507FA3EB784BAA -S31AFE00EC2DFFC6957CBFF214380000807C0903A639200000612073 -S31AFE00EC4210003D600E007C0004AC7D398BA67D788BA67C198BA5 -S31AFE00EC57A67D788BA6392900104200FFE03C0004004C00012C8C -S31AFE00EC6C7C108BA64C00012C3D20000139292588800900107CD7 -S31AFE00EC81BE2B783C60FE017FFF00383F20FE017D3B4B78386354 -S31AFE00EC964AF07FE4FB784BFFCE294800001C801B000838794B11 -S31AFE00ECAB085400F87E7C0002147FFF02144BFFCE0D7C1FF04068 -S31AFE00ECC0408000207FE3FB787FA803A64E800021480003657C9B -S31AFE00ECD57C1B794182FFCC93FA00003C0002004C00012C7C10B8 -S31AFE00ECEA8BA64C00012C3C60FE0138634B0C4BFFCDCD7F83E311 -S31AFE00ECFF788001002C7C0803A68321000C83410010836100142E -S31AFE00ED148381001883A1001C83C1002083E10024382100284ECF -S31AFE00ED298000209421FFD07C0802A692E1000C930100109321AA -S31AFE00ED3E0014934100189361001C9381002093A1002493C100CC -S31AFE00ED532893E1002C900100343D600001392B25888009001CC6 -S31AFE00ED687CBE2B782C0000007CD833787C7C1B787C9D23783B10 -S31AFE00ED7D4000004082000C386000074800011C836B25883C8014 -S31AFE00ED92FE013CA0FE013884FBC838A5FD0C7CA428507F63DBD4 -S31AFE00EDA7784BFFC5197CBDF214380000807C0903A63920000035 -S31AFE00EDBC612010003D600E007C0004AC7D398BA67D788BA67C4D -S31AFE00EDD1198BA67D788BA6392900104200FFE03C0004004C009A -S31AFE00EDE6012C7C108BA64C00012C3C60FE0138634B107FA4EB12 -S31AFE00EDFB787F86E3784BFFCCC53D2000013EE0FE013B292588C0 -S31AFE00EE104800002038774B084BFFCCAD57E0F87E7C0002147FFE -S31AFE00EE25BD02147FDFF0507F9C02142C1E00004081005080193E -S31AFE00EE3A00087FC5F3787F8500007F83E3787FA4EB784FFEE3F1 -S31AFE00EE4F827D200026552907FE7D2900D07C0048787CA948388B -S31AFE00EE647D2503787F6803A67CBF2B784E800021480001C17C95 -S31AFE00EE797A1B794182FF98939800003C0002004C00012C7C10AA -S31AFE00EE8E8BA64C00012C3C60FE0138634B0C4BFFCC297F43D360 -S31AFE00EEA378800100347C0803A682E1000C830100108321001441 -S31AFE00EEB8834100188361001C8381002083A1002483C10028830A -S31AFE00EECDE1002C382100304E80002028030007418100883D608F -S31AFE00EEE2FE01396B4C205460103A7D4B002E3D20FE0139294C0A -S31AFE00EEF7207D4A4A147D4903A64E8004203C60FE0138634B30AB -S31AFE00EF0C4E8000203C60FE0138634B504E8000203C60FE01386C -S31AFE00EF21634B684E8000203C60FE0138634B804E8000203C6048 -S31AFE00EF36FE0138634B9C4E8000203C60FE0138634BB44E800050 -S31AFE00EF4B203C60FE0138634BC44E8000203C60FE0138634BE8F1 -S31AFE00EF604E8000203C60FE0138634C0C4E8000209421FFE07C1E -S31AFE00EF750802A693A1001493C1001893E1001C900100243D207D -S31AFE00EF8A000183E925883C80FE013CA0FE013884FA0438A5FA2D -S31AFE00EF9FA07CA428507FE3FB784BFFC3193FC000013BA0000843 -S31AFE00EFB438610008380000807C0903A639200000612010003D96 -S31AFE00EFC9600E007C0004AC7D398BA67D788BA67C198BA67D78CD -S31AFE00EFDE8BA6392900104200FFE07FE803A64E8000217D3DF1AC -S31AFE00EFF3D63D600001396B25883D29FE003C00FE00912B0018CE -S31AFE00F008900B001493CB000893AB000C38600000800100247CD7 -S31AFE00F01D0803A683A1001483C1001883E1001C382100204E80CE -S31AFE00F03200209421FFF07C0802A693E1000C900100143C000074 -S31AFE00F0477E7C7F1B786000007E7FE90039418200503C60FE0177 -S31AFE00F05C38634C407FE4FB784BFFCA613C000010600000107FEE -S31AFE00F071E9003938600004408200303C600020606300207FE3D5 -S31AFE00F08618387C6300D07C63FE707C6018F8546307BC54000764 -S31AFE00F09B387C6303784800000838600000800100147C0803A620 -S31AFE00F0B083E1000C382100104E8000203D20FE00392920007C27 -S31AFE00F0C50348407C802378396000004181000C7C0048404181E3 -S31AFE00F0DA001C3D20FE01388928D07C032040418100107C00209F -S31AFE00F0EF4040810008396000017D635B784E8000209421FF68A8 -S31AFE00F1047C0802A693410080936100849381008893A1008C930B -S31AFE00F119C1009093E100949001009C3FA000003BBD320090615D -S31AFE00F12E0008819D00347C7A1B783860FFFF7D8803A63B8100E5 -S31AFE00F143083B6100A03800000139600000938100789081000CF4 -S31AFE00F15890A1001090C1001490E100189101001C91210020915E -S31AFE00F16D4100249801007099610071936100744E800021813D9B -S31AFE00F18200347C7C1B78386000017D2803A64E80002138810026 -S31AFE00F197707F43D3784BFFC9B1801D00347F83E3787C0803A6C3 -S31AFE00F1AC4E8000218001009C7C0803A6834100808361008483E2 -S31AFE00F1C181008883A1008C83C1009083E10094382100984E80F1 -S31AFE00F1D600209421FFE07C0802A6934100089361000C93810050 -S31AFE00F1EB1093A1001493C1001893E1001C900100243FA0000023 -S31AFE00F2003BBD3200813D00347C7A1B783860FFFF7D2803A67CF0 -S31AFE00F2159C23784E800021813D00347C7B1B78386000017D2800 -S31AFE00F22A03A64E8000217F84E3787F43D3784BFFD365801D00A9 -S31AFE00F23F347F63DB787C0803A64E800021800100247C0803A65F -S31AFE00F254834100088361000C8381001083A1001483C1001883BA -S31AFE00F269E1001C382100204E8000209421FFE87C0802A693E1EC -S31AFE00F27E00149001001C3FE00001813F03C03881000880690069 -S31AFE00F293008009001C7C0803A64E8000212C0300004082FFE4CD -S31AFE00F2A88001001C7C0803A683E10014382100184E8000209418 -S31AFE00F2BD21FFE07C0802A69381001093A1001493C1001893E1C0 -S31AFE00F2D2001C900100243BE000003FA00001813D03C03881001D -S31AFE00F2E708806900008009001C7C0803A64E8000212C0300002D -S31AFE00F2FC418202A4896100082C0B000441820040408100102C63 -S31AFE00F3110B00184182002C480000382C0B000241810030392BC2 -S31AFE00F326FFFF7D694B787D29FE70380900017FE948387D3F032A -S31AFE00F33B78480000143860FFFB480002683860FFFC4800026064 -S31AFE00F3502C1F00004182FF8C3D200001816903C03BC903C080B9 -S31AFE00F3656B0000800B001C389E04087C0803A64E8000212C0350 -S31AFE00F37A000041820224813D03C0389E040980690000800900BB -S31AFE00F38F1C7C0803A64E8000212C0300004182020488010008A4 -S31AFE00F3A43BE00000680000017C0000D07C00FE707C0900F855C4 -S31AFE00F3B92906305400056A7C004B787C1F0000393E0004901E16 -S31AFE00F3CE0410913E0404408000487FDCF3787D3D4B783FC000F1 -S31AFE00F3E301813E03C038810008806900008009001C7C0803A612 -S31AFE00F3F84E8000212C030000418201A0880100087C1DF9AE8128 -S31AFE00F40D3C04103BFF00017C1F48004180FFCC3FC00001813E2D -S31AFE00F42203C03BFE03C0806900008009001C389F040A7C080318 -S31AFE00F437A64E8000212C03000041820160801F04142C000000F1 -S31AFE00F44C41820024813E03C0389F040B806900008009001C7C4E -S31AFE00F4610803A64E8000212C030000418201343D2000013BC969 -S31AFE00F47603C0889E040888BE04097C862A782C0600FF4182009D -S31AFE00F48B283C60FE0138634C504BFFFC6D809E0410387E0004CF -S31AFE00F4A04BFFFD394BFFFDD13860FFFA48000100801E04142CFF -S31AFE00F4B500000041820088801E041038C000007C0600003BE0AC -S31AFE00F4CA0000408000403D2000007FEBFB7839093740387E0080 -S31AFE00F4DF047C0A03787D2358AE54C0C23E7C004A787C00021485 -S31AFE00F4F4396B00017D28022E7C0B500054C0442E7C064A7841A3 -S31AFE00F50980FFDC3D200001392903C08889040A88A9040B5480D8 -S31AFE00F51E402E7C002B787C060000418200803C60FE0138634C00 -S31AFE00F533704BFFFBCD3860FFF948000070801E041038C000004B -S31AFE00F5487C0600003BE00000408000287FEBFB78387E00047C12 -S31AFE00F55D0A03787C0358AE396B00017C0B50007C06021454061D -S31AFE00F572043E4180FFEC3D200001888907CA54C5063E7C04284D -S31AFE00F58700418200203C60FE0138634C9C4BFFFB6D3860FFF928 -S31AFE00F59C480000103860FFFD4800000838600000800100247C61 -S31AFE00F5B10803A68381001083A1001483C1001883E1001C38210F -S31AFE00F5C600204E8000209421FFD87C0802A69301000893210016 -S31AFE00F5DB0C93410010936100149381001893A1001C93C100202F -S31AFE00F5F093E100249001002C2C0400037CBE2B7840820044385F -S31AFE00F60500FFFE901E0000480001103FA00001813D03C03880CF -S31AFE00F61A0006806900008009000C3BBD03C07C0803A64E80009D -S31AFE00F62F2138000001939D0410981D040C38600000480000E09F -S31AFE00F6443FA000003BBD3200813D00343860FFFF7D2803A63F8F -S31AFE00F6598000013B5C03C07FB8EB784E800021813D00347C7B4B -S31AFE00F66E1B787D2803A63BE000133F2000014E800021801D0088 -S31AFE00F68314813D00347F63DB787D2803A6901C03C04E80002187 -S31AFE00F698813C03C038800007806900008009001438A003E87C55 -S31AFE00F6AD0803A64E8000213920000038000001913A0418901A81 -S31AFE00F6C20414913A04104BFFFBF57C7C1B794182FF402C1CFF29 -S31AFE00F6D7FD40820030813800483C6000076063A1207D2803A6B5 -S31AFE00F6EC4E800021813903C038800043806900008009000C7CA4 -S31AFE00F7010803A64E8000217FE0FB782C0000003BFFFFFF418157 -S31AFE00F716FFB4939E00003860FFFF8001002C7C0803A683010002 -S31AFE00F72B088321000C83410010836100148381001883A1001CE5 -S31AFE00F74083C1002083E10024382100284E8000209421FFD07C55 -S31AFE00F7550802A692E1000C930100109321001493410018936120 -S31AFE00F76A001C9381002093A1002493C1002893E1002C90010031 -S31AFE00F77F343D2000017C9B2378396903C0812B04187F60FE70B3 -S31AFE00F7947C1B005054000FFE210900007D2849147D2A00397C8C -S31AFE00F7A97A1B787CB72B783B0000003F200001418201787D7C94 -S31AFE00F7BE5B78801C04102C000000408200F03BC000134BFFFA7F -S31AFE00F7D3ED7C7F1B794082004C3D4000013BAA03C0897D04085B -S31AFE00F7E8893D040C7C0B4800418200A03809FFFF5400063E7CAD -S31AFE00F7FD0B000040820020812A03C03880000680690000800968 -S31AFE00F812000C7C0803A64E800021480000283BE0FFF82C1FFFE9 -S31AFE00F827FC41820044813903C038800043806900008009000CCF -S31AFE00F83C7C0803A64E8000217FC0F3782C0000003BDEFFFF4169 -S31AFE00F85181FF802C1F00004080006093F700003800FFFF901CC7 -S31AFE00F8660410480000C8813903C03880000680690000800900B8 -S31AFE00F87B0C7C0803A64E80002138000001901C04184BFFFFC83A -S31AFE00F890813903C038800006806900008009000C7C0803A64E2B -S31AFE00F8A5800021893D040C39290001993D040C4BFFFFA083BC62 -S31AFE00F8BA0410809C04047F9BE8007F43D3784FFEEB827C0000B8 -S31AFE00F8CF26540007FE7C0000D07F6900787FBD00387FBD4B7882 -S31AFE00F8E47FA5EB784BFFB9D97F7DD850815C04187F60FE707CC2 -S31AFE00F8F91B0050813C0410817C040454000FFE210A00007D4864 -S31AFE00F90E51147D4800397D6BEA147D3D4850913C0410917C0453 -S31AFE00F923047F5AEA147F18EA144082FE947F03C3788001003495 -S31AFE00F9387C0803A682E1000C830100108321001483410018836F -S31AFE00F94D61001C8381002083A1002483C1002883E1002C382163 -S31AFE00F96200304E8000203803000828000007418100883D60FE17 -S31AFE00F97701396B4D705400103A7D4B002E3D20FE0139294D7006 -S31AFE00F98C7D4A4A147D4903A64E8004203C60FE0138634CC84E44 -S31AFE00F9A18000203C60FE0138634CDC4E8000203C60FE0138632B -S31AFE00F9B64CFC4E8000203C60FE0138634D084E8000203C60FEEF -S31AFE00F9CB0138634D144E8000203C60FE0138634D204E800020A7 -S31AFE00F9E03C60FE0138634D304E8000203C60FE0138634D444E58 -S31AFE00F9F58000203C60FE0138634D5C4E8000207D588AA6554AE8 -S31AFE00FA0A0FFE2C0A000041820040380000807C0903A63920005E -S31AFE00FA1F00612010003D600E007C0004AC7D398BA67D788BA659 -S31AFE00FA347C198BA67D788BA6392900104200FFE03C0004007C7E -S31AFE00FA490004AC7C188BA63D60FE00380000AA980B055539205C -S31AFE00FA5E0055992B02AA38000090980B0555892B00002C0A001B -S31AFE00FA730099230000880B0001392000FF98030001992B000072 -S31AFE00FA88418200103D6002007C0004AC7D788BA6386000004EBB -S31AFE00FA9D8000207C6A1B787CF88AA654E70FFE2C070000418255 -S31AFE00FAB20040380000807C0903A639200000612010003D600E80 -S31AFE00FAC7007C0004AC7D398BA67D788BA67C198BA67D788BA601 -S31AFE00FADC392900104200FFE03C0004007C0004AC7C188BA655F8 -S31AFE00FAF1480010396000AA9968055539200055992802AA3800B3 -S31AFE00FB0600809808055599680555992802AA392000327D290370 -S31AFE00FB1BA62F87000038000030980A0000396A00014200000085 -S31AFE00FB303D20004C7D2903A6880A00005400067261294B407DD4 -S31AFE00FB452903A65400063E886A0000546906727C0900004182CE -S31AFE00FB5A0014706000207D204B78408200084200FFE438000007 -S31AFE00FB6FFF98080000892A00007D6A5B782C0900FF3D200001DF -S31AFE00FB844082001C3529FFFF40810014880A0000394A00012C17 -S31AFE00FB990000FF4182FFEC7D2BFE707D604A787C0058507C0051 -S31AFE00FBAEFE707C6300384D9E00203C0002007C0004AC7C188B25 -S31AFE00FBC3A64E8000209421FFF093C1000893E1000C7D588AA610 -S31AFE00FBD8554A0FFE2C0A000041820040380000807C0903A63910 -S31AFE00FBED200000612010003D000E007C0004AC7D398BA67D185B -S31AFE00FC028BA67C198BA67D188BA6392900104200FFE03D200438 -S31AFE00FC17007C0004AC7D388BA62C0500002F8A0000546A00100A -S31AFE00FC2C408100A03BC000AA3BE00055398000A038C000FF9B5E -S31AFE00FC41CA05559BEA02AA998A05558804000039200031980327 -S31AFE00FC560000380000327C0903A63904000138E300013929FF42 -S31AFE00FC6BFF4200FFFC880300007D2903A6540006725400063E06 -S31AFE00FC8089630000556906727C09000041820014716000207D7F -S31AFE00FC95204B78408200084200FFE498CA0000892300008804EA -S31AFE00FCAA00007D0443787C0900007CE33B784182000C39600006 -S31AFE00FCBFFF4800000C34A5FFFF4181FF787CA8FE707D002A7818 -S31AFE00FCD47C0040507C00FE70392000FF992A00007D6B003841A5 -S31AFE00FCE99E00103D2002007C0004AC7D388BA67D635B7883C1EC -S31AFE00FCFE000883E1000C382100104E8000209421FFF87C0802EC -S31AFE00FD13A69001000C3803FFFE2800001D418100A03D60FE0119 -S31AFE00FD28396B4D905400103A7D4B002E3D20FE0139294D907D95 -S31AFE00FD3D4A4A147D4903A64E80042038600002480000783860B2 -S31AFE00FD5200414BFF999954637F3E2C0300024182004028030008 -S31AFE00FD6702418100102C030001418200384800004C2C030004BD -S31AFE00FD7C418200242C0300084082003C386000084800003838FA -S31AFE00FD9160000E480000303860000C480000283860000448007B -S31AFE00FDA6002038600005480000183860000A4800001038600095 -S31AFE00FDBB0B480000083860000F8001000C7C0803A63821000812 -S31AFE00FDD04E8000203D20000081693BF0806B00985463C23E4E32 -S31AFE00FDE58000209421FFF87C0802A69001000C7C641B783860E5 -S31AFE00FDFA00404BFF99058001000C7C0803A6382100084E8000DF -S31AFE00FE0F209421FFF87C0802A69001000C386000414BFF98CDBD -S31AFE00FE2460640600548004203D2000005484045E900939403822 -S31AFE00FE396000414BFF98C58001000C7C0803A6382100084E807F -S31AFE00FE4E00209421FFF87C0802A69001000C386000414BFF984B -S31AFE00FE638D3D20000080893940546305E8380000007C642378C3 -S31AFE00FE7890093940386000414BFF98818001000C7C0803A63831 -S31AFE00FE8D2100084E8000204E8000204E8000209421FFF87C0839 -S31AFE00FEA202A69001000C386000404BFF98413D20FE0139299FAA -S31AFE00FEB7C47C634A78200300007C6019148001000C7C0803A6E7 -S31AFE00FECC382100084E8000209421FFF87C0802A69001000C3821 -S31AFE00FEE16000404BFF980938830004386000404BFF9811800172 -S31AFE00FEF6000C7C0803A6382100084E8000209421FFF87C080239 -S31AFE00FF0BA69001000C3D200000800939442C0000004082001039 -S31AFE00FF203800000190093944480008118001000C7C0803A63826 -S31AFE00FF352100084E8000203D200000800939482C0000004C823B -S31AFE00FF4A002038000001900939487D1E9AA67508FFFF3D200078 -S31AFE00FF5F017D2903A638008001B00809C07C0902A6600086A04C -S31AFE00FF747C0903A64200000080080ABC3D600001600000C09068 -S31AFE00FF89080ABC81280AB8616B00A2552906AE91280AB8916812 -S31AFE00FF9E09F07CE902A690E80AE038002800B0083E8039683E2D -S31AFE00FFB38038002808B00B000239200091B12809C0394000018A -S31AFE00FFC89148003038000018980B0004980B0005B14B0006B0C6 -S31AFE00FFDDEB0028B0EB002CB0EB002EB14B003039282800B0E91A -S31AFE00FFF200023800B000B008280038082810900900043968284E -S31AFE0100070838082820B14B0002900B000439202000B128280830 -S31AFE01001C380000FF98080A863920000599280A8A38004820B060 -S31AFE010031080A8239204823B1280A824E80002039233E80A00947 -S31AFE01004600207D4302147D4B5378A00A000070088000418200B2 -S31AFE01005B28A00A00007008200041820010A00900027D430214CD -S31AFE01007048000008394A00087C0A58004082FFD47D495378A0F7 -S31AFE010085090000700080004082FFF87D2A4B787C090378A00A9B -S31AFE01009A0000700B100041820014A00A00007000EFFFB00A0028 -S31AFE0100AF00B12A0002A12A00023900000038090001B00A000256 -S31AFE0100C4816A00045529043E7C8B49AEA00A000060008000B03B -S31AFE0100D90A0000A12A000071208000418200647D4B53787D0AE6 -S31AFE0100EE43783D0000076108FFFF394A00017C0A400040820086 -S31AFE01010338A1230A82394000007129FFFDB1230A82A00B000040 -S31AFE0101185400047EB00B0000A1230A8261290002B1230A82A060 -S31AFE01012D0B000060008000B00B0000A00B0000700980004082AC -S31AFE010142FFB87D6A5B787D495378A0090000700080004082FF47 -S31AFE010157F87D2A4B78B00A00024E80002038E33E80A1070010F1 -S31AFE01016C7C03422E7D434214700680004182000C386000004EC9 -S31AFE010181800020812A0004396000008809000098040000B0CAD5 -S31AFE0101960002812A0004996900007C03422E600080007C03430B -S31AFE0101AB2E7D388AA655290FFE2C09000041820028812A0004CD -S31AFE0101C0A00700062C000000408100187C004BAC7C0004AC34A0 -S31AFE0101D500FFF0392900104181FFF0386000014E8000209421C2 -S31AFE0101EAFFE87C0802A693E100149001001C7C7F1B787FE3FBC8 -S31AFE0101FF78388100084BFFFF612C0300004182FFF08861000831 -S31AFE0102148001001C7C0803A683E10014382100184E800020949B -S31AFE01022921FFE87C0802A693A1000C93C1001093E100149001CA -S31AFE01023E001C7CBF2B787FE0FB782C0000007C7D1B787C9E23E5 -S31AFE010253783BFFFFFF41820024889E00007FA3EB784BFFFDDD2B -S31AFE0102687FE0FB782C0000003BDE00013BFFFFFF4082FFE48007 -S31AFE01027D01001C7C0803A683A1000C83C1001083E100143821C8 -S31AFE01029200184E8000209421FFE87C0802A693A1000C93C100F0 -S31AFE0102A71093E100149001001C7CBF2B787FE0FB782C0000001C -S31AFE0102BC7C7D1B787C9E23783BFFFFFF418200247FA3EB784BF8 -S31AFE0102D1FFFF197FE0FB782C000000987E00003BDE00013BFF94 -S31AFE0102E6FFFF4082FFE48001001C7C0803A683A1000C83C1001D -S31AFE0102FB1083E10014382100184E8000209421FFE87C0802A63A -S31AFE0103109381000893A1000C93C1001093E100149001001C3DA1 -S31AFE0103252000008009394C3D6000001FE0000A3B8B32007C7DF9 -S31AFE01033A1B787C9E237848000014813C0048386000647D28035C -S31AFE01034FA64E8000217FA3EB787FC4F3784BFFFE097C631B7908 -S31AFE010364408200102C1F00003BFFFFFF4082FFD48001001C7C7C -S31AFE0103790803A68381000883A1000C83C1001083E10014382158 -S31AFE01038E00184E8000209421FF807C8023782C00000590A10022 -S31AFE0103A31090C1001490E100189101001C9121002091410024CC -S31AFE0103B89081000C386000004182002C28000005418100102C5C -S31AFE0103CD00000441820144480002B42C000006418202782C0071 -S31AFE0103E2000741820278480002A03D60FE01800B4EDC3D20FE27 -S31AFE0103F70139294E087D2902147D2903A64E8004203D20FF00DA -S31AFE01040C61290014800900007C0006AC60000400900900007C08 -S31AFE0104210006AC480000E03D20FF0061290200A00900007C00DA -S31AFE01043606AC60000008B00900007C0006AC480000C03D20FF47 -S31AFE01044B0061290200A00900007C0006AC60000004B009000017 -S31AFE0104607C0006AC480000A03D20FF0061290240A00900007C1F -S31AFE0104750006AC60000004B00900007C0006AC480000803D204B -S31AFE01048AFF0061290220A00900007C0006AC60000008B00900B5 -S31AFE01049F007C0006AC480000603D20FF0061290220A0090000BC -S31AFE0104B47C0006AC60000004B00900007C0006AC480000403DF0 -S31AFE0104C920FF0061290940800900007C0006AC600000809009F7 -S31AFE0104DE00007C0006AC480000203D20FF0061290948800900AE -S31AFE0104F3007C0006AC60000010900900007C0006AC3D2000002D -S31AFE0105083800000190093950480001783D2000008069395038B6 -S31AFE01051D000000900939503D60FE01800B4FC43D20FE013929AA -S31AFE0105324EF07D2902147D2903A64E8004203D20FF006129008E -S31AFE01054714800900007C0006AC540005A8900900007C0006AC07 -S31AFE01055C4800012C3D20FF0061290200A00900007C0006AC70E1 -S31AFE01057100FFF75400043EB00900007C0006AC480001083D204F -S31AFE010586FF0061290200A00900007C0006AC7000FFFB54000437 -S31AFE01059B3EB00900007C0006AC480000E43D20FF0061290240CD -S31AFE0105B0A00900007C0006AC7000FFFB5400043EB00900007C25 -S31AFE0105C50006AC480000C03D20FF0061290220A00900007C0035 -S31AFE0105DA06AC7000FFF75400043EB00900007C0006AC4800002A -S31AFE0105EF9C3D20FF0061290220A00900007C0006AC7000FFFB0D -S31AFE0106045400043EB00900007C0006AC480000783D20FF0061E2 -S31AFE010619290940800900007C0006AC5400066E900900007C00C1 -S31AFE01062E06AC480000583D20FF0061290948800900007C00061E -S31AFE010643AC54000734900900007C0006AC48000038386000364D -S31AFE0106584800003039610008380100883920000398610071994E -S31AFE01066D21007090010074916100783D200000800B000880699A -S31AFE010682394C9009394C382100804E8000209421FFE87C0802D2 -S31AFE010697A693C1001093E100149001001C7C9E237839200000FC -S31AFE0106AC7C7F1B78913E0000881F0A86700B00014182006038C9 -S31AFE0106C1000001981F0A86A13F2800391F28007120800040827C -S31AFE0106D6003C8128000439400001880900003960B00098010034 -S31AFE0106EB08B1480002B17F280038610008388000014BFFAAA5A7 -S31AFE0107002C0300004182000C38000001901E0000380000109022 -S31AFE0107151F094C392000017D234B788001001C7C0803A683C18B -S31AFE01072A001083E10014382100184E8000209421FFF07C0802A4 -S31AFE01073FA693C1000893E1000C900100143D2000003BE93200C6 -S31AFE010754813F00343860FFFF7D2803A64E8000217C7E1B787CBB -S31AFE0107691E9AA67400FFFF3D200000800939542C000000408245 -S31AFE01077E009438000001900939544BFFF7B5813F0034386000EC -S31AFE010793007D2803A64E800021815F00147C1E9AA67400FFFFCF -S31AFE0107A83D20FE01900A000039290228912A00043D60FE013921 -S31AFE0107BD6B02983D20FE01916A000839290040912A000C3D60B8 -S31AFE0107D2FE01396B01E83D20FE01916A001039290394912A0066 -S31AFE0107E7143D60FE01396B06903D20FE01916A00183929030832 -S31AFE0107FC912A001C801F00347FC3F3787C0803A64E80002180F0 -S31AFE0108110100147C0803A683C1000883E1000C382100104E8098 -S31AFE01082600209421FFF07C0802A693E1000C900100143D200046 -S31AFE01083B0080693C587C9F23782C030000418200084BFFAA750D -S31AFE010850881F00002C0000024082002C3C80000038843C483897 -S31AFE0108657F001C38A000064BFFB4C92C03000040820010801F99 -S31AFE01087A00103D20000090093958800100147C0803A683E100A7 -S31AFE01088F0C382100104E8000209421FE887C0802A69321015C74 -S31AFE0108A493410160936101649381016893A1016C93C101709336 -S31AFE0108B9E101749001017C3D20000090693C58386100187C7931 -S31AFE0108CE1B783880000038A0012C4BFFAAC13D20000080893C69 -S31AFE0108E34839693C48A06B00043D201234394000003CE0000046 -S31AFE0108F838C0000161295555396000063907395898C10019993E -S31AFE01090D61001A9121001C9947395899480003380000FF9081EA -S31AFE0109220034B06100389801015198C10018994800019948001F -S31AFE010937023CA0FE017D1D437838A508289801014898010149A2 -S31AFE01094C9801014A9801014B9801014C9801014D9801014E987B -S31AFE01096101014F980101503861000838800044480000D53B80CC -S31AFE01097600023B4101483F60000048001F0D7C7E1B787F23CB93 -S31AFE01098B783880012C7F45D37838C0004338E0004448000249BC -S31AFE0109A048000AA1881B39582C00000040820028881D00012C2E -S31AFE0109B50000004082001C881D00022C000000408200108BFD1D -S31AFE0109CA00032C1F00004182001438600044480000BD38600075 -S31AFE0109DF004800003848001EA97C7E1850280307CF4081FFB09C -S31AFE0109F47F80E3782C0000003B9CFFFF4181FF80386000444829 -S31AFE010A0900008D3D20000093E93C503860FFFF8001017C7C08C9 -S31AFE010A1E03A68321015C83410160836101648381016883A10114 -S31AFE010A336C83C1017083E10174382101784E8000203D20000092 -S31AFE010A4881293C5C2C09000041820024A00900047C00200040AD -S31AFE010A5D82000C3860FFFF4E800020812900002C0900004082CC -S31AFE010A72FFE43D20000080093C5C90693C5CB083000490A3000E -S31AFE010A870890030000386000004E8000203D20000081293C5C95 -S31AFE010A9C396000002C0900004D8200207D2A4B78A00900047CF0 -S31AFE010AB10018004082001C2C0B00004182001080090000900B07 -S31AFE010AC6000048000008814900007D2B4B78812900002C0900B2 -S31AFE010ADB004082FFD03D20000091493C5C4E8000209421FFE817 -S31AFE010AF07C0802A69381000893A1000C93C1001093E1001490E8 -S31AFE010B0501001C7C7E1B7883FE000838000000A13F0006600025 -S31AFE010B1AFFFF7C090000817E00047C9C23784082000C38000082 -S31AFE010B2F00B01F0006A01F00047D635B78B00B0002A3BF00043E -S31AFE010B44480008CD7C651B787FA4EB787FE3FB78480008512CDE -S31AFE010B59030000408200603D20000081693C5C2C0B0000418284 -S31AFE010B6E0050A12B0004A01F00027C09000040820034A0BF00B2 -S31AFE010B8304800B00087D635B7838A5FFF87F86E378A0FF00003B -S31AFE010B98389F00087C0803A64E8000217FC3F378480007D9482B -S31AFE010BAD000018816B00002C0B00004082FFB87FC3F378480085 -S31AFE010BC207C18001001C7C0803A68381000883A1000C83C10007 -S31AFE010BD71083E10014382100184E8000209421FFD87C0802A665 -S31AFE010BEC930100089321000C93410010936100149381001893E8 -S31AFE010C01A1001C93C1002093E100249001002C7C9C2378281C5C -S31AFE010C1605C07C791B787CB82B787CDA33787CFE3B78418100B0 -S31AFE010C2BA8386005EA480006ED7C7F1B794182009883BF000811 -S31AFE010C40381C0008837F0004B01F000CB3DD0000B35D0002A01B -S31AFE010C551F000C392000007F85E378B01D0004B13D00067F243A -S31AFE010C6ACB78387D00084BFFA6513D200000800939583960001F -S31AFE010C7F11901B000C81380000997B0009913B0010A01D000420 -S31AFE010C947F63DB78B01B0002A39F000C480007717C651B787F43 -S31AFE010CA984E3787FA3EB78480006F5B07D00067F05C3787FE336 -S31AFE010CBEFB7838800011480004457FE3FB78480006B5800100F6 -S31AFE010CD32C7C0803A6830100088321000C8341001083610014A6 -S31AFE010CE88381001883A1001C83C1002083E10024382100284EDB -S31AFE010CFD8000209421FFD87C0802A69381001893A1001C93C1B5 -S31AFE010D12002093E100249001002C7CBF2B787C7D1B787C9C23AD -S31AFE010D27787CDE33787FE3FB783881000848001A252C030000E9 -S31AFE010D3C41800024A0DF0004A0FE00047FA3EB787F84E3783878 -S31AFE010D51A100084BFFFE91386000004800001C3C60FE013C80B3 -S31AFE010D66FE0138634FD838844FFC4BFFAD553860FFFF80010048 -S31AFE010D7B2C7C0803A68381001883A1001C83C1002083E10024BD -S31AFE010D90382100284E8000209421FFE87C0802A6938100089363 -S31AFE010DA5A1000C93C1001093E100149001001C3F8000007CBFF4 -S31AFE010DBA2B783D200000807C3C607CDD33787CFE3B7893E93C9E -S31AFE010DCF644BFFA4F13D20000081693C682C0B00004182001CC6 -S31AFE010DE4B3CB0004801D000039200000900B0000913C3C604831 -S31AFE010DF90000143C60FE013863500C7FE4FB784BFFACBD800130 -S31AFE010E0E001C7C0803A68381000883A1000C83C1001083E1008D -S31AFE010E2314382100184E8000209421FFD07C0802A693410018A6 -S31AFE010E389361001C9381002093A1002493C1002893E1002C9058 -S31AFE010E4D010034A3A600047CBA2B787C7E1B787C9C23783CA014 -S31AFE010E62FE017CFF3B7838A50D98386100087FA4EB784BFFFB5B -S31AFE010E77D12C0300004080000C3860FFFF48000084813F00046F -S31AFE010E8C3C001062817F000060004DD37D2900161D6B03E8559A -S31AFE010EA129D1BE7F6B4A143D4000003D2000003D60000093CA63 -S31AFE010EB63C6093893C64934B3C68480019CD7FBAEB787C7E1B69 -S31AFE010ECB783BE0FFFF3FA000003F800000480019B57C7E185066 -S31AFE010EE07C03D8404080001848000559801D3C602C000000403E -S31AFE010EF582FFE483FC3C647F43D3784BFFFB957FE3FB78800122 -S31AFE010F0A00347C0803A6834100188361001C8381002083A10048 -S31AFE010F1F2483C1002883E1002C382100304E8000209421FFF07D -S31AFE010F347C0802A693E1000C900100147C691B78880900002C1D -S31AFE010F490000FF4082002C880900012C0000FF40820020880971 -S31AFE010F5E00022C0000FF4082001488090003386000012C00001D -S31AFE010F73FF418200643FE000007D234B78389F395838A0000478 -S31AFE010F884BFFADAD2C0300004082000C38600001480000408805 -S31AFE010F9D1F3958389F39582C0000004082002C880400012C004F -S31AFE010FB2000040820020880400022C0000004082001488040027 -S31AFE010FC703386000012C00000041820008386000008001001450 -S31AFE010FDC7C0803A683E1000C382100104E8000209421FFD87CFF -S31AFE010FF10802A693A1001C93C1002093E100249001002C7C7E23 -S31AFE0110061B7883FE00047C9D2378387F00104BFFFF1D2C0300A8 -S31AFE01101B0041820020A09F00007FE3FB785484D6BA38A0000084 -S31AFE011030480003752C030000418200107FC3F378480003414863 -S31AFE0110450000A8801F000C813D0000A17D000490010008912113 -S31AFE01105A000CB1610010A13F0000A01F00025523D6BA7C030026 -S31AFE01106F50B01E000C881F00092C00000641820038418100108E -S31AFE0110842C00000141820014480000582C00001141820038482E -S31AFE01109900004C7C1F1A14901E00087FC3F378388100084800BC -S31AFE0110AE05054800003C7C1F1A14901E00087FC3F378388100B5 -S31AFE0110C30848000AE5480000247C1F1A14901E00087FC3F3783C -S31AFE0110D8388100084BFFFA114800000C7FC3F378480002998084 -S31AFE0110ED01002C7C0803A683A1001C83C1002083E1002438210A -S31AFE01110200284E8000209421FFE07C0802A69361000C938100E9 -S31AFE0111171093A1001493C1001893E1001C900100247C7C1B782A -S31AFE01112C83BC000480FC0008A13C000C7CFD38507D293A14B153 -S31AFE0111413C000CA01D000054E9352E5400053E60004000700048 -S31AFE011156F0FF7C004B78B01D000039200000993D00013D000017 -S31AFE01116B00A1283C6CA01C000CB13D0004B01D000239690001CD -S31AFE011180B1683C6C3940000038000040989D0009981D0008B1F7 -S31AFE0111955D000AB15D00063D200000800939587CBB2B78901DC7 -S31AFE0111AA000C813B00007CE43B78913D00107FA3EB7838A00015 -S31AFE0111BF00480001E5B07D000A7F83E378389B000438A008009D -S31AFE0111D448000371800100247C0803A68361000C8381001083EC -S31AFE0111E9A1001483C1001883E1001C382100204E8000203D00B7 -S31AFE0111FE0000800839682C0000004C820020380000019008398A -S31AFE01121368380000047C0903A63C8000003D2000013D60000137 -S31AFE01122881443C7038A9082C390B07DC38C005EA38E000007D83 -S31AFE01123D272A147120000239690002914800007C00002654002C -S31AFE0112521FFE7C0000D07D6B00787D2900387D295B78912800A9 -S31AFE011267107D0A4378B0C8000E390A001438E705EC4200FFC429 -S31AFE01127C91443C704E8000209421FFE87C0802A6938100089372 -S31AFE011291A1000C93C1001093E100149001001C3D2000013BE97B -S31AFE0112A607DC3BC000003F80FE017FFDFB7880DF0010A0FF0095 -S31AFE0112BB0EA11F000C813F00007FC4F3787FA5EB78387C50380E -S31AFE0112D04BFFA7F53BDE00012C1E00033BFF00143BBD0014401D -S31AFE0112E581FFD03D2000003C60FE0180893C70386350644BFF59 -S31AFE0112FAA7CD8001001C7C0803A68381000883A1000C83C1001C -S31AFE01130F1083E10014382100184E8000203CA0000080653C7070 -S31AFE0113242C0300004D8200203CE00000814739603D2000008037 -S31AFE011339093964394A00017CC050503C8000008164395C8103DA -S31AFE01134E0010800300003928001490053C707C065800912300AE -S31AFE011363089103000438000000B003000C914739604C8100207B -S31AFE01137890C4395C4E8000203D400000812A39603D60000080A6 -S31AFE01138D0B3C703929FFFF912A3960906B3C70900300004E80D3 -S31AFE0113A200203484FFFE41800018A00300003484FFFE7CA50208 -S31AFE0113B714386300024080FFF02C04FFFF408200108803000031 -S31AFE0113CC5400402E7CA5021454AB043E54A9843E380000007C5A -S31AFE0113E1A95A146000FFFF7C0500004081000C3D25FFFF38A9EE -S31AFE0113F600017CA928F85523C63E5463402E5520063E7C031BA3 -S31AFE01140B784E800020A123000EA003000CA16300107C004A14F2 -S31AFE011420A1430012892300097C005A147C005214A06300027CBA -S31AFE011435004A147C601A144E8000209421FFD87C0802A693817B -S31AFE01144A001893A1001C93C1002093E100249001002C3F800098 -S31AFE01145F003FA000003FC00000386005EA4BFFFEB17C7F1B7986 -S31AFE011474408200183C60FE01386350744BFFA6454BFFFE0148C4 -S31AFE011489000000809F00103861000838A005EA4BFFD289546059 -S31AFE01149E043E2C000000B07F000C41820074A0010014813C39A9 -S31AFE0114B3742C00080039290001913C3974418200182C00080685 -S31AFE0114C8418200347FE3FB784BFFFEB14BFFFF94813D396C8085 -S31AFE0114DD1F001039290001913D396C901F00047FE3FB783881AF -S31AFE0114F2000E4BFFFAF94BFFFF70813E3970801F001039290063 -S31AFE01150701913E3970901F00047FE3FB7848000F9D4BFFFF503C -S31AFE01151C7FE3FB784BFFFE618001002C7C0803A68381001883BE -S31AFE011531A1001C83C1002083E10024382100284E8000209421D3 -S31AFE011546FFE87C0802A69001001C80040000A1440004900100CD -S31AFE01155B08390100083D200000B148000439693C48A14B0004BC -S31AFE011570B0A1001480093C48A0A3000C808300109001000EB13D -S31AFE0115854100127D0343784BFFCF393D600000812B3978392910 -S31AFE01159A0001912B39788001001C7C0803A6382100184E8000C0 -S31AFE0115AF209421FFF07C0802A693C1000893E1000C90010014B1 -S31AFE0115C47C7F1B78807F00087C9E2378A00300002C00080040AC -S31AFE0115D9820050A09F000C38A000004BFFFDC17C631B794082C6 -S31AFE0115EE003C813F000838A0000098690000817F0008B06B00E3 -S31AFE01160302807F0008A09F000C4BFFFD99813F00087FC5F37822 -S31AFE011618B06900027FE3FB78388000014BFFFAE57FE3FB784BC6 -S31AFE01162DFFFD55800100147C0803A683C1000883E1000C38217B -S31AFE01164200104E8000209421FFD87C0802A69341001093610000 -S31AFE011657149381001893A1001C93C1002093E100249001002C20 -S31AFE01166C7C9B23787C7E1B78736000023B9E002C83BC00048385 -S31AFE011681FC00087CBA2B784182004438000018B01C000C813F83 -S31AFE011696000C396000065169E0063C000204913F000C6000056C -S31AFE0116ABB490010008387F00143881000838A000044BFF9C0585 -S31AFE0116C038000000B01E001648000020A13E00163960000539C0 -S31AFE0116D5290014B13C000C801F000C5160E006901F000C801F29 -S31AFE0116EA000C396000005160C10E901F000C813E00542C1A00AD -S31AFE0116FF00913F0004801E0050B17F0010901F00084082005402 -S31AFE011714A01E0012B01F0000A13E00149B7F000DB13F0002A070 -S31AFE0117291E00162C0000004182000C63600008981F000D3800B0 -S31AFE01173E05B4B01F000EB35F00123D20000080093958396000C7 -S31AFE01175306901D000C813E0008997D0009913D0010A01C000C31 -S31AFE0117687FA3EB78B01D0002A3BC000C4BFFFC9D7C651B787FD2 -S31AFE01177DA4EB787FE3FB784BFFFC21B07F00107F83E3783880BB -S31AFE011792000638BE00084BFFF971801E00042C00000A408200EB -S31AFE0117A7243C8000013CA0FE0138A5199C7FC6F378387E00185C -S31AFE0117BC6084D4C048000B5D48000034881F000D7009000340FF -S31AFE0117D1820010A01E00162C0000004182001C3CA0FE0138A5D5 -S31AFE0117E619747FC6F378387E0018388003E848000B298001003E -S31AFE0117FB2C7C0803A683410010836100148381001883A1001C53 -S31AFE01181083C1002083E10024382100284E8000209421FFE07C53 -S31AFE0118250802A69361000C9381001093A1001493C1001893E1AD -S31AFE01183A001C900100247C7C1B7883FC0008815C0004A0DF0051 -S31AFE01184F00A0FF0002807F000480BF000839000014B11C000C6E -S31AFE0118643BEA0014801F000C39200005396000005120E00651E7 -S31AFE01187960C10E901F000C39200400B13F000EB17F0010B17FA0 -S31AFE01188E0012B0EA0014B0DF0002991F000D907F000890BF00C4 -S31AFE0118A3043D200000800939587C9B2378900A000C813B00009C -S31AFE0118B838000006912A0010980A0009A13C000C7D435378B13D -S31AFE0118CD2A0002A3BC000C4BFFFB3D7C651B787FA4EB787FE38C -S31AFE0118E2FB784BFFFAC1B07F00107F83E3787F65DB78388000E9 -S31AFE0118F7064BFFF811800100247C0803A68361000C83810010A8 -S31AFE01190C83A1001483C1001883E1001C382100204E8000203D09 -S31AFE01192120000081293C74396000002C0900004D8200207D2ACE -S31AFE0119364B787C0918004082001C2C0B000041820010800900C6 -S31AFE01194B00900B000048000008814900007D2B4B7881290000B8 -S31AFE0119602C0900004082FFD43D20000091493C744E800020943A -S31AFE01197521FFF87C0802A69001000C3880000038A000014BFF9C -S31AFE01198AFCC18001000C7C0803A6382100084E8000209421FFC9 -S31AFE01199FF87C0802A69001000C38000000900300044BFFFF71E4 -S31AFE0119B48001000C7C0803A6382100084E8000209421FFF07CF0 -S31AFE0119C90802A693E1000C900100147C7F1B78480000108003C6 -S31AFE0119DE0000901F00404BFFF99D807F00402C0300004082FFF1 -S31AFE0119F3EC800100147C0803A683E1000C382100104E80002065 -S31AFE011A089421FFE87C0802A693A1000C93C1001093E100149040 -S31AFE011A1D01001C7C7D1B7838000000901D0004387D0018480008 -S31AFE011A32097D7FA3EB784BFFFF8D7FA3EB784BFFFEE18001008A -S31AFE011A471C7C0803A683A1000C83C1001083E1001438210018CF -S31AFE011A5C4E8000208124000880E30050814900048009000CA11E -S31AFE011A7164000C7D075051540036BA7D6058507D09021441819F -S31AFE011A8600707C0A38507D6058517D08021440810060814300C2 -S31AFE011A9B407D275A142C0A0000380000009123005090040000D9 -S31AFE011AB041820030800A00002C0000004182001C7D4953788182 -S31AFE011AC5290000800900002C0000004082FFF47D2A4B78908AF0 -S31AFE011ADA0000480000109103004490830040916300483860009B -S31AFE011AEF014E800020386000004E8000209421FFF07C0802A698 -S31AFE011B0493C1000893E1000C90010014812400087C7F1B788388 -S31AFE011B19C90008801F00547D20F0514081006C387F00184800CC -S31AFE011B2E0881811F0054A15F00167D68F0505549043E7F8B48B3 -S31AFE011B43004FFEE3827C000026540007FE7C0000D07D29007871 -S31AFE011B587D6B00387D6B4B79408100307D2B50505525043E2C86 -S31AFE011B6D0500007C085A14901F0054B13F001641820014807F88 -S31AFE011B820034386300147C835A144BFF9735800100147C0803C7 -S31AFE011B97A683C1000883E1000C382100104E8000209421FFE0E7 -S31AFE011BAC7C0802A69361000C9381001093A1001493C100189388 -S31AFE011BC1E1001C900100247C7C1B78807C0004A01C000C83FC86 -S31AFE011BD60008B0030002A3BC000C7C9E23784BFFF82D7C651BAD -S31AFE011BEB787FA4EB787FE3FB784BFFF7B12C0300003B60000051 -S31AFE011C00408203A03D20000083A93C744800000883BD00002C70 -S31AFE011C151D00004182037CA13D0012A01F00027C09000040825E -S31AFE011C2AFFE8A13D00142C09000041820028A01F00007C090063 -S31AFE011C3F004082FFD07FC3F378389D000838A000044BFFA0E5C5 -S31AFE011C542C0300004082FFB8801D0004817E0004A13E00082C17 -S31AFE011C69000002917D000CB13D001041820024881F000D700933 -S31AFE011C7E0004418200187FA3EB784BFFFD817F83E3784BFFF683 -S31AFE011C93F14800031C813D00043809FFFF28000009418102FCED -S31AFE011CA83D60FE01396B50985400103A7D4B002E3D20FE0139D1 -S31AFE011CBD2950987D4A4A147D4903A64E800420881F000D700949 -S31AFE011CD200024182004038000002901D0004813F0004A17F0024 -S31AFE011CE70039290001913D0050B17D0014801E00003920000029 -S31AFE011CFC901D0008B13D004C7FA3EB78B13D0016388000124844 -S31AFE011D110002247FC4F3787F83E3784BFFFB0548000280387DBE -S31AFE011D26001848000685881F000D70090004418200103800007C -S31AFE011D3B01901D00044800026070090002408202387009001032 -S31AFE011D5041820250813D0054807F0008392900017C03480040E1 -S31AFE011D6582023C38000004907D0054901D00044800022C881F39 -S31AFE011D7A000D83DD005070090010418200107FA3EB787F84E3CB -S31AFE011D8F784BFFFD6D7FA3EB787F84E3784BFFFCC5881F000D6C -S31AFE011DA47C7B1B787009000141820024807F0004801D00507CCE -S31AFE011DB9030000408200143803000139200005901D0050913DD2 -S31AFE011DCE0004801D00507C00F00040820010A01D004C2C000097 -S31AFE011DE300418201BCA3FD00162C1F000040820024387D0018B2 -S31AFE011DF8480005B57FA3EB783880001038A000004BFFF841B374 -S31AFE011E0DFD004C4800019038000001B01D004C48000184881FD3 -S31AFE011E22000D70090010418201787FA3EB787F84E3784BFFFCAB -S31AFE011E37C9813D0054801F0008392900017C00480040820158CD -S31AFE011E4C38000000901D00047FA3EB784BFFFAC94800014488EC -S31AFE011E611F000D70090010418200607FA3EB787F84E3784BFF62 -S31AFE011E76FC89813D0054801F0008392900017C0048004082002B -S31AFE011E8B40881F000D700900014182002C813D00503800000A90 -S31AFE011EA039290001913D0050901D00047FA3EB78388000103871 -S31AFE011EB5A000004BFFF7914800000C38000008901D0004881FB5 -S31AFE011ECA000D70090001418200D0387D0018480004D5813D0038 -S31AFE011EDF503800000939290001913D0050901D00047FA3EB78A1 -S31AFE011EF4388000114800003C7FA3EB787F84E3784BFFFB5D887A -S31AFE011F091F000D7C7B1B78700900014182008C813D00503800F9 -S31AFE011F1E000A39290001913D0050901D00047FA3EB7838800030 -S31AFE011F331038A000004BFFF71148000064881F000D7009001071 -S31AFE011F48418200587FA3EB787F84E3784BFFFBA9813D00548001 -S31AFE011F5D1F0008392900017C00480040820038387D001848000D -S31AFE011F72043D3800000A901D0004480000247FA3EB7838800078 -S31AFE011F870038A000014BFFF6BD480000107FC4F3787F83E37807 -S31AFE011F9C4BFFF8852C1B00004082000C7F83E3784BFFF3D58060 -S31AFE011FB10100247C0803A68361000C8381001083A1001483C144 -S31AFE011FC6001883E1001C382100204E8000209421FFF87C0802D0 -S31AFE011FDBA69001000C4BFFF461480004218001000C7C0803A6E3 -S31AFE011FF0382100084E8000209421FFE87C0802A6938100089311 -S31AFE012005A1000C93C1001093E100149001001C7C7D1B787C9CD7 -S31AFE01201A23783880000038A006444BFF93753D600000810B3C80 -S31AFE01202F74381D006C395D0058901D0034915D0030392000011B -S31AFE012044380005EA93AB3C74913D0004B39D0012B01D003A91A1 -S31AFE0120591D0000915D003C386000008001001C7C0803A68381C0 -S31AFE01206E000883A1000C83C1001083E10014382100184E800015 -S31AFE012083209421FFF07C0802A693E1000C900100147C7F1B78A0 -S31AFE012098480000084BFFFF39801F00042C00000041820010A01A -S31AFE0120AD1F00162C0000004082FFE8800100147C0803A683E1E9 -S31AFE0120C2000C382100104E8000209421FFF07C0802A693E1005D -S31AFE0120D70C900100147C7F1B784BFFFFA5817F000469690004E8 -S31AFE0120EC200900007D20491469600002214000007C0A01147D73 -S31AFE0121012A03794182002038000007901F00047FE3FB783880BC -S31AFE012116001138A000004BFFF52D480000242C0B0005408200F0 -S31AFE01212B1C38000006901F00047FE3FB783880001138A0000017 -S31AFE0121404BFFF5097FE3FB784BFFF87D800100147C0803A68364 -S31AFE012155E1000C382100104E8000209421FFE87C0802A6938150 -S31AFE01216A000893A1000C93C1001093E100149001001C7CBE2B15 -S31AFE01217F797C7F1B787C9D237840810010801F00482C000000A7 -S31AFE0121944082001438600000480000B8907F0048480000AC3B3D -S31AFE0121A980000048000064809F00447FA3EB784BFF9109807F25 -S31AFE0121BE0040801F0048812300007FC0F050913F00407F9C0290 -S31AFE0121D3147FBD02144BFFF1A9807F00402C0300004182FFBCBC -S31AFE0121E881630008A123000C800B000C540036BA7D2048509180 -S31AFE0121FD3F0048800B000C540036BA7D6B0214917F00442C1ECA -S31AFE01221200004182003C80BF00487C1E28004080FF90809F00FC -S31AFE012227447FA3EB787FC5F3784BFF9091813F0044801F0048CF -S31AFE01223C7D29F2147C1E0050901F0048913F00447F9CF2147F47 -S31AFE01225183E3788001001C7C0803A68381000883A1000C83C14B -S31AFE012266001083E10014382100184E8000209421FFF07C08024D -S31AFE01227BA693C1000893E1000C900100147CBE2B797C7F1B78B6 -S31AFE012290807F00344081006C813F00043929FFFC280900014041 -S31AFE0122A581000C3860FFFF48000058A01F00162C000000408299 -S31AFE0122BA0048213E05B47D2949107D294BB87D2048F87FC94895 -S31AFE0122CF38700005B47D3E0378386300147FC5F3784BFF8FE146 -S31AFE0122E47FE3FB78B3DF00163880001038A000004BFFF3557FB2 -S31AFE0122F9C3F3784800000838600000800100147C0803A683C1AF -S31AFE01230E000883E1000C382100104E8000209421FFE87C0802C4 -S31AFE012323A69381000893A1000C93C1001093E100149001001C05 -S31AFE0123387C7F1B787CBD2B787CDC3378909F0004480005453D1C -S31AFE01234D20000081293C78907F00082C09000093BF000C939F1C -S31AFE0123620010418200187C09F80041820020812900002C090037 -S31AFE012377004082FFF03D20000080093C7893E93C78901F000022 -S31AFE01238C8001001C7C0803A68381000883A1000C83C10010835A -S31AFE0123A1E10014382100184E8000203D20000081293C7839409A -S31AFE0123B600002C0900004D8200207D2B4B787C0918004082001F -S31AFE0123CB202C0A00004182001080090000900A00004800001C48 -S31AFE0123E081690000480000147D2A4B78812900002C0900004014 -S31AFE0123F582FFD03D20000091693C784E8000209421FFE87C0864 -S31AFE01240A02A693A1000C93C1001093E100149001001C3D2000DA -S31AFE01241F0083E93C783BC000002C1F00003FA000004182006437 -S31AFE01243448000459801F0008813F00047C6018507C03484041F2 -S31AFE01244980003C2C1E000041820010801F0000901E000048000B -S31AFE01245E000C801F0000901D3C78801F000C807F00107C080317 -S31AFE012473A63BC000004E80002183FD3C784800000C7FFEFB7847 -S31AFE01248883FF00002C1F00004082FFA48001001C7C0803A683BB -S31AFE01249DA1000C83C1001083E10014382100184E800020942198 -S31AFE0124B2FFE87C0802A69381000893A1000C93C1001093E100C9 -S31AFE0124C7149001001C7C7D1B7883FD0004A13F0002A01F000089 -S31AFE0124DC69290800216900007D2B491468000001216000007C57 -S31AFE0124F10B01147C0B4839418200D83FC00000387F0018389E6A -S31AFE012506395838A000044BFF98292C030000408200BCA01F00D7 -S31AFE01251B062C00000140820064813F000E38000002B01F000670 -S31AFE012530913F0018801F0008391F0008A1280004901F001238DC -S31AFE0125459F0012B1240004801E39583D200000901F000E8149DF -S31AFE01255A3C4839293C48A1690004915F0008B1680004380000A2 -S31AFE01256F1CB01D000C7FA3EB7838A008064BFFEFC94800005058 -S31AFE0125842C000002408200483FC00001801E1FDC3B9E1FDC2C6C -S31AFE01259900000041820034807C0008389F000E38A000044BFF22 -S31AFE0125AE97897C631B794082001CA01F000C817F0008813C0012 -S31AFE0125C304B009000491690000907E1FDC7FA3EB784BFFEDADD1 -S31AFE0125D88001001C7C0803A68381000883A1000C83C10010830C -S31AFE0125EDE10014382100184E8000209421FFD87C0802A69361D4 -S31AFE01260200149381001893A1001C93C1002093E1002490010091 -S31AFE0126172C7C7F1B787C9D23783860002A4BFFECF97C7E1B79BC -S31AFE01262C40820018480001007FC3F3784BFFED49386000004864 -S31AFE0126410000F4817E000439200004992B0005394000013900AF -S31AFE012656080038000006980B0004B14B0000B14B0006B10B00C3 -S31AFE01266B023D200000800939583D400000900B000E392A3C48CF -S31AFE012680A1090004800A3C48B10B000C900B0008813F00003D1C -S31AFE012695400001912B0018396A1FDC380000FF93EB0008980122 -S31AFE0126AA000D93AB000439200001912A1FDC980100089801007D -S31AFE0126BF099801000A9801000B9801000C3BA000073F8000016A -S31AFE0126D43B60001CB37E000C7FC3F3783881000838A008064B59 -S31AFE0126E9FFEE5D480001A17C7F1B78480000144BFFED49801C9D -S31AFE0126FE1FDC2C0000004182FF30480001857C7F18502803004D -S31AFE012713F94081FFE47FA0EB782C0000003BBDFFFF4181FFB4F6 -S31AFE0127287FC3F3784BFFEC553860FFFF8001002C7C0803A6836C -S31AFE01273D6100148381001883A1001C83C1002083E1002438216C -S31AFE01275200284E8000209421FFD87C0802A6930100089321004F -S31AFE0127670C93410010936100149381001893A1001C93C1002070 -S31AFE01277C93E100249001002C3D2000013B291FE83B1900967CBF -S31AFE0127917B1B787C9C23787F3DCB783B4000007FBEEB787F6371 -S31AFE0127A6DB787FC4F37838A000044BFF95852C0300007F5FD3F8 -S31AFE0127BB78418200383BBE000A7C1DC0003B5F000A4081FFD4FD -S31AFE0127D0801B00007F63DB78901C0000389C00044BFFFE192C0E -S31AFE0127E5030000408000283860FFFF4800006C7C1AC82EA13D3B -S31AFE0127FA0008817D0004B13C0008901C0000917C0004480000C1 -S31AFE01280F4C3CC000008126397C80FC0000390900011D29000AFC -S31AFE0128243D600001A15C0008801C0004396B1FE87CE9592E7D43 -S31AFE012839295A142C080010B1490008900900049106397C4082FD -S31AFE01284E000C380000009006397C386000008001002C7C080315 -S31AFE012863A6830100088321000C83410010836100148381001891 -S31AFE01287883A1001C83C1002083E10024382100284E8000209417 -S31AFE01288D21FFF87C0802A69001000C3D200000392932008009D6 -S31AFE0128A20048386003E87C0803A64E8000213D200000806939B6 -S31AFE0128B78038630001906939808001000C7C0803A6382100081E -S309FE0128CC4E80002015 -S31AFE0128D03C746F7069633E0048656C702061626F7574206865A4 -S31AFE0128E56C703F0000000068656C70000000005B2D77203C7446 -S31AFE0128FA696D656F75743E5D205B656E7472795D00004578656A -S31AFE01290F6375746520636F64652061742061206C6F6361746930 -S31AFE0129246F6E0000676F00002D62203C6C6F636174696F6E3E64 -S31AFE012939205B2D6C203C6C656E6774683E5D00446973706C619A -S31AFE01294E7920286865782064756D702920612072616E6765209C -S31AFE0129636F66206D656D6F72790000000064756D700000000016 -S31AFE0129785B4F4E207C204F46465D00004D616E616765206D6122 -S31AFE01298D6368696E6520636163686573000000636163686500AE -S31AFE0129A200000A526564426F6F7428746D2920646562756720E9 -S31AFE0129B7656E7669726F6E6D656E74202D206275696C7420257F -S31AFE0129CC732C2025730A000030373A34303A3038000000004F9A -S31AFE0129E16374203237203230303000506C6174666F726D3A20FB -S31AFE0129F6257320282573292025730A0000004D6F746F726F6C78 -S31AFE012A0B61204D425800000000506F77657250432038363000EB -S31AFE012A2000000000436F7079726967687420284329203230307D -S31AFE012A35302C20526564204861742C20496E632E0A0A00524178 -S31AFE012A4A4D3A2025702D25700A003D3D20457865637574696E8B -S31AFE012A5F6720626F6F742073637269707420696E2025642E257A -S31AFE012A74303364207365636F6E6473202D20656E746572205E69 -S31AFE012A894320746F2061626F72740A00000000526564426F6F70 -S31AFE012A9E743E200000002A2A204572726F723A20496C6C656787 -S31AFE012AB3616C20636F6D6D616E643A2025730A00006F6E000064 -S31AFE012AC86F666600496E76616C6964206361636865206D6F647E -S31AFE012ADD653A2025730A00636163686573203F0A000000257316 -S31AFE012AF20A20202025732025730A000000006261736520616486 -S31AFE012B076472657373000000006C656E677468000044756D707B -S31AFE012B1C2077686174205B6C6F636174696F6E5D3F0A000077DA -S31AFE012B316169742074696D656F7574000000007374617274698E -S31AFE012B466E6720616464726573730000000041626F757420740B -S31AFE012B5B6F20737461727420657865637574696F6E206174209A -S31AFE012B702570202D2061626F72742077697468205E4320776994 -S31AFE012B857468696E202564207365636F6E64730A0000006574E8 -S31AFE012B9A68300000000071756963635F657468000000515549E5 -S31AFE012BAF43432045746865726E65743A204E6F2066726565202E -S31AFE012BC4786D697420627566666572730A000000000000004CD2 -S31AFE012BD96F616420612066696C65006C6F616400000000454C3C -S31AFE012BEE4620696D61676573206E6F7420737570706F727465DE -S31AFE012C03640A000000496E76616C696420532D7265636F726463 -S31AFE012C18206174206F66667365742025702C20696E7075743A9B -S31AFE012C2D2025630A00000042616420532D7265636F7264206332 -S31AFE012C426F756E74206174206F66667365742025700A00000057 -S31AFE012C570041646472657373206F6666736574203D2025700ADA -S31AFE012C6C00000000417474656D707420746F206C6F6164205339 -S31AFE012C812D7265636F7264206461746120746F206164647265B0 -S31AFE012C9673733A202570205B6E6F7420696E2052414D5D0A0025 -S31AFE012CAB002A2A2A205761726E696E672120436865636B737594 -S31AFE012CC06D206661696C757265202D20416464723A20256C783A -S31AFE012CD52C202530326C58203C3E202530326C580A0000456E8C -S31AFE012CEA74727920706F696E743A2025702C2061646472657379 -S31AFE012CFF732072616E67653A2025702D25700A0000496E7661D2 -S31AFE012D146C696420532D7265636F7264206174206F6666736525 -S31AFE012D2974203078256C782C20747970653A2025780A0000003C -S31AFE012D3E0000FFFF27A4FFFF2608FFFF2608FFFF2608FFFF2709 -S31AFE012D538CFFFF278CFFFF278CFFFF2754FFFF2754FFFF27540D -S31AFE012D68256308000A000000766572626F7365006C6F61642001 -S31AFE012D7D72617720646174610000006C6F616420616464726578 -S31AFE012D92737300000000646F776E6C6F6164206D6F64652028DC -S31AFE012DA754465450206F722078797A4D4F44454D2900000000AD -S31AFE012DBC686F7374206E616D6520284950206164647265737397 -S31AFE012DD129000066696C65206E616D65000000496E76616C69FB -S31AFE012DE66420495020616464726573733A2025730A006D6F6474 -S31AFE012DFB656D000000496E76616C696420276D6F6465273A20B8 -S31AFE012E1025730A00746674700000000054465450206D6F646545 -S31AFE012E25207265717569726573206120776F726B696E67206ED3 -S31AFE012E3A6574776F726B0A00000046696C65206E616D65206D0A -S31AFE012E4F697373696E670A000075736167653A206C6F616420A3 -S31AFE012E6425730A0043616E2774206C6F616420272573273A20E5 -S31AFE012E7925730A00000000526177206C6F61642072657175696D -S31AFE012E8E7265732061206D656D6F727920616464726573730A96 -S31AFE012EA3005261772066696C65206C6F616465642025702D259B -S31AFE012EB8700A0000454C4600556E7265636F676E697A656420A2 -S31AFE012ECD696D61676520747970653A20256C780A0000007B63BB -S31AFE012EE26D64737D00004D616E61676520464C41534820696D48 -S31AFE012EF76167657300666973005B2D6C5D000000004D616E6111 -S31AFE012F0C676520636F6E66696775726174696F6E206B65707473 -S31AFE012F2120696E20464C415348206D656D6F727900000066638F -S31AFE012F366F6E666967005B2D665D00000000496E697469616C59 -S31AFE012F4B697A6520464C41534820496D6167652053797374655B -S31AFE012F606D205B4649535D00696E6974000000005B2D635D0034 -S31AFE012F75000000446973706C617920636F6E74656E7473206F4F -S31AFE012F8A6620464C41534820496D6167652053797374656D2071 -S31AFE012F9F5B4649535D000000006C6973740000000000000000C2 -S31AFE012FB4446973706C61792066726565205B617661696C616220 -S31AFE012FC96C655D206C6F636174696F6E732077697468696E2001 -S31AFE012FDE464C41534820496D6167652053797374656D205B4602 -S31AFE012FF349535D000066726565000000002D66203C666C617394 -S31AFE013008685F616464723E202D6C203C6C656E6774683E0045F4 -S31AFE01301D7261736520464C41534820636F6E74656E74730000D2 -S31AFE013032000065726173650000006E616D6500000000446973B3 -S31AFE013047706C617920616E20696D6167652066726F6D20464C21 -S31AFE01305C41534820496D6167652053797374656D205B46495379 -S31AFE0130715D000064656C65746500005B2D62203C6D656D6F720F -S31AFE013086795F6C6F61645F616464726573733E5D205B2D635D70 -S31AFE01309B206E616D65000000004C6F616420696D616765206631 -S31AFE0130B0726F6D20464C41534820496D616765205379737465EF -S31AFE0130C56D205B4649535D20696E746F2052414D0000006C6F15 -S31AFE0130DA6164000000002D62203C6D656D5F626173653E202D68 -S31AFE0130EF6C203C696D6167655F6C656E6774683E205B2D7320A2 -S31AFE0131043C646174615F6C656E6774683E5D205B2D66203C668F -S31AFE0131196C6173685F616464723E5D205B2D65203C656E74723D -S31AFE01312E795F706F696E743E5D205B2D72203C72616D5F616410 -S31AFE01314364723E5D203C6E616D653E00004372656174652061F1 -S31AFE0131586E20696D6167650063726561746500002A2A2A206951 -S31AFE01316D6E76616C696420276669732720636F6D6D616E643AE1 -S31AFE0131822025730A0000666973200000000066756C6C20696E65 -S31AFE013197697469616C697A6174696F6E2C20657261736573201E -S31AFE0131AC616C6C206F6620666C6173680000000041626F7574B2 -S31AFE0131C120746F20696E697469616C697A65205B666F726D610F -S31AFE0131D6745D20464C41534820696D6167652073797374656D98 -S31AFE0131EB002A2A2041626F727465640A002A2A2A20496E697459 -S31AFE01320069616C697A6520464C41534820496D616765205379B9 -S31AFE0132157374656D0A0000202020696E697469616C697A6174DA -S31AFE01322A696F6E206661696C65642025703A202578282573292A -S31AFE01323F0A00000000202020205761726E696E673A206465767C -S31AFE01325469636520636F6E74656E7473206E6F74206572617365 -S31AFE01326965642C20736F6D6520626C6F636B73206D6179206EEF -S31AFE01327E6F7420626520757361626C650A00526564426F6F7417 -S31AFE01329300526564426F6F745B6261636B75705D0052656442E7 -S31AFE0132A86F6F7420636F6E66696700004649532064697265631B -S31AFE0132BD746F72790000004572726F722077726974696E6720DB -S31AFE0132D2696D6167652064657363726970746F727320617420F8 -S31AFE0132E725703A202578282573290A0000646973706C61792038 -S31AFE0132FC636865636B73756D730000004E616D652020202020D1 -S31AFE013311202020202020202020464C4153482061646472202019 -S31AFE013326202573202020204C656E677468202020202020456E80 -S31AFE01333B74727920706F696E740A000000436865636B73756D92 -S31AFE013350000000004D656D206164647200000000252D3136735D -S31AFE013365202030782530386C5820202030782530386C5820207C -S31AFE01337A30782530386C58202030782530386C580A002020308D -S31AFE01338F782530386C58202E2E2030782530386C580A000000BC -S31AFE0133A46D656D6F727920626173652061646472657373007243 -S31AFE0133B9616D2062617365206164647265737300000000656E98 -S31AFE0133CE74727920706F696E74206164647265737300464C4163 -S31AFE0133E35348206D656D6F72792062617365206164647265732E -S31AFE0133F873000000696D616765206C656E677468205B696E2031 -S31AFE01340D464C4153485D00696D6167652073697A65205B6163BD -S31AFE0134227475616C20646174615D0000000066696C65206E6134 -S31AFE0134376D65000000696E76616C696420617267756D656E743F -S31AFE01344C73000000726571756972656420706172616D65746523 -S31AFE01346172206D697373696E670000496E76616C696420464C4C -S31AFE01347641534820696D6167652073697A652F6C656E677468B1 -S31AFE01348B20636F6D62696E6174696F6E00496E76616C6964208D -S31AFE0134A0464C41534820616464726573733A20257020282573CF -S31AFE0134B5290A0020202076616C69642072616E67652069732011 -S31AFE0134CA25702D25700A000000002A2A205741524E494E473AC3 -S31AFE0134DF2052414D20616464726573733A202570206D61792057 -S31AFE0134F4626520696E76616C69640A004E616D652069732074D5 -S31AFE0135096F6F206C6F6E672C206D757374206265206C65737327 -S31AFE01351E207468616E2025642063686172730A00000043616ED2 -S31AFE0135332774206C6F6361746520256C64206279746573206669 -S31AFE01354872656520696E20464C4153480A000000496D616765BB -S31AFE01355D20666F756E642C2062757420464C41534820616464AA -S31AFE0135727265737320696E636F72726563740A000000496D6178 -S31AFE013587676520666F756E642C20627574204C454E4754482089 -S31AFE01359C697320696E636F72726563740A000000416E20696DA1 -S31AFE0135B1616765206E616D6564202725732720657869737473E8 -S31AFE0135C6000043616E27742070726F6772616D2074686973202E -S31AFE0135DB726567696F6E202D20636F6E7461696E7320636F6430 -S31AFE0135F06520696E20757365210A000043616E277420657261C8 -S31AFE013605736520726567696F6E2061742025703A202578282541 -S31AFE01361A73290A00000043616E27742070726F6772616D207299 -S31AFE01362F6567696F6E2061742025703A202578282573290A00DB -S31AFE0136444572726F722065726173696E672061742025703A2055 -S31AFE0136592578282573290A000000004572726F722070726F67E5 -S31AFE01366E72616D6D696E672061742025703A20257828257329CD -S31AFE0136830A000000006C656E67746800006D697373696E672087 -S31AFE013698617267756D656E7400000000696D616765206E616D56 -S31AFE0136AD65000044656C65746520696D61676520272573270022 -S31AFE0136C200004E6F20696D616765202725732720666F756E64CC -S31AFE0136D70A000000006D656D6F7279205B6C6F61645D206261DB -S31AFE0136EC736520616464726573730000646973706C617920636D -S31AFE0137016865636B73756D000000004E6F742061206C6F61644C -S31AFE01371661626C6520696D6167650A0000002A2A205761726ECC -S31AFE01372B696E67202D20636865636B73756D206661696C7572E3 -S31AFE013740652E202073746F7265643A202530386C782C20636F22 -S31AFE0137556D70757465643A202530386C780A00436865636B73A5 -S31AFE01376A756D3A202530386C780A00000000464C4153483A20C6 -S31AFE01377F64726976657220696E6974206661696C6564212C20DE -S31AFE0137947374617475733A2025780A00464C4153483A20257019 -S31AFE0137A9202D2025702C20256420626C6F636B73206F66202557 -S31AFE0137BE7020627974657320656163682E0A00000000746F6FFF -S31AFE0137D32066657720617267756D656E7473000000756E7265CA -S31AFE0137E8636F676E697A656420636F6D6D616E64000000005223 -S31AFE0137FD756E2073637269707420617420626F6F740000626F80 -S31AFE0138126F745F73637269707400426F6F74207363726970747C -S31AFE01382700626F6F745F7363726970745F6461746100000000E6 -S31AFE01383C426F6F74207363726970742074696D656F75742028BA -S31AFE013851313030306D73207265736F6C7574696F6E2900626F4E -S31AFE0138666F745F7363726970745F74696D656F75740025733A39 -S31AFE01387B200000000025732000747275650000000066616C73F5 -S31AFE013890650000002564200030782530325800003A000000202F -S31AFE0138A50000003F3F00000A0000002E2E2025730A0000456EB0 -S31AFE0138BA746572207363726970742C207465726D696E617465DF -S31AFE0138CF207769746820656D707479206C696E650A00000000E2 -S31AFE0138E43E3E2000FFFEFA98FFFEFABCFFFEFB38FFFEFB44FF81 -S31AFE0138F9FEFAD0FFFEFAECFFFEFC4CFFFEFC60FFFEFDD4FFFEA1 -S31AFE01390EFD24FFFEFC7CFFFEFCC0FFFEF918FFFEF918FFFEF93E -S31AFE01392328FFFEF930FFFEF918FFFEF9206C69737420636F6EFC -S31AFE01393866696775726174696F6E206F6E6C79002A2A20696E10 -S31AFE01394D76616C696420656E7472790A00000055706461746591 -S31AFE01396220526564426F6F74206E6F6E2D766F6C6174696C6584 -S31AFE01397720636F6E66696775726174696F6E0000004572726F06 -S31AFE01398C722077726974696E6720636F6E66696720646174613B -S31AFE0139A12061742025703A202578282573290A00000000000078 -S31AFE0139B60000FFFEF6D0FFFEF730FFFEF6E8FFFEF6ECFFFEF762 -S31AFE0139CB00FFFEF7205265717565737420666F7220636F6E66B8 -S31AFE0139E069672076616C75652027257327202D2077726F6E6720 -S31AFE0139F520747970650A0043616E27742066696E6420636F6EFE -S31AFE013A0A6669672076616C756520272573270A0000000000001F -S31AFE013A1F00FFFEF4C0FFFEF4C0FFFEF524FFFEF4E0FFFEF4C093 -S31AFE013A34FFFEF4CC464C41534820636F6E666967757261746992 -S31AFE013A496F6E20636865636B73756D206572726F72206F7220A8 -S31AFE013A5E696E76616C6964206B65790A000000000000FFFF28CE -S31AFE013A7378FFFF2878FFFF2878FFFF2878FFFF2878FFFF2878AB -S31AFE013A88FFFF2878FFFF2878FFFF2878FFFF2878FFFF2878FF0F -S31AFE013A9DFF2878FFFF2878FFFF2878FFFF2878FFFF2878FFFFFA -S31AFE013AB22898FFFF28B8FFFF28D8FFFF28F8FFFF2918FFFF29DA -S31AFE013AC77CFFFF297CFFFF297CFFFF297CFFFF2938FFFF2958A2 -S31AFE013ADCFFFF2958FFFF2958FFFF2958FFFF2958FFFF2958FF56 -S31AFE013AF1FF2958FFFF2958FFFF2958FFFF2958FFFF2958FFFF41 -S31AFE013B062958FFFF2958FFFF2958FFFF2958FFFF2958FFFF2901 -S31AFE013B1B58FFFF2958FFFF2958FFFF2958FFFF2958FFFF2958BD -S31AFE013B30FFFF2958FFFF2958FFFF2958FFFF2958FFFF2958FF01 -S31AFE013B45FF2958FFFF2958FFFF2958FFFF2958FFFF2958FFFFEC -S31AFE013B5A2938FFFF2938FFFF2938FFFF2938FFFF2938FFFF294D -S31AFE013B6F38FFFF2938FFFF2938FFFF2938FFFF2938FFFF293829 -S31AFE013B84FFFF2938FFFF2938FFFF2938FFFF2938FFFF2938FF4D -S31AFE013B99FF28B0FFFF28B0FFFF28D4FFFF28F8FFFF28F8FFFF31 -S31AFE013BAE2938FFFF2938FFFF2938FFFF2938FFFF291CFFFF2915 -S31AFE013BC338FFFF2938FFFF2938FFFF2938FFFF2938FFFF2938D5 -S31AFE013BD8FFFF2938FFFF2938FFFF2938FFFF2938FFFF2938FFF9 -S31AFE013BEDFF2938FFFF2938FFFF2938FFFF2938FFFF2938FFFFE4 -S31AFE013C022938FFFF2938FFFF2938FFFF2938FFFF2938FFFF29A4 -S31AFE013C1738FFFF2938FFFF2938FFFF2938FFFF2938FFFF293880 -S31AFE013C2CFFFF2938FFFF2938FFFF2938FFFF2938FFFF2938FFA4 -S31AFE013C41FF286CFFFF286CFFFF286CFFFF286CFFFF286CFFFF90 -S31AFE013C56286CFFFF286CFFFF286CFFFF286CFFFF286CFFFF2852 -S31AFE013C6B6CFFFF286CFFFF286CFFFF286CFFFF286CFFFF286CF9 -S31AFE013C80FFFF288CFFFF28ACFFFF28CCFFFF28ECFFFF290CFF70 -S31AFE013C95FF2970FFFF2970FFFF2970FFFF2970FFFF292CFFFF67 -S31AFE013CAA294CFFFF294CFFFF294CFFFF294CFFFF294CFFFF2998 -S31AFE013CBF4CFFFF294CFFFF294CFFFF294CFFFF294CFFFF294C60 -S31AFE013CD4FFFF294CFFFF294CFFFF294CFFFF294CFFFF294CFF98 -S31AFE013CE9FF294CFFFF294CFFFF294CFFFF294CFFFF294CFFFF83 -S31AFE013CFE294CFFFF294CFFFF294CFFFF294CFFFF294CFFFF2944 -S31AFE013D134CFFFF294CFFFF294CFFFF294CFFFF294CFFFF294C0B -S31AFE013D283031323334353637383961626364656600000000001F -S31AFE013D3D000000503031004F4B000065436F7320474442207317 -S31AFE013D5274756273205B7769746820526564426F6F745D202DE9 -S31AFE013D67206275696C74204F63742032372032303030202F20E2 -S31AFE013D7C30373A33393A343100000000453031004530330045EE -S31AFE013D9130320042303100FFFF3F54FFFF47BCFFFF3FF8FFFF4E -S31AFE013DA6467CFFFF44CCFFFF47BCFFFF47BCFFFF47BCFFFF41F1 -S31AFE013DBB84FFFF464CFFFF47BCFFFF47BCFFFF47BCFFFF47BCD6 -S31AFE013DD0FFFF4280FFFF47BCFFFF47BCFFFF4184FFFF3FDCFF3C -S31AFE013DE5FF47BCFFFF44CCFFFF4664FFFF47BCFFFF47BCFFFF0C -S31AFE013DFA47BCFFFF427CFFFF47BCFFFF47BCFFFF47BCFFFF47A8 -S31AFE013E0FBCFFFF47BCFFFF47BCFFFF47BCFFFF47BCFFFF47BCD8 -S31AFE013E24FFFF4748FFFF44CCFFFF3F98FFFF47BCFFFF47BCFF13 -S31AFE013E39FF3FE8FFFF47BCFFFF47BCFFFF47BCFFFF462CFFFFD8 -S31AFE013E4E47BCFFFF4198FFFF47BCFFFF47BCFFFF47BCFFFF3F40 -S31AFE013E63D0FFFF4644FFFF44CC00000000303132333435363743 -S31AFE013E7838396162636465660000000030313233343536373896 -S31AFE013E8D3941424344454600000000FFFF6718FFFF6718FFFF55 -S31AFE013EA26718FFFF6718FFFF6718FFFF6718FFFF6718FFFF672E -S31AFE013EB718FFFF6718FFFF6718FFFF6718FFFF6718FFFF671868 -S31AFE013ECCFFFF6718FFFF6718FFFF6718FFFF6658FFFF6658FFEE -S31AFE013EE1FF668CFFFF66C0FFFF66C0FFFF6718FFFF6718FFFF96 -S31AFE013EF66718FFFF6718FFFF66F4FFFF6718FFFF6718FFFF67FF -S31AFE013F0B18FFFF6718FFFF6718FFFF6718FFFF6718FFFF671813 -S31AFE013F20FFFF6718FFFF6718FFFF6718FFFF6718FFFF6718FF17 -S31AFE013F35FF6718FFFF6718FFFF6718FFFF6718FFFF6718FFFF02 -S31AFE013F4A6718FFFF6718FFFF6718FFFF6718FFFF6718FFFF6785 -S31AFE013F5F18FFFF6718FFFF6718FFFF6718FFFF6718FFFF6718BF -S31AFE013F74FFFF6718FFFF6718FFFF6718FFFF66CCFFFF66CCFF5D -S31AFE013F89FF66CCFFFF66CCFFFF66CCFFFF66CCFFFF66CCFFFF2F -S31AFE013F9E66CCFFFF66CCFFFF66CCFFFF66CCFFFF66CCFFFF66B3 -S31AFE013FB3CCFFFF66CCFFFF66CCFFFF66CCFFFF66F4FFFF6718C3 -S31AFE013FC8FFFF673CFFFF6760FFFF6784FFFF67F0FFFF67F0FFE7 -S31AFE013FDDFF67F0FFFF67F0FFFF67A8FFFF67C8FFFF67C8FFFFBA -S31AFE013FF267C8FFFF67C8FFFF67C8FFFF67C8FFFF67C8FFFF676D -S31AFE014007C8FFFF67C8FFFF67C8FFFF67C8FFFF67C8FFFF67C8F6 -S31AFE01401CFFFF67C8FFFF67C8FFFF67C8FFFF67C8FFFF67C8FFAA -S31AFE014031FF67C8FFFF67C8FFFF67C8FFFF67C8FFFF67C8FFFF95 -S31AFE01404667C8FFFF67C8FFFF67C8FFFF67C8FFFF67C8FFFF6718 -S31AFE01405BC8FFFF67C8FFFF67C8FFFF67C8FFFF6748FFFF6748A2 -S31AFE014070FFFF6748FFFF6748FFFF6748FFFF6748FFFF6748FFD6 -S31AFE014085FF6748FFFF6748FFFF6748FFFF6748FFFF6748FFFFC1 -S31AFE01409A6748FFFF6748FFFF6748FFFF6748FFFF6770FFFF671C -S31AFE0140AF90FFFF67B0FFFF67D0FFFF67F0FFFF6858FFFF68584C -S31AFE0140C4FFFF6858FFFF6858FFFF6810FFFF6830FFFF6830FFC5 -S31AFE0140D9FF6830FFFF6830FFFF6830FFFF6830FFFF6830FFFFE0 -S31AFE0140EE6830FFFF6830FFFF6830FFFF6830FFFF6830FFFF6862 -S31AFE01410330FFFF6830FFFF6830FFFF6830FFFF6830FFFF683084 -S31AFE014118FFFF6830FFFF6830FFFF6830FFFF6830FFFF6830FFA0 -S31AFE01412DFF6830FFFF6830FFFF6830FFFF6830FFFF6830FFFF8B -S31AFE0141426830FFFF6830FFFF6830FFFF6830FFFF67B0FFFF678F -S31AFE014157B0FFFF67B0FFFF67B0FFFF67B0FFFF67B0FFFF67B035 -S31AFE01416CFFFF67B0FFFF67B0FFFF67B0FFFF67B0FFFF67B0FFD1 -S31AFE014181FF67B0FFFF67B0FFFF67B0FFFF67B0FFFF67D8FFFF94 -S31AFE01419667F8FFFF6818FFFF6838FFFF6858FFFF68A0FFFF686A -S31AFE0141ABA0FFFF68A0FFFF68A0FFFF68A0FFFF6878FFFF68788C -S31AFE0141C0FFFF6878FFFF6878FFFF6878FFFF6878FFFF6878FF90 -S31AFE0141D5FF6878FFFF6878FFFF6878FFFF6878FFFF6878FFFF7B -S31AFE0141EA6878FFFF6878FFFF6878FFFF6878FFFF6878FFFF68FD -S31AFE0141FF78FFFF6878FFFF6878FFFF6878FFFF6878FFFF6878D8 -S31AFE014214FFFF6878FFFF6878FFFF6878FFFF6878FFFF6878FF3B -S31AFE014229FF6878FFFF6878FFFF6878FFFF6878FFFF67FCFFFFA3 -S31AFE01423E6840FFFF67FCFFFF6840FFFF67FCFFFF6840FFFF674B -S31AFE014253FCFFFF6840FFFF67FCFFFF6840FFFF67FCFFFF6840A1 -S31AFE014268FFFF67FCFFFF6840FFFF67FCFFFF6840FFFF6840FF89 -S31AFE01427DFF6840FFFF6840FFFF6840FFFF6840FFFF6840FFFFEA -S31AFE0142926840FFFF6840FFFF6840FFFF6840FFFF6840FFFF686C -S31AFE0142A740FFFF6840FFFF6840FFFF6840FFFF6840FFFF68407F -S31AFE0142BCFFFF6840FFFF6840FFFF6840FFFF6840FFFF6840FFAB -S31AFE0142D1FF6840FFFF6840FFFF6840FFFF6840FFFF6840FFFF96 -S31AFE0142E66840FFFF6840FFFF6840FFFF6840FFFF6840FFFF6818 -S31AFE0142FB40FFFF6840FFFF6840FFFF6840FFFF6840FFFF68402B -S31AFE014310FFFF6840FFFF6840FFFF6840FFFF6840FFFF6858FF3E -S31AFE014325FF6858FFFF6858FFFF6858FFFF6858FFFF6858FFFFC9 -S31AFE01433A6858FFFF6858FFFF6858FFFF6858FFFF6858FFFF684B -S31AFE01434F58FFFF6858FFFF6858FFFF6858FFFF6858FFFF679807 -S31AFE014364FFFF6798FFFF67CCFFFF6800FFFF6800FFFF6858FF88 -S31AFE014379FF6858FFFF6858FFFF6858FFFF6834FFFF6858FFFF99 -S31AFE01438E6858FFFF6858FFFF6858FFFF6858FFFF6858FFFF68F7 -S31AFE0143A358FFFF6858FFFF6858FFFF6858FFFF6858FFFF6858F2 -S31AFE0143B8FFFF6858FFFF6858FFFF6858FFFF6858FFFF6858FF36 -S31AFE0143CDFF6858FFFF6858FFFF6858FFFF6858FFFF6858FFFF21 -S31AFE0143E26858FFFF6858FFFF6858FFFF6858FFFF6858FFFF68A3 -S31AFE0143F758FFFF6858FFFF6858FFFF6858FFFF68583031323396 -S31AFE01440C3435363738390000303132333435363738396162631C -S31AFE0144216465660000000030313233343536373839414243443B -S31AFE01443645460000000000000000FFFF7240FFFF73F0FFFF735F -S31AFE01444BF0FFFF73F0FFFF73F0FFFF73F0FFFF73F0FFFF73F082 -S31AFE014460FFFF73F0FFFF73F0FFFF73F0FFFF7384FFFF7240FF7B -S31AFE014475FF73F0FFFF73F0FFFF73F0FFFF73F0FFFF73F0FFFF49 -S31AFE01448A73F0FFFF73F0FFFF73F0FFFF73F0FFFF73F0FFFF73C0 -S31AFE01449FF0FFFF7220FFFF73F0FFFF73F0FFFF7318FFFF73F0D7 -S31AFE0144B4FFFF73F0FFFF73F0FFFF73F0FFFF7240000000005EBD -S31AFE0144C9430A003078253038583A2000000000253032580000C6 -S31AFE0144DE00002020000020000000207C0000256300007C0A00BA -S31AFE0144F300202D2061726520796F7520737572652028792F6E50 -S31AFE014508293F2000556E62616C616E63656420737472696E676D -S31AFE01451D210A00416D626967756F757320636F6D6D616E64208E -S31AFE014532272573272C2063686F69636573206172653A20257315 -S31AFE01454700202573000A00000055736167653A0A002020257387 -S31AFE01455C25732025730A00002A2A204572726F723A202573205B -S31AFE014571616C7265616479207370656369666965640A002A2A24 -S31AFE014586204572726F723A20696E76616C6964206E756D626579 -S31AFE01459B72202725732720666F722025730A0000002A2A2045AC -S31AFE0145B072726F723A20696E76616C696420666C6167202725C5 -S31AFE0145C563270A000000002A2A204572726F723A206E6F20640F -S31AFE0145DA656661756C742F6E6F6E2D666C616720617267756DC9 -S31AFE0145EF656E747320737570706F727465640A00004E455441C0 -S31AFE01460453434949000000004F43544554000000556E6B6E6FEA -S31AFE014619776E206572726F7200000066696C65206E6F742066C1 -S31AFE01462E6F756E6400006163636573732076696F6C6174696FC3 -S31AFE0146436E000000006469736B2066756C6C206F7220616C6C17 -S31AFE0146586F636174696F6E20657863656564656400000000699B -S31AFE01466D6C6C6567616C2054465450206F7065726174696F6E73 -S31AFE0146820000756E6B6E6F776E207472616E73666572204944DC -S31AFE0146970066696C6520616C72656164792065786973747300A7 -S31AFE0146AC6E6F20737563682075736572000000006F706572614E -S31AFE0146C174696F6E2074696D6564206F757400736F6D65207333 -S31AFE0146D66F7274206F66206E6574776F726B206572726F72000C -S31AFE0146EB00696E76616C696420706172616D65746572000000ED -S31AFE01470070726F746F636F6C2076696F6C6174696F6E000066D2 -S31AFE014715696C65206973206C6172676572207468616E206275F5 -S31AFE01472A666665720000FFFF8BD4FFFF8BE0FFFF8BECFFFF8B0E -S31AFE01473FF8FFFF8C04FFFF8C10FFFF8C1CFFFF8C28FFFF8C342A -S31AFE014754FFFF8C40FFFF8C4CFFFF8C5847444220636F6E6E65C9 -S31AFE0147696374696F6E20706F7274006764625F706F72740000E3 -S31AFE01477E00004E6574776F726B20646562756720617420626F2A -S31AFE0147936F742074696D6500006E65745F6465627567000000AD -S31AFE0147A855736520424F4F545020666F72206E6574776F726B95 -S31AFE0147BD20636F6E66696775726174696F6E00626F6F74700026 -S31AFE0147D200004C6F63616C204950206164647265737300000023 -S31AFE0147E700626F6F74705F6D795F69700044656661756C742032 -S31AFE0147FC736572766572204950206164647265737300000062EB -S31AFE0148116F6F74705F7365727665725F69700025732E25640A44 -S31AFE01482600006E65745F696F5F7772697465000000006E657429 -S31AFE01483B5F696F5F726561640000000000FFFF9084FFFF90840D -S31AFE014850FFFF9084FFFF9084FFFF9084FFFF9084FFFF9084FFF5 -S31AFE014865FF9084FFFF9084FFFF9084FFFF9084FFFF9084FFFFE0 -S31AFE01487A9084FFFF9084FFFF9084FFFF9084FFFF90B0FFFF900E -S31AFE01488FD0FFFF90F0FFFF9110FFFF9130FFFF9354FFFF935499 -S31AFE0148A4FFFF9354FFFF9354FFFF9150FFFF9170FFFF9170FF54 -S31AFE0148B9FF9170FFFF9170FFFF9170FFFF9170FFFF9170FFFFEB -S31AFE0148CE9170FFFF9170FFFF9170FFFF9170FFFF9170FFFF9144 -S31AFE0148E370FFFF9170FFFF9170FFFF9170FFFF9170FFFF917050 -S31AFE0148F8FFFF9170FFFF9170FFFF9170FFFF9170FFFF9170FFAC -S31AFE01490DFF9170FFFF9170FFFF9170FFFF9170FFFF9170FFFF96 -S31AFE0149229170FFFF9170FFFF9170FFFF9170FFFF9108FFFF9157 -S31AFE01493708FFFF9108FFFF9108FFFF9108FFFF9108FFFF91086B -S31AFE01494CFFFF9108FFFF9108FFFF9108FFFF9108FFFF9108FF5F -S31AFE014961FF9108FFFF9108FFFF9108FFFF9108FFFF9134FFFF1E -S31AFE0149769158FFFF917CFFFF91A0FFFF91C4FFFF926CFFFF9225 -S31AFE01498B6CFFFF926CFFFF926CFFFF91E8FFFF9208FFFF920807 -S31AFE0149A0FFFF9208FFFF9208FFFF9208FFFF9208FFFF9208FF06 -S31AFE0149B5FF9208FFFF9208FFFF9208FFFF9208FFFF9208FFFFF1 -S31AFE0149CA9208FFFF9208FFFF9208FFFF9208FFFF9208FFFF9249 -S31AFE0149DF08FFFF9208FFFF9208FFFF9208FFFF9208FFFF9208BE -S31AFE0149F4FFFF9208FFFF9208FFFF9208FFFF9208FFFF9208FFB2 -S31AFE014A09FF9208FFFF9208FFFF9208FFFF92084E6F206E65740E -S31AFE014A1E776F726B20696E746572666163657320666F756E643B -S31AFE014A330A0000000043616E27742067657420424F4F5450208E -S31AFE014A48696E666F202D206E6574776F726B2064697361626CA2 -S31AFE014A5D6564210A00000049503A20257300002C204465666104 -S31AFE014A72756C74207365727665723A2025730A00000000000022 -S31AFE014A870025642E25642E25642E25640045746865726E657428 -S31AFE014A9C2073656E643A0A0045746865726E65742072656376E3 -S31AFE014AB13A0A006574685F6472765F6473722073686F756C6464 -S31AFE014AC6206E6F742062652063616C6C65643A20766563746F7E -S31AFE014ADB722025642C20646174612025780A00000000000000F9 -S31AFE014AF02E2E2E2045726173652066726F6D2025702D25703A8D -S31AFE014B052000002E0000000A0000002E2E2E2050726F67726129 -S31AFE014B1A6D2066726F6D2025702D25702061742025703A2000C5 -S31AFE014B2F004E6F206572726F72202D206F7065726174696F6E27 -S31AFE014B4420636F6D706C657465000000496E76616C69642046B1 -S31AFE014B594C41534820616464726573730000004572726F7220EA -S31AFE014B6E747279696E6720746F20657261736500000045727234 -S31AFE014B836F7220747279696E6720746F206C6F636B2F756E6C30 -S31AFE014B986F636B004572726F7220747279696E6720746F20706C -S31AFE014BAD726F6772616D0047656E65726963206572726F72005F -S31AFE014BC200004465766963652F726567696F6E206973207772D1 -S31AFE014BD76974652D70726F74656374656400000000464C415365 -S31AFE014BEC48207375622D73797374656D206E6F7420696E6974E6 -S31AFE014C0169616C697A656400000000556E6B6E6F776E206572D0 -S31AFE014C16726F7200000000000000FFFFA2E4FFFFA2F0FFFFA27D -S31AFE014C2BFCFFFFA308FFFFA314FFFFA320FFFFA32CFFFFA338AE -S31AFE014C40457272203D2025780A000000000000004672616D691E -S31AFE014C556E67206572726F72202D20626C6B3A2025782F2578BD -S31AFE014C6A2F25780A0000435243206572726F72202D2072656391 -S31AFE014C7F76643A2025303278253032782C20636F6D70757465A0 -S31AFE014C94643A2025780A0000436865636B73756D206572726F96 -S31AFE014CA972202D2072656376643A2025782C20636F6D70757423 -S31AFE014CBE65643A2025780A00000043616E277420616363657346 -S31AFE014CD3732066696C65000000536F7272792C207A4D6F64652A -S31AFE014CE86D206E6F7420617661696C61626C652079657400544D -S31AFE014CFD696D6564206F7574000000456E64206F662066696C1F -S31AFE014D12650043616E63656C6C6564000000496E76616C6964E0 -S31AFE014D27206672616D696E67004352432F636865636B73756D14 -S31AFE014D3C206572726F720000426C6F636B2073657175656E6314 -S31AFE014D5165206572726F7200000000556E6B6E6F776E206572B2 -S31AFE014D66726F7200000000000000FFFFAC7CFFFFAC70FFFFACF6 -S31AFE014D7B64FFFFAC58FFFFAC4CFFFFAC40FFFFAC34FFFFAC2828 -S31AFE014D90FFFFB028FFFFB028FFFFB020FFFFAFB8FFFFB020FF5D -S31AFE014DA5FFAFC0FFFFAFF8FFFFB000FFFFB010FFFFB010FFFFB9 -S31AFE014DBAB008FFFFB018FFFFAFF8FFFFB030FFFFB010FFFFB072 -S31AFE014DCF18FFFFB018FFFFB020FFFFB028FFFFB030FFFFB0308C -S31AFE014DE4FFFFB030FFFFB030FFFFB030FFFFB030FFFFB030FF60 -S31AFE014DF9FFB018FFFFB018FFFFB018FFFFB018FFFFB600FFFFD5 -S31AFE014E0EB600FFFFB600FFFFB600FFFFB600FFFFB600FFFFB650 -S31AFE014E2300FFFFB600FFFFB600FFFFB600FFFFB600FFFFB600F1 -S31AFE014E38FFFFB600FFFFB600FFFFB600FFFFB600FFFFB620FFBD -S31AFE014E4DFFB640FFFFB660FFFFB680FFFFB6A0FFFFB6FCFFFF0C -S31AFE014E62B6FCFFFFB6FCFFFFB6FCFFFFB6C0FFFFB6E0FFFFB668 -S31AFE014E77E0FFFFB6E0FFFFB6E0FFFFB6E0FFFFB6E0FFFFB6E05D -S31AFE014E8CFFFFB6E0FFFFB6E0FFFFB6E0FFFFB6E0FFFFB6E0FF29 -S31AFE014EA1FFB6E0FFFFB6E0FFFFB6E0FFFFB6E0FFFFB6E0FFFF14 -S31AFE014EB6B6E0FFFFB6E0FFFFB6E0FFFFB6E0FFFFB6E0FFFFB648 -S31AFE014ECBE0FFFFB6E0FFFFB6E0FFFFB6E0FFFFB6E0FFFFB6E009 -S31AFE014EE0FFFFB6E0FFFFB6E0FFFFB6E0FFFFB6E0FFFFB650FF65 -S31AFE014EF5FFB650FFFFB650FFFFB650FFFFB650FFFFB650FFFF90 -S31AFE014F0AB650FFFFB650FFFFB650FFFFB650FFFFB650FFFFB6C3 -S31AFE014F1F50FFFFB650FFFFB650FFFFB650FFFFB650FFFFB670F4 -S31AFE014F34FFFFB694FFFFB6B8FFFFB6DCFFFFB700FFFFB798FF1E -S31AFE014F49FFB798FFFFB798FFFFB798FFFFB724FFFFB744FFFF96 -S31AFE014F5EB744FFFFB744FFFFB744FFFFB744FFFFB744FFFFB7A5 -S31AFE014F7344FFFFB744FFFFB744FFFFB744FFFFB744FFFFB74403 -S31AFE014F88FFFFB744FFFFB744FFFFB744FFFFB744FFFFB744FF33 -S31AFE014F9DFFB744FFFFB744FFFFB744FFFFB744FFFFB744FFFF1E -S31AFE014FB2B744FFFFB744FFFFB744FFFFB744FFFFB744FFFFB751 -S31AFE014FC744FFFFB744FFFFB744FFFFB744FFFFB74425733A20B6 -S31AFE014FDC43616E27742066696E642061646472657373206F6652 -S31AFE014FF1207365727665720A0000005F5F7564705F73656E64D5 -S31AFE015006746F000000007564705F7265637666726F6D202D2034 -S31AFE01501B64726F70706564207061636B6574206F662025642037 -S31AFE01503062797465730A00004275665B25645D2F25703A206257 -S31AFE01504575663A2025702C206C656E3A2025642F25642C206EA7 -S31AFE01505A6578743A2025700A000046726565206C697374203D37 -S31AFE01506F2025700A005F5F656E65745F706F6C6C3A206E6F2091 -S31AFE0150846D6F726520627566666572730A00000000000000FF49 -S31AFE015099FFCC34FFFFCC8CFFFFCF08FFFFCCE0FFFFCCE0FFFF81 -S317FE0150AECD88FFFFCDC8FFFFCE64FFFFCEA8FFFFCEE8AB -S31AFE0150C0000000007C2F2D5C7C2D00005B2D725D205B2D765D27 -S31AFE0150D5205B2D68203C686F73743E5D205B2D6D207B5446545E -S31AFE0150EA50207C2078797A4D4F44454D7D5D205B2D62203C6221 -S31AFE0150FF6173655F616464726573733E5D203C66696C655F6EB5 -S31AFE015114616D653E000000000000337400007C20FE012B98000B -S31AFE0151290000000000000000000000FE005B8CFE005BA4FE008C -S31AFE01513E5B7CFE005B64FE0059F4FE0058A8FE005FA0FE005728 -S31AFE01515368FE005760000037340000000008003E2879B800001B -S31AFE015168FE0060B4FE00B218FE00B218FE00B218FE00B218FEFD -S31AFE01517D00B218FE00B218FE00B218FE00B218FE00B218FE0030 -S31AFE015192B218FE00B218FE00B218FE00B218FE00B218FE00B269 -S31AFE0151A718FE00B218FE00B218FE00B218FE00B218FE00B218EE -S31AFE0151BCFE00B218FE00B218FE00B218FE00B218FE00B218FEF3 -S31AFE0151D100B218FE00B218FE00B218FE00B218FE00B218FE00DC -S31AFE0151E6B218FE00B218FE00B218FE00B218FE00B218FE00B215 -S31AFE0151FB18FE00B218FE00B218FE00B218FE00B218FE00B2189A -S31AFE015210FE00B218FE00B218FE00B218FE00B218FE00B218FE9E -S31AFE01522500B218FE00B218FE00B218FE00B218FE00B218FE0087 -S31AFE01523AB218FE00B218FE00B218FE00B218FE00B218FE00B2C0 -S31AFE01524F18FE00B2180000000000000000000000000000000065 -S31AFE01526400000000000000000000000000000000000000000030 -S31AFE0152790000000000000000000000000000000000000000001B -S31AFE01528E00000000000000000000000000000000000000000006 -S31AFE0152A3000000000000000000000000000000000000000000F1 -S31AFE0152B8000000000000000000000000000000000000000000DC -S31AFE0152CD000000000000000000000000000000000000000000C7 -S31AFE0152E2000000000000000000000000000000000000000000B2 -S31AFE0152F70000000000000000000000000000000000000000009D -S31AFE01530C00000000000000000000000000000000000000000087 -S31AFE01532100000000000000000000000000000000000000000072 -S31AFE0153360000000000000000000000000000000000000000005D -S31AFE01534B00000000000000000000000000000000000000000048 -S31AFE01536000000000000000000000000000000000000000000033 -S31AFE0153750000000000000000000000000000000000000000001E -S31AFE01538A00000000000000000000000000000000000000000009 -S31AFE01539F000000000000000000000000000000000000000000F4 -S31AFE0153B4000000000000000000000000000000000000000000DF -S31AFE0153C9000000000000000000000000000000000000000000CA -S31AFE0153DE000000000000000000000000000000000000000000B5 -S31AFE0153F3000000000000000000000000000000000000000000A0 -S31AFE0154080000000000000000000000000000000000000000008A -S31AFE01541D000000000000000000000000000000FE000000FE0079 -S31AFE01543200000040000000000000FF000000FF00000000100012 -S31AFE0154470001000000FA100000FA100000000000040100000031 -S31AFE01545C000000000000000000800000000000000000000000B6 -S31AFE01547100000000000000000000000000000000000000FE0023 -S31AFE01548685D8FE008634000000000000000000000000FFFFFFFA -S31AFE01549BFF0000000000000000FE0096800000000000000000E4 -S31AFE0154B00001235000000000000000000000000000000000006E -S31AFE0154C5000000FFFFFFFEFFFFFFFE0000000000001E140000A5 -S31AFE0154DA1E14000001F400000000000000000000000000000091 -S31AFE0154EF0000000000FE00E440FE00E8E8FE00E6D400001021CA -S31AFE01550420423063408450A560C670E781089129A14AB16BC157 -S31AFE0155198CD1ADE1CEF1EF123102103273225252B5429472F72B -S31AFE01552E62D693398318B37BA35AD3BDC39CF3FFE3DE2462343D -S31AFE015543430420140164E674C744A45485A56AB54B8528950932 -S31AFE015558E5EEF5CFC5ACD58D365326721611063076D766F65652 -S31AFE01556D9546B4B75BA77A97198738F7DFE7FED79DC7BC48C435 -S31AFE01558258E5688678A70840186128023823C9CCD9EDE98EF9B4 -S31AFE015597AF89489969A90AB92B5AF54AD47AB76A961A710A505E -S31AFE0155AC3A332A12DBFDCBDCFBBFEB9E9B798B58BB3BAB1A6C5C -S31AFE0155C1A67C874CE45CC52C223C030C601C41EDAEFD8FCDECA0 -S31AFE0155D6DDCDAD2ABD0B8D689D497E976EB65ED54EF43E132E6A -S31AFE0155EB321E510E70FF9FEFBEDFDDCFFCBF1BAF3A9F598F78F3 -S31AFE015600918881A9B1CAA1EBD10CC12DF14EE16F108000A1308B -S31AFE015615C220E3500440257046606783B99398A3FBB3DAC33DEE -S31AFE01562AD31CE37FF35E02B1129022F332D2423552146277722E -S31AFE01563F56B5EAA5CB95A88589F56EE54FD52CC50D34E224C33A -S31AFE01565414A004817466644754244405A7DBB7FA879997B8E734 -S31AFE0156695FF77EC71DD73C26D336F2069116B0665776764615DA -S31AFE01567E5634D94CC96DF90EE92F99C889E9B98AA9AB584448C0 -S31AFE015693657806682718C008E1388228A3CB7DDB5CEB3FFB1E83 -S31AFE0156A88BF99BD8ABBBBB9A4A755A546A377A160AF11AD02A89 -S31AFE0156BDB33A92FD2EED0FDD6CCD4DBDAAAD8B9DE88DC97C26AE -S31AFE0156D26C075C644C453CA22C831CE00CC1EF1FFF3ECF5DDF4E -S31AFE0156E77CAF9BBFBA8FD99FF86E177E364E555E742E933EB20C -S31AFE0156FC0ED11EF0000000000000000000000000000003E800BC -S31AFE0157110000000000000000000000000000000000000000007E -S31AFE01572600000000000000000000000000000000000000000069 -S31AFE01573B00000000000000000000000000FE013160FE01315044 -S31AFE015750FE0130E0FE003E38FE013074FE013044FE01303CFE3D -S31AFE015765003A5CFE013034FE01301CFE013000FE003C60FE011E -S31AFE01577A2FF8FE012FB4FE012FB0FE004534FE012F68FE012FF3 -S31AFE01578F44FE012F3CFE004794FE012FA8FE012F78FE012F705F -S31AFE0157A4FE004644FE0130D8FE0130A4FE01307CFE0038A8FE02 -S31AFE0157B901299CFE012984FE012978FE002864FE012970FE01A3 -S31AFE0157CE2948FE01292CFE002A54FE012EFCFE012EE8FE012E15 -S31AFE0157E3E0FE003714FE012F34FE012F08FE012F00FE002F7020 -S31AFE0157F8FE012928FE01290CFE0128F4FE002B4CFE0128ECFE72 -S31AFE01580D0128D8FE0128D0FE0029E0FE012BE4FE012BD8000072 -S31AFE015822330CFE004C4CFE013810FE0137FC000000000000001E -S31AFE015837010000000100000000FE013828FE01381CFE0138105C -S31AFE01584C000000010000000400000000FE013864FE01383CFE31 -S31AFE015861013810000000010000000200000000FE0147CCFE01D0 -S31AFE01587647A800000000000000010000000100000000FE0147E1 -S31AFE01588BE8FE0147D4FE0147CC000000000000000500000000EA -S31AFE0158A0FE014810FE0147F4FE0147CC00000000000000050046 -S31AFE0158B5000000FE014774FE0147600000000000000001000078 -S31AFE0158CA000200000000FE01479CFE014780000000000000001A -S31AFE0158DF010000000100000000FE002CE800000000FE00DFA816 -S31AFE0158F400000000FE012BA0FE005BBC0000335C000000004EDE -S314FE015909800021000000000000000000000000E9 +S31AFE0025D3247C0004AC7CA12B784E8000209421FFE07C0802A631 +S31AFE0025E893A1001493C1001893E1001C90010024380000003D6C +S31AFE0025FD2000003FC000003BA9441890094418901E43884800B0 +S31AFE0026120D712C030000418200D83D2000008089437C3D6000A5 +S31AFE00262700800B43783D2000013BE984947C8422147C84005034 +S31AFE00263C7FE3FB7838A0040048008B997FE3FB78388003FC4894 +S31AFE00265100968D801F03FC7C0300004082002C813F00043C0042 +S31AFE0026660BAD6000FACE7C09000040820018813F03F83C00DE47 +S31AFE00267BAD6000DEAD7C090000418200183C60FE01386349903F +S31AFE00269048009D1D4800007948000058380000013C60FE01906A +S31AFE0026A51E4388386347303881000838A00001480002D18001EB +S31AFE0026BA00082C000000418200303C60FE01386347487FA4EB0D +S31AFE0026CF7838A00004480002B13C60FE013C80000038634784E6 +S31AFE0026E4388443FC38A0000248000299800100247C0803A683D0 +S31AFE0026F9A1001483C1001883E1001C382100204E80002094211B +S31AFE00270EFFF07C0802A693C1000893E1000C900100143D2000B9 +S31AFE002723003D6000003C6000013BC940F03BEB401838638494FE +S31AFE0027383880000038A0040048008B757C1FF000418200207FBF +S31AFE00274DE3FB784800003D2C0300004182001C3BFF00187C1F9D +S31AFE002762F0004082FFE83D20000038000001900943888001004A +S31AFE002777147C0803A683C1000883E1000C382100104E800020F5 +S31AFE00278C9421FFE07C0802A69361000C9381001093A100149375 +S31AFE0027A1C1001893E1001C900100243D2000017C7C1B783BE9F4 +S31AFE0027B6849C3B6000004800012C881C00139BDF0001981F00F1 +S31AFE0027CB00893C000F987F0003993F0002897D00002F83000075 +S31AFE0027E02C0B00003BFF00044182002C7FE9FB787FA3EB788894 +S31AFE0027F50900007C005A14980900008D630001392900012C0BAC +S31AFE00280A00004082FFE87D3F4B7838000000981F00003BFF0064 +S31AFE00281F01419E004883BC0008897D00002C0B00004182002C05 +S31AFE0028347FE9FB787FA3EB78880900007C005A14980900008D82 +S31AFE002849630001392900012C0B00004082FFE87D3F4B78380018 +S31AFE00285E0000981F00003BFF0001813C00103809FFFF2800003B +S31AFE00287305418100443D60FE01396B49785400103A7D4B002EAC +S31AFE0028883D20FE01392949787D4A4A147D4903A64E80042080B2 +S31AFE00289D1C0014901F000048000014801C0014A13C0018901F93 +S31AFE0028B20000B13F0004807C00104800053D38600001480000A2 +S31AFE0028C79C48000531881F0001893F00037C001A14392900045B +S31AFE0028DC7FC04A147F7BF2147FFFF214281B03EF4181006088E3 +S31AFE0028F17F00002C0300004082FFD083BC00007FA3EB78480083 +S31AFE0029069B653BC30001807C0010480004E9813C00087C1BF22A +S31AFE00291B142C090000386300047F601A14418200187D234B7870 +S31AFE00293048009B39386300017F7B1A144800000838600000289E +S31AFE0029451B03F04081FE78809C00003C60FE01386349604800F1 +S31AFE00295A9A5538600000800100247C0803A68361000C83810017 +S31AFE00296F1083A1001483C1001883E1001C382100204E800020C4 +S31AFE0029849421FFE07C0802A6934100089361000C9381001093E7 +S31AFE002999A1001493C1001893E1001C900100243D2000008009D9 +S31AFE0029AE43887C7A1B782C0000007C9C23787CBB2B7841820040 +S31AFE0029C3F43D2000013BE9849C381F03F07C1F0040408000D0B0 +S31AFE0029D8887F00004800041D897F0003893F00017C1F5A147C1D +S31AFE0029ED691A14396B0004392900047FA35A147FC04A147F433D +S31AFE002A02D378389F000448009A992C03000040820080881F0002 +S31AFE002A17007C00D8004082005C381BFFFF280000054181006094 +S31AFE002A2C3D60FE01396B49485400103A7D4B002E3D20FE013997 +S31AFE002A412949487D4A4A147D4903A64E800420801E0000901CF2 +S31AFE002A56000048000030A01E0004813E0000B01C0004913C00D1 +S31AFE002A6B004800001C93DC0000480000143C60FE01386348F8AD +S31AFE002A807F44D37848009929386000014800002C3D2000017F3B +S31AFE002A95FFEA143929888C7C1F48404180FF383C60FE01386364 +S31AFE002AAA49247F44D378480098FD38600000800100247C0803F7 +S31AFE002ABFA6834100088361000C8381001083A1001483C10018F4 +S31AFE002AD483E1001C382100204E8000209421FFE07C0802A693AF +S31AFE002AE981001093A1001493C1001893E1001C900100243D40CD +S31AFE002AFE0001380004003D200BAD3D60DEAD3B8A8494900A844A +S31AFE002B13946129FACE616BDEAD913C0004917C03F87F83E37836 +S31AFE002B28388003FC480091B13FE00000801F437C3D20000090E9 +S31AFE002B3D7C03FC816943787C0002143C60FE017FC058503863B0 +S31AFE002B5248A04800A3D12C03000041820088809F437C3BA10092 +S31AFE002B67087FC3F3787FA5EB784800E0457C7F1B794182002C2E +S31AFE002B7C83A100087FE3FB784800E3657C661B783C60FE013867 +S31AFE002B916340E87FA4EB787FE5FB7848009811480000447FC384 +S31AFE002BA6F3787F84E3787FA6EB7838A004004800E1857C7F1B25 +S31AFE002BBB794182002883A100087FE3FB784800E3217C661B78DB +S31AFE002BD03C60FE01386348CC7FA4EB787FE5FB78480097CD8019 +S31AFE002BE50100247C0803A68381001083A1001483C1001883E179 +S31AFE002BFA001C382100204E8000209421FBC07C0802A6934104CB +S31AFE002C0F289361042C9381043093A1043493C1043893E1043C68 +S31AFE002C24900104443D2000003B4940F07C7F1B787C9C23784824 +S31AFE002C390007492C0300003B6000004182018C3D2000013BC9B6 +S31AFE002C4E8494386100087FC4F37838A00400480085813BA104FC +S31AFE002C63083D6000003D20FE01936B4418392948587FA3EB7876 +S31AFE002C783880006C38A0000038C0000238E1042039000000488F +S31AFE002C8D00A6E13D40FE017FE3FB787F84E3787FA6EB78394AED +S31AFE002CA23E3838A0000138E0000139000000392000004800A631 +S31AFE002CB7D52C030000418201143BFE0008381E03F87C1F0040BB +S31AFE002CCC408000F8881E00082C000000418200EC887F00003B6C +S31AFE002CE1C0000048000115881F0001893F00037C001A1439293D +S31AFE002CF600043D6000007F804A143BAB4018480000083BBD0041 +S31AFE002D0B187C1DD0004182001C807D0000389F00044800978513 +S31AFE002D202C0300004082FFE483DD000480A104207FC4F3787FF0 +S31AFE002D35E3FB78480001193803000128000005418100643D60A1 +S31AFE002D4AFE01396B48885400103A7D4B002E3D20FE0139294863 +S31AFE002D5F887D4A4A147D4903A64E8004203C60000138638494FD +S31AFE002D743881000838A0040048008461480000503B6000017FC9 +S31AFE002D89FFE2144800001C3D2000013BE9849C480000103C6042 +S31AFE002D9EFE0138634870480096093D2000013929888C7C1F482C +S31AFE002DB34040800010881F00002C0000004082FF1C2C1B000000 +S31AFE002DC8418200084BFFFD15800104447C0803A6834104288362 +S31AFE002DDD61042C8381043083A1043483C1043883E1043C38213B +S31AFE002DF204404E8000203803FFFF28000005418100483D60FE8B +S31AFE002E0701396B48405400103A7D4B002E3D20FE0139294840AB +S31AFE002E1C7D4A4A147D4903A64E800420386000044E8000203855 +S31AFE002E316000084E800020386000004E800020386002004E8044 +S31AFE002E460020386000004E8000209421FEB87C0802A6930101A1 +S31AFE002E5B289321012C93410130936101349381013893A1013C69 +S31AFE002E7093C1014093E101449001014C7C7F1B78881F00037C69 +S31AFE002E859E23782C0000007CB82B7841820044887F0001388130 +S31AFE002E9A0110386300047C7F1A1438A000014BFFFADD881F00A5 +S31AFE002EAF022C00000041820014800101102C000000418201BCC7 +S31AFE002EC448000010800101102C000000408201AC881F0003893D +S31AFE002ED93F00012C1E00007C1F0214392900047FA04A144182FF +S31AFE002EEE00183C60FE01386347987FC4F378480094B14800001B +S31AFE002F03143C60FE0138634798389F00044800949D8B3F00006E +S31AFE002F183819FFFF28000005418101483D60FE01396B4810542D +S31AFE002F2D00103A7D4B002E3D20FE01392948107D4A4A147D494A +S31AFE002F4203A64E800420801D00002C000000418200103D20FEE4 +S31AFE002F5701388947A4480000303D20FE01388947AC48000024C0 +S31AFE002F6C3C60FE01809D0000386347B448009435480000EC7F3A +S31AFE002F81A3EB784800D2A97C641B783C60FE01386347A0480096 +S31AFE002F969419480000D07FBEEB783BE000003F80FE013FA0FE07 +S31AFE002FAB017C9EF8AE387C47BC480093F9281F00044181000CA8 +S31AFE002FC0387D47C4480093E93BFF0001281F00054081FFDC3C15 +S31AFE002FD560FE017FDDF378386347C8480093CD480000843C6003 +S31AFE002FEAFE01386347CC480000883C60FE01386347D048009329 +S31AFE002FFFB1881D00007FBEEB782C0000007FBFEB7841820058DB +S31AFE0030143F40FE013B6000003B80000A881E00002C00000A41A8 +S31AFE0030298200187FEBFB788C0B00012C00000A4082FFF87D7F94 +S31AFE00303E5B787FC4F3789B7F0000387A47D4480093613BDF00BB +S31AFE003053019B9F0000881E00007FDFF3782C0000004082FFBC11 +S31AFE0030682C180000418200183C60FE01386347D048009335389B +S31AFE00307D600002480002342C19000441820054386100083880A1 +S31AFE003092010038A00000480099952C0300003860FFFF4180024E +S31AFE0030A71038610008480093BD2C0300004182FFC8880100087D +S31AFE0030BC2C00002E4082000C38600000480001EC2C00005E403C +S31AFE0030D182000C38600003480001DC3819FFFF2800000541815A +S31AFE0030E601CC3D60FE01396B48285400103A7D4B002E3D20FE65 +S31AFE0030FB01392948287D4A4A147D4903A64E80042083FD0000E3 +S31AFE00311038610008388101144800A7392C0300004182017C8020 +S31AFE0031250101147C1F00004182FF50901D00004800017C83FDDC +S31AFE00313A0000386100083881011838A0000038C000004800A54C +S31AFE00314F952C03000041820148800101187C1F00004082FFD0D1 +S31AFE0031644BFFFF1883FD0000386100083881011C4800CF6D2C4A +S31AFE003179030000418201208001011C7C1F00004082FFA84BFF6A +S31AFE00318EFEF0801D0000A17D00049001010839210108B1690064 +S31AFE0031A304380100087D3A4B78900101243BC000003F60FE0105 +S31AFE0031B83BE101203B810124806101247FE4FB787F85E378386D +S31AFE0031CDDB47C44800A5112C030000418200B4881F00037C1D1C +S31AFE0031E2F1AE3BDE0001281E00054081FFD4480000C03C60FE9A +S31AFE0031F7017FBEEB78386347DC480091AD4800004488010008BD +S31AFE00320C3BE100082C000000418200287FC4F3787FEBFB78885B +S31AFE0032210B0000980400008D2B0001388400012C090000408280 +S31AFE003236FFEC7C9E23783800000A981E00003BDE000138000095 +S31AFE00324B003C60FE01981E00003863480848009155386100085F +S31AFE0032603880010038A00000480097C52C0300003860FFFF411A +S31AFE00327580004038610008480091ED2C0300004082FF8448005D +S31AFE00328A0028A01A000481210108B01D0004913D000038600063 +S31AFE00329F04480000143C60FE01386347CC4800910138600001FA +S31AFE0032B48001014C7C0803A6830101288321012C834101308310 +S31AFE0032C96101348381013883A1013C83C1014083E10144382131 +S31AFE0032DE01484E8000209421FFF07C0802A693C1000893E10000 +S31AFE0032F30C900100147C7E1B782C1E00017C9F237841810014AD +S31AFE0033083C60FE01386346F04800148948000054480000692CE2 +S31AFE00331D030000418200483C6000003C80000080BF0004386353 +S31AFE0033323F0838843F7848009E717C631B794182001C8003009C +S31AFE0033470C7FC3F3787FE4FB787C0803A64E800021480000106A +S31AFE00335C3C60FE013863470448001435800100147C0803A68301 +S31AFE003371C1000883E1000C382100104E8000209421FFE07C089B +S31AFE00338602A6934100089361000C9381001093A1001493C100EA +S31AFE00339B1893E1001C900100243D2000008009337C2C000000FB +S31AFE0033B04082009C3FE00000807F43F8380000019009337C3C90 +S31AFE0033C563FFFF3C8000014800D6157C641B79418200183C60B3 +S31AFE0033DAFE013863469448008FCD38600000480000683F6000DB +S31AFE0033EF003F40000038600000389B437438BA43784800D7490F +S31AFE0034043FA000003F800000387D437C389C43804800D76980FE +S31AFE0034199B437480BA437880DC43803C60FE0180FD437C3863C2 +S31AFE00342E46C048008F7D813D437C801F43F83D2900017C0900E8 +S31AFE003443503D600000900B438438600001800100247C0803A6B6 +S31AFE003458834100088361000C8381001083A1001483C100188374 +S31AFE00346DE1001C382100204E8000209421FFA87C0802A6938146 +S31AFE003482004893A1004C93C1005093E100549001005C380000D8 +S31AFE003497007C7D1B787C9C23783D20FE0190010040392945F415 +S31AFE0034AC9001003C386100083880006238A0000138C000003876 +S31AFE0034C1E100383901003C48009EA53D20FE013929461038612B +S31AFE0034D600203880006338A0000038C0000238E100403900003E +S31AFE0034EB0048009E813D40FE017FA3EB787F84E378394A45BC7E +S31AFE00350038A0000238C1000838E000023901004439200001489D +S31AFE003515009E752C030000408200143C60FE01386343084800BC +S31AFE00352A1271480000DC80610044480012AD7C7C1B7940820067 +S31AFE00353F183C60FE0180810044386345DC48008E61480000B888 +S31AFE0035548001003C2C0000004082000C801C0014900100383DF1 +S31AFE0035692000008009440C806100387C0300404180001C80BC5F +S31AFE00357E00183D200000816943F87C032A147C00584041800008 +S31AFE003593143C60FE013863462448008E1148000068809C0010A8 +S31AFE0035A848007C35801C001C3D20000080610038809C00209017 +S31AFE0035BD0944144800871D800100407C7D1B782C00000041826C +S31AFE0035D200143C60FE013863463C7FA4EB7848008DCD809C00D0 +S31AFE0035E7FC2C0400004182001C7C1D2000418200143C60FE0195 +S31AFE0035FC386346507FA5EB7848008DA98001005C7C0803A683F3 +S31AFE00361181004883A1004C83C1005083E10054382100584E809C +S31AFE00362600209421FFD87C0802A69341001093610014938100B3 +S31AFE00363B1893A1001C93C1002093E100249001002C3D40FE01C9 +S31AFE003650394A45BC38A0000238C0000038E00000390100083978 +S31AFE00366520000148009D212C030000408200143C60FE013863EA +S31AFE00367A43084800111D480001843D6000003D20000080A94343 +S31AFE00368F7C800B43783FA000007F650050807D43847F64DB7853 +S31AFE0036A448007B3983DD43843BA000003BE000043BDE0400488B +S31AFE0036B900000C3BFF00013BDE01003F400000801A437C54006B +S31AFE0036CEC23E7C1F004040800040881E00002C0000FF4182FF75 +S31AFE0036E3DC806100087FC4F37848008DB52C0300004082FFC819 +S31AFE0036F83C60FE0180810008386345C8480098212C03000041FC +S31AFE00370D8200F83BA000012C1D0000408200183C60FE0180818E +S31AFE0037220008386345DC48008C85480000D83B81000C807E008B +S31AFE00373710809E00187F85E3784800D4757C7F1B7941820028C9 +S31AFE00374C83A1000C7FE3FB784800D7957C661B783C60FE013863 +S31AFE0037616345287FA4EB787FE5FB7848008C417FC3F3783880A8 +S31AFE00377600FF38A0010048007B39809A437C7F63DB787F85E371 +S31AFE00378B784800D4297C7F1B794182002C83A1000C7FE3FB78E5 +S31AFE0037A04800D7497C661B783C60FE01386345287FA4EB787F8B +S31AFE0037B5E5FB7848008BF5480000483D2000008089438480BAE4 +S31AFE0037CA437C7F63DB787F86E3784800D5657C7F1B79418200BE +S31AFE0037DF2883A1000C7FE3FB784800D7017C661B783C60FE0174 +S31AFE0037F4386345487FA4EB787FE5FB7848008BAD8001002C7C8E +S31AFE0038090803A683410010836100148381001883A1001C83C189 +S31AFE00381E002083E10024382100284E8000209421FFA07C0802A0 +S31AFE003833A69381005093A1005493C1005893E1005C9001006479 +S31AFE003848380000007C7D1B787C9C23783D20FE01900100443986 +S31AFE00385D2942789001003C386100083880006638A0000138C012 +S31AFE003872000038E100383901003C48009AF13D20FE01392945A0 +S31AFE0038876C386100203880006C38A0000138C0000038E10040B5 +S31AFE00389C3901004448009ACD3D40FE017FA3EB787F84E378394E +S31AFE0038B14A3E3838A0000238C1000838E00002390000003920B7 +S31AFE0038C6000048009AC12C030000408200143C60FE01386343C8 +S31AFE0038DB0848000EBD480001048001003C2C00000041820010B0 +S31AFE0038F0800100442C000000408200143C60FE013863457448C1 +S31AFE003905000E95480000DC806100384800D1F57C7C1B7940826D +S31AFE00391A002080610038800100407C6302143863FFFF4800D1F3 +S31AFE00392FD97C7C1B794182004483A100387F83E3784800D5A994 +S31AFE0039447C651B783C60FE01386343687FA4EB7848008A593D27 +S31AFE0039592000003D6000003C60FE018089437480AB43783863BC +S31AFE00396E438848008A3D4800007080810038800100407C832392 +S31AFE003983787C8402143884FFFF480036DD2C0300004182001482 +S31AFE0039983C60FE013863458848008A0D48000040806100388013 +S31AFE0039AD81004038A100484800D2017C7C1B794182002883A169 +S31AFE0039C200487F83E3784800D5217C661B783C60FE0138634519 +S31AFE0039D7287FA4EB787F85E378480089CD800100647C0803A61A +S31AFE0039EC8381005083A1005483C1005883E1005C382100604E93 +S31AFE003A018000209421FEF87C0802A6934100F0936100F4938175 +S31AFE003A1600F893A100FC93C1010093E101049001010C380000CB +S31AFE003A2B007C7D1B787C9C23783D20FE01900100E03929423C96 +S31AFE003A40900100B4900100BC900100C4900100CC900100D49034 +S31AFE003A550100DC386100083880006238A0000138C0000038E1D6 +S31AFE003A6A00B0390100B4480098FD3D20FE0139294250386100DF +S31AFE003A7F203880007238A0000138C0000038E100B8390100BC4C +S31AFE003A94480098D93D20FE0139294264386100383880006538D6 +S31AFE003AA9A0000138C0000038E100C0390100C4480098B538E1E6 +S31AFE003ABE00C83D20FE017CFE3B783929427838610050388000E1 +S31AFE003AD36638A0000138C00000390100CC4800988D3D20FE01D4 +S31AFE003AE839294294386100683880006C38A0000138C00000385F +S31AFE003AFDE100D0390100D4480098693D20FE01392942AC386163 +S31AFE003B1200803880007338A0000138C0000038E100D8390100F3 +S31AFE003B27DC480098453D20FE01392942C8386100983880006E65 +S31AFE003B3C38A0000038C0000238E100E039000000480098213D2E +S31AFE003B5140FE017FA3EB787F84E378394A42FC38A0000238C1A5 +S31AFE003B66000838E00007390100E439200001480098152C030083 +S31AFE003B7B00408200143C60FE013863430848000C114800059890 +S31AFE003B90800100E42C000000418200AC3F8000003D2000008080 +S31AFE003BA5BC437C3FA0000080894378807D43847C85205048006C +S31AFE003BBA7625801C437C839D43845409C23F3BA000003F40005D +S31AFE003BCF00418200743BE00001881C00002C0000FF4182004CAC +S31AFE003BE4806100E47F84E378480088B52C030000408200388077 +S31AFE003BF90100D42C00000040820010801C001893E100D4900153 +S31AFE003C0E00D0800100CC2C0000004082002C801C001093E10046 +S31AFE003C23CC900100C84800001C801A437C3BBD00015400C23E59 +S31AFE003C387C1D00403B9C01004180FF98800100E02C000000409D +S31AFE003C4D82000C800100B448000008800100CC2C00000041820F +S31AFE003C62001C800100D42C00000041820010800100E42C000048 +S31AFE003C7700408200143C60FE013863431C48000B154800049C79 +S31AFE003C8C800100DC814100D02C00000040820008914100D83D53 +S31AFE003CA12000008009437C816100D87D2A02143929FFFF7D2925 +S31AFE003CB603963F4000007D2901D67C095840912100D040800001 +S31AFE003CCB143C60FE0138634338480086D94800044C800100CC8F +S31AFE003CE02C00000041820070806100C84800CE197C7F1B7940C5 +S31AFE003CF5820020806100C8800100D87C6302143863FFFF48003C +S31AFE003D0ACDFD7C7F1B794182004483A100C87FE3FB784800D166 +S31AFE003D1FCD7C651B783C60FE01386343687FA4EB784800867D98 +S31AFE003D343D2000003D6000003C60FE018089437480AB43783803 +S31AFE003D4963438848008661480003D4806100E448008711280315 +S31AFE003D5E000F408100183C60FE01386343A438800010480086B1 +S31AFE003D733D480003B0800100E02C000000408200883FE0000009 +S31AFE003D88808100B0801F440C7C0400404180001C800100D83D4F +S31AFE003D9D200000816943F87C0402147C005840418000283C6099 +S31AFE003DB2FE01386343D4480085F53D2000003C60FE01809F442A +S31AFE003DC70C80A943F838634388480085DD800100CC2C000000EA +S31AFE003DDC4082002C808100D07FC3F378480003652C0300004043 +S31AFE003DF18200183C60FE01808100D038634400480085AD480012 +S31AFE003E0603203F8000003D20000080BC437C800943783FA00046 +S31AFE003E1B007F650050807D43847F64DB78480073B5801C437C95 +S31AFE003E30839D43845409C23F3BA000003BE00000418200883FB4 +S31AFE003E45C0FE01881C00002C0000FF41820060806100E47F84EB +S31AFE003E5AE378480086452C0300004082004C800100CC2C00002B +S31AFE003E6F0041820014813C0010800100C87C09000040820240C4 +S31AFE003E84809C001880A100D07C04280040820240808100E43837 +S31AFE003E997E448C480090892C030000418202803BE00001480089 +S31AFE003EAE001C801A437C3BBD00015400C23E7C1D00403B9C0188 +S31AFE003EC3004180FF842C1F0000814100E04082004C3D2000004A +S31AFE003ED88009437C3D6000005400C23E7C1F0040838B43843BAD +S31AFE003EEDA000004800001C3D2000008009437C3BBD00015400C6 +S31AFE003F02C23E7C1D00403B9C010040800010881C00002C000055 +S31AFE003F17FF4082FFDC2C0A0000408200C4808100C8800100D817 +S31AFE003F2C7C8323787C8402143884FFFF480031312C03000041F8 +S31AFE003F418200143C60FE01386344A848008461480001D43BC169 +S31AFE003F5600E8806100C8808100D07FC5F3784800CC517C7F1BC6 +S31AFE003F6B793BA000014182002C83A100E87FE3FB784800CF6D94 +S31AFE003F807C661B783C60FE017FA4EB78386344DC7FE5FB7848B8 +S31AFE003F950084193BA000002C1D000041820044806100C88081A1 +S31AFE003FAA00B080A100D87FC6F3784800CD857C7F1B79418200B9 +S31AFE003FBF2883A100E87FE3FB784800CF217C661B783C60FE0198 +S31AFE003FD4386345007FA4EB787FE5FB78480083CD7F83E378386A +S31AFE003FE980000038A00100480072C5808100E47F83E37848005D +S31AFE003FFE84D9800100BC812100C82C000000913C0010408200DB +S31AFE00401320800100CC2C0000004182000C812100C8480000106A +S31AFE004028812100B048000008812100B8800100C4913C00142C31 +S31AFE00403D000000408200103D2000008009441448000008800189 +S31AFE00405200C0901C001C800100D03BA100E8901C001881210052 +S31AFE004067D8913C0020806100C8808100D848007C693D2000006F +S31AFE00407C907C00FC8089437C7F63DB787FA5EB784800CB297CE7 +S31AFE0040917F1B794182004C83A100E87FE3FB784800CE497C66D2 +S31AFE0040A61B783C60FE01386345287FA4EB787FE5FB78480082A4 +S31AFE0040BBF5480000683C60FE0138634428480082E54800005856 +S31AFE0040D03C60FE0138634454480082D5480000483D20000080FD +S31AFE0040E589438480BA437C7F63DB787FA6EB784800CC457C7F68 +S31AFE0040FA1B794182002883A100E87FE3FB784800CDE17C661B5A +S31AFE00410F783C60FE01386345487FA4EB787FE5FB784800828DA8 +S31AFE0041248001010C7C0803A6834100F0836100F4838100F883BC +S31AFE004139A100FC83C1010083E10104382101084E8000203D2075 +S31AFE00414E00003D60000081494374810B43787D4B53787C0B4099 +S31AFE00416340408000783D2000008009437C5400F0BE7C06037827 +S31AFE0041785407103A800A00002C00FFFF4182004C7C0B500041AE +S31AFE00418D8200147C0B50507C0016707C002040408000587D4B9E +S31AFE0041A253787C0B40404080002054C9103A7D6B4A147C0B40DE +S31AFE0041B74040800010800B00002C00FFFF4082FFEC7D6A5B78C3 +S31AFE0041CC480000087D4A3A147C0A40404180FFA47C0B500041F3 +S31AFE0041E18200207C0B50507C0016707C00204041800010916359 +S31AFE0041F60000386000014E800020386000004E8000209421FFEF +S31AFE00420BE87C0802A69381000893A1000C93C1001093E100143E +S31AFE0042209001001C3D6000003D20000083EB437483C943787F33 +S31AFE004235E4FB787C1FF040408000883F80FE013FA00000801FCA +S31AFE00424A00002C00FFFF4182005C7C04F80041820010387C42D1 +S31AFE00425F247FE5FB78480081497C1FF0407FE4FB7840800034A4 +S31AFE004274801F00002C00FFFF41820028801D437C5400F0BE54CB +S31AFE00428909103A7C844A147C04F04040800010800400002C003B +S31AFE00429EFFFF4082FFEC7C9F237848000014801D437C5400F0AA +S31AFE0042B3BE5400103A7FFF02147C1FF0404180FF887C04F80077 +S31AFE0042C8418200143C60FE01386342247FE5FB78480080D58076 +S31AFE0042DD01001C7C0803A68381000883A1000C83C1001083E18A +S31AFE0042F20014382100184E8000209421FFC87C0802A693810084 +S31AFE0043072893A1002C93C1003093E100349001003C7C7D1B7890 +S31AFE00431C7C9C2378380000003D20FE01900100203929418C3829 +S31AFE0043316100083880006338A0000038C0000238E100203900AB +S31AFE0043460000480090253D40FE017FA3EB787F84E378394A3E41 +S31AFE00435B3838A0000238C1000838E0000139000000392000008B +S31AFE004370480090192C030000418200B4810100203D2000003D61 +S31AFE00438560000081494378800B437C2C0800007FA050503FE0DE +S31AFE00439A0000418200103D20FE01388941E04800000C3D20FE4A +S31AFE0043AF01388941EC3C60FE01386341A048007FF13D200000DA +S31AFE0043C48009437C3B8000005409C23F4182005C3FC0FE0188DA +S31AFE0043D91D00002C0000FF418200348001002080BD00102C0072 +S31AFE0043EE00004182000C80DD00FC4800000880DD001480FD0050 +S31AFE00440318811D001C387E41F87FA4EB7848007F9D801F437C97 +S31AFE0044183B9C00015400C23E7C1C00403BBD01004180FFB0809E +S31AFE00442D01003C7C0803A68381002883A1002C83C1003083E1B8 +S31AFE0044420034382100384E8000209421FFC07C0802A69341003A +S31AFE004457289361002C9381003093A1003493C1003893E1003C1C +S31AFE00446C900100447C7D1B787C9C2378380000003D20FE0190FF +S31AFE00448101002039294024386100083880006638A0000038C0AC +S31AFE004496000238E100203900000048008ECD3D40FE017FA3EB6D +S31AFE0044AB787F84E378394A3E3838A0000238C1000838E0000135 +S31AFE0044C0390000003920000048008EC12C030000418202A03CEA +S31AFE0044D560FE013863405048008A492C030000408200143C6088 +S31AFE0044EAFE013863408048007EBD4800027C3C60FE01386340A0 +S31AFE0044FF8C48007EAD3F60000083BB437C3C0000027F9D0000AF +S31AFE0045143D20000083E943844FFEEB827C000026540007FE7CCD +S31AFE0045290000D07C0900F87FBD00383D6000005529039C7FBDC2 +S31AFE00453E4B7883CB43747FE3FB783880000038A0010048006D81 +S31AFE004553653D20FE01396940B0800940B0814B000493DF001031 +S31AFE00456893DF0014901F0000915F000493BF00183BFF01007FED +S31AFE00457DE3FB783880000038A0010048006D2D3D60FE01814BF4 +S31AFE00459240B8392B40B88109000C80090004816900087FDEEA60 +S31AFE0045A71493DF001093DF0014915F0000901F0004917F000824 +S31AFE0045BC911F000C93BF00183BFF01007FE3FB783880000038C0 +S31AFE0045D1A0010048006CE13D20FE01800940C8396940C8812B58 +S31AFE0045E60008814B0004A10B000C901F0000915F0004913F00B9 +S31AFE0045FB08B11F000C892B000E3F800000993F000E801B437C02 +S31AFE004610817C43787D2002147F495850901F0018935F0010935A +S31AFE0046255F00143BFF01007FE3FB783880000038A00100480020 +S31AFE00463A6C7D3D60FE01814B40D8392B40D8800900048169000B +S31AFE00464F08A109000C917F0008915F0000901F0004B11F000CFD +S31AFE004664817C4378813B437C800100207F6958502C000000911C +S31AFE0046793F0018937F0010937F00147FDEEA143BFF0100418230 +S31AFE00468E004C7FC3F3783BA100247C83D0507FA5EB784800C567 +S31AFE0046A3157C7C1B797FBEEB784182003C83A100247F83E37819 +S31AFE0046B84800C8317C661B783C60FE01386340E87FA4EB787FD0 +S31AFE0046CD85E37848007CDD480000143C60FE0138634110480028 +S31AFE0046E27CCD3BC100243D2000008089437C7F63DB787FC5F3C5 +S31AFE0046F7784800C4BD7C7C1B794182002C83A100247F83E37849 +S31AFE00470C4800C7DD7C661B783C60FE01386340E87FA4EB787FD0 +S31AFE00472185E37848007C89480000483D200000808943847F63B3 +S31AFE004736DB787CA4F8507FC6F3784800C5F97C7C1B79418200AA +S31AFE00474B2883A100247F83E3784800C7957C661B783C60FE01D4 +S31AFE004760386341587FA4EB787F85E37848007C41800100447CE1 +S31AFE0047750803A6834100288361002C8381003083A1003483C1AE +S31AFE00478A003883E1003C382100404E8000209421FFF87C080285 +S31AFE00479FA69001000C7C641B783C60FE0138633FFC48007BFD1A +S31AFE0047B43C6000003C8000003CA0FE0138633F0838843F78382C +S31AFE0047C9A5401C48008B1D8001000C7C0803A6382100084E80FD +S31AFE0047DE00209421FFE87C0802A69381000893A1000C93C1002A +S31AFE0047F31093E100149001001C3F8000003D20000080BC437C51 +S31AFE004808808943783FA000007C7F1B78807D43847C85205048E9 +S31AFE00481D0069C1801C437C83BD43845409C23F3B8000003FC0DE +S31AFE004832000041820044881D00002C0000FF418200207FE3FB56 +S31AFE004847787FA4EB7848007C552C0300004082000C7FA3EB78BF +S31AFE00485C48000020801E437C3B9C00015400C23E7C1C00403B3F +S31AFE004871BD01004180FFC4386000008001001C7C0803A6838186 +S31AFE004886000883A1000C83C1001083E10014382100184E8000D6 +S31AFE00489B209421FEC87C0802A6930101189321011C93410120CA +S31AFE0048B0936101249381012893A1012C93C1013093E10134907A +S31AFE0048C501013C7C7D1B787C9C23783D20FE0139293B7C38614F +S31AFE0048DA00083880006E38A0000138C0000038E100E039010093 +S31AFE0048EFE448008A7D3D20FE0139293BA03861002038800074FF +S31AFE00490438A0000138C0000038E100E8390100EC48008A593D3A +S31AFE00491920FE0139293BCC386100383880006938A0000138C03A +S31AFE00492E000138E100F0390100F448008A353D20FE0139293B38 +S31AFE004943E0386100503880006838A0000138C0000138E100F88F +S31AFE004958390100FC48008A1138E101003D20FE017CF83B783957 +S31AFE00496D293BF0386100683880006C38A0000138C000003901AD +S31AFE0049820104480089E93D20FE0139293C0C3861008038800086 +S31AFE0049977638A0000038C0000238E1010839000000480089C5CE +S31AFE0049AC3D20FE0139293C20386100983880007238A00001386C +S31AFE0049C1C0000038E1010C39010110480089A13D40FE017FA39C +S31AFE0049D6EB787F84E378394A3C4038A0000138C1000838E00016 +S31AFE0049EB073900000039200000480089952C03000040820014AF +S31AFE004A003C60FE0138633C44480079A5480002D4800100F42CC2 +S31AFE004A1500000041820024806100F0388100B04800B6BD2C037D +S31AFE004A2A00004082001C3C60FE01808100F04800003C3D200028 +S31AFE004A3F0080093D98900100B0800100FC2C0000004182005CF7 +S31AFE004A543BE100C0806100F87FE4FB784800B6812C03000040D0 +S31AFE004A698200183C60FE01808100F838633C6848007935480089 +S31AFE004A7E0264388100D07C9923787FE3FB784800B0712C030013 +S31AFE004A9300408000283C60FE01808100F838633C884800790965 +S31AFE004AA8480002383C60FE0138633CB4480078F94800022880A2 +S31AFE004ABD0101102C0000004082000C380003E89001010C800192 +S31AFE004AD201042C0000004082000C3800004090010100808101C0 +S31AFE004AE7003804FFC028000538408100143C60FE0138633CD837 +S31AFE004AFC480078B1480001E0800100E42C0000004082000C3870 +S31AFE004B1100000A900100E0800100EC2C0000004082000C380071 +S31AFE004B2603E8900100E8386100B04800B6FD7C641B783C60FEC1 +S31AFE004B3B0138633CF84800786D7FE3FB784800B6E57C641B7839 +S31AFE004B503C60FE0138633D10480078553C60FE0038634D103BE7 +S31AFE004B6540000048009D613B6000004800012CA138000283BF84 +S31AFE004B7A000839290008B13F000C839F000438000008392000F5 +S31AFE004B8F00396000003B7B0001981D0000993D0001B17D000201 +S31AFE004BA4B37D0006A09F000C7FA3EB7838A0000048009AADB0DB +S31AFE004BB97D0002800100B039600001901C000C812100C0997C6A +S31AFE004BCE0009913C0010A01F000C7FE3FB78B01C00027F25CB0B +S31AFE004BE37838800001480097DD7FE3FB7848009A4D48008D1DD6 +S31AFE004BF8816100E87C7C1B783D20000038000000900943687FF7 +S31AFE004C0DFC5A144800000848009AE93D200000800943682C004C +S31AFE004C2200004082001048008CA57C03F8404180FFE448008CFF +S31AFE004C37DD7C7F1B7848008CD58001010C7FA30214480000083A +S31AFE004C4C48009AB148008C7D7C03E8404180FFF43D2000008033 +S31AFE004C610943683D6000002C00000093CB3D984182002C80011A +S31AFE004C7601083B5A00012C0000004182001C3D2000003C60FE84 +S31AFE004C8B01A08943727CBCF85038633D1848007715800100E08C +S31AFE004CA07C1B0000408000243D200000800100B083C93D983899 +S31AFE004CB56005EA90093D984800991D7C7F1B794082FEB04800E4 +S31AFE004CCA9C253C60FE0180A100E038633D3C7F44D37848007694 +S31AFE004CDFD18001013C7C0803A6830101188321011C83410120BD +S31AFE004CF4836101248381012883A1012C83C1013083E1013438DA +S31AFE004D092101384E800020812300083D6000008149000080E9CD +S31AFE004D1E0004390B436C914B436C3D2000003800000190E800EC +S31AFE004D3304900943684E8000209421FF207C0802A67D8000260E +S31AFE004D48934100C8936100CC938100D093A100D493C100D8934B +S31AFE004D5DE100DC900100E4918100C43BA000007C7B1B787C9ABA +S31AFE004D72237893A1009893A100B0386100083880000038A000AC +S31AFE004D870C4800652D3D20000181492DC43B8100183800000CFC +S31AFE004D9C396000013D20FE017F83E378B0010010B161000E9139 +S31AFE004DB1410008B3A1000C392939603880007638A0000038C047 +S31AFE004DC6000238E10090390000004800859D3D20FE013929398F +S31AFE004DDB68386100303880007238A0000038C0000238E10094E5 +S31AFE004DF039000000480085793D20FE01392939783861004838A3 +S31AFE004E0580006238A0000138C0000038E100983901009C480012 +S31AFE004E1A85553D20FE0139293988386100603880006D38A00030 +S31AFE004E2F0138C0000138E100A0390100A4480085313D20FE017F +S31AFE004E44392939AC386100783880006838A0000138C0000138D3 +S31AFE004E59E100A8390100AC4800850D3D40FE017F86E3787F6339 +S31AFE004E6EDB787F44D378394A39C438A0000138E000053901001A +S31AFE004E83B039200001480085012C0300003B800000418203602E +S31AFE004E98800100AC2C0000004182002C806100A8388100084827 +S31AFE004EAD00B2352C030000408200183C60FE01808100A838631D +S31AFE004EC239D0480074E94800032C800100A42C0000004182009E +S31AFE004ED7E883A100A03BBD00017FA3EB78480075857C651B78E2 +S31AFE004EEC3C80FE017FA3EB78388439E8480076BD2C03000040A6 +S31AFE004F0182006C812100A07D244B78892900003809FFBF28002A +S31AFE004F1600194181000C380900205409063E7D204B782C00000D +S31AFE004F2B7941820028418100102C00007841820014480000284C +S31AFE004F402C00007A418200184800001C3B8000014800006C3BC8 +S31AFE004F55800002480000643B8000034800005C3C60FE014800D0 +S31AFE004F6A0048806100A03C80FE0138843A04480075912C030033 +S31AFE004F7F00408200283D200000800944203B8000002C000000FE +S31AFE004F94408200283C60FE0138633A0C4800740D480002503CFF +S31AFE004FA960FE01808100A0386339F0480073F94800023C2E1CA7 +S31AFE004FBE000040920034800100B02C000000408200283C60FEF3 +S31AFE004FD30138633A34480073D53C60FE013C80000038633A48B7 +S31AFE004FE838843388480073C1480002048001009C2C00000041E5 +S31AFE004FFD8200383D2000008009440C808100987C040040418091 +S31AFE00501200143D200000800943F87C040040408100143C60FE21 +S31AFE0050270138633A5848007381480001C4409200483BA100B44F +S31AFE00503C806100B03881000838A000017FA6EB784800ABE57C54 +S31AFE0050517B1B7940800014806100B483A100B04800AFB9480002 +S31AFE00506600403C60FE01808100903863FE14480001CD480000BA +S31AFE00507B543BA100B4806100B07F84E3787FA5EB7848008B915E +S31AFE0050907C7B1B7940800028806100B483A100B0480090B17C26 +S31AFE0050A5651B783C60FE0138633A807FA4EB78480072F9480089 +S31AFE0050BA013C3C60FE013863DE2438800000480001793D200091 +S31AFE0050CF013BE929DC3B8000003B4100B84800000C7F7CD1AEE1 +S31AFE0050E43B9C0001281C000341810018480001797C7B1B79402D +S31AFE0050F980FFE8801F0110900100B42C1B0000418000D448001E +S31AFE00510E0119800100942C000000418200548001009C2C0000CD +S31AFE00512300408200143C60FE0138633A984800727D480000A86E +S31AFE005138838100984800000C987C00003B9C0001480001217C9C +S31AFE00514D631B794080FFF03C60FE018081009838633ABC7F85DA +S31AFE005162E37848007249480000743C80FE0138843AD4386100FC +S31AFE005177B938A00003480073ED2C0300003B8100B8408200146A +S31AFE00518C3C60FE0038635268480006FD48000044880100B82CD7 +S31AFE0051A100005340820028893C00013929FFD0280900094181C5 +S31AFE0051B600183C60FE008081009838635268480001D5480000DA +S31AFE0051CB143C60FE01808100B838633AD8480071D54092001046 +S31AFE0051E07FA3EB784800AC1D4800000C7FA3EB7848008EFD80F4 +S31AFE0051F50100E4818100C47C0803A6834100C8836100CC838189 +S31AFE00520A00D083A100D483C100D883E100DC7D80812038210070 +S31AFE00521FE04E8000203D200001392929DC8009010C39690004A7 +S31AFE00523490090108916901044E8000203D600001392B29DC3992 +S31AFE00524940000038000100906B29DC914901189009010C908921 +S31AFE00525E0114914901084E8000209421FFF07C0802A693C1002D +S31AFE0052730893E1000C900100143D2000013BE929DC83DF010803 +S31AFE0052882C1E00004080000C3860FFFF480000EC408200C48027 +S31AFE00529D1F01142C00000041820038817F01183D2000003929C5 +S31AFE0052B233807C8958AE396B00013C60FE01917F0118386339E8 +S31AFE0052C758480070E5801F0118280000064081000893DF01189F +S31AFE0052DC3D2000013BE929DC801F010C2C0000FF4181002080F9 +S31AFE0052F11F01142C0000004182FF983C60FE013863395C4800D7 +S31AFE00530670A94BFFFF883D200001812929DC381F00047C0303BA +S31AFE00531B783880010038BF01107D2803A6901F01044E8000214F +S31AFE0053302C030000907F010C907F010841810020801F01142C3F +S31AFE0053450000004182FF483C60FE013863395C480070594BFF1F +S31AFE00535AFF383D400001394A29DC812A0108816A01043929FFF8 +S31AFE00536FFF912A0108886B0000396B0001916A01048001001435 +S31AFE0053847C0803A683C1000883E1000C382100104E800020943C +S31AFE00539921FF707C0802A69281006092A1006492C1006892E107 +S31AFE0053AE006C9301007093210074934100789361007C9381007E +S31AFE0053C38093A1008493C1008893E1008C900100947C7D1B780C +S31AFE0053D87C9523783B6000003A8000013B2000003AC000003A2B +S31AFE0053EDE0FFFF480002742C050053418200183C60FE01386376 +S31AFE00540237F87F64DB7848006FA5480002687FA803A63B7B0098 +S31AFE005417024E80002138A1005838000000547C063E7CBA2B7835 +S31AFE00542C900100587FA3EB78388000014800027D7C7F1B7940AA +S31AFE0054418000183C60FE01386338247F64DB7848006F5D480096 +S31AFE0054560220381CFFD0280000093B7B0001418101C03D60FEF2 +S31AFE00546B01396B39305400103A7D4B002E3D20FE01392939305F +S31AFE0054807D4A4A147D4903A64E8004207FA3EB78389CFFD17FE5 +S31AFE00549545D3784800021D2C1400007C7E1B78381BFFD17FD8C0 +S31AFE0054AAF3787F60E2144182002C2C1500004182001C7F3EA835 +S31AFE0054BF503C60FE01386338487F24CB7848006EE14800000801 +S31AFE0054D43B2000003A8000003D2000008169440C7FDECA147D5B +S31AFE0054E939F0507C1748107C0001107C0003B87D2900787C1ECA +S31AFE0054FE58407EE000387C174B78418000143D20000080094313 +S31AFE005513F87C1E0040408100183C60FE01386338607FC4F37858 +S31AFE00552848006E8548000148381F002E7FFC00507FE9FB782C47 +S31AFE00553D0900007F7BFA143BFFFFFF408100307F5CD3787FA3D3 +S31AFE005552EB78388000017F85E378480001597FE0FB782C000025 +S31AFE00556700987E00003BDE00013BFFFFFF4181FFDC7FA3EB78A1 +S31AFE00557C3880000138A000004800013188A1005B7C6318F85444 +S31AFE00559166063E7C0628003B7B000190A10058418200183C60F6 +S31AFE0055A6FE013863389C7F04C37848006DFD480000C07D39F060 +S31AFE0055BB507C09B0107C0001107C0003B87D2900787EC00038EA +S31AFE0055D07C164B7848000068209C003B7F45D3787FA3EB7848EA +S31AFE0055E50000D17C7E1B783D2000003C60FE0193C94414386308 +S31AFE0055FA38D87FC4F3787EE5BB787EC6B37848006DA57FBFEB52 +S31AFE00560F787FE803A64E8000212C0300004181FFF4480000548B +S31AFE0056243C60FE01386339007F64DB787F85E37848006D7948F3 +S31AFE00563900003C7F7FDB787FBEEB78480000083BFF00017FC859 +S31AFE00564E03A64E8000212C03000A4082FFF07FDDF3787FFBFB85 +S31AFE005663787FA803A64E8000217C651B794181FD84800100942A +S31AFE0056787C0803A68281006082A1006482C1006882E1006C8305 +S31AFE00568D01007083210074834100788361007C8381008083A137 +S31AFE0056A2008483C1008883E1008C382100904E8000209421FF24 +S31AFE0056B7E07C0802A69361000C9381001093A1001493C10018F6 +S31AFE0056CC93E1001C900100247C9E23787FC0F3782C0000007C79 +S31AFE0056E17B1B787CBC2B783BA000003BDEFFFF408101787F68B4 +S31AFE0056F603A64E8000217F6803A6547F063E4E800021393FFFF6 +S31AFE00570BD0381FFFBF21290009392000007D29491420000005CC +S31AFE005720380000007C0001147D270379546B063E3920000040EB +S31AFE005735820010381FFF9F2800000541810008392000012C094E +S31AFE00574A000041820104392BFFD0380BFFBF7D2A4B787C080359 +S31AFE00575F785529063E5400063E21290009392000007D294914B0 +S31AFE00577420000005380000007C0001147D270379392000004075 +S31AFE005789820010380BFF9F2800000541810008392000012C090E +S31AFE00579E0000418200B0393FFFD05520063E2800000957BD40FA +S31AFE0057B32E4181000C7D234B7848000030381FFF9F28000005E4 +S31AFE0057C84181000C387FFFA94800001C381FFFBF393FFFC920C2 +S31AFE0057DD0000057C0001107C0003B87C0348385540063E2800EA +S31AFE0057F200094181000C7D49537848000030380BFF9F280000B5 +S31AFE005807054181000C392BFFA94800001C5500063E392BFFC980 +S31AFE00581C200000057C0001107C0003B87C094838546020362C4F +S31AFE0058311C00007C034B787FBD1B784182001C801C00007C003A +S31AFE0058461A14901C00004800000C3860FFFF480000187FC0F3F3 +S31AFE00585B782C0000003BDEFFFF4181FE907FA3EB7880010024FF +S31AFE0058707C0803A68361000C8381001083A1001483C1001883D7 +S31AFE005885E1001C382100204E8000209421FFF87C0802A690013D +S31AFE00589A000C3C60FE01386337DC48006B098001000C7C0803D0 +S31AFE0058AFA6382100084E8000203860001C4E8000209421FFE8AD +S31AFE0058C47C0802A693A1000C93C1001093E100149001001C7C4A +S31AFE0058D97D1B78813D000483C900044800002C73E000124182F8 +S31AFE0058EE00107FA3EB787FE4FB784800004973E0000841820087 +S31AFE0059030C7FA3EB78480001A9B3FE0010A01E00107000001AEF +S31AFE005918541F043E2C1F00004082FFC88001001C7C0803A683A0 +S31AFE00592DA1000C83C1001083E10014382100184E8000209421D4 +S31AFE005942FFE87C0802A69381000893A1000C93C1001093E10005 +S31AFE005957149001001C7C7D1B7883DD000483FE0018A01F00002E +S31AFE00596C700090002C001000408200683B9E0028813D0000807D +S31AFE0059811E0010816900247C00F850816B00085400F87AA13F73 +S31AFE00599600007C9C002E7FA3EB7838A000007D6803A67129EF3E +S31AFE0059ABFFB13F00004E800021A01F0000700920004182000CDE +S31AFE0059C083FE0010480000083BFF0008A01F0000700090002CC0 +S31AFE0059D50010004182FFA493FE00188001001C7C0803A68381CC +S31AFE0059EA000883A1000C83C1001083E10014382100184E800061 +S31AFE0059FF209421FFE87C0802A693A1000C93C1001093E100147B +S31AFE005A149001001C812300048169000C83EB00047C188AA654A4 +S31AFE005A29000FFE2C00000041820028812B0004A00B00022C00B7 +S31AFE005A3E0000408100187C004BAC7C0004AC3400FFF039290052 +S31AFE005A53104181FFF02C050000408100387C9E23787CBD2B78BE +S31AFE005A68807E00002C0300004182001880BE00047FE4FB7848BD +S31AFE005A7D005761801E00047FFF021437BDFFFF3BDE000840824D +S31AFE005A92FFD88001001C7C0803A683A1000C83C1001083E10072 +S31AFE005AA714382100184E8000209421FFE87C0802A693A1000C6B +S31AFE005ABC93C1001093E100149001001C7C7D1B7883DD000483C5 +S31AFE005AD1FE001C48000048813D000093FE000C816900247FA387 +S31AFE005AE6EB78800B0004A09F00027C0803A64E800021A01F0099 +S31AFE005AFB0060008000B01F0000A13F0000712020004182000C83 +S31AFE005B1083FE0014480000083BFF0008A01F0000700090002C6A +S31AFE005B250010004182FFB093FE001C8001001C7C0803A683A14A +S31AFE005B3A000C83C1001083E10014382100184E8000209421FF67 +S31AFE005B4FD87C0802A6930100089321000C9341001093610014F1 +S31AFE005B649381001893A1001C93C1002093E100249001002C8360 +S31AFE005B79C300047C98237883BE00087CBB2B78A01D00007CD968 +S31AFE005B8E3378700980007CFA3B78418200447FBFEB783F80FECC +S31AFE005BA301A01F0000700920004182000C83FE001048000008E0 +S31AFE005BB83BFF00087C1FE8004082000C387C37A0480067E5A082 +S31AFE005BCD1F0000700980004082FFD07FFDFB78A01D00007009F1 +S31AFE005BE2200041820010801E00107C0903784800000C381D0060 +S31AFE005BF708813E0010901E00087C09E8502C1B00005400F87A3E +S31AFE005C0C393E0028B33D00027F49012E83FD0004408100307F03 +S31AFE005C211EC3787F7CDB78809E000080BE00047FE3FB78480046 +S31AFE005C3655A9801E0004379CFFFF3BDE00087FFF02144082FF6E +S31AFE005C4BE07C188AA654000FFE2C00000041820028813D000462 +S31AFE005C60A01D00022C000000408100187C004BAC7C0004AC3494 +S31AFE005C7500FFF0392900104181FFF0A01D00006000DC00B01D3E +S31AFE005C8A00008001002C7C0803A6830100088321000C83410027 +S31AFE005C9F10836100148381001883A1001C83C1002083E100249C +S31AFE005CB4382100284E8000208123000481690008A06B0000546F +S31AFE005CC9638BFE686300014E800020688401003004FFFF7C6021 +S31AFE005CDE21104E8000208123000481690004800B00006000000D +S31AFE005CF330900B00004E8000208123000481690004800B0000BE +S31AFE005D0854000732900B00004E8000209421FFD07C0802A6922A +S31AFE005D1DE1000C9301001093210014934100189361001C938104 +S31AFE005D32002093A1002493C1002893E1002C9001003482E3009A +S31AFE005D4708839700047FDE9AA677DEFFFF3C800000388434245D +S31AFE005D5C3860000838A0000648000DB12C0300004082001C3C61 +S31AFE005D7160FE013C800000386337803884342438A000064BFF70 +S31AFE005D86CC017F188AA657180FFE3BFE3C00380000807C09033F +S31AFE005D9BA63BBE0A003B7E2C003B3E2C203920000061201000B2 +S31AFE005DB03CC00E007C0004AC7D398BA67CD88BA67C198BA67CF6 +S31AFE005DC5D88BA6392900104200FFE03D2004007C0004AC7D38E7 +S31AFE005DDA8BA67FBAEB783FA000003CC0FE003CE0FE013D200092 +S31AFE005DEF0138C6616438E709B4391D4364392984783860001CEC +S31AFE005E04388000007EE5BB7848004575807D4364480045953837 +S31AFE005E1960001C480049A13860001C48004849801E0A0093FCFE +S31AFE005E2E000054000732901E0A00935C00047FE3FB7838800096 +S31AFE005E430038A000A44800546D38C000047CC903A62F98000010 +S31AFE005E587F68DB787F2ACB783D2000003D60000038E0000038C1 +S31AFE005E6D009000915C001C392954C0396B6C80911C0010911C13 +S31AFE005E820008911C0018915C0014915C000CB0EA0002912A00E9 +S31AFE005E9704B00A0000392905F0394A00084200FFECA40AFFF880 +S31AFE005EAC7D09437860002000B00A0000394000047D4903A63B3B +S31AFE005EC13F007238000000B009000291690004B0090000396BC9 +S31AFE005ED605F0392900084200FFEC7D284B78A408FFF83B600081 +S31AFE005EEB0160002000B0080000A13E09523BA0001061290003B3 +S31AFE005F00B13E0952A01E0950390005F05400043AB01E0950A19F +S31AFE005F153E09543B80FFFF7129FFFDB13E0954A01E09623D4097 +S31AFE005F2ADEBB7000FFCFB01E0962A13E0960614A20E37129FFBF +S31AFE005F3FCFB13E0960A01E09643960000060000030B01E096493 +S31AFE005F54A13E09523860888861290A00B13E0952A01E09503825 +S31AFE005F6980000F7000F5FFB01E0950813E0AEC38C005EE5529E7 +S31AFE005F7E002E913E0AEC801E0AEC38E000406000003D901E0AD6 +S31AFE005F93EC813E0AEC38002C20552906B0913E0AEC937E003096 +S31AFE005FA8B01F000039202C00B13F00029BBF00049BBF0005B12C +S31AFE005FBD1F0006939F0030915F0034917F0038917F003C917F7C +S31AFE005FD20040B07F0044B17F0044B09F0046B17F0048B0DF00F3 +S31AFE005FE74AB0FF004CB11F004EB11F005038000006B17F005858 +S31AFE005FFC7C0903A6B17F005A3CA00000B17F005CB17F005E38A6 +S31AFE006011A5342A7F29CB788C05FFFF98090000392900014200B3 +S31AFE006026FFF438000000B01F0078B01F0094B01F0096B01F0058 +S31AFE00603B98B01F009AB01F009EB01F00A0B01F00A239200001A4 +S31AFE006050B13E09C0A01E09C070060001418200187FC9F378A053 +S31AFE0060650909C0700A00014082FFF87D3E4B783800FFFFB01A9E +S31AFE00607A00103920001AB13A0014396000003C001088917A0013 +S31AFE00608F046000000C901A00003920D555B13A000E3800280AF8 +S31AFE0060A4B01A0008392000903D60FA10992B0000A01E09626034 +S31AFE0060B9000001B01E0962A13E09605529043CB13E0960419E57 +S31AFE0060CE00103D6002007C0004AC7D788BA6813700003C800044 +S31AFE0060E300816900247EE3BB78800B0000388434247C0803A636 +S31AFE0060F84E80002138600001800100347C0803A682E1000C8333 +S31AFE00610D01001083210014834100188361001C8381002083A18C +S31AFE006122002483C1002883E1002C382100304E8000209421FF19 +S31AFE006137F87C0802A69001000C4BFFF7813860001C4800467515 +S31AFE00614C3860001C4800451D8001000C7C0803A6382100084E73 +S31AFE0061618000209421FFF87C0802A69001000C3860001C480014 +S31AFE0061764395386000038001000C7C0803A6382100084E8000B4 +S31AFE00618B209421FFF07C0802A693C1000893E1000C900100148A +S31AFE0061A03D6000003D20000039293F083BEB3F047C1F48404176 +S31AFE0061B58000207D3E4B78813F00003BFFFFFC7D2803A64E80A2 +S31AFE0061CA00217C1FF0404080FFEC800100147C0803A683C1001F +S31AFE0061DF0883E1000C382100104E8000209421FFF87C0802A600 +S31AFE0061F49001000C3D200000800937842C0000004182001080D5 +S31AFE00620909378490030094480000243D200000906943DC480068 +S31AFE00621E192D7C1602A628007A124081000C38007A127C16030D +S31AFE006233A68001000C7C0803A6382100084E8000204E800020B5 +S31AFE006248386000004E8000209421FFF07C0802A693E1000C90D7 +S31AFE00625D010014480006413D200000388936F0800400083BE099 +S31AFE00627200002C000000418200307FE3FB787C9F2378809F004A +S31AFE0062870080BF000480DF000888FF000C3BFF00104800051119 +S31AFE00629C801F00082C0000004082FFE0800100147C0803A68330 +S31AFE0062B1E1000C382100104E8000203C000A007C0004AC7C1092 +S31AFE0062C68BA67C0004AC7C188BA63C000C004C00012C7C108BC5 +S31AFE0062DBA64C00012C7C0004AC7C188BA63C0002004C00012CE3 +S31AFE0062F07C108BA64C00012C7C0004AC7C188BA64E80002094EC +S31AFE00630521FFF87C0802A69001000C4800013D38007A127C16C2 +S31AFE00631A03A68001000C7C0803A6382100084E8000209421FF04 +S31AFE00632FF87C0802A69001000C3C00002F6000AF087D230096DC +S31AFE0063447D4301D638A000003CC0000F7D234B787D4453786077 +S31AFE006359C642404800CE117D7602A62C040000408100647D60EF +S31AFE00636E5B787D3602A67C0048004182FFF87D2A4B782C0A00CA +S31AFE006383007C0B03784080001C39207A127C1602A67C004A1529 +S31AFE006398418100087D204B787C1603A67C0A58507C09FE707DE9 +S31AFE0063AD2048507D29FE70396900017C0048387C005B787C8021 +S31AFE0063C220517D4B53784181FFA48001000C7C0803A638210046 +S31AFE0063D7084E8000209421FFF87C0802A69001000C3D20FF00E6 +S31AFE0063EC6129093038000001B00900007C0006ACA00900007C90 +S31AFE0064010006AC5400AAFF38600000418200302060003A3D60F1 +S31AFE00641600005460103A396B342C7D6B002E3D20000039293561 +S31AFE00642B187C89002E7D6803A64E800021546307FA8001000C4B +S31AFE0064407C0803A6382100084E8000203D2000003949342C394F +S31AFE0064550000407C0A402E3D20FE00392962487C00480041820C +S31AFE00646A0018800A00403D20FE013929B1387C0048004082000A +S31AFE00647F343D20FE00392963DC3D600000380000007D2A412EE9 +S31AFE0064946000DEAD396B35187C0B412E3D2000003929360438EC +S31AFE0064A90000007C09412E3D60FE01800B4A043D20FE013929B3 +S31AFE0064BE49C87D2902147D2903A64E8004203D20FF00612900D1 +S31AFE0064D314800900007C0006AC64000001900900007C0006ACB9 +S31AFE0064E8480000E83D20FF0061290200A00900007C0006AC604C +S31AFE0064FD000008B00900007C0006AC480000C83D20FF006129A1 +S31AFE0065120200A00900007C0006AC60000004B00900007C0006F8 +S31AFE006527AC480000A83D20FF0061290240A00900007C0006ACC0 +S31AFE00653C60000004B00900007C0006AC480000883D20FF00616E +S31AFE006551290220A00900007C0006AC60000008B00900007C0072 +S31AFE00656606AC480000683D20FF0061290220A00900007C000687 +S31AFE00657BAC60000004B00900007C0006AC480000483D20FF0024 +S31AFE00659061290940800900007C0006AC60000080900900007C73 +S31AFE0065A50006AC480000283D20FF0061290948816900007C001E +S31AFE0065BA06AC3C00800054005D7E7D6B0378916900007C00064C +S31AFE0065CFAC3D60FE01800B4B143D20FE0139294AB07D2902140D +S31AFE0065E47D2903A64E8004203D20FF0061290200A00900007C50 +S31AFE0065F90006AC5400063E60000100B00900007C0006AC4800AF +S31AFE00660E00683D20FF0061290240A00900007C0006AC540006B2 +S31AFE0066233E60000100B00900007C0006AC480000443D20FF00F0 +S31AFE00663861290220A00900007C0006AC5400063E60000100B01D +S31AFE00664D0900007C0006AC480000203D20FF00612909408009DD +S31AFE00666200007C0006AC6000E000900900007C0006AC3D60FE4F +S31AFE00667701800B4BFC3D20FE0139294B987D2902147D2903A68B +S31AFE00668C4E8004203D20FF0061290014800900007C0006AC60F2 +S31AFE0066A1000040900900007C0006AC4E8000203D20FF00612905 +S31AFE0066B60200A00900007C0006AC60000008B00900007C00064F +S31AFE0066CBAC4E8000203D20FF0061290200A00900007C0006AC5D +S31AFE0066E060000004B00900007C0006AC4E8000203D20FF0061AB +S31AFE0066F5290240A00900007C0006AC60000004B00900007C00B1 +S31AFE00670A06AC4E8000203D20FF0061290220A00900007C0006A3 +S31AFE00671FAC60000008B00900007C0006AC4E8000203D20FF001C +S31AFE00673461290220A00900007C0006AC60000004B00900007C30 +S31AFE0067490006AC4E8000203D20FF0061290940800900007C0063 +S31AFE00675E06AC60000080900900007C0006AC4E8000203D20FF7F +S31AFE0067730061290948816900007C0006AC3C00800054000FFEFD +S31AFE0067887D6B0378916900007C0006AC4E8000207C1E22A660BD +S31AFE00679D0000077C1E23A64E8000209421FFF093E1000C54E033 +S31AFE0067B2FFFE70FF00012F0000002F8300207CC0FE707D6000D9 +S31AFE0067C726556B1FFE54A500267D400026554ADFFE7C06005066 +S31AFE0067DC7D4A00D07CE0002654E7EFFE7D6B00D060A808FF5448 +S31AFE0067F1000FFE7D0858787D4950F860A508FD7CFF00387CAB3B +S31AFE0068065838714A000D2F9F00007D654378548400267129001E +S31AFE00681B1D7D4A4B78608402003960000039000020419E005CAA +S31AFE006830546B402E7D55C3A67D70C3A67C93C3A67CB6C3A6601E +S31AFE006845A001007D5DC3A67D78C3A67C9BC3A67C1EC3A63863DA +S31AFE00685A00013CC6FF807F8340007CC0FE707C0600507D200048 +S31AFE00686F265529EFFE54000FFE7D2700393C8400803CA50080A0 +S31AFE0068844082FFAC656020007C10C3A67C18C3A683E1000C380F +S31AFE0068992100104E800020380000007C19C3A6380000207C09B4 +S31AFE0068AE03A639200000380000007C15C3A67D30C3A67C13C335 +S31AFE0068C3A67C16C3A67C1DC3A67D38C3A67C1BC3A67C1EC3A6F8 +S31AFE0068D8392901004200FFD83C00200060001F007C10C3A67CDF +S31AFE0068ED18C3A64E8000209421FDE87CDE9AA674C6FFFF3D601A +S31AFE0069020000812B37402C09000040820200394000303800007F +S31AFE006917017D4903A6900B3740B12609C43800000039263C80EE +S31AFE00692C7D284B789806086038E62E0838A1000838862E00388B +S31AFE0069416100093981021198090000392900014200FFF8392070 +S31AFE0069562E00B1280002396000103940020938002E0899680083 +S31AFE00696B0599680004B0080000B14800063920A800B1262E0844 +S31AFE00698038000101B007000290A700047C8B2378B14B000238F8 +S31AFE0069950000A59801000890AB0004B1262E0038000000980689 +S31AFE0069AA086439200050992608683800000198060860392001F7 +S31AFE0069BF11B12609C0A00609C070090001418200187CC933785A +S31AFE0069D4A00909C0700A00014082FFF87D264B7838000211B0A3 +S31AFE0069E90609C0A12609C071200001418200187CC93378A00930 +S31AFE0069FE09C0700A00014082FFF87D264B78392000007D29031B +S31AFE006A13A6380000819806086C7D4902A6614AC3517D4903A65D +S31AFE006A28A00B000070098000418200084200FFF4394001007DBA +S31AFE006A3D4903A63D2000013929889439600000380000FF7C091D +S31AFE006A5259AE396B00014200FFF87D8763787C6B1B787C0B382E +S31AFE006A67004182009C3CA00001880B00002C00004D408200808C +S31AFE006A7C880B00012C00004F40820074880B00022C0000544067 +S31AFE006A918200688C0B000839400000892B00015400402E7C08EF +S31AFE006AA64B787C0A4000396B000240800054388588947C651BBF +S31AFE006ABB78880B0000396B00017D693A787D23FE707C0451AEED +S31AFE006AD07C604A787C0018507C00FE70394A00017CA900787CA4 +S31AFE006AE50A40007D6000387C0B4B784180FFCC48000010396B67 +S31AFE006AFA00017C0B38004082FF703800000098060860382102F9 +S31AFE006B0F184E8000209421FFE87C0802A693A1000C93C10010FB +S31AFE006B2493E100149001001C7C7D1B787C9F23787CBE2B784BB9 +S31AFE006B39FFFDBD3D20000139698894394B01007C0B5040408012 +S31AFE006B4E008457A8063E880B00007C00400040820054886B000F +S31AFE006B6301396B00027F83F0004FFEE3827C000026540007FED3 +S31AFE006B787C0000D07FC900787C6000387C034B794081004C7C18 +S31AFE006B8D6903A67D695B787FE4FB7888090000392900019804BE +S31AFE006BA20000388400014200FFF048000028886B00013803004D +S31AFE006BB7027D2B00EE5529063E2C0900FF4182000C7C0B504051 +S31AFE006BCC4180FF88386000008001001C7C0803A683A1000C8353 +S31AFE006BE1C1001083E10014382100184E8000209421FFF87C08C3 +S31AFE006BF602A69001000C480043558001000C7C0803A63821004E +S31AFE006C0B084E8000203C80FF00608400007C9E9BA63CA0FA109A +S31AFE006C2060A500013C60000060630000986500007C788AA63C99 +S31AFE006C35600A007C0004AC7C788BA63C600C007C0004AC7C78C3 +S31AFE006C4A8BA63C6004007C0004AC7C788BA63C6001007C0004F2 +S31AFE006C5FAC7C788BA63C6007007C0004AC7C788BA67C708AA63B +S31AFE006C743C600A007C708BA64C00012C3C600C007C708BA64CBA +S31AFE006C8900012C3C6004007C708BA64C00012C7C0004AC3C60C7 +S31AFE006C9E006060632400906400003C60FFFF6063FF88906400CA +S31AFE006CB3043C600000606300C2B06402003C6055CC6063AA3330 +S31AFE006CC89064032090640324906403289064032C386000C3B034 +S31AFE006CDD64022038600083B06402403CA0FE0060A56E803CC0DE +S31AFE006CF2FE0060C66F807CE530507CE7167038C00000806500CF +S31AFE006D07009064017C90C4016838A5000438C600017C063800AB +S31AFE006D1C4180FFE838600200B064017A3C6018806063100090F6 +S31AFE006D316401703C60FE00606304013CA0FF8060A50960906455 +S31AFE006D46010090A401043C600000606300813CA0FFC060A50476 +S31AFE006D5B009064010890A4010C3C600000606300803CA0000026 +S31AFE006D7060A504009064011090A401143C600000606300803C98 +S31AFE006D85A0000060A504009064011890A4011C3C60FA00606395 +S31AFE006D9A04013CA0FFE060A509309064012090A401243C608058 +S31AFE006DAF00606300013CA0A00060A501089064012890A4012CFF +S31AFE006DC43C60FA21606300013CA0FFFF60A5010890640130909E +S31AFE006DD9A401343C60FC00606300013CA0FF8060A509409064CF +S31AFE006DEE013890A4013C3C600200606300009064028080640225 +S31AFE006E03845463653E2C030000418200103C605F506063D000B8 +S31AFE006E184800000C3C6000006063D000906402843C4000003CAC +S31AFE006E2D60FF0060630014904300003C400000604200007C4267 +S31AFE006E4210F87C5603A6384000013C60FF0060630200B04300E8 +S31AFE006E57003CA0FA1060A500013C6000006063000898650000D2 +S31AFE006E6C7C6802A67063FFFF6463FE007C6803A64E800020CFA1 +S31AFE006E81AFC0040FAFC4040CAF8C0410AF0C04F0AF0C00F3BF88 +S31AFE006E964805FFFFC005FFFFC005CFAFC0040FAFC4040CAF8C01 +S31AFE006EAB0400AF0C0407AF0C080CAF0C0401AF0C040FAF0C08E4 +S31AFE006EC00CAF0C0401AF0C040FAF0C080CAF0C0410AF0C04F0D2 +S31AFE006ED5AFC000F3BF4805FFFFC005CFFF00040FFF04040CFF80 +S31AFE006EEA0C0013FF4804FFFFC004FFFFC005FFFFC005FFFFC01F +S31AFE006EFF05CFFF00040FFF04040CFF0C0003FF0C0C0CFF0C0045 +S31AFE006F1403FF0C0C0CFF0C0003FF0C0C0CFF0C0013FF4804FFA5 +S31AFE006F29FFC004FFFFC005FFFFC005FFFFC005FFFFC005FFFF82 +S31AFE006F3EC005FCFFC004C0FFC00401FFC0040FFFC0041FFFC0BF +S31AFE006F5304FFFFC004FFFFC005FFFFC005FFFFC005FFFFC00553 +S31AFE006F68FFFFC005FFFFC005FFFFC007FFFFC007FFFFC007FF3C +S31AFE006F7DFFC0077063000E3C80FA1060840001986400004E80DF +S31AFE006F9200203C80FA106084000138A0000A98A400003CA00021 +S31AFE006FA70A7CA903A64200000038A0000C98A400003CA0000AB1 +S31AFE006FBC7CA903A6420000003863FFFF2C0300004080FFD0381D +S31AFE006FD1A0000698A400003CA000147CA903A6420000004E80F7 +S31AFE006FE600209421FFE87C0802A693E100149001001C3BE10059 +S31AFE006FFB087FE3FB7848009A49880100082C00000140820010E5 +S31AFE007010881F00012C0000A44182000C3860000D480000303DC6 +S31AFE00702520000139292EDC3D600001394000083D00FE003C002F +S31AFE00703AFE0890090018916900089149000C9109001438600058 +S31AFE00704F008001001C7C0803A683E10014382100184E80002087 +S31AFE0070644E8000203D20FE00392920007C0348407C8023783971 +S31AFE0070796000004181000C7C0048404181001C3D20FE013889D1 +S31AFE00708E375C7C032040418100107C0020404081000839600067 +S31AFE0070A3017D635B784E8000203D20FE0139294C805463073EAC +S31AFE0070B87C6918AE4E8000209421FFF87C0802A69001000C3D74 +S31AFE0070CD2000008069375C2C0300004181000C4800292D48002B +S31AFE0070E2000C3800FFFF9009375C8001000C7C0803A638210014 +S31AFE0070F7084E8000203803FF9F280000054181000C3863FFA973 +S31AFE00710C4E8000203923FFD05520063E280000094181000C7D1C +S31AFE007121234B784E8000203803FFBF280000054081000C3860F6 +S31AFE007136FFFF4E8000203863FFC94E8000209421FFE07C0802E9 +S31AFE00714BA6900100243800000098010018906100104BFFFF6538 +S31AFE0071605463063E388100084800001D2C0300014082FFEC8098 +S31AFE0071750100247C0803A6382100204E8000209421FFF07C0820 +S31AFE00718A02A693C1000893E1000C900100147C9F2378897F0005 +S31AFE00719F102C0B0000408200282C03002440820098392000019F +S31AFE0071B43800FFFF901F0004993F0010917F0000917F000C487D +S31AFE0071C900007C2C0B0001408200542C03002340820020815FCF +S31AFE0071DE0008817F000C380000007C0A59AE39200002993F008C +S31AFE0071F31048000050817F000C2C0B0800418200E8801F000046 +S31AFE007208813F00087C001A14901F00007C6959AE380B0001908C +S31AFE00721D1F000C480000242C0B0002408200245463063E4BFF5D +S31AFE007232FECD5463203638000003907F0004981F0010386000BE +S31AFE00724700480000AC2C0B0003408200985463063E4BFFFEA5BE +S31AFE00725C801F0004893F00037C001B787C090000901F00044123 +S31AFE0072718200103860002D480027554800006C3860002B48002A +S31AFE0072862749813F0008880900022C00003A4082004C886900BF +S31AFE00729B0083DF000C4800272D813F0008886900014800272186 +S31AFE0072B0396000037C0BF040418100287FCAF3787FE4FB78817D +S31AFE0072C52400087C0958AE7D2B4A14396B00017C0B5040980996 +S31AFE0072DAFFFD4081FFE8386000014800001038000000981F0017 +S31AFE0072EF103860FFFF800100147C0803A683C1000883E1000C62 +S31AFE007304382100104E8000209421FFE07C0802A69361000C93C6 +S31AFE00731981001093A1001493C1001893E1001C900100243D2074 +S31AFE00732EFE013B694C807C7C1B7838600024480026918BFC000A +S31AFE007343003BC000002C1F00003BA00000418200247FE3FB7854 +S31AFE007358480026757C1DFA143BDE00017FFCF0AE541D063E2C7E +S31AFE00736D1F00004082FFE4386000234800265557A0E13E7C7BB8 +S31AFE00738200AE4800264957A0073E7C7B00AE4800263D4BFFFDBA +S31AFE0073972D5463067E2C03002B4082FF98800100247C0803A6F0 +S31AFE0073AC8361000C8381001083A1001483C1001883E1001C3878 +S31AFE0073C12100204E8000209421FFD87C0802A6936100149381B0 +S31AFE0073D6001893A1001C93C1002093E100249001002C3D200010 +S31AFE0073EB008169438C3D4000002C0B000038000000900A3760B3 +S31AFE0074003F6000003F800000408101383FC000003FA000003D00 +S31AFE007415200000800943982C0000004182006C801C438C3D6077 +S31AFE00742A00002800000340810018801E43907009000340820096 +S31AFE00743F0C3BE0000448000034801C438C3BE0000128000001DD +S31AFE00745440810024800B4390540007FE7C0000D07C00FE707CD1 +S31AFE0074690900F8540007FE552907BC7C1F4B78808B439038619A +S31AFE00747E00087FE5FB7848002D7948000014813E43903BE0001F +S31AFE0074930188090000980100083D200000800937602C00000004 +S31AFE0074A840820098390000007C08F8004080006C3D20FE0138FC +S31AFE0074BDC94C8038A100083CE000003C8000007D6828AE8147E5 +S31AFE0074D243945560E13E7D2600AE992A000080043760394A0044 +S31AFE0074E7012C00000091474394408200505560073E7D2600AE53 +S31AFE0074FC396A0001992A0000801B3760916743942C00000040A3 +S31AFE007511820030390800017C08F8004180FFB0813D438C801E56 +S31AFE00752643907D3F48502C0900007C00FA14901E4390913D43D4 +S31AFE00753B8C4181FED88001002C7C0803A6836100148381001825 +S31AFE00755083A1001C83C1002083E10024382100284E80002094F3 +S31AFE00756521FFE87C0802A693A1000C93C1001093E1001490011C +S31AFE00757A001C2C0600003D2000003D6000003D4000003D0000F6 +S31AFE00758F0090894394906B439090AA438C90C8439841820030F6 +S31AFE0075A43FA0000038000000901D3760813D37604BFFFE158140 +S31AFE0075B93D3760801D37602C00000041820010386000004800D2 +S31AFE0075CE001C4BFFFDF93D600000812B4394380000009809004F +S31AFE0075E300806B43948001001C7C0803A683A1000C83C100107F +S31AFE0075F883E10014382100184E8000209421FFC07C0802A69271 +S31AFE00760D81001092A1001492C1001892E1001C9301002093212A +S31AFE0076220024934100289361002C9381003093A1003493C1000F +S31AFE0076373893E1003C900100443D2000008009438C3B6000002D +S31AFE00764C2C0000003D200000936937603E8000003EA00000402D +S31AFE0076618101703D200000816943903F000000880B00002C0006 +S31AFE0076760000418201583EC000003F4000003EE000008016436B +S31AFE00768B982C000000418200588015438C28000003408100189F +S31AFE0076A0801A4394700900034082000C3BC000044800003C8013 +S31AFE0076B515438C3BC00001280000014081002C801A4394540001 +S31AFE0076CA07FE7C0000D07C00FE707C0900F8540007FE55290711 +S31AFE0076DFBC7C1E4B78480000083BC000013BE000007C1FF00087 +S31AFE0076F4408000743FA000003F2000003B810008813D4390882E +S31AFE00770969000039290001913D43905463063E4BFFF9E580193E +S31AFE00771E3760547B26362C000000408200A8813843908869007D +S31AFE0077330039290001913843905463063E4BFFF9BD8014376018 +S31AFE0077487F631B782C000000547B063E4082007C7F7FE1AE3B6E +S31AFE00775DFF00017C1FF0004180FFA0801643982C0000004182C8 +S31AFE0077720018809A4394386100087FC5F37848002ADD4800000E +S31AFE0077870C813A43949B6900003D200000800937602C0000009E +S31AFE00779C408200348137438C801A43947D3E48502C0900007CE2 +S31AFE0077B100F214901A43949137438C40810014813843908809AF +S31AFE0077C600002C0000004082FEBC800100447C0803A68281000D +S31AFE0077DB1082A1001482C1001882E1001C830100208321002408 +S31AFE0077F0834100288361002C8381003083A1003483C1003883F9 +S31AFE007805E1003C382100404E8000209421FFE87C0802A693A1CA +S31AFE00781A000C93C1001093E100149001001C2C0600003D200021 +S31AFE00782F003D6000003D4000003D00000090694390908B43942B +S31AFE00784490AA438C90C84398418200303FA00000380000009055 +S31AFE0078591D3760813D37604BFFFDA5813D3760801D37602C006C +S31AFE00786E00004182001038600000480000104BFFFD893D200011 +S31AFE00788300806943948001001C7C0803A683A1000C83C10010DE +S31AFE00789883E10014382100184E8000209421FFF87C0802A69098 +S31AFE0078AD01000C480025293D20000038000001900937448001F4 +S31AFE0078C2000C7C0803A6382100084E8000209421FFE87C080203 +S31AFE0078D7A693A1000C93C1001093E100149001001C7C9E237864 +S31AFE0078EC3BA000007C7F1B7893BE000048000024801E0000813E +S31AFE0079013F0000540020367C001B7839290001901E0000913F94 +S31AFE00791600003BBD0001813F0000886900002C030000418200BC +S31AFE00792B104BFFF7D17C631B794080FFC87FA3EB788001001C05 +S31AFE0079407C0803A683A1000C83C1001083E10014382100184E46 +S31AFE0079558000207C842379394000004082001838000030980387 +S31AFE00796A000198030000386000024E800020392500077D20FEE0 +S31AFE00797F7054001F7E7D2902147D251E71418200603D20FE0122 +S31AFE00799438C94C8038E5FFFF54E018387C88043068A900012004 +S31AFE0079A90900007D2049143168FFFF7C0B41107C0B4B79418245 +S31AFE0079BE00285508063E5500E13E7D6600AE5509073E7C064875 +S31AFE0079D3AE996300009C03000138630001394A00027CE53B791B +S31AFE0079E84082FFB07D4353784E8000209421FFF07C0802A69339 +S31AFE0079FDE1000C900100143D20000080A943CC7C641B782C05A6 +S31AFE007A12000038600000408100843FE00000801F37682C0000F5 +S31AFE007A270041820010386000017C0803A64E8000212C0300018E +S31AFE007A3C408200103D2000009869376448000054801F3768216B +S31AFE007A5123FFFF216900007D2B4914216000007C0B01147C0BC8 +S31AFE007A664B79418200343D200000800943A82C0000004182008C +S31AFE007A7B24386000017C0803A64E8000212C0300004182001017 +S31AFE007A903D2000003800000198093765800100147C0803A683C5 +S31AFE007AA5E1000C382100104E8000209421FFF07C0802A693E140 +S31AFE007ABA000C900100143FE00000881F37642C000000418200B2 +S31AFE007ACF343D200000800937682C000000418200243D20000075 +S31AFE007AE480A943CC38600000388000007C0803A64E80002138AD +S31AFE007AF9000000981F37643FE00000881F37652C0000004182D1 +S31AFE007B0E00283D200000800943A82C00000041820018386000C6 +S31AFE007B23007C0803A64E80002138000000981F3765800100140D +S31AFE007B387C0803A683E1000C382100104E8000209421FFF07C20 +S31AFE007B4D0802A693C1000893E1000C900100143D200000800908 +S31AFE007B6237582C00000041820010800937587C0803A64E800069 +S31AFE007B77213D200000800943E02C000000418200143800000090 +S31AFE007B8C900943E03BE0000248000010480094ED480094217C6D +S31AFE007BA17F1B78480095A92C03000041820008480095D548003F +S31AFE007BB695954BFFFEF94800954538600003480024D9386000B1 +S31AFE007BCB03480024692C1F0000418200203FC00000813E37485E +S31AFE007BE07FE3FB787D2803A64E8000212C0300004082FFEC4856 +S31AFE007BF50095513D200000800937542C00000041820010800998 +S31AFE007C0A37547C0803A64E800021800100147C0803A683C100B4 +S31AFE007C1F0883E1000C382100104E8000209421FFB87C0802A6E5 +S31AFE007C34936100349381003893A1003C93C1004093E100449077 +S31AFE007C4901004C7C7E1B783BE000003F6000003B810028801B0F +S31AFE007C5E43AC3BA000012C0000004182001C7FE3FB787F84E37C +S31AFE007C73787C0803A64E8000217C7D1B78480000107FE3FB78AB +S31AFE007C8848001D1D90610028381FFFE02800001F7C0A03782F9B +S31AFE007C9D9D00003BFF00017F83E3784181004C390000047D09C8 +S31AFE007CB203A6386100087C6B1B7838000000392000007C0B4994 +S31AFE007CC7AE392900014200FFF8380000047C0903A67C69437850 +S31AFE007CDC7F8BE378880B0000396B0001980900003929000142AC +S31AFE007CF100FFF0419E0030200A001F7C0001107C0500F85400D9 +S31AFE007D06077A54A507387FC4F3787C052B7838C000004BFFF89F +S31AFE007D1B4D7C7E1B7848000058212A001F7D2949107D2048F88F +S31AFE007D30540006F6552907387D2903782C0900007FCBF37838EA +S31AFE007D450000783929FFFF418200182C090000980B0000396BF6 +S31AFE007D5A00013929FFFF4082FFF0280A001F4181000C3BDE00C6 +S31AFE007D6F10480000083BDE00082C1F00464081FEE08001004C7D +S31AFE007D847C0803A6836100348381003883A1003C83C1004083FE +S31AFE007D99E10044382100484E8000209421FFD07C0802A67D8070 +S31AFE007DAE00269381002093A1002493C1002893E1002C9001005D +S31AFE007DC3349181001C88030000386300012C0000507C9D2378EE +S31AFE007DD890610008392000003BC00047408200703861000838F3 +S31AFE007DED81000C4BFFFAE12C0300004182002881210008880976 +S31AFE007E020000392900012C00003D91210008408200108121006D +S31AFE007E170C3BC90001480000383D20FE0188094C987FA4EB786A +S31AFE007E2C2C00000039694C98418200D8880B0000980400008D34 +S31AFE007E412B0001388400012C0900004082FFEC480000BC7D3F9D +S31AFE007E564B787C1FF000408000803B800000397FFFE020AB0068 +S31AFE007E6B1F7CA52910392100103881000C7CA028F87C8428787A +S31AFE007E807CA9483854A5077A54000738806100082A0B001F7C7E +S31AFE007E95A503787D2423789381001038C000004BFFF96D8081AB +S31AFE007EAA00107FE3FB7848001B09419100108121000839290080 +S31AFE007EBF104800000C8121000839290008912100083BFF00013D +S31AFE007ED47C1FF0004180FF8C3D20FE0188094C9C7FA4EB782C37 +S31AFE007EE900000039694C9C4182001C880B0000980400008D2B30 +S31AFE007EFE0001388400012C0900004082FFEC38000000980400F7 +S31AFE007F1300800100348181001C7C0803A68381002083A10024E9 +S31AFE007F2883C1002883E1002C7D808120382100304E800020949B +S31AFE007F3D21FF307C0802A693C100C893E100CC900100D43BC0F3 +S31AFE007F5200003D6000017C7F1B789BCB9324893F00003809FFC5 +S31AFE007F67C128000034418108A03D60FE01396B4CB05400103AA0 +S31AFE007F7C7D4B002E3D20FE0139294CB07D4A4A147D4903A64E5A +S31AFE007F91800420480090F1480090253D20FE0139294C8054602F +S31AFE007FA6E73E7D0900AE5463073E7CE918AE3D4000013800008C +S31AFE007FBB53392A9324980A9324396000009969000399090001A6 +S31AFE007FD098E900024800084C3D200000880933403D6000012C4E +S31AFE007FE5000000396B932439493340418207F8880A00008D2A28 +S31AFE007FFA0001980B00002C090000396B00014082FFEC480007F4 +S31AFE00800FDC387F000148000BA948000808387F000148000D6DF6 +S31AFE008024480007FC3C600001386393244BFFFBFD480007EC8804 +S31AFE0080391F00012C000000408200404800093D3D20FE01880965 +S31AFE00804E4C9C3D6000012C000000396B932439494C9C418207D8 +S31AFE00806388880A00008D2A0001980B00002C090000396B0001B5 +S31AFE0080784082FFEC4800076C381F0001900100883BC1008C3B53 +S31AFE00808DE100887FE3FB787FC4F3784BFFF8392C030000418281 +S31AFE0080A200A48121008888090000392900012C00002C912100F9 +S31AFE0080B7884082008C7FE3FB78388100904BFFF80D2C0300003E +S31AFE0080CC418200788121008888090000392900012C00002C9159 +S31AFE0080E1210088408200608081008C2C04000041820038806122 +S31AFE0080F60090480008C97C641B79418200148061008880A100F3 +S31AFE00810B8C38C000004BFFF7018001008C812100887C000214CC +S31AFE0081207D2902149121008881210088880900002C00002C40FD +S31AFE00813582001038090001900100884BFFFF50812100888809F0 +S31AFE00814A00002C0000004082003C3D20FE0188094C9C3D600080 +S31AFE00815F012C000000396B932439494C9C4182067C880A00003E +S31AFE0081748D2A0001980B00002C090000396B00014082FFEC48C8 +S31AFE0081890006603D20FE0188094CA03D6000012C000000396B30 +S31AFE00819E932439494CA041820644880A00008D2A0001980B00A9 +S31AFE0081B3002C090000396B00014082FFEC480006283C800001F9 +S31AFE0081C87FE3FB78388493244BFFFBD54800064C381F00013B0F +S31AFE0081DDE10094900100947FE3FB78388100984BFFF6E52C0375 +S31AFE0081F20000418200908121009488090000392900012C0000CB +S31AFE0082072C91210094408200787FE3FB783881009C4BFFF6B98F +S31AFE00821C2C03000041820064806100983C80000180A1009C38C8 +S31AFE00823184932438C000014BFFF32D2C030000408205E03D6023 +S31AFE008246FE01880B4CA43D2000012C00000039499324396B4CEA +S31AFE00825BA44182001C880B00008D2B0001980A00002C09000064 +S31AFE008270394A00014082FFEC38000000980A0000480005A03DC0 +S31AFE00828520FE0188094CA03D6000012C000000396B932439499D +S31AFE00829A4CA04182054C880A00008D2A0001980B00002C0900A9 +S31AFE0082AF00396B00014082FFEC480005303BC00001381F000193 +S31AFE0082C43BE100A0900100A07FE3FB78388100A44BFFF5FD2C1A +S31AFE0082D9030000418201F8812100A088090000392900012C006B +S31AFE0082EE002C912100A0408201E07FE3FB78388100A84BFFF5E1 +S31AFE008303D12C030000418201CC806100A0880300003863000129 +S31AFE0083182C00003A906100A0408201B42C1E000041820124802C +S31AFE00832D0100A82C000000418200A8800100A83BE000007C1F18 +S31AFE00834200404080005439410008816100A0892B0000396B0072 +S31AFE008357017D204B782C00007D7D2AF9AE916100A04082001849 +S31AFE00836C880B0000392B0001600000207C0AF9AE912100A03BC6 +S31AFE008381FF0001281F007F41810010800100A87C1F0040418086 +S31AFE008396FFB8808100A4386100087FE5FB7848001EB97C03F864 +S31AFE0083AB0040820024812100A8800100A47D3F48502C090000DB +S31AFE0083C07C00FA14900100A4912100A84082FF6C800100A82C09 +S31AFE0083D50000004082003C3D20FE0188094C9C3D6000012C00F2 +S31AFE0083EA0000396B932439494C9C418203F4880A00008D2A00B2 +S31AFE0083FF01980B00002C090000396B00014082FFEC480003D817 +S31AFE0084143D20FE0188094CA43D6000012C000000396B93243914 +S31AFE008429494CA4418203BC880A00008D2A0001980B00002C095D +S31AFE00843E0000396B00014082FFEC480003A0808100A480A10022 +S31AFE008453A838C000014BFFF3B92C0300004182003C3D20FE01EF +S31AFE00846888094C9C3D6000012C000000396B932439494C9C41B2 +S31AFE00847D82036C880A00008D2A0001980B00002C090000396B2F +S31AFE00849200014082FFEC480003503D20FE0188094CA43D60000E +S31AFE0084A7012C000000396B932439494CA441820334880A000036 +S31AFE0084BC8D2A0001980B00002C090000396B00014082FFEC487D +S31AFE0084D10003183D20FE0188094CA83D6000012C000000396B28 +S31AFE0084E6932439494CA8418202FC880A00008D2A0001980B00A2 +S31AFE0084FB002C090000396B00014082FFEC480002E0881F000010 +S31AFE008510395F000168090053216900007D2B491468000043219A +S31AFE0085256000007C0B01147C0B4B7939600000914100AC9161ED +S31AFE00853A00B03BC100AC418200287FC3F378388100B04BFFF392 +S31AFE00854F85812100AC880900002C00003B4082000C3809000138 +S31AFE008564900100AC7FC3F378388100B44BFFF3612C0300004199 +S31AFE00857982000C806100B448008B193860000348001B1538602F +S31AFE00858E000348001AA5806100B02C0300004182004C3D20009E +S31AFE0085A300800937502C0000004182001C800937507C0803A667 +S31AFE0085B84E8000217C631B7940820008906100B0800100B02C80 +S31AFE0085CD0000004182001838000009900100B03860000948004F +S31AFE0085E2034948000248480015D12C0300004182001838000032 +S31AFE0085F763981F00003D2000003800000190093778881F0000CC +S31AFE00860C68090053216900007D2B491468000073216000007C2A +S31AFE0086210B01147C0B4B7941820024386000004BFFF3C53D20F7 +S31AFE008636000139292AF83D600000912B377448008A7D4800000B +S31AFE00864B0C386000014BFFF3A53860000348001A4538600003B2 +S31AFE008660480019D5480013DD3860FFFF480001C4480013D13D87 +S31AFE0086752000008009374C7C0803A64E800021386000014800C3 +S31AFE00868A01A8480017D1480001903C800001387F000138849361 +S31AFE00869F2438A0012C48000E15480001783C800001387F0001F8 +S31AFE0086B43884932438A0012C48000D8548000160381F000190CA +S31AFE0086C90100B8386100B8388100BC4BFFF1FD2C0300004182EF +S31AFE0086DE0084812100B888090000392900012C00002C912100A7 +S31AFE0086F3B84082006C88090000392900012C000043912100B8BB +S31AFE00870840820014806100BC3880000048002369480000108081 +S31AFE00871D6100BC38800000480023513D20FE0188094C9C3D6040 +S31AFE00873200012C000000396B932439494C9C418200A8880A003F +S31AFE008747008D2A0001980B00002C090000396B00014082FFEC37 +S31AFE00875C4800008C3D20FE0188094CA03D6000012C0000003954 +S31AFE0087716B932439494CA041820070880A00008D2A0001980B3F +S31AFE00878600002C090000396B00014082FFEC48000054381F0060 +S31AFE00879B01900100C0386100C0388100C44BFFF1292C0300000A +S31AFE0087B0408200443D20FE0188094CAC3D6000012C00000039C2 +S31AFE0087C56B932439494CAC4182001C880A00008D2A0001980B33 +S31AFE0087DA00002C090000396B00014082FFEC38000000980B0024 +S31AFE0087EF00480000303C60FE0138634C9C4BFFEB11806100C4F0 +S31AFE00880448001279480000183C8000017FE3FB783884932438EB +S31AFE008819A0012C48001AA53C600001386393244BFFEAE53860D2 +S31AFE00882E0000800100D47C0803A683C100C883E100CC3821001A +S31AFE008843D04E8000209421FFE87C0802A693A1000C93C10010F2 +S31AFE00885893E100149001001C3FA00001389D932448001635389B +S31AFE00886D7D93244BFFEA9D8001001C7C0803A683A1000C83C1AF +S31AFE008882001083E10014382100184E8000209421FFF07C0802CC +S31AFE008897A693E1000C900100143D2000008009375C2C00000058 +S31AFE0088AC408000084BFFFF993FE00001387F8B244BFFE8893890 +S31AFE0088C17F8B244BFFF6797C631B794182FFEC7C6318F85463F0 +S31AFE0088D60FFE800100147C0803A683E1000C382100104E800013 +S31AFE0088EB204E8000209421FFF87C0802A69001000C4BFFEFA90F +S31AFE0089004800151D3860002B480010C58001000C7C0803A63812 +S31AFE0089152100084E8000203D2000009069375C4E8000209421A6 +S31AFE00892AFFF87C0802A69001000C3D20FE0139294C805460E74F +S31AFE00893F3E7D4900AE5463073E7D0918AE3D60000138000058F7 +S31AFE008954386B9324980B932439200000994300019903000299E9 +S31AFE0089692300034BFFE9A18001000C7C0803A6382100084E8012 +S31AFE00897E00203D20000138A0000039299B743CC0000038E0FF06 +S31AFE008993FF3C8000003D6000013D4000003D000000380000017F +S31AFE0089A890E643A090AB9B24912A43A49008376C90A4439C4E25 +S31AFE0089BD8000209421FFF07C0802A693C1000893E1000C9001C4 +S31AFE0089D200143D2000008009376C7C7F1B782C0000007C9E23F8 +S31AFE0089E778408200084BFFFF952C1F0012418100243D60000077 +S31AFE0089FC800B43A43D20000139299B747C0900507C00F21428A2 +S31AFE008A110000804081000C386000004800006C3CE00000800710 +S31AFE008A2643A07C1F00004182004C3D0000008008439C7C1F006B +S31AFE008A3B0041800020395F00013D20000139299B24554B103A3F +S31AFE008A50380000007C09592E9148439C3D600000814B43A43D84 +S31AFE008A6520000139299B2457E0103A7D49012E93E743A03D2086 +S31AFE008A7A0000806943A47C03F214900943A4800100147C0803F2 +S31AFE008A8FA683C1000883E1000C382100104E8000209421FFD889 +S31AFE008AA47C0802A6936100149381001893A1001C93C100209302 +S31AFE008AB9E100249001002C3D600000800B37707C7D1B782C005B +S31AFE008ACE00007C9E23787CBF2B7840820058380000013D20004C +S31AFE008AE30139299BF4900B377039400000380000087C0903A65F +S31AFE008AF8390A0001554BC00E5547103A2C0B00005560083C405D +S31AFE008B0D80000C6C0004C168001DB77C0B03784200FFE87D0AA4 +S31AFE008B224378280A00FF7C09392E4081FFC43D60000038000009 +S31AFE008B37003D2000013B699BF4900B37603F8000004800002437 +S31AFE008B4C8921000857E0463E7C004A785400103A7D7B002E574A +S31AFE008B61E9402E7D3F5A783BBD00012C1E00003BDEFFFF4182F9 +S31AFE008B760020386100087FA4EB7838A0000148001679801C371C +S31AFE008B8B602C0000004182FFBC7FE3FB788001002C7C0803A618 +S31AFE008BA0836100148381001883A1001C83C1002083E100243844 +S31AFE008BB52100284E8000209421FFD87C0802A693A1001C93C114 +S31AFE008BCA002093E100249001002C3D2000013800000098099353 +S31AFE008BDF243BA993247C691B7890610008880900002C0000434D +S31AFE008BF4408200F4880900012C000052408200E88BC900022C76 +S31AFE008C091E0043408200DC880900032C00003A408200D0380986 +S31AFE008C1E00043BE10008900100087FE3FB783881000C4BFFECAC +S31AFE008C33A12C03000041820138812100088809000039290001BE +S31AFE008C482C00002C91210008408201207FE3FB78388100104B35 +S31AFE008C5DFFEC752C0300004182010C8061000C8081001038A0C9 +S31AFE008C72FFFF4BFFFE2D3D20000083E937602C1F000041820008 +S31AFE008C87403D20FE0188094CA07FA3EB782C00000039694CA07C +S31AFE008C9C4182001C880B00008D2B0001980300002C090000388C +S31AFE008CB16300014082FFEC3800000098030000480000B07C64EE +S31AFE008CC61B78387D000138A000204BFFEC893D2000019BC99340 +S31AFE008CDB24386300017FFD19AE4800008C81210008880900006E +S31AFE008CF07D2B4B782C00004C386900017C0903784182002041C2 +S31AFE008D058100102C0000434182003C4800004C2C09005041827A +S31AFE008D1A001C480000403C8000013884932438A0012C48000916 +S31AFE008D2F5D480000403C8000013884932438A0012C48000A912E +S31AFE008D444800002C3C8000013884932438A00800480005FD4800 +S31AFE008D590000183C8000017D635B783884932438A0012C4800B9 +S31AFE008D6E15458001002C7C0803A683A1001C83C1002083E100B0 +S31AFE008D8324382100284E8000209421FFF87C0802A69001000CCF +S31AFE008D98880300002C000070408200183C800001388493243859 +S31AFE008DADA0012C48000709480000143C8000013884932438A024 +S31AFE008DC2012C480014F58001000C7C0803A6382100084E800031 +S31AFE008DD7203923011C7C0348404C8000208004000038840004B3 +S31AFE008DEC90030000386300047C0348404180FFEC4E8000203863 +S31AFE008E0100004598030000392000309D230001380000329C0325 +S31AFE008E160001386300014E8000203800004F980300003920003D +S31AFE008E2B4B9D230001386300014E8000209421FFE87C0802A6D0 +S31AFE008E4093A1000C93C1001093E100149001001C7C9E23797C0E +S31AFE008E557D1B783BE0000041820038887D00003BBD00014BFF96 +S31AFE008E6AE29537DEFFFF7FFF1B7857E920367C00002654001FA9 +S31AFE008E7FFE7C0000D07D2900787FE000387C1F4B784082FFD0EC +S31AFE008E947FE3FB788001001C7C0803A683A1000C83C10010831F +S31AFE008EA9E10014382100184E8000209421FFE87C0802A6938180 +S31AFE008EBE000893A1000C93C1001093E100149001001C7C7D1BA6 +S31AFE008ED3787C9C2378388000024BFFFF5D907C0000387D000238 +S31AFE008EE88001001C7C0803A68381000883A1000C83C100108394 +S31AFE008EFDE10014382100184E8000209421FFE87C0802A693812C +S31AFE008F12000893A1000C93C1001093E100149001001C7C7D1B51 +S31AFE008F27787C9C2378388000084BFFFF09907C0000387D00082B +S31AFE008F3C8001001C7C0803A68381000883A1000C83C10010833F +S31AFE008F51E10014382100184E8000203803FF9F280000054181EB +S31AFE008F6600143803FFA990040000386000014E8000203803FFA6 +S31AFE008F7BBF280000054181000C3803FFC94BFFFFE43863FFD089 +S31AFE008F905460063E280000094081000C386000004E80002090BC +S31AFE008FA5640000386000014E8000209421FFE87C0802A693A1CC +S31AFE008FBA000C93C1001093E100149001001C7C7D1B78887D0068 +S31AFE008FCF003BBD00014BFFFF897FA3EB788001001C7C0803A66F +S31AFE008FE483A1000C83C1001083E10014382100184E8000203DDC +S31AFE008FF920FE015480E13E39294D887D6900AE5484073E7C09E0 +S31AFE00900E20AE996300009C030001386300014E8000209421FFA1 +S31AFE009023E07C0802A69381001093A1001493C1001893E1001CC0 +S31AFE009038900100247C7F1B787C9C23783BC000003BA100084802 +S31AFE00904D0000188001000857DE20365400073E7FDE03783BFF33 +S31AFE0090620001887F00007FA4EB784BFFFEF12C0300004082FF3E +S31AFE009077DC93DC00007FE3FB78800100247C0803A683810010DA +S31AFE00908C83A1001483C1001883E1001C382100204E80002094BC +S31AFE0090A121FFE87C0802A69381000893A1000C93C1001093E14E +S31AFE0090B600149001001C7C7F1B783B9F00107C1FE0407C9E2370 +S31AFE0090CB7840800038887F00004BFFE0298C1F00017C7D1B788A +S31AFE0090E07C0303784BFFE01957BD20363BFF00017FBD1B787C4A +S31AFE0090F51FE0409BBE00003BDE00014180FFD07FE3FB788001CA +S31AFE00910A001C7C0803A68381000883A1000C83C1001083E1000F +S31AFE00911F14382100184E8000209421FFE87C0802A693A1000CBC +S31AFE00913493C1001093E100149001001C7C9D237857A4463E4B0B +S31AFE009149FFFEB157A4863E4BFFFEA957A4C63E4BFFFEA157A4CC +S31AFE00915E063E4BFFFE998001001C7C0803A683A1000C83C10095 +S31AFE0091731083E10014382100184E8000209421FFE87C0802A634 +S31AFE00918893A1000C93C1001093E100149001001C7C9E237888B8 +S31AFE00919D1E00003BE000002C000000393E0001418200207FFD7D +S31AFE0091B2FB78880900003BBD00012C000000392900014082FF57 +S31AFE0091C7F07FBFEB782F9F00C97C0000265400EFFE7C0000D038 +S31AFE0091DC7C0900F87FE00038712900C87C1F4B7857E4063E7FA8 +S31AFE0091F1FDFB784BFFFE052C1D00003BFFFFFF4081005C7FFD8E +S31AFE009206FB787FC4F378896400007FAAEB78210B00007C0859AC +S31AFE00921B1469690023210900007D2849147C004B783000FFFF98 +S31AFE0092307C0001107C0900F87129002A7D6B00387D6B4B782C60 +S31AFE0092450A00009963000038840001386300013BBDFFFF4181F9 +S31AFE00925AFFB48001001C7C0803A683A1000C83C1001083E10096 +S31AFE00926F14382100184E8000209421FFF07C0802A693C1000847 +S31AFE00928493E1000C900100143BC300107C03F0407C9F237840F9 +S31AFE009299800018889F00003BFF00014BFFFD557C03F0404180B6 +S31AFE0092AEFFF0800100147C0803A683C1000883E1000C382100E1 +S31AFE0092C3104E800020392000047D2903A6380000009803000015 +S31AFE0092D8386300014200FFF87C80C670980300007C8986709D43 +S31AFE0092ED2300017C8046709C030001988300014E80002039634C +S31AFE009302000438600000394000037D405378892B00002C0000D2 +S31AFE009317005460402E7C034B78396B0001394AFFFF4181FFE40E +S31AFE00932C4E800020380000087C0903A6880400003884000198EB +S31AFE009341030000386300014200FFF04E8000209421FFE87C0835 +S31AFE00935602A693C1001093E100149001001C3BC100087C9F237B +S31AFE00936B787FC3F378480017212C030000418200303800005199 +S31AFE009380981F0000392000439D3F00017FC3F3784BFFFF717CC1 +S31AFE009395641B783BFF00017FE3FB784BFFFD894800000C7FE332 +S31AFE0093AAFB784BFFFA557C7F1B7838000000981F0000800100A0 +S31AFE0093BF1C7C0803A683C1001083E10014382100184E80002021 +S31AFE0093D49421FFC87C0802A693A1002C93C1003093E1003490BC +S31AFE0093E901003C3BA100207C641B787FA3EB784BFFFED17FA3FF +S31AFE0093FEEB7838810008480017352C0300004182001480010017 +S31AFE00941310386000012C00000040820008386000008001003C4C +S31AFE0094287C0803A683A1002C83C1003083E10034382100384EC3 +S31AFE00943D8000209421FFE07C0802A693A1001493C1001893E18E +S31AFE009452001C900100247C7D1B787C9F2378388100084BFFFBE8 +S31AFE009467BD7C1D180041820020806100084BFFFF612C030000D9 +S31AFE00947C418200107FE3FB784BFFF99D4800000C7FE3FB784BDB +S31AFE009491FFF9713800000098030000800100247C0803A683A190 +S31AFE0094A6001483C1001883E1001C382100204E8000209421FFA2 +S31AFE0094BBD87C0802A693A1001C93C1002093E100249001002C7B +S31AFE0094D0892300003800FFFF2C0900677C9F237890010008387E +S31AFE0094E56300014182008C418100102C09006341820024480022 +S31AFE0094FA00C02C090070408200B8388100084BFFFAA938810013 +S31AFE00950F104BFFFB91480000B0880300002C00002D408200209F +S31AFE009524880300012C000031408200143D20000038000000904A +S31AFE0095390943CC480000103C800000388443CC4BFFFAD93D20A8 +S31AFE00954E0000806943CC2C030000418200104BFFFE792C03001A +S31AFE00956300418200547FE3FB784BFFF8B5480000503FA0000095 +S31AFE009578389D43C84BFFFAA5809D43C8386100104BFFFD418038 +S31AFE00958D1D43C82C00FFFF4182000C2C0000004082001038006E +S31AFE0095A20002900100084800001C380000019001000848000097 +S31AFE0095B7107FE3FB784BFFF8457C7F1B78800100082C000000EC +S31AFE0095CC41820028418100102C00FFFF4182008C4800007C2C60 +S31AFE0095E1000001418200242C00000241820060480000683D202B +S31AFE0095F6000139292AF83D600000912B3774480000603FA0004C +S31AFE00960B013C80000138842AF8387D2C144BFFF7C1386100100A +S31AFE0096203880004738BD2C14480015692C0300004182002838E5 +S31AFE0096351D2C143D2000007FE3FB78900937744BFFF7DD4800E3 +S31AFE00964A00187FE3FB784BFFF7D14800000C7FE3FB784BFFF79E +S31AFE00965FA57C7F1B7838000000981F00008001002C7C0803A6F6 +S31AFE00967483A1001C83C1002083E10024382100284E80002094AE +S31AFE00968921FFD07C0802A693210014934100189361001C9381D4 +S31AFE00969E002093A1002493C1002893E1002C900100347C9F231C +S31AFE0096B3787CBD2B78388100084BFFF8F53881000C3F800000CE +S31AFE0096C84BFFF7ED389C43B84BFFF9D1380000513BBDFFE67F93 +S31AFE0096DD3FEA14981F00003920004D9D3F00013BFF00017FFA49 +S31AFE0096F2FB787F43D378388000004BFFF8FD7C7F1B787FFEFBE2 +S31AFE0097077838000030389C43B8981E0000387E00014BFFFB6187 +S31AFE00971C7C7F1B783B8000003F600000480000247FE3FB7838D3 +S31AFE0097319D43C04BFFFB457C7F1B78389D43C03B9C0001387B04 +S31AFE00974643B84BFFFBE97C1FC840408000408001000C7C1C0019 +S31AFE00975B0040800034806100083C8000003FA00000388443B8C6 +S31AFE00977038BD43C0480013692C030000380000009001000840E4 +S31AFE00978582FFA838000031981E00007F43D3785784063E4BFF0D +S31AFE00979AF86138000000981F0000800100347C0803A6832100E8 +S31AFE0097AF14834100188361001C8381002083A1002483C10028D9 +S31AFE0097C483E1002C382100304E8000209421FFC07C0802A69352 +S31AFE0097D9A1003493C1003893E1003C90010044380000007C9F3E +S31AFE0097EE23789001001C90010010900100149001001838810072 +S31AFE009803204BFFF7053BA100287FA4EB784BFFF8917FA3EB7804 +S31AFE009818388100084800131D2C030000418200E43800007198E7 +S31AFE00982D1F0000392000709D3F000180810020387F00014BFF3A +S31AFE009842F8E9388100084BFFFA31800100207C7F1B787009004E +S31AFE0098570241820020388000024BFFF8C9388000024BFFF791C2 +S31AFE00986C888100134BFFF7897C7F1B7880010020700900044110 +S31AFE009881820028800100142C0000004182001C7FE3FB783880F7 +S31AFE00989600044BFFF891808100144BFFF8E17C7F1B788001009B +S31AFE0098AB207009000841820028800100182C0000004182001C74 +S31AFE0098C07FE3FB78388000084BFFF861808100184BFFF8B17CCF +S31AFE0098D57F1B788001002070090010418200348001001C2C007E +S31AFE0098EA0000418200287FE3FB78388000104BFFF83180810069 +S31AFE0098FF1C4BFFF8814800000C7FE3FB784BFFF4F57C7F1B7887 +S31AFE00991438000000981F0000800100447C0803A683A10034837E +S31AFE009929C1003883E1003C382100404E8000209421FFD87C08F5 +S31AFE00993E02A6936100149381001893A1001C93C1002093E100FC +S31AFE009953249001002C3B8100087C7D1B787C9B23787CA42B7855 +S31AFE0099687F83E3784BFFF95D7F83E3787FA4EB787F65DB784887 +S31AFE00997D0012718001002C7C0803A6836100148381001883A13C +S31AFE009992001C83C1002083E10024382100284E8000203D2000E8 +S31AFE0099A700816937745463103A7C63582E4E8000203D20000061 +S31AFE0099BC816937745463103A7C83592E4E8000209421FFF87C60 +S31AFE0099D10802A69001000C3D2000003929320081690018546485 +S31AFE0099E6063E806B0000800B000C7C0803A64E80002180010005 +S31AFE0099FB0C7C0803A6382100084E8000209421FFF87C0802A6F3 +S31AFE009A109001000C3D2000003929320081690018806B00008042 +S31AFE009A250B00107C0803A64E8000218001000C7C0803A63821DE +S31AFE009A3A00084E8000209421FFF87C0802A69001000C3D20004B +S31AFE009A4F00392932008169001838800008806B0000800B00141E +S31AFE009A647C0803A64E8000218001000C7C0803A6382100084E64 +S31AFE009A798000209421FFF87C0802A69001000C3D200000392900 +S31AFE009A8E3200816900187C651B78806B0000800B0014388000D5 +S31AFE009AA3007C0803A64E8000218001000C7C0803A63821000873 +S31AFE009AB84E8000209421FFE87C0802A693A1000C93C1001093A8 +S31AFE009ACDE100149001001C3FC00000817E43D03D2000002C0B39 +S31AFE009AE20000380000003BBE43D0900937787C7F1B784182008E +S31AFE009AF7187D635B7848000055801E43D02C0000004082002C23 +S31AFE009B0C813F00003C007D82913D000460001008901F000093B9 +S31AFE009B21FE43D03860000348000575386000034800050580014F +S31AFE009B36001C7C0803A683A1000C83C1001083E1001438210078 +S31AFE009B4B184E8000209421FFF87C0802A69001000C3D20000029 +S31AFE009B60816937782C0B0000408200183D200000800943D03910 +S31AFE009B754943D07C0300004182000C3860000048000024800A9F +S31AFE009B8A0004916943D090030000386000034800050538600099 +S31AFE009B9F0348000495386000018001000C7C0803A63821000815 +S31AFE009BB44E8000203D200000800943D03120FFFF7C6901104E1E +S31AFE009BC98000209421FFF87C0802A69001000C2C03000041827C +S31AFE009BDE00483D400000812A377C3929FFFF2C090000912A37C4 +S31AFE009BF37C418100683D20000039293200816900183800000088 +S31AFE009C08900A377C806B0000800B0014388000057C0803A64E34 +S31AFE009C1D8000214800003C3D600000812B377C392900012C0975 +S31AFE009C320001912B377C408200243D20000039293200816900E8 +S31AFE009C471838800004806B0000800B00147C0803A64E8000218A +S31AFE009C5C8001000C7C0803A6382100084E8000209421FFF87CBE +S31AFE009C710802A69001000C386000004BFFFF513D600001380085 +S31AFE009C8600207C0903A63D200000814943DC396B2AF83D00002E +S31AFE009C9B00392000007C09502E7C09592E392900044200FFF4AD +S31AFE009CB07D6A5B783D200000816943DC800B0094900A01008140 +S31AFE009CC52B0090912A0104800B0080900A0108812B0088912A6E +S31AFE009CDA010C800B008C900A0110812B0084912A01143D400025 +S31AFE009CEF003D600000800B37783D2000012C00000039292AF877 +S31AFE009D04912A3774418200183800000090083778386000404B63 +S31AFE009D19FFFC8D4BFFFE35386000404BFFFC814BFFFE293D20BF +S31AFE009D2E0000906943E08001000C7C0803A6382100084E800017 +S31AFE009D43209421FFF87C0802A69001000C380000207C0903A6EC +S31AFE009D583D200000814943DC3D600001396B2AF8392000007C73 +S31AFE009D6D09582E7C09512E392900044200FFF47D6A5B783D2098 +S31AFE009D820000816943DC800A0100900B0094812A0104912B0099 +S31AFE009D9790800A0108900B0080812A010C912B0088800A0110DE +S31AFE009DAC900B008C812A0114912B0084386000014BFFFE118005 +S31AFE009DC101000C7C0803A6382100084E800020386000004E809A +S31AFE009DD600203D20FE0139299DD03D400000912A37503D60FECF +S31AFE009DEB01396B9E5C3D2000009169374C3D40FE013D600000CD +S31AFE009E00394A9C6C914B37583D20FE0139299D443D6000009186 +S31AFE009E152B37544E8000209421FFF87C0802A69001000C3D20BE +S31AFE009E2A0000800937802C0000004082001838000001900937D0 +S31AFE009E3F8048007375386000044BFFD1398001000C7C0803A6B0 +S31AFE009E54382100084E8000209421FFF87C0802A69001000C3DF4 +S31AFE009E6920000039293200800900402C0000004182000C7C08E4 +S31AFE009E7E03A64E8000218001000C7C0803A6382100084E80004A +S31AFE009E93207FE000084E8000209421FFD07C0802A693410018A5 +S31AFE009EA89361001C9381002093A1002493C1002893E1002C9059 +S31AFE009EBD0100347C9D2378380000547C7C1B78981D00003B405C +S31AFE009ED200007F8326709341000C4BFFD1D19C7D00017F83E314 +S31AFE009EE7784BFFD1C57FBFEB789C7F0001380000749C1F0001E5 +S31AFE009EFC392000689D3F0001380000729C1F0001392000659DEE +S31AFE009F113F0001380000619C1F0001392000643BA0003A9D3FF4 +S31AFE009F2600019FBF000148000D1D906100083BFF00017FE4FBBE +S31AFE009F3B783861000838A0000438C000004BFFD61D7C7F1B7855 +S31AFE009F503B80003B9B9F0000386000044BFFD1519C7F0001386C +S31AFE009F656000404BFFD1459C7F00019FBF0001386000404BFF46 +S31AFE009F7AFA2D906100103BFF00017FE4FB783861000C38A00018 +S31AFE009F8F0038C000004BFFD5D17C7F1B783B6100107FE4FB78C1 +S31AFE009FA47F63DB7838A0000438C000004BFFD5B57C7F1B789B9E +S31AFE009FB99F0000386000004BFFD0ED9C7F0001386000014BFF52 +S31AFE009FCED0E19C7F00019FBF0001386000014BFFF9C9906100B8 +S31AFE009FE3103BFF00017FE4FB787F63DB7838A0000438C000003B +S31AFE009FF84BFFD56D7C7F1B789B9F00003BFF00019B5F00008047 +S31AFE00A00D0100347C0803A6834100188361001C8381002083A1B4 +S31AFE00A022002483C1002883E1002C382100304E8000202C03005F +S31AFE00A037014182002028030001418000502C03000241820024D7 +S31AFE00A04C2C030003418200304800003C3C0002004C00012C7C1F +S31AFE00A061108BA64C00012C480000283C0004004C00012C7C1077 +S31AFE00A0768BA64C00012C480000143C000C004C00012C7C108BF3 +S31AFE00A08BA64C00012C7C708AA654630FFE4E8000202C0300019F +S31AFE00A0A04182002028030001418000682C030002418200202C2F +S31AFE00A0B503000341820028480000543C0002007C0004AC7C1807 +S31AFE00A0CA8BA6480000443D6004007C0004AC7D788BA648000085 +S31AFE00A0DF34380000807C0903A639200000612010003D600E00B9 +S31AFE00A0F47C0004AC7D398BA67D788BA67C198BA67D788BA639F5 +S31AFE00A1092900104200FFE07C788AA654630FFE4E8000203D6070 +S31AFE00A11E000038000001900B37603D20FE013929A1EC3D6000D5 +S31AFE00A13300912B37843D40000048000098800A43D8280000036F +S31AFE00A148408100307080000340820028706000034082002080FB +S31AFE00A15D0300003863000490040000812A43D8388400043929CB +S31AFE00A172FFFC4800005C3D600000800B43D82800000140810008 +S31AFE00A18734708000014082002C7060000140820024A003000052 +S31AFE00A19C38630002B0040000812B43D8388400023929FFFE91E4 +S31AFE00A1B12B43D848000020880300003863000198040000812A79 +S31AFE00A1C643D8388400013929FFFF912A43D8800A43D82C0000A1 +S31AFE00A1DB004082FF643D20000038000000900937603D20000024 +S31AFE00A1F038000000900937844E8000209421FFE87C0802A69381 +S31AFE00A20581000893A1000C93C1001093E100149001001C7C6002 +S31AFE00A21A1B787CBC2B787C8323783FA000007C040378939D43D6 +S31AFE00A22FD84BFFFEED807D43D87C63E0508001001C7C0803A618 +S31AFE00A2448381000883A1000C83C1001083E10014382100184E3A +S31AFE00A2598000209421FFE87C0802A69381000893A1000C93C1D4 +S31AFE00A26E001093E100149001001C7CBC2B783FA00000939D4365 +S31AFE00A283D84BFFFE99807D43D87C63E0508001001C7C0803A618 +S31AFE00A2988381000883A1000C83C1001083E10014382100184EE6 +S31AFE00A2AD800020386000004E800020386000004E800020386054 +S31AFE00A2C200004E8000209421FFF07C0802A693C1000893E100F5 +S31AFE00A2D70C900100143D200000800943E42C0000004182006061 +S31AFE00A2EC3FE000003BC000007D4000A67D4053783920000051AA +S31AFE00A3012004207C000124817F43E4800B0014901F43E4808BB7 +S31AFE00A316001893CB00187C0000A6514004207C000124812B007C +S31AFE00A32B0C80AB0010806B00007D2803A64E800021801F43E4E4 +S31AFE00A3402C0000004082FFB0800100147C0803A683C1000883D6 +S31AFE00A355E1000C382100104E8000209421FFF87C0802A6900142 +S31AFE00A36A000C4BFFFF5D8001000C7C0803A6382100084E80003F +S31AFE00A37F209069000038000000900900149089000490A9001061 +S31AFE00A394900900189128000090C9000890E9000C4E80002081F1 +S31AFE00A3A92300002C090000418200F8810300043809FFFF280099 +S31AFE00A3BE0039418100E83D60FE01396B4DA05400103A7D4B0010 +S31AFE00A3D32E3D20FE0139294DA07D4A4A147D4903A64E80042012 +S31AFE00A3E83D20FF0061290200A16900007C0006AC556B063E3800 +S31AFE00A3FD000000600080007C0046307D600378540B043EB16962 +S31AFE00A41200007C0006AC480000903D20FF0061290240A16900F9 +S31AFE00A427007C0006AC556B063E38000000600080007C004630E0 +S31AFE00A43C7D600378540B043EB16900007C0006AC4800005C3DE5 +S31AFE00A45120FF0061290220A16900007C0006AC556B063E3800B3 +S31AFE00A4660000600080007C0046307D600378540B043EB16900F8 +S31AFE00A47B007C0006AC480000283D20FF00612909408009000072 +S31AFE00A4907C0006AC540004DE550B68247C005B78900900007CFF +S31AFE00A4A50006AC800300003D2000003949342C5408103A7C0AFE +S31AFE00A4BA402E3D20FE00392962487C004800418200187C0A404F +S31AFE00A4CF2E3D20FE013929B1387C0048004C8200208003000862 +S31AFE00A4E43D6000007C0A412E81430010396B35183D2000007D2E +S31AFE00A4F94B412E392936047C69412E4E8000207C631B794D8270 +S31AFE00A50E00203803FFFF280000397C0803784D8100203D60FEF2 +S31AFE00A52301396B4E885500103A7D4B002E3D20FE0139294E887B +S31AFE00A5387D4A4A147D4903A64E8004203D20FF00612900148109 +S31AFE00A54D6900007C0006AC3C0080007C0044307D6B0078916958 +S31AFE00A56200007C0006AC4E8000203D20FF0061290200A0090033 +S31AFE00A577007C0006AC7000FFF75400043EB00900007C0006ACBA +S31AFE00A58C4E8000203D20FF0061290200A00900007C0006AC7099 +S31AFE00A5A100FFFB5400043EB00900007C0006AC4E8000203D20DF +S31AFE00A5B6FF0061290240A00900007C0006AC7000FFFB54000428 +S31AFE00A5CB3EB00900007C0006AC4E8000203D20FF00612902205C +S31AFE00A5E0A00900007C0006AC7000FFF75400043EB00900007C5A +S31AFE00A5F50006AC4E8000203D20FF0061290220A00900007C0080 +S31AFE00A60A06AC7000FFFB5400043EB00900007C0006AC4E8000D0 +S31AFE00A61F203D20FF0061290940800900007C0006AC5400066E54 +S31AFE00A634900900007C0006AC4E8000203D20FF006129094881A0 +S31AFE00A6496900007C0006AC3943FFE53C0080007C0054307D6B5D +S31AFE00A65E0078916900007C0006AC4E8000207C631B794D820013 +S31AFE00A673203803FFFF280000397C0803784D8100203D60FE018B +S31AFE00A688396B4F705500103A7D4B002E3D20FE0139294F707DC7 +S31AFE00A69D4A4A147D4903A64E8004203D20FF00612900148169B7 +S31AFE00A6B200007C0006AC3C0080007C0044307D6B037891690058 +S31AFE00A6C7007C0006AC4E8000203D20FF0061290200A0090000CD +S31AFE00A6DC7C0006AC60000008B00900007C0006AC4E8000203DBD +S31AFE00A6F120FF0061290200A00900007C0006AC60000004B009B1 +S31AFE00A70600007C0006AC4E8000203D20FF0061290240A009004D +S31AFE00A71B007C0006AC60000004B00900007C0006AC4E800020BE +S31AFE00A7303D20FF0061290220A00900007C0006AC60000008B019 +S31AFE00A7450900007C0006AC4E8000203D20FF0061290220A00925 +S31AFE00A75A00007C0006AC60000004B00900007C0006AC4E80009F +S31AFE00A76F203D20FF0061290940800900007C0006AC60000080EB +S31AFE00A784900900007C0006AC4E8000203D20FF0061290948814F +S31AFE00A7996900007C0006AC3943FFE53C0080007C0054307D6B0C +S31AFE00A7AE0378916900007C0006AC4E8000207C631B794D8200BF +S31AFE00A7C3203803FFFF280000397C0803784D8100203D60FE013A +S31AFE00A7D8396B50585500103A7D4B002E3D20FE01392950587DA4 +S31AFE00A7ED4A4A147D4903A64E8004203D20FF006129001081696A +S31AFE00A80200007C0006AC3C0080007C0044307D6B037891690006 +S31AFE00A817007C0006AC4E8000203D20FF0061290200A00900007B +S31AFE00A82C7C0006AC60000080B00900007C0006AC4E8000203DF3 +S31AFE00A84120FF0061290200A00900007C0006AC60000040B00923 +S31AFE00A85600007C0006AC4E8000203D20FF0061290240A00900FC +S31AFE00A86B007C0006AC60000080B00900007C0006AC4E800020F1 +S31AFE00A8803D20FF0061290220A00900007C0006AC60000080B050 +S31AFE00A8950900007C0006AC4E8000203D20FF0061290220A009D4 +S31AFE00A8AA00007C0006AC60000040B00900007C0006AC4E800012 +S31AFE00A8BF203D20FF006129094C816900007C0006AC3943FFE5AD +S31AFE00A8D43C0080007C0054307D6B0378916900007C0006AC4ED6 +S31AFE00A8E98000207C8723787C631B794D8200203803FFFF280055 +S31AFE00A8FE00397C0803784D8100203D60FE01396B5140550010E5 +S31AFE00A9133A7D4B002E3D20FE01392951407D4A4A147D4903A618 +S31AFE00A9284E8004203C0080007C0044303D60FF00616B00188078 +S31AFE00A93D8B00007C0006AC7C8400787CEAFE707D493A787D29DE +S31AFE00A95250507D29FE707C8003787C0048787C8948387D24035C +S31AFE00A96778908B00007C0006AC4E8000207C8823787C631B7916 +S31AFE00A97C4D8200203803FFFF280000394D8100203D60FE013976 +S31AFE00A9916B52285400103A7D4B002E3D20FE01392952287D4A35 +S31AFE00A9A64A147D4903A64E8004203D20FF0061290200A08900C8 +S31AFE00A9BB007C0006AC5484063E38000000600080007C0046302F +S31AFE00A9D07C8003785404043EB08900007C0006AC4E8000203DCB +S31AFE00A9E520FF0061290240A08900007C0006AC5484063E3800C3 +S31AFE00A9FA0000600080007C0046307C8003785404043EB0890028 +S31AFE00AA0F007C0006AC4E8000203D20FF0061290220A0890000E1 +S31AFE00AA247C0006AC5484063E38000000600080007C0046307C49 +S31AFE00AA398003785404043EB08900007C0006AC4E8000203D20BD +S31AFE00AA4EFF0061290940800900007C0006AC540004DE550B6868 +S31AFE00AA63247C005B78900900007C0006AC4E8000203860000119 +S31AFE00AA784E800020386000014E8000203D200000906943EC4E7D +S31AFE00AA8D8000209421FFF87C0802A69001000C3D2000003D60A1 +S31AFE00AAA20001814943EC906B9FF4814A0000388B9FF42C0A00BC +S31AFE00AAB7003860000041820010386000027D4803A64E80002124 +S31AFE00AACC8001000C7C0803A6382100084E8000209421FFF87C40 +S31AFE00AAE10802A69001000C3D2000013D600000814B43EC906920 +S31AFE00AAF69FF439099FF49088000490A80008814A00002C0A0082 +S31AFE00AB0B004082000C38600000480000147D0443783860000398 +S31AFE00AB207D4803A64E8000218001000C7C0803A6382100084E56 +S31AFE00AB358000209421FFF87C0802A69001000C3D2000013D60F7 +S31AFE00AB4A0000814B43EC90699FF439099FF490880004814A00AF +S31AFE00AB5F002C0A00004082000C38600000480000147D044378A9 +S31AFE00AB74386000047D4803A64E8000218001000C7C0803A638DD +S31AFE00AB892100084E8000209421FFF87C0802A69001000C3D20CA +S31AFE00AB9E00013D600000814B43EC90699FF439099FF49088008C +S31AFE00ABB30490A80008814A00002C0A00004082000C38600000DE +S31AFE00ABC8480000147D044378386000057D4803A64E8000218062 +S31AFE00ABDD01000C7C0803A6382100084E8000209421FFF87C08A6 +S31AFE00ABF202A69001000C3D2000013D600000814B43EC90699F77 +S31AFE00AC07F439099FF49088000490A80008814A00002C0A00000E +S31AFE00AC1C4082000C38600000480000147D044378386000077D05 +S31AFE00AC314803A64E8000218001000C7C0803A6382100084E8041 +S31AFE00AC4600209421FFE87C0802A693E100149001001C3BE100BC +S31AFE00AC5B087FE3FB784BFFFE312C0300004082000C38600000F5 +S31AFE00AC7048000008A07F00068001001C7C0803A683E1001438DC +S31AFE00AC852100184E8000209421FFF87C0802A69001000C4BFFD0 +S31AFE00AC9AB6958001000C7C0803A6382100084E8000203C00FE13 +S31AFE00ACAF00600001007C0903A64E8004209421FFF87C0802A633 +S31AFE00ACC49001000C4BFFFFE5386000008001000C7C0803A63822 +S31AFE00ACD92100084E800020386000004E8000209421FFE87C08A5 +S31AFE00ACEE02A693A1000C93C1001093E100149001001C7C7F1BB6 +S31AFE00AD0378386000003BA00001380000002C1FFFFE41820040C8 +S31AFE00AD18418100102C1FFFFD4182004C480000502C1FFFFF40D9 +S31AFE00AD2D8200483D200000812937882C0900003BA9FFFF4181A4 +S31AFE00AD42003C7D3D4B78408200343BA0FFFD4800002C3D2000A1 +S31AFE00AD5700392932003D6000009069001893EB37884800001408 +S31AFE00AD6C3BE00000480000083BFF0001380000012C0000004182 +S31AFE00AD818200803D2000003BC93200813E00182C090000418255 +S31AFE00AD9600188069000080090014388000047C0803A64E80004F +S31AFE00ADAB213D2000013929A06457E028347C004A143D200000E0 +S31AFE00ADC02C030000901E001893E93788813E00184182001C8014 +S31AFE00ADD569000080090014388000057C0803A64E80002148003E +S31AFE00ADEA00188069000080090014388000047C0803A64E8000FB +S31AFE00ADFF217FA3EB788001001C7C0803A683A1000C83C1001047 +S31AFE00AE1483E10014382100184E80002039400001380000002C70 +S31AFE00AE2903FFFE41820040418100102C03FFFD4182004C4800B9 +S31AFE00AE3E00502C03FFFF408200483D2000008129378C2C090075 +S31AFE00AE53003949FFFF4181003C7D2A4B78408200343940FFFD93 +S31AFE00AE684800002C3D200000392932003D600000900900149092 +S31AFE00AE7D6B378C48000014386000004800000838630001380076 +S31AFE00AE9200012C000000418200283D2000013929A064546028EF +S31AFE00AEA7343D6000007C004A14396B32003D200000900B001405 +S31AFE00AEBC9069378C7D4353784E8000204E8000204E8000204E1E +S31AFE00AED18000209421FFE87C0802A693E100149001001C3D206E +S31AFE00AEE6000039293200812900183BE000002C0900007C651BB1 +S31AFE00AEFB7893E100084182003880690000800900187C86237828 +S31AFE00AF10388100087C0803A64E800021800100087C7F1B782C08 +S31AFE00AF25000000418200103D200000806943F0480001BD7FE35F +S31AFE00AF3AFB788001001C7C0803A683E10014382100184E80000A +S31AFE00AF4F209421FFE87C0802A693A1000C93C1001093E10014D5 +S31AFE00AF649001001C380000407C0903A63D2000003D60FE01394F +S31AFE00AF79293200396BACE0394000007D69512E394A000442008D +S31AFE00AF8EFFF83C0000083D00000060000013900832003D600058 +S31AFE00AFA30039083200396B342C916800043D2000003929300032 +S31AFE00AFB83D60FE0191280008396BACAC916800403D20FE013959 +S31AFE00AFCD29ACBC3D60FE0191280010396BAC8C3D40FE01916824 +S31AFE00AFE20048394AAEC83D20FE01914800203929AECC9128002B +S31AFE00AFF71C3800000090080024900800283D2000013D60FE0177 +S31AFE00B00C9008004C3929A064396BACE039000000550A28343885 +S31AFE00B021080001390000087D0903A67D69512E394A000442006F +S31AFE00B036FFF87C0803782C0800024081FFDC3FA000003D60FEBF +S31AFE00B04B013BBD3200396BACE83D20FE01917D00303929AE20BF +S31AFE00B060913D00343860FFFE4BFFFC813860FFFE4BFFFDB148A4 +S31AFE00B075006141386000004BFFFC6D386000004BFFFD9D380021 +S31AFE00B08A0000901D0044387D003C4BFFF9F13D20FE0139299A3F +S31AFE00B09FBC913D008C8001001C7C0803A683A1000C83C1001034 +S31AFE00B0B483E10014382100184E8000207C8423794182002438F1 +S31AFE00B0C984FFFF7C0320AE2C0000034082000C386000014E803B +S31AFE00B0DE00202C0400004082FFE4386000004E8000209421FF2A +S31AFE00B0F3F87C0802A69001000C7C631B793D20FE013809B1289A +S31AFE00B10841820008800300943D200000392932008129008C7CA9 +S31AFE00B11D0303787D2803A64E8000218001000C7C0803A638214B +S31AFE00B13200084E8000209421FFF07C0802A693C1000893E1006E +S31AFE00B1470C900100143D20000039293200812900187C7F1B78FD +S31AFE00B15C2C0900007C9E23783860FFFF41820018806900008016 +S31AFE00B171090014388000067C0803A64E8000217C1F1800408259 +S31AFE00B186001C7FE3FB787FC4F3784BFFFD457C601B797C030393 +S31AFE00B19B78408200287FE3FB787FC4F3784BFFB09D7C601B78B0 +S31AFE00B1B07C09FE707D2302787C6348507C63FE707C0318388066 +S31AFE00B1C50100147C0803A683C1000883E1000C382100104E803C +S31AFE00B1DA0020280500037C691B78408100107C801B78700B00B9 +S31AFE00B1EF03418200302C05000038A5FFFF4D82002088040000CA +S31AFE00B2042C05000098090000388400013929000138A5FFFF4024 +S31AFE00B21982FFE84E8000202805000F7C6B1B7840810038800492 +S31AFE00B22E000038A5FFF0900B0000852400042805000F952B00F7 +S31AFE00B2430484040004940B000485240004952B0004388400048E +S31AFE00B258396B00044181FFD028050003408100208004000038D7 +S31AFE00B26DA5FFFC28050003900B000038840004396B0004418133 +S31AFE00B282FFE82C0500007D695B7838A5FFFF4D8200208804008C +S31AFE00B297002C05000098090000388400013929000138A5FFFFD1 +S31AFE00B2AC4082FFE84E800020280500037C691B784081000C700D +S31AFE00B2C1600003418200282C05000038A5FFFF4D8200202C05FA +S31AFE00B2D60000988900003929000138A5FFFF4082FFF04E800081 +S31AFE00B2EB205484063E5480402E7C0023785409801E7C004B787B +S31AFE00B3007C6B1B782805000F40810024900B0000940B00043823 +S31AFE00B315A5FFF0940B00042805000F940B0004396B000441819F +S31AFE00B32AFFE4280500034081001838A5FFFC28050003900B007B +S31AFE00B33F00396B00044181FFF02C0500007D695B784D820020C3 +S31AFE00B3547CA903A698890000392900014200FFF84E80002094D3 +S31AFE00B36921FFF87C0802A69001000C3C60000038633300480038 +S31AFE00B37E10313C60FE013C80FE013CA0FE013CC0FE0138C653F8 +S31AFE00B39310386354343884544C38A5545C4800100D3C60FE0185 +S31AFE00B3A838635468480010013D2000003D6000003C60FE0180C7 +S31AFE00B3BD89440C80AB43F83863549448000FE58001000C7C0868 +S31AFE00B3D203A6382100084E8000209421FFC07C0802A6926100D7 +S31AFE00B3E70C9281001092A1001492C1001892E1001C9301002029 +S31AFE00B3FC93210024934100289361002C9381003093A100349305 +S31AFE00B411C1003893E1003C900100443FA000003BBD3200813DDD +S31AFE00B42600343860FFFF7D2803A63B8000003B4000013E600020 +S31AFE00B43B004E800021813D00347C751B78386000007D2803A6AD +S31AFE00B4503E8000014E800021801D00483C60000360630D407C25 +S31AFE00B4650803A63D2000003D600000938943F4934B44104E80D0 +S31AFE00B47A00213D6000003D2000003C000040900943F8938B44EC +S31AFE00B48F0C480007F938600000388000004BFFFECD3D6000004E +S31AFE00B4A43D200000392941083BAB40F87C1D4800418200207D28 +S31AFE00B4B93F4B78813D00003BBD00087D2803A64E8000217C1DE4 +S31AFE00B4CEF8004082FFEC3D200000816944182C0B000041820122 +S31AFE00B4E3103D200000800943FC3C8010621FE003E860844DD3FF +S31AFE00B4F87C9F20967FE0FE707C8436707C8020501CA403E83CA4 +S31AFE00B50D60FE017D775B78386354A07CA5F85048000E912C1FD5 +S31AFE00B5220009380000003D200000900944183EC0FE01408100BF +S31AFE00B5379C3D2000003F6010623B0940F8637B4DD33F20000018 +S31AFE00B54C3874A0C43880010038A0000A480014D57C7C1B782C53 +S31AFE00B5611C0001408200287C9FD8967FE0FE707C8436707C80D2 +S31AFE00B57620501CA403E8387654A07CA5F85048000E29480000CF +S31AFE00B58B402C1CFFFF408200403BB940F07C1DC0003BDFFFF693 +S31AFE00B5A0418200243D2000003BE940F8813D00003BBD00087DB7 +S31AFE00B5B52803A64E8000217C1DF8004082FFEC7FDFF3782C1F6B +S31AFE00B5CA00094181FF802C1CFFFE408200143D2000003800006E +S31AFE00B5DF00900944184800000C3D20000092E944183D20000079 +S31AFE00B5F43B2940F83F6000002C1A0000418200143C60FE013813 +S31AFE00B6096354E448000DA13B4000003FC00001387EA0C438804A +S31AFE00B61E010038A0000A480014097C7C1B782C1CFFFF40820038 +S31AFE00B633383D2000003BA940F07C1DC8004182FFBC3D20000019 +S31AFE00B6483BE940F8813D00003BBD00087D2803A64E8000217C16 +S31AFE00B65D1DF8004082FFEC4BFFFF982C1C000040820028393393 +S31AFE00B6723200812900347EA3AB787D2803A638000001901B44F5 +S31AFE00B6871C4E8000214BFFE8094BFFFF6C387EA0C448000DD16F +S31AFE00B69C2C0300004081004C3FA000003FE00001387EA0C43808 +S31AFE00B6B19D440838BF2D30480019457C631B794182001C8003C8 +S31AFE00B6C6000C807D4408389F2D307C0803A64E8000214800007E +S31AFE00B6DB143C60FE01809F2D30386354F048000CC53B400001B7 +S31AFE00B6F04BFFFF0C9421FFF07C0802A693E1000C900100142CCB +S31AFE00B7050300027C9F237840820144807F00043C80FE013884EF +S31AFE00B71A551448000DED2C030000408200447D6000A67D605B7B +S31AFE00B72F7839200000512004207C0001243C0002004C00012C43 +S31AFE00B7447C108BA64C00012C3D4002007C0004AC7D588BA67C89 +S31AFE00B7590000A6516004207C000124480000F8807F00043C80BC +S31AFE00B76EFE013884551848000D952C030000408200C07D600022 +S31AFE00B783A67D605B7839200000512004207C000124392000006F +S31AFE00B798380000807C0903A6612010003D400E007C0004AC7DED +S31AFE00B7AD398BA67D588BA67C198BA67D588BA639290010420093 +S31AFE00B7C2FFE03C0004004C00012C7C108BA64C00012C3D40041F +S31AFE00B7D7007C0004AC7D588BA639200000380000807C0903A6E8 +S31AFE00B7EC612010003D400E007C0004AC7D398BA67D588BA67C93 +S31AFE00B801198BA67D588BA6392900104200FFE03C000C004C00B7 +S31AFE00B816012C7C108BA64C00012C3D400C007C0004AC7D588BA1 +S31AFE00B82BA67C0000A6516004207C000124480000243C60FE01BF +S31AFE00B840809F00043863551C48000B65480000103C60FE0138DD +S31AFE00B85563553448000B55800100147C0803A683E1000C3821BB +S31AFE00B86A00104E8000209421FFE07C0802A69381001093A100AF +S31AFE00B87F1493C1001893E1001C90010024380000003D40FE0137 +S31AFE00B89490010008394A554038A0000138C0000038E0000039C8 +S31AFE00B8A90100083920000148001AD92C0300003BC000004082FC +S31AFE00B8BE00143C60FE013863554848000AE548000084806100A6 +S31AFE00B8D3082C0300004182000C48000B8D7C7E1B783D6000004C +S31AFE00B8E83D200000392940183BEB3F787C1F4800418200587DD8 +S31AFE00B8FD3C4B783FA0FE0180610008380000012C030000418241 +S31AFE00B9120018809F00007FC5F37848000C99212300007C091967 +S31AFE00B927142C00000041820018809F000480BF000080DF000823 +S31AFE00B93C387D555C48000A6D3BFF00107C1FE0004082FFB8800F +S31AFE00B9510100247C0803A68381001083A1001483C1001883E17F +S31AFE00B966001C382100204E8000209421FFA87C0802A6938100A9 +S31AFE00B97B4893A1004C93C1005093E100549001005C7C7D1B7806 +S31AFE00B9907C9C23783D20FE013929556C38610008388000623879 +S31AFE00B9A5A0000138C0000038E100383901003C480019B93D20B2 +S31AFE00B9BAFE013929557C386100203880006C38A0000138C00094 +S31AFE00B9CF0038E1004039010044480019953D40FE017FA3EB7891 +S31AFE00B9E47F84E378394A531038A0000138C1000838E0000239D9 +S31AFE00B9F900000039200000480019892C0300004182004080013F +S31AFE00BA0E003C2C000000408200143C60FE013863558448000981 +S31AFE00BA238D48000024800100442C0000004082000C38000020FA +S31AFE00BA38900100408061003880810040480014BD8001005C7C58 +S31AFE00BA4D0803A68381004883A1004C83C1005083E100543821CE +S31AFE00BA6200584E8000209421FFB87C0802A69381003893A1006D +S31AFE00BA773C93C1004093E100449001004C3D2000008009441413 +S31AFE00BA8C7C7D1B787C9C23783D20FE01900100283929559C38C2 +S31AFE00BAA16100083880007738A0000138C0000038E100203901B0 +S31AFE00BAB60024480018B53D40FE017FA3EB787F84E378394A5507 +S31AFE00BACBAC38A0000138C1000838E00001390100283920000008 +S31AFE00BAE0480018A92C030000418200F8800100242C0000004148 +S31AFE00BAF58200343C60FE018081002880A10020386355C0480085 +S31AFE00BB0A08A580A10020386100301CA503E83880000848000FA8 +S31AFE00BB1F112C03FFFE418200BC814100287D6000A67D605B7834 +S31AFE00BB3439200000512004207C00012439200000380000807CDC +S31AFE00BB490903A6612010003D600E007C0004AC7D398BA67D78ED +S31AFE00BB5E8BA67C198BA67D788BA6392900104200FFE03C0004DE +S31AFE00BB73004C00012C7C108BA64C00012C3D6004007C0004AC3D +S31AFE00BB887D788BA639200000380000807C0903A6612010003D71 +S31AFE00BB9D600E007C0004AC7D398BA67D788BA67C198BA67D782D +S31AFE00BBB28BA6392900104200FFE03C000C004C00012C7C108BDE +S31AFE00BBC7A64C00012C3D600C007C0004AC7D788BA67D4803A6DD +S31AFE00BBDC4E8000218001004C7C0803A68381003883A1003C8348 +S31AFE00BBF1C1004083E10044382100484E8000209421FFE87C08E3 +S31AFE00BC0602A693A1000C93C1001093E100149001001C3C60FE0A +S31AFE00BC1B01386356044800078D3FA000003BBD3200813D00482F +S31AFE00BC303C60000360630D407D2803A64E8000213C60FE01383C +S31AFE00BC4563561448000765801D0048386000006063C3507C088E +S31AFE00BC5A03A64E8000213C60FE01386356184800074580010080 +S31AFE00BC6F1C7C0803A683A1000C83C1001083E100143821001806 +S31AFE00BC844E8000204E800020380000007C0020007C6A1B78403E +S31AFE00BC9980003C7C8903A63D2000007C03037839093790892A15 +S31AFE00BCAE00005460C23E7C004A787C0002147D68022E546944E3 +S31AFE00BCC32E7D235A78394A00014200FFE07C601B787C030378BA +S31AFE00BCD84E800020380000007C0020007C6A1B7839600000403F +S31AFE00BCED8000383D2000007C030378390939907C0A58AE396BF4 +S31AFE00BD0200017C600278540015BA7D28002E7C0B20005460C2BE +S31AFE00BD173E7D2302784180FFE07C601B787C0303784E800020C4 +S31AFE00BD2C9421FFA87C631B79394100087D4753783900000040A5 +S31AFE00BD41820014380000309801000839410009480000247C03DC +S31AFE00BD562B967D2029D67D2918507D6648AE7C030379996A0092 +S31AFE00BD6B00394A00014082FFE47C0A3800418200287D034378B2 +S31AFE00BD807CE93B788C0AFFFF386300017C0A48009804000038C0 +S31AFE00BD958400014082FFEC7C681B7838000000980400007D0398 +S31AFE00BDAA4378382100584E8000209421FF987C0802A67D8000B1 +S31AFE00BDBF2692410030926100349281003892A1003C92C10040CE +S31AFE00BDD492E10044930100489321004C934100509361005493C4 +S31AFE00BDE981005893A1005C93C1006093E100649001006C91813D +S31AFE00BDFE002C7C9923788BB900003AE100082C1D00007EF2BB75 +S31AFE00BE13787C7B1B787CB82B783BC000003AA000003B390001F3 +S31AFE00BE28418204882C1D0025408204448BB900003B3900012C55 +S31AFE00BE3D1D002D3AC000003BE00000408200108BB900003B3903 +S31AFE00BE5200013AC000012C1D0030408200148BB900003B80008D +S31AFE00BE67013B390001480000083B800000381DFFD028000009EC +S31AFE00BE7C4181003C7FA3EB787F24CB787FE9FB781D29000A39E0 +S31AFE00BE9129FFD07D291A1488640000388400013803FFD02800F1 +S31AFE00BEA600094081FFE47D3F4B787C9923787C7D1B782C1D00D2 +S31AFE00BEBB2E4082003C8BB900003B390001381DFFD02800000934 +S31AFE00BED03B9C0001418100247F24CB78886400003884000138D4 +S31AFE00BEE503FFD0280000094081FFF07C7D1B787C9923782C1D0C +S31AFE00BEFA006C3A8000004082000C8BB900003B390001381DFF2E +S31AFE00BF0FA8280000203A790001418101F83D60FE01396B5680A4 +S31AFE00BF245400103A7D4B002E3D20FE01392956807D4A4A147D3A +S31AFE00BF394903A64E800420386000307F6803A63B8000013BE0DC +S31AFE00BF4E00084E800021386000787F6803A64E80002189780053 +S31AFE00BF63005569063E38090001280000084181001C80180008D3 +S31AFE00BF785529103A396B00017C604A1499780000480000302858 +S31AFE00BF8D0900074181001C807800043800000839230004981861 +S31AFE00BFA20000913800044800001080780004380300049018007E +S31AFE00BFB7042C1D00648063000041820028418100102C1D00587F +S31AFE00BFCC4182004C480000602C1D0070418200342C1D007841F3 +S31AFE00BFE182002C4800004C2C0300004080000C3A80002D7C6344 +S31AFE00BFF600D03CC0FE0138C656483881000838A0000A480000E0 +S31AFE00C00B203CC0FE0138C656544800000C3CC0FE0138C656684E +S31AFE00C0203881000838A000104BFFFD057C751B787E5793784866 +S31AFE00C0350000EC897800005569063E38090001280000084181CF +S31AFE00C04A001C801800085529103A396B00017C604A1499780069 +S31AFE00C05F0048000030280900074181001C8078000438000008FE +S31AFE00C0743923000498180000913800044800001080780004384A +S31AFE00C0890300049018000482E300007EE3BB78480003D17C75E5 +S31AFE00C09E1B7848000080897800005569063E38090001280000C1 +S31AFE00C0B3084181001C801800085529103A396B00017D404A1466 +S31AFE00C0C89978000048000030280900074181001C8158000438AB +S31AFE00C0DD000008392A000498180000913800044800001081582D +S31AFE00C0F20004380A000490180004886A00037F6803A63BDE00A1 +S31AFE00C107014E800021480001943860003F7F6803A63BDE0001D1 +S31AFE00C11C4E8000217F55F8503134FFFF7D294910381AFFFF7CD1 +S31AFE00C1310048782F9C00007F4948387D3A03782C140000419ED1 +S31AFE00C14600243BA00030418200207E83A3787F6803A63BDE0009 +S31AFE00C15B013A8000004E800021480000083BA000202C14000096 +S31AFE00C1702E1600003AD5FFFF7F8000264092003C7F40D3782CFC +S31AFE00C1850000003B5AFFFF4081002C7F5FD3787FA3EB787F688C +S31AFE00C19A03A63BDE00014E8000217FE0FB782C0000003BFFFFA3 +S31AFE00C1AFFF4181FFE47FFAFB787F880120418200147E83A378CC +S31AFE00C1C47F6803A63BDE00014E8000217EA0AB782C0000007EDE +S31AFE00C1D9D5B3784081005C7FDFF3787EBDAB787EFCBB788BDCF5 +S31AFE00C1EE00003B9C00012C1E000A408200143860000D7F6803A7 +S31AFE00C203A63BFF00014E8000217FC3F3787F6803A63BFF0001DA +S31AFE00C2184E8000217FA0EB782C0000003BBDFFFF4181FFC47F76 +S31AFE00C22D97E3787FB5EB787FFEFB78419200687F40D3782C000E +S31AFE00C24200003B5AFFFF408100587F5FD378386000207F68036C +S31AFE00C257A63BDE00014E8000217FE0FB782C0000003BFFFFFFE9 +S31AFE00C26C4181FFE4480000302C1D000A408200143860000D7F4F +S31AFE00C2816803A63BDE00014E8000217FA3EB787F6803A63BDE5C +S31AFE00C29600013A7900014E8000218BB900007E799B782C1D0054 +S31AFE00C2AB004082FB807FC3F3788001006C8181002C7C0803A648 +S31AFE00C2C082410030826100348281003882A1003C82C1004082BC +S31AFE00C2D5E10044830100488321004C834100508361005483811F +S31AFE00C2EA005883A1005C83C1006083E100647D80812038210000 +S31AFE00C2FF684E8000203D2000008169442438000000986B0000E6 +S31AFE00C314396B000191694424980B00004E8000209421FF707CD8 +S31AFE00C3290802A693A1008493C1008893E1008C900100943D60F5 +S31AFE00C33E000090A10010906B442438A100083BA10098380000B5 +S31AFE00C35302396000003C60FE0190A100789081000C90C1001470 +S31AFE00C36890E100189101001C912100209141002498010070991B +S31AFE00C37D61007193A100743863C30438A100704BFFFA29800194 +S31AFE00C39200947C0803A683A1008483C1008883E1008C38210014 +S31AFE00C3A7904E8000209421FF707C0802A693A1008493C100881B +S31AFE00C3BC93E1008C9001009490A100109081000C7C641B7890E2 +S31AFE00C3D161000838A100083BA1009838000001396000003C6027 +S31AFE00C3E6FE0190A1007890C1001490E100189101001C91210048 +S31AFE00C3FB2091410024980100709961007193A100743863C67026 +S31AFE00C41038A100704BFFF9A1800100947C0803A683A100848379 +S31AFE00C425C1008883E1008C382100904E8000209421FFF87C08BE +S31AFE00C43A02A69001000C7C601B787C8523783C60FE013863C69D +S31AFE00C44F707C0403784BFFF9618001000C7C0803A638210008AA +S31AFE00C4644E8000207C631B793920000041820028880300003857 +S31AFE00C4796300012C0000004182001888030000392900012C0025 +S31AFE00C48E0000386300014082FFF07D234B784E8000207C691BF7 +S31AFE00C4A378480000102C030000386000004D8200208869000009 +S31AFE00C4B888040000388400017C030000392900014182FFE07C22 +S31AFE00C4CD6018504E800020880400007C691B78480000109803A9 +S31AFE00C4E2000088040000386300012C000000388400014082FF6F +S31AFE00C4F7EC38000000980300007D234B784E8000207C6B1B78A2 +S31AFE00C50C480000102C030000386000004D820020886B000039DC +S31AFE00C5216B00013803FFBF280000194181000C380300205403DB +S31AFE00C536063E89240000388400013809FFBF280000194181003C +S31AFE00C54B0C380900205409063E7D204B787C0300004182FFB474 +S31AFE00C5607C6018504E8000207CA02B797C691B787C0903A640EA +S31AFE00C575820014386000004E8000207C6018504E80002088696E +S31AFE00C58A000088040000388400017C030000392900014082FFAC +S31AFE00C59FE42C030000418200084200FFE0386000004E800020FE +S31AFE00C5B47CA02B797C6B1B787C0903A640820018386000004E46 +S31AFE00C5C98000207C6018504E80002042400050886B0000396B1E +S31AFE00C5DE00013803FFBF280000194181000C3803002054030683 +S31AFE00C5F33E89240000388400013809FFBF280000194181000C79 +S31AFE00C608380900205409063E7D204B787C0300004082FFB42C97 +S31AFE00C61D0300004082FFB4386000004E8000204800002C8923E6 +S31AFE00C632000088040000388400017C09000038630001418200C2 +S31AFE00C647148803FFFF8864FFFF7C6300504E8000207CA02B7877 +S31AFE00C65C2C00000038A5FFFF4082FFCC386000004E8000209417 +S31AFE00C67121FFE87C0802A69381000893A1000C93C1001093E148 +S31AFE00C68600149001001C3D200000800943F47C7D1B782C000005 +S31AFE00C69B00408200743D20000039293200800900343860FFFF0C +S31AFE00C6B07C0803A67D3E4B783BE000004E8000217C7C1B7881B0 +S31AFE00C6C53E00347FE3FB787D2803A64E800021813E00147FA4E2 +S31AFE00C6DAEB78806900008009000C7C0803A64E80002137FF0014 +S31AFE00C6EF014081FFD43D20000039293200800900347F83E37892 +S31AFE00C7047C0803A64E800021480000483D2000003929320081FE +S31AFE00C7196900142C0B00004182001C806B0000800B000C7FA4CF +S31AFE00C72EEB787C0803A64E8000214800001C816900187FA4EBFF +S31AFE00C74378806B0000800B000C7C0803A64E8000218001001C2A +S31AFE00C7587C0803A68381000883A1000C83C1001083E10014385B +S31AFE00C76D2100184E8000209421FFF07C0802A693E1000C9001AB +S31AFE00C78200143D20000039293200816900147C7F1B782C0B00D6 +S31AFE00C797004082000881690018806B0000800B00107C0803A60A +S31AFE00C7AC4E800021987F0000800100147C0803A683E1000C3804 +S31AFE00C7C12100104E8000209421FFE07C0802A69361000C93816C +S31AFE00C7D6001093A1001493C1001893E1001C900100243D2000E4 +S31AFE00C7EB00800943F47C7D1B782C000000408200883D20000016 +S31AFE00C80039293200800900343860FFFF7C0803A67D3C4B783B54 +S31AFE00C815E000004E8000217C7B1B78813C00347FE3FB787D2846 +S31AFE00C82A03A64E800021817C00147FA4EB78806B0000800B0050 +S31AFE00C83F1C7C0803A64E8000217C7E1B7941820010881D0000A2 +S31AFE00C8542C0000004082004C37FF00014081FFC03D2000003944 +S31AFE00C869293200800900347F63DB787C0803A64E800021480005 +S31AFE00C87E00643D20000039293200816900142C0B000041820054 +S31AFE00C89334806B0000800B001C7FA4EB7848000034817C003097 +S31AFE00C8A87FE3FB787D6803A63D20000038000001900943F44E60 +S31AFE00C8BD80002148000020816900187FA4EB78806B0000800B5B +S31AFE00C8D2001C7C0803A64E8000217C7E1B787FC3F3788001005A +S31AFE00C8E7247C0803A68361000C8381001083A1001483C100184F +S31AFE00C8FC83E1001C382100204E8000209421FFE87C0802A693E1 +S31AFE00C91181000893A1000C93C1001093E100149001001C3D204E +S31AFE00C9260000800943F47C7D1B782C000000408200803D2000E1 +S31AFE00C93B0039293200800900343860FFFF7C0803A67D3E4B7851 +S31AFE00C9503BE000004E8000217C7C1B78813E00347FE3FB787DF4 +S31AFE00C9652803A64E800021813E00142C0900004182001C806929 +S31AFE00C97A000080090014388000077FA5EB787C0803A64E8000C6 +S31AFE00C98F2137FF00014081FFC83D200000392932008009003401 +S31AFE00C9A47F83E3787C0803A64E800021480000303D20000039F3 +S31AFE00C9B9293200812900142C0900004182001C806900008009C6 +S31AFE00C9CE0014388000077FA5EB787C0803A64E8000213D20007D +S31AFE00C9E30039293200812900182C0900004182001C80690000E8 +S31AFE00C9F8800900147FA5EB78388000077C0803A64E80002180A7 +S31AFE00CA0D01001C7C0803A68381000883A1000C83C1001083E1D2 +S31AFE00CA220014382100184E8000209421FFD07C0802A693010044 +S31AFE00CA371093210014934100189361001C9381002093A1002486 +S31AFE00CA4C93C1002893E1002C900100347C7D1B787CBE2B787F08 +S31AFE00CA61BFEB783B6000003F2000003F8000003B4000008139AC +S31AFE00CA7644182C09000041820020896900002C0B000041820047 +S31AFE00CA8B14380900019961000890194418480000647FC0FE70DC +S31AFE00CAA07C1E005054000FFE7FE9EA78216900007D2B49147C5D +S31AFE00CAB50B48394182003C7FC3F3784BFFFE49480000083BDE36 +S31AFE00CACAFFCE2C1E000040810014386100084BFFFCF17C7B1B7D +S31AFE00CADF794182FFE82C1B0000408200143860FFFF480001809F +S31AFE00CAF4386100084BFFFC7D880100089B5F00007C03037854EC +S31AFE00CB0900063E2C00000D4182007C418100282C000008418276 +S31AFE00CB1E00D4418100102C00000341820038480001142C0000A5 +S31AFE00CB330A41820058480001082C00002B418200E8418100109F +S31AFE00CB482C000024418200DC480000F02C00007F41820098485F +S31AFE00CB5D0000E47C1FE800408200183C60FE01386357084BFF9F +S31AFE00CB72F83D3860FFFE480000F8987F00003BFF00013F00000F +S31AFE00CB8700480000DC892100083F0000002C09000A408200106F +S31AFE00CB9C88183D902C00000D418200182C09000D40820018885B +S31AFE00CBB1183D902C00000A4082000C9B410008480000A4801C16 +S31AFE00CBC644102C000000418200143860000D4BFFFA9D386000E1 +S31AFE00CBDB0A4BFFFA95880100083860000198183D9048000084EB +S31AFE00CBF07C1FE8003F0000004182006C801C44102C00000041DE +S31AFE00CC0582001C386000084BFFFA65386000204BFFFA5D38603E +S31AFE00CC1A00084BFFFA553BFFFFFF480000407C1FE8004082005B +S31AFE00CC2F145463063E4BFFBCE93860000048000034801C4410EA +S31AFE00CC442C0000004182000C886100084BFFFA21880100083FB6 +S31AFE00CC59000000981F00003BFF00018801000898183D904BFF78 +S31AFE00CC6EFE08800100347C0803A68301001083210014834100B5 +S31AFE00CC83188361001C8381002083A1002483C1002883E1002C18 +S31AFE00CC98382100304E8000209421FFB87C0802A69221000C9223 +S31AFE00CCAD410010926100149281001892A1001C92C1002092E1B6 +S31AFE00CCC20024930100289321002C934100309361003493810059 +S31AFE00CCD73893A1003C93C1004093E100449001004C7CBB2B7899 +S31AFE00CCEC7C9C23787D3BE0107D2949107D294BB87C1CD8507CF0 +S31AFE00CD010048787F6948387D3B03797C7E1B787CD53378408173 +S31AFE00CD1601643E20FE012C150000418200183871570C7C95E029 +S31AFE00CD2B507FC803A64E800021480000143871570C7F84E378FA +S31AFE00CD407FC803A64E8000217F9DE3787F7CDB783BE000003EDD +S31AFE00CD5560FE013E80FE013E40FE013B3CFFF03ADD00103EE081 +S31AFE00CD6AFE013F40FE013F00FE017C1FE000408000183877579C +S31AFE00CD7F187C9DF8AE7FC803A64E800021480000103878572066 +S31AFE00CD947FC803A64E8000217FFBFE707C1BF8507C000E707C6A +S31AFE00CDA90002147C00F8502C00000140820010387A57247FC824 +S31AFE00CDBE03A64E80002157601F7E7C1F02147C001E7054001849 +S31AFE00CDD3387C00F8502C00000740820010387A57247FC803A629 +S31AFE00CDE84E8000213BFF00012C1F000F4081FF80387357287FC5 +S31AFE00CDFDC803A67F9BE3787FBCEB783BE000004E8000217E9D74 +S31AFE00CE12A3787C1FD8004080002C7C9CF8AE3804FFE020000094 +S31AFE00CE275E7C0001107C0003B87C0900F87C8000387129002E57 +S31AFE00CE3C7C044B784800000838800020387D572C7FC803A63B0F +S31AFE00CE51FF00014E8000212C1F000F4081FFB8387257307FC88F +S31AFE00CE6603A67EDCB3784E8000217F3BCB794181FEA8800100AF +S31AFE00CE7B4C7C0803A68221000C82410010826100148281001891 +S31AFE00CE9082A1001C82C1002082E10024830100288321002C8361 +S31AFE00CEA5410030836100348381003883A1003C83C1004083E167 +S31AFE00CEBA0044382100484E8000209421FFF87C0802A690010023 +S31AFE00CECF0C7C601B787C8923787CA62B783C60FE013863C3ACC5 +S31AFE00CEE47C0403787D254B784BFFFDB58001000C7C0803A638E7 +S31AFE00CEF92100084E8000209421FFF87C0802A69001000C38A0BC +S31AFE00CF0E00004BFFFFB58001000C7C0803A6382100084E800023 +S31AFE00CF23209421FF607C0802A69361008C9381009093A10094A9 +S31AFE00CF3893C1009893E1009C900100A49081000C388100A83FF2 +S31AFE00CF4DA000003B800000380000013961000890810074837D10 +S31AFE00CF6244189061000890A1001090C1001490E10018910100A0 +S31AFE00CF771C912100209141002498010070916100789B810071BD +S31AFE00CF8C388100704BFFF4A53C60FE01386357344BFFF41193DD +S31AFE00CFA19D4418386100803880000838A000004BFFFA7D886123 +S31AFE00CFB60080937D441868600059212000007C090114686300AF +S31AFE00CFCB79212300007C6919147C630378800100A47C0803A6D2 +S31AFE00CFE08361008C8381009083A1009483C1009883E1009C3868 +S31AFE00CFF52100A04E8000209421FFE87C0802A69381000893A15C +S31AFE00D00A000C93C1001093E100149001001C7C9C23787CBD2B51 +S31AFE00D01F787C7F1B783BC000004800011057C0103A7FFD012E92 +S31AFE00D034881F00003BDE0001480000E0881F00002C00002240C5 +S31AFE00D0498200CC57C0103A7D60EA14812BFFFC7C09F80040825E +S31AFE00D05E000C3BFF000193EBFFFC897F00007FEAFB7855690651 +S31AFE00D0733E692000227C0000D07D2900D055290FFE54000FFE0D +S31AFE00D0887D280039418200587FE3FB786960005C7C0000D07CD4 +S31AFE00D09D00FE70396300017D6B00787C6000387C035B788923FD +S31AFE00D0B20000992A00008D630001394A00015569063E692000A2 +S31AFE00D0C7227C0000D07D2900D055290FFE54000FFE7D280039A2 +S31AFE00D0DC4082FFB87C7F1B78881F00002C000000408200143C4F +S31AFE00D0F160FE013863574C4BFFF2B54800001C7C0AF8004182F3 +S31AFE00D106002838000000980A00004800001C3BFF0001881F00C8 +S31AFE00D11B002C0000004182004C2C0000204082FF183800000063 +S31AFE00D130981F00003BFF0001881F00002C0000004182002C2C06 +S31AFE00D145000020408200187FE3FB788C0300012C000020418263 +S31AFE00D15AFFF87C7F1B78881F00002C0000004082FEC43C600044 +S31AFE00D16F003C80000080BD000093DC000038633F7838844018D9 +S31AFE00D184480000258001001C7C0803A68381000883A1000C839C +S31AFE00D199C1001083E10014382100184E8000209421FFD87C08C5 +S31AFE00D1AE02A6930100089321000C934100109361001493810064 +S31AFE00D1C31893A1001C93C1002093E100249001002C7C7F1B7894 +S31AFE00D1D87CBC2B787C9A23787F83E3784BFFF2857FFDFB787C29 +S31AFE00D1ED1DD0007C7B1B78418200C0809D00007F83E3787F65D1 +S31AFE00D202DB784BFFF3B12C0300004082009C807D00004BFFF20C +S31AFE00D217557C03D800408100847C1FD0003BC000014182006083 +S31AFE00D22C3F00FE013F20FE017C1DF80041820044809F00007F17 +S31AFE00D24183E3787F65DB784BFFF36D2C0300004082002C2C1EAE +S31AFE00D25600004182001880BD0000387857607F84E3784BFFF1A7 +S31AFE00D26B453BC00000809F0000387957884BFFF1353BFF001001 +S31AFE00D2807C1FD0004082FFB02C1E0000408200143C60FE0138C6 +S31AFE00D29563578C4BFFF115480000187FA3EB78480000143BBDB1 +S31AFE00D2AA00107C1DD0004082FF48386000008001002C7C08031D +S31AFE00D2BFA6830100088321000C8341001083610014838100188C +S31AFE00D2D483A1001C83C1002083E10024382100284E8000209412 +S31AFE00D2E921FFE87C0802A69381000893A1000C93C1001093E1C4 +S31AFE00D2FE00149001001C7C601B783C60FE017C9D23787C1F03FA +S31AFE00D313787CBE2B78386357904BFFF0917C1FE80041820028F1 +S31AFE00D3283F80FE0180BF000080DF0008387C57987FC4F3784BEC +S31AFE00D33DFFF0713BFF00107C1FE8004082FFE48001001C7C08E4 +S31AFE00D35203A68381000883A1000C83C1001083E10014382100B8 +S31AFE00D367184E800020912300149883000090A3000490C3000832 +S31AFE00D37C90E3000C910300104E8000209421FFB07C0802A69166 +S31AFE00D391C1000891E1000C9201001092210014924100189261F4 +S31AFE00D3A6001C9281002092A1002492C1002892E1002C9301001A +S31AFE00D3BB3093210034934100389361003C9381004093A1004439 +S31AFE00D3D093C1004893E1004C900100547D344B787D1643783011 +S31AFE00D3E516FFFF7D20B1106A800001216000007C0B01147D2B0D +S31AFE00D3FA00397C701B787C9823787CD133787CF53B787D535374 +S31AFE00D40F783B4000013A40000041820008925600007C12A800AD +S31AFE00D4247E3F8B78408000507EA903A67FEBFB783900000081B8 +S31AFE00D4392B00102C0900004182000891090000814B00042C0AFF +S31AFE00D44E000040820020800B00082C0000004182000C2C000029 +S31AFE00D463024082000C812B000C91490000396B00184200FFC48D +S31AFE00D4787CBD2B787C1D8000408002043DC0FE013DE0FE015771 +S31AFE00D48DBE103A7C9EC02E880400002C00002D4082014C3960E9 +S31AFE00D4A200007C0BA8008AE400017E3F8B78392000003B7D0002 +S31AFE00D4B701408001147F9EC2143B200001881F00007C170000FD +S31AFE00D4CC408200F0813F00102C09000041820020800900002CF8 +S31AFE00D4E100000041820014809F0014386E57A44BFFEEBD3B4017 +S31AFE00D4F60000801F00042C00000041820080813C0000880900BD +S31AFE00D50B023BC900032C00003D4182000C83DC00043BBD00016A +S31AFE00D520801F00082C000000418200102C0000014182003C48D8 +S31AFE00D535000040809F000C7FC3F37838A0000038C000004800AD +S31AFE00D54A01992C0300004082002480BF00147FC4F378386F571A +S31AFE00D55FC44BFFEE4D3B4000004800000C813F000C93C9000073 +S31AFE00D574813F00103B7D000148000034801F00082C0000004185 +S31AFE00D5898200102C0000024182001C48000020817F000C812BCA +S31AFE00D59E000039290001912B00004800000C813F000C93290079 +S31AFE00D5B3003960000148000014392900017C09A8003BFF001887 +S31AFE00D5C84180FEFC2C0B0000408200A83C60FE01386357EC7EF7 +S31AFE00D5DDE4BB784BFFEDCD480000902C160000418200782C1287 +S31AFE00D5F2000041820014386E57A47E649B784BFFEDAD3B400054 +S31AFE00D607002C140000418200102C1400014182003C480000402F +S31AFE00D61C7C7EC02E7EC4B37838A0000038C00000480000B52CA7 +S31AFE00D631030000408200247C9EC02E386F57C47E659B784BFFED +S31AFE00D646ED693B4000004800000C7C1EC02E901600003B7D00C0 +S31AFE00D65B013A400001480000183C60FE013863580C3B7D000187 +S31AFE00D6704BFFED3D3B4000007F7DDB787C1D80004180FE0C7F00 +S31AFE00D68543D378800100547C0803A681C1000881E1000C8201C1 +S31AFE00D69A001082210014824100188261001C8281002082A10090 +S31AFE00D6AF2482C1002882E1002C830100308321003483410038BC +S31AFE00D6C48361003C8381004083A1004483C1004883E1004C380D +S31AFE00D6D92100504E8000208803000038E000012C0000203900B0 +S31AFE00D6EE000A39800000408200108C0300012C0000204182FFF0 +S31AFE00D703F8880300002C0000004182012C2C0700004182003840 +S31AFE00D718880300002C0000304082002C892300013809FFBF284F +S31AFE00D72D0000194181000C380900205409063E2C09007840828B +S31AFE00D742000C39000010386300028943000038E00000392AFF96 +S31AFE00D757D0380AFFBF21290009392000007D2949142000000515 +S31AFE00D76C380000007C0001147D2B037938630001392000004082 +S31AFE00D781820010380AFF9F2800000541810008392000012C0997 +S31AFE00D796000041820068392AFFD05520063E2800000941810071 +S31AFE00D7AB0C7D2B4B7848000030380AFF9F280000054181000C9B +S31AFE00D7C0396AFFA94800001C380AFFBF200000057C0001107C73 +S31AFE00D7D50003B8392AFFC97C0B48387C0B40004080001C880320 +S31AFE00D7EA00007D2C41D62C0000007D895A144082FF18480000A5 +S31AFE00D7FF3C2C0600004182002C88060000480000088C06000143 +S31AFE00D8142C000000418200187C0A00004082FFF0880600002C03 +S31AFE00D8290000004082000C386000004E8000202C05000091844C +S31AFE00D83E00004182000890650000386000014E800020880300FF +S31AFE00D853002C000020408200108C0300012C0000204182FFF808 +S31AFE00D8688863000068690074200900007D204914686000542117 +S31AFE00D87D4000007C0A01147D2B037941820010380000019004F3 +S31AFE00D89200004800003068690046200900007D20491468600003 +S31AFE00D8A766214000007C0A01147C0A4B794082000C3860000056 +S31AFE00D8BC4E80002091640000386000014E8000209421FFF87CC1 +S31AFE00D8D10802A69001000C3D2000003929320080090048386097 +S31AFE00D8E603E87C0803A64E8000213D20000080693D9438630070 +S31AFE00D8FB0190693D948001000C7C0803A6382100084E80002040 +S31AFE00D9103D20000080693D944E8000209421FFE87C0802A6939E +S31AFE00D925E100149001001C3FE00001813FA1C438810008806958 +S31AFE00D93A00008009001C7C0803A64E8000212C0300004082FF23 +S31AFE00D94FE48001001C7C0803A683E10014382100184E8000203A +S31AFE00D9649421FFE07C0802A69381001093A1001493C10018937F +S31AFE00D979E1001C900100243F8000013BFCA1C43BC000003FA0AD +S31AFE00D98E0001813DA1C438810008806900008009001C7C080386 +S31AFE00D9A3A64E8000212C030000418201F4880100082C00000230 +S31AFE00D9B841820038418100102C0000014182001C480000582CB1 +S31AFE00D9CD000004418200482C0000184182002C48000044813FB3 +S31AFE00D9E2041C39290001913F041C48000010813F04203929001B +S31AFE00D9F701913F04203BC0000148000020813F04243860FFFB44 +S31AFE00DA0C39290001913F0424480001E83860FFFC480001E02C8D +S31AFE00DA211E00004182FF6C3D2000018169A1C43BC9A1C4806B9F +S31AFE00DA360000800B001C389E04087C0803A64E8000212C030003 +S31AFE00DA4B0041820154813CA1C4389E0409806900008009001C17 +S31AFE00DA607C0803A64E8000212C03000041820134880100083B9E +S31AFE00DA75E00000680000017C0000D07C00FE707C0900F855291E +S31AFE00DA8A06305400056A7C004B787C1F0000393E0004901E0483 +S31AFE00DA9F10913E0404408000487FDCF3787D3D4B783FC000013C +S31AFE00DAB4813EA1C438810008806900008009001C7C0803A64E6B +S31AFE00DAC98000212C030000418200D0880100087C1DF9AE813C53 +S31AFE00DADE04103BFF00017C1F48004180FFCC3FC00001813EA111 +S31AFE00DAF3C43BFEA1C4806900008009001C389F040A7C0803A618 +S31AFE00DB084E8000212C03000041820090801F04282C000000415B +S31AFE00DB1D820024813EA1C4389F040B806900008009001C7C082D +S31AFE00DB3203A64E8000212C030000418200643D2000013BC9A1E9 +S31AFE00DB47C4881E0408893E04097C004A782C0000FF418200103F +S31AFE00DB5C4BFFFDC13860FFFA48000098801E04282C0000004100 +S31AFE00DB71820038809E0410387E00044BFFE111881E040A893E3E +S31AFE00DB86040B5400402E7C004B787C030000418200643860FF39 +S31AFE00DB9BF9480000603860FFFD48000058801E04103940000071 +S31AFE00DBB07C0A00003BE00000408000287FEBFB78387E00047CC0 +S31AFE00DBC50803787C0358AE396B00017C0B40007C0A0214540AD9 +S31AFE00DBDA043E4180FFEC3D2000018969A5CE5540063E7C0B0021 +S31AFE00DBEF003860FFF94082000838600000800100247C0803A659 +S31AFE00DC048381001083A1001483C1001883E1001C382100204E18 +S31AFE00DC198000209421FFC87C0802A692A1000C92C1001092E195 +S31AFE00DC2E0014930100189321001C93410020936100249381002D +S31AFE00DC432893A1002C93C1003093E100349001003C7C98237898 +S31AFE00DC582C1800037CB62B783B20000A408200103800FFFE909B +S31AFE00DC6D160000480001743F8000003B9C3200813C003438607A +S31AFE00DC82FFFF7D2803A63F6000013BBBA1C47FBFEB784E8000D3 +S31AFE00DC9721813C00347C7A1B787D2803A63BC000133EA000009F +S31AFE00DCAC3EE000014E800021801C0014813C00347F43D3787D26 +S31AFE00DCC12803A6901BA1C43F4000014E800021813BA1C4388021 +S31AFE00DCD60007806900008009001438A007D07C0803A64E8000FE +S31AFE00DCEB213920000038000001901D0428931D0414913D0424D6 +S31AFE00DD00913D0410913D042C913D0418913D041C913D04204B15 +S31AFE00DD15FFFC517C7C1B79408200403BB7A1C4881D04082C00E7 +S31AFE00DD2A00004082001C8137A1C43880000680690000800900B5 +S31AFE00DD3F0C7C0803A64E80002138000001939D0410981D040C61 +S31AFE00DD5438600000480000902C1CFFFD408200683739FFFF4129 +S31AFE00DD6981000C38000000901F042839353200800900483C60F4 +S31AFE00DD7E00076063A1207C0803A64E800021809F0428813AA13E +S31AFE00DD93C43084FFFF7C8421107C8020F8700000437084001500 +S31AFE00DDA8806900007C8403788009000C7C0803A64E80002181CC +S31AFE00DDBD3F041839290001913F04182C1CFFFB418200147FC04B +S31AFE00DDD2F3782C0000003BDEFFFF4181FF38939600003860FFD1 +S31AFE00DDE7FF8001003C7C0803A682A1000C82C1001082E1001441 +S31AFE00DDFC830100188321001C8341002083610024838100288317 +S31AFE00DE11A1002C83C1003083E10034382100384E8000209421EB +S31AFE00DE26FFC87C0802A692A1000C92C1001092E1001493010033 +S31AFE00DE3B189321001C93410020936100249381002893A1002C3E +S31AFE00DE5093C1003093E100349001003C3D2000017C9A23783978 +S31AFE00DE6569A1C4812B042C7F40FE707C1A005054000FFE21095C +S31AFE00DE7A00007D2849147D2A00397C781B787CB52B783AC00058 +S31AFE00DE8F003EE00001418202187D795B78801904102C000000DC +S31AFE00DEA4408201903F8000013B7CA1C43BC000134BFFFAB17CB7 +S31AFE00DEB97F1B794082004C3D4000013BAAA1C4897D0408893D8F +S31AFE00DECE040C7C0B4800418201383809FFFF5400063E7C0B0002 +S31AFE00DEE30040820020812AA1C438800006806900008009000CF8 +S31AFE00DEF87C0803A64E800021480000E43BE0FFF82C1FFFFB4131 +S31AFE00DF0D8200E82C1FFFFC40820094813CA1C43880000680692C +S31AFE00DF2200008009000C3BBCA1C47C0803A64E800021801D0438 +S31AFE00DF37142C00000240820060809D04288137A1C43084FFFF55 +S31AFE00DF4C7C8421107C8020F87000004370840015806900007C56 +S31AFE00DF618403788009000C7C0803A64E800021813D04183929BB +S31AFE00DF760001913D04184BFFF9E98137A1C47C7F1B78806900E7 +S31AFE00DF8B008009000C388000067C0803A64E80002138000001D5 +S31AFE00DFA0901D042C48000050809B0428813CA1C43084FFFF7C5C +S31AFE00DFB58421107C8020F87000004370840015806900007C84E5 +S31AFE00DFCA03788009000C7C0803A64E800021813B0418392900D8 +S31AFE00DFDF01913B04187FC0F3782C0000003BDEFFFF4181FEC4CF +S31AFE00DFF42C1F00004080003C93F500003800FFFF90190410480A +S31AFE00E0090000A48137A1C438800006806900008009000C7C087D +S31AFE00E01E03A64E800021893D040C39290001993D040C4BFFFFE9 +S31AFE00E033C483B90410809904047F9AE8007F03C3784FFEEB8227 +S31AFE00E0487C000026540007FE7C0000D07F4900787FBD00387F45 +S31AFE00E05DBD4B787FA5EB784BFFD1797F5DD0508159042C7F404A +S31AFE00E072FE707C1A0050813904108179040454000FFE210A00E5 +S31AFE00E087007D4851147D4800397D6BEA147D3D48509139041042 +S31AFE00E09C917904047F18EA147ED6EA144082FDF47EC3B37880D3 +S31AFE00E0B101003C7C0803A682A1000C82C1001082E1001483016F +S31AFE00E0C600188321001C83410020836100248381002883A1002D +S31AFE00E0DB2C83C1003083E10034382100384E8000209421FFF8C9 +S31AFE00E0F07C0802A69001000C3D2000018009A5EC2C0000004169 +S31AFE00E1058200103D20FE01388958844800000C3D20FE01388905 +S31AFE00E11A58883D2000013929A1C43C60FE018109041880A90479 +S31AFE00E12F1C80C9042080E90424386358404BFFE2718001000C60 +S31AFE00E1447C0803A6382100084E80002038030008280000074193 +S31AFE00E1598100883D60FE01396B59385400103A7D4B002E3D20E2 +S31AFE00E16EFE01392959387D4A4A147D4903A64E8004203C60FE86 +S31AFE00E18301386358904E8000203C60FE01386358A44E800020F1 +S31AFE00E1983C60FE01386358C44E8000203C60FE01386358D04E82 +S31AFE00E1AD8000203C60FE01386358DC4E8000203C60FE0138632B +S31AFE00E1C258E84E8000203C60FE01386358F84E8000203C60FE08 +S31AFE00E1D7013863590C4E8000203C60FE01386359244E8000209F +S31AFE00E1EC9421FFF07C0802A693E1000C900100147C691B788825 +S31AFE00E2010900002C0000FF4082002C880900012C0000FF408263 +S31AFE00E2160020880900022C0000FF40820014880900033860000F +S31AFE00E22B012C0000FF418200643FE000007D234B78389F3D9859 +S31AFE00E24038A000044BFFE3E92C0300004082000C3860000148F5 +S31AFE00E255000040881F3D98389F3D982C0000004082002C8804A2 +S31AFE00E26A00012C00000040820020880400022C00000040820010 +S31AFE00E27F1488040003386000012C0000004182000838600000BB +S31AFE00E294800100147C0803A683E1000C382100104E8000209454 +S31AFE00E2A921FFD87C0802A693A1001C93C1002093E1002490014B +S31AFE00E2BE002C7C7E1B7883FE00047C9D2378387F00104BFFFF45 +S31AFE00E2D31D2C03000041820020A09F00007FE3FB785484D6BA87 +S31AFE00E2E838A00000480003752C030000418200107FC3F378488E +S31AFE00E2FD000341480000A8801F000C813D0000A17D00049001B8 +S31AFE00E31200089121000CB1610010A13F0000A01F00025523D61B +S31AFE00E327BA7C030050B01E000C881F00092C000006418200389D +S31AFE00E33C418100102C00000141820014480000582C00001141D4 +S31AFE00E3518200384800004C7C1F1A14901E00087FC3F378388180 +S31AFE00E3660008480005954800003C7C1F1A14901E00087FC3F37C +S31AFE00E37B783881000848000B99480000247C1F1A14901E000879 +S31AFE00E3907FC3F37838810008480038794800000C7FC3F37848C4 +S31AFE00E3A50002998001002C7C0803A683A1001C83C1002083E1E2 +S31AFE00E3BA0024382100284E8000209421FFE07C0802A693610003 +S31AFE00E3CF0C9381001093A1001493C1001893E1001C900100240C +S31AFE00E3E47C7C1B7883BC000480FC0008A13C000C7CFD38507D67 +S31AFE00E3F9293A14B13C000CA01D000054E9352E5400053E600047 +S31AFE00E40E40007000F0FF7C004B78B01D000039200000993D001B +S31AFE00E423013D000000A1284428A01C000CB13D0004B01D0002E4 +S31AFE00E43839690001B16844283940000038000040989D000998DC +S31AFE00E44D1D0008B15D000AB15D00063D20000080093D987CBB73 +S31AFE00E4622B78901D000C813B00007CE43B78913D00107FA3EB8B +S31AFE00E4777838A00000480001E5B07D000A7F83E378389B0004A3 +S31AFE00E48C38A00800480003CD800100247C0803A68361000C833A +S31AFE00E4A181001083A1001483C1001883E1001C382100204E8076 +S31AFE00E4B600203D00000080083DA82C0000004C82002038000031 +S31AFE00E4CB0190083DA8380000047C0903A63C8000003D20000136 +S31AFE00E4E03D6000018144442C38A9A644390BA5F438C005EA3889 +S31AFE00E4F5E000007D272A147120000239690002914800007C00C0 +S31AFE00E50A002654001FFE7C0000D07D6B00787D2900387D295BD6 +S31AFE00E51F78912800107D0A4378B0C8000E390A001438E705EC73 +S31AFE00E5344200FFC49144442C4E8000209421FFE87C0802A6933B +S31AFE00E54981000893A1000C93C1001093E100149001001C3D20FA +S31AFE00E55E00013BE9A5F43BC000003F80FE017FFDFB7880DF00DF +S31AFE00E57310A0FF000EA11F000C813F00007FC4F3787FA5EB7811 +S31AFE00E588387C59584BFFDE213BDE00012C1E00033BFF00143BDC +S31AFE00E59DBD00144081FFD03D2000003C60FE018089442C3863F8 +S31AFE00E5B259844BFFDDF98001001C7C0803A68381000883A10059 +S31AFE00E5C70C83C1001083E10014382100184E8000203CA0000028 +S31AFE00E5DC8065442C2C0300004D8200203CE0000081473DA03DB5 +S31AFE00E5F120000080093DA4394A00017CC050503C800000816486 +S31AFE00E6063D9C8103001080030000392800149005442C7C0658B7 +S31AFE00E61B00912300089103000438000000B003000C91473DA0E6 +S31AFE00E6304C81002090C43D9C4E8000203D400000812A3DA03D87 +S31AFE00E645600000800B442C3929FFFF912A3DA0906B442C90036B +S31AFE00E65A00004E8000203484FFFE41800018A00300003484FFD1 +S31AFE00E66FFE7CA50214386300024080FFF02C04FFFF4082001011 +S31AFE00E684880300005400402E7CA5021454AB043E54A9843E38C1 +S31AFE00E6990000007CA95A146000FFFF7C0500004081000C3D25C7 +S31AFE00E6AEFFFF38A900017CA928F85523C63E5463402E55200612 +S31AFE00E6C33E7C031B784E800020A123000EA003000CA16300106B +S31AFE00E6D87C004A14A1430012892300097C005A147C005214A038 +S31AFE00E6ED6300027C004A147C601A144E8000209421FFC87C08DD +S31AFE00E70202A69321001C93410020936100249381002893A1000A +S31AFE00E7172C93C1003093E100349001003C3F2000003F400000E6 +S31AFE00E72C3F600000386005EA4BFFFEA57C7F1B79408200183C1C +S31AFE00E74160FE01386359D44BFFDC654BFFFDF548000000809F6A +S31AFE00E75600103861000838A005EA48001EF95460043E2C0000B1 +S31AFE00E76B00B07F000C418200B8A3A1001481393DB42C1D08008B +S31AFE00E7803929000191393DB4418200182C1D0806418200343BFE +S31AFE00E795C000003F80000148000048813A3DAC801F00103929A6 +S31AFE00E7AA0001913A3DAC901F00047FE3FB783881000E4BFFFA0E +S31AFE00E7BFED4BFFFF70813B3DB0801F001039290001913B3DB027 +S31AFE00E7D4901F00047FE3FB78480010454BFFFF50393CBDF457F1 +S31AFE00E7E9CB18387C09582E7C00E8004082001C392900047C09C4 +S31AFE00E7FE582E7FE3FB78388100087C0803A64E8000213BDE00B1 +S31AFE00E813012C1E00034081FFCC7FE3FB784BFFFE1D4BFFFF0C83 +S31AFE00E8287FE3FB784BFFFE118001003C7C0803A68321001C837C +S31AFE00E83D410020836100248381002883A1002C83C1003083E105 +S31AFE00E8520034382100384E8000209421FFE87C0802A6900100A1 +S31AFE00E8671C80040000A144000490010008390100083D200000D7 +S31AFE00E87CB148000439694454A14B0004B0A1001480094454A036 +S31AFE00E891A3000C808300109001000EB14100127D034378480086 +S31AFE00E8A61B4D3D600000812B3DB839290001912B3DB88001001E +S31AFE00E8BB1C7C0803A6382100184E8000203D2000008009443042 +S31AFE00E8D02C0000004082001090694430386000004E8000203806 +S31AFE00E8E560FFFF4E8000203D20000038000000900944304E805E +S31AFE00E8FA00209421FFF07C0802A693C1000893E1000C900100A8 +S31AFE00E90F147C7F1B78807F00087C9E2378A00300002C000800BA +S31AFE00E92440820054A09F000C38A000004BFFFD317C631B794076 +S31AFE00E939820040813F000838A0000098690000817F0008B06B3F +S31AFE00E94E0002807F0008A09F000C4BFFFD09813F00087FC5F30D +S31AFE00E96378B06900027FE3FB78388000014BFFFA554800002475 +S31AFE00E9783D200000800944302C000000418200147FC4F3787FFC +S31AFE00E98DE3FB787C0803A64E8000217FE3FB784BFFFCA18001C2 +S31AFE00E9A200147C0803A683C1000883E1000C382100104E800028 +S31AFE00E9B7209421FFD87C0802A693410010936100149381001857 +S31AFE00E9CC93A1001C93C1002093E100249001002C7C9B23787CEB +S31AFE00E9E17E1B78736000023B9E002C83BC000483FC00087CBA32 +S31AFE00E9F62B784182004438000018B01C000C813F000C396000D1 +S31AFE00EA0B065169E0063C000204913F000C600005B4900100087C +S31AFE00EA20387F00143881000838A000044BFFC7B138000000B0CB +S31AFE00EA351E001648000020A13E00163960000539290014B13C36 +S31AFE00EA4A000C801F000C5160E006901F000C801F000C39600066 +S31AFE00EA5F005160C10E901F000C813E00542C1A0000913F000436 +S31AFE00EA74801E0050B17F0010901F000840820054A01E0012B00E +S31AFE00EA891F0000A13E00149B7F000DB13F0002A01E00162C0049 +S31AFE00EA9E00004182000C63600008981F000D380005B4B01F0041 +S31AFE00EAB30EB35F00123D20000080093D9839600006901D000C05 +S31AFE00EAC8813E0008997D0009913D0010A01C000C7FA3EB78B074 +S31AFE00EADD1D0002A3BC000C4BFFFBE97C651B787FA4EB787FE30C +S31AFE00EAF2FB784BFFFB6DB07F00107F83E3783880000638BE0096 +S31AFE00EB07084BFFF8BD801E00042C00000A408200243C80000173 +S31AFE00EB1C3CA0FE0138A5ED0C7FC6F378387E00186084D4C048F1 +S31AFE00EB31000B5D48000034881F000D7009000340820010A01E27 +S31AFE00EB4600162C0000004182001C3CA0FE0138A5ECE47FC6F3D5 +S31AFE00EB5B78387E0018388003E848000B298001002C7C0803A662 +S31AFE00EB7083410010836100148381001883A1001C83C10020837D +S31AFE00EB85E10024382100284E8000209421FFE07C0802A693614F +S31AFE00EB9A000C9381001093A1001493C1001893E1001C9001005D +S31AFE00EBAF247C7C1B7883FC0008815C0004A0DF0000A0FF000216 +S31AFE00EBC4807F000480BF000839000014B11C000C3BEA0014800F +S31AFE00EBD91F000C39200005396000005120E0065160C10E901F7B +S31AFE00EBEE000C39200400B13F000EB17F0010B17F0012B0EA008B +S31AFE00EC0314B0DF0002991F000D907F000890BF00043D200000C7 +S31AFE00EC1880093D987C9B2378900A000C813B00003800000691A2 +S31AFE00EC2D2A0010980A0009A13C000C7D435378B12A0002A3BC39 +S31AFE00EC42000C4BFFFA897C651B787FA4EB787FE3FB784BFFFACD +S31AFE00EC570DB07F00107F83E3787F65DB78388000064BFFF75D68 +S31AFE00EC6C800100247C0803A68361000C8381001083A1001483FE +S31AFE00EC81C1001883E1001C382100204E8000203D2000008129B3 +S31AFE00EC964434396000002C0900004D8200207D2A4B787C091829 +S31AFE00ECAB004082001C2C0B00004182001080090000900B000044 +S31AFE00ECC048000008814900007D2B4B78812900002C0900004097 +S31AFE00ECD582FFD43D200000914944344E8000209421FFF87C0804 +S31AFE00ECEA02A69001000C3880000038A000014BFFFCC1800100B3 +S31AFE00ECFF0C7C0803A6382100084E8000209421FFF87C0802A69C +S31AFE00ED149001000C38000000900300044BFFFF718001000C7CB7 +S31AFE00ED290803A6382100084E8000209421FFF07C0802A693E18D +S31AFE00ED3E000C900100147C7F1B784800001080030000901F00F3 +S31AFE00ED53404BFFF8E9807F00402C0300004082FFEC800100148C +S31AFE00ED687C0803A683E1000C382100104E8000209421FFE87C86 +S31AFE00ED7D0802A693A1000C93C1001093E100149001001C7C7DFB +S31AFE00ED921B7838000000901D0004387D00184800097D7FA3EB44 +S31AFE00EDA7784BFFFF8D7FA3EB784BFFFEE18001001C7C0803A68D +S31AFE00EDBC83A1000C83C1001083E10014382100184E8000208162 +S31AFE00EDD124000880E30050814900048009000CA164000C7D0752 +S31AFE00EDE65051540036BA7D6058507D090214418100707C0A381E +S31AFE00EDFB507D6058517D08021440810060814300407D275A1457 +S31AFE00EE102C0A0000380000009123005090040000418200308070 +S31AFE00EE250A00002C0000004182001C7D495378812900008009FB +S31AFE00EE3A00002C0000004082FFF47D2A4B78908A000048000012 +S31AFE00EE4F10910300449083004091630048386000014E800020AC +S31AFE00EE64386000004E8000209421FFF07C0802A693C100089350 +S31AFE00EE79E1000C90010014812400087C7F1B7883C90008801FC0 +S31AFE00EE8E00547D20F0514081006C387F001848000881811F00CC +S31AFE00EEA354A15F00167D68F0505549043E7F8B48004FFEE382E3 +S31AFE00EEB87C000026540007FE7C0000D07D2900787D6B00387D3F +S31AFE00EECD6B4B79408100307D2B50505525043E2C0500007C0853 +S31AFE00EEE25A14901F0054B13F001641820014807F0034386300FB +S31AFE00EEF7147C835A144BFFC2E1800100147C0803A683C1000886 +S31AFE00EF0C83E1000C382100104E8000209421FFE07C0802A693D2 +S31AFE00EF2161000C9381001093A1001493C1001893E1001C900171 +S31AFE00EF3600247C7C1B78807C0004A01C000C83FC0008B0030011 +S31AFE00EF4B02A3BC000C7C9E23784BFFF7797C651B787FA4EB78D7 +S31AFE00EF607FE3FB784BFFF6FD2C0300003B600000408203A03D1A +S31AFE00EF7520000083A944344800000883BD00002C1D0000418223 +S31AFE00EF8A037CA13D0012A01F00027C0900004082FFE8A13D0032 +S31AFE00EF9F142C09000041820028A01F00007C0900004082FFD050 +S31AFE00EFB47FC3F378389D000838A000044BFFD66D2C03000040E2 +S31AFE00EFC982FFB8801D0004817E0004A13E00082C000002917D2F +S31AFE00EFDE000CB13D001041820024881F000D7009000441820035 +S31AFE00EFF3187FA3EB784BFFFD817F83E3784BFFF63D4800031C5F +S31AFE00F008813D00043809FFFF28000009418102FC3D60FE013928 +S31AFE00F01D6B59F85400103A7D4B002E3D20FE01392959F87D4AB4 +S31AFE00F0324A147D4903A64E800420881F000D7009000241820014 +S31AFE00F0474038000002901D0004813F0004A17F0000392900013E +S31AFE00F05C913D0050B17D0014801E000039200000901D0008B1DE +S31AFE00F0713D004C7FA3EB78B13D001638800012480002247FC4F9 +S31AFE00F086F3787F83E3784BFFFB0548000280387D00184800067A +S31AFE00F09B85881F000D700900044182001038000001901D0004E9 +S31AFE00F0B048000260700900024082023870090010418202508107 +S31AFE00F0C53D0054807F0008392900017C0348004082023C380038 +S31AFE00F0DA0004907D0054901D00044800022C881F000D83DD007D +S31AFE00F0EF5070090010418200107FA3EB787F84E3784BFFFD6DC5 +S31AFE00F1047FA3EB787F84E3784BFFFCC5881F000D7C7B1B787056 +S31AFE00F11909000141820024807F0004801D00507C0300004082BB +S31AFE00F12E00143803000139200005901D0050913D0004801D00AE +S31AFE00F143507C00F00040820010A01D004C2C000000418201BC70 +S31AFE00F158A3FD00162C1F000040820024387D0018480005B57F69 +S31AFE00F16DA3EB783880001038A000004BFFF841B3FD004C48001C +S31AFE00F182019038000001B01D004C48000184881F000D70090097 +S31AFE00F19710418201787FA3EB787F84E3784BFFFCC9813D00540F +S31AFE00F1AC801F0008392900017C00480040820158380000009099 +S31AFE00F1C11D00047FA3EB784BFFFAC948000144881F000D7009C8 +S31AFE00F1D60010418200607FA3EB787F84E3784BFFFC89813D007D +S31AFE00F1EB54801F0008392900017C00480040820040881F000D33 +S31AFE00F200700900014182002C813D00503800000A392900019148 +S31AFE00F2153D0050901D00047FA3EB783880001038A000004BFF33 +S31AFE00F22AF7914800000C38000008901D0004881F000D700900D1 +S31AFE00F23F01418200D0387D0018480004D5813D005038000009E5 +S31AFE00F25439290001913D0050901D00047FA3EB783880001148D9 +S31AFE00F26900003C7FA3EB787F84E3784BFFFB5D881F000D7C7B20 +S31AFE00F27E1B78700900014182008C813D00503800000A39290069 +S31AFE00F29301913D0050901D00047FA3EB783880001038A000006D +S31AFE00F2A84BFFF71148000064881F000D70090010418200587F78 +S31AFE00F2BDA3EB787F84E3784BFFFBA9813D0054801F00083929CB +S31AFE00F2D200017C00480040820038387D00184800043D380000D6 +S31AFE00F2E70A901D0004480000247FA3EB783880000038A00001D1 +S31AFE00F2FC4BFFF6BD480000107FC4F3787F83E3784BFFF8852CA6 +S31AFE00F3111B00004082000C7F83E3784BFFF321800100247C0816 +S31AFE00F32603A68361000C8381001083A1001483C1001883E10029 +S31AFE00F33B1C382100204E8000209421FFF87C0802A69001000CC1 +S31AFE00F3504BFFF3AD480004218001000C7C0803A6382100084EE4 +S31AFE00F3658000209421FFE87C0802A69381000893A1000C93C177 +S31AFE00F37A001093E100149001001C7C7D1B787C9C23783880003E +S31AFE00F38F0038A006444BFFBF213D600000810B4434381D006CB7 +S31AFE00F3A4395D0058901D0034915D003039200001380005EA934F +S31AFE00F3B9AB4434913D0004B39D0012B01D003A911D0000915D41 +S31AFE00F3CE003C386000008001001C7C0803A68381000883A10058 +S31AFE00F3E30C83C1001083E10014382100184E8000209421FFF036 +S31AFE00F3F87C0802A693E1000C900100147C7F1B78480000084B82 +S31AFE00F40DFFFF39801F00042C00000041820010A01F00162C000C +S31AFE00F42200004082FFE8800100147C0803A683E1000C3821009D +S31AFE00F437104E8000209421FFF07C0802A693E1000C90010014C9 +S31AFE00F44C7C7F1B784BFFFFA5817F000469690004200900007DAB +S31AFE00F46120491469600002214000007C0A01147D2A0379418268 +S31AFE00F476002038000007901F00047FE3FB783880001138A000F5 +S31AFE00F48B004BFFF52D480000242C0B00054082001C3800000638 +S31AFE00F4A0901F00047FE3FB783880001138A000004BFFF5097F63 +S31AFE00F4B5E3FB784BFFF87D800100147C0803A683E1000C38219E +S31AFE00F4CA00104E8000209421FFE87C0802A69381000893A10013 +S31AFE00F4DF0C93C1001093E100149001001C7CBE2B797C7F1B7803 +S31AFE00F4F47C9D237840810010801F00482C000000408200143859 +S31AFE00F509600000480000B8907F0048480000AC3B80000048003B +S31AFE00F51E0064809F00447FA3EB784BFFBCB5807F0040801F00EF +S31AFE00F53348812300007FC0F050913F00407F9C02147FBD0214C1 +S31AFE00F5484BFFF0F5807F00402C0300004182FFBC81630008A102 +S31AFE00F55D23000C800B000C540036BA7D204850913F0048800BB3 +S31AFE00F572000C540036BA7D6B0214917F00442C1E0000418200D1 +S31AFE00F5873C80BF00487C1E28004080FF90809F00447FA3EB78AF +S31AFE00F59C7FC5F3784BFFBC3D813F0044801F00487D29F2147C51 +S31AFE00F5B11E0050901F0048913F00447F9CF2147F83E3788001C9 +S31AFE00F5C6001C7C0803A68381000883A1000C83C1001083E100EF +S31AFE00F5DB14382100184E8000209421FFF07C0802A693C1000878 +S31AFE00F5F093E1000C900100147CBE2B797C7F1B78807F003440FE +S31AFE00F60581006C813F00043929FFFC280900014081000C386047 +S31AFE00F61AFFFF48000058A01F00162C00000040820048213E05CA +S31AFE00F62FB47D2949107D294BB87D2048F87FC94838700005B498 +S31AFE00F6447D3E0378386300147FC5F3784BFFBB8D7FE3FB78B3FF +S31AFE00F659DF00163880001038A000004BFFF3557FC3F37848007C +S31AFE00F66E000838600000800100147C0803A683C1000883E10071 +S31AFE00F6830C382100104E8000209421FFE87C0802A69381000827 +S31AFE00F69893A1000C93C1001093E100149001001C7C7F1B787C76 +S31AFE00F6ADBD2B787CDC3378909F00044BFFE2593D200000812922 +S31AFE00F6C24438907F00082C09000093BF000C939F001041820004 +S31AFE00F6D7187C09F80041820020812900002C0900004082FFF012 +S31AFE00F6EC3D2000008009443893E94438901F00008001001C7CE3 +S31AFE00F7010803A68381000883A1000C83C1001083E100143821DD +S31AFE00F71600184E8000203D20000081294438394000002C0900A3 +S31AFE00F72B004D8200207D2B4B787C091800408200202C0A0000B6 +S31AFE00F7404182001080090000900A00004800001C816900004824 +S31AFE00F7550000147D2A4B78812900002C0900004082FFD03D2050 +S31AFE00F76A0000916944384E8000209421FFE87C0802A693A10026 +S31AFE00F77F0C93C1001093E100149001001C3D20000083E9443887 +S31AFE00F7943BC000002C1F00003FA00000418200644BFFE16D80F8 +S31AFE00F7A91F0008813F00047C6018507C0348404180003C2C1ECA +S31AFE00F7BE000041820010801F0000901E00004800000C801F001F +S31AFE00F7D300901D4438801F000C807F00107C0803A63BC0000012 +S31AFE00F7E84E80002183FD44384800000C7FFEFB7883FF00002C2B +S31AFE00F7FD1F00004082FFA48001001C7C0803A683A1000C83C131 +S31AFE00F812001083E10014382100184E8000209421FFE87C0802D4 +S31AFE00F827A69381000893A1000C93C1001093E100149001001C2D +S31AFE00F83C7C7D1B7883FD0004A13F0002A01F0000692908002147 +S31AFE00F8516900007D2B491468000001216000007C0B01147C0B23 +S31AFE00F8664839418200D83FC00000387F0018389E3D9838A0001C +S31AFE00F87B044BFFCDB12C030000408200BCA01F00062C00000109 +S31AFE00F89040820064813F000E38000002B01F0006913F001880F4 +S31AFE00F8A51F0008391F0008A1280004901F0012389F0012B12477 +S31AFE00F8BA0004801E3D983D200000901F000E814944543929449C +S31AFE00F8CF54A1690004915F0008B16800043800001CB01D000C7C +S31AFE00F8E47FA3EB7838A008064BFFEF71480000502C00000240F0 +S31AFE00F8F98200483FC00001801EBE143B9EBE142C000000418222 +S31AFE00F90E0034807C0008389F000E38A000044BFFCD117C631BC5 +S31AFE00F923794082001CA01F000C817F0008813C0004B009000423 +S31AFE00F93891690000907EBE147FA3EB784BFFECF98001001C7C0F +S31AFE00F94D0803A68381000883A1000C83C1001083E1001438218F +S31AFE00F96200184E8000209421FFD87C0802A693610014938100B2 +S31AFE00F9771893A1001C93C1002093E100249001002C7C7F1B78B8 +S31AFE00F98C7C9D23783F800000389C3D9838A000044BFFCC912C97 +S31AFE00F9A1030000408200243D2000003969445480094454A14BC0 +S31AFE00F9B60004901D0000B15D00043860000048000114386000E8 +S31AFE00F9CB2A4BFFEC0D7C7E1B7940820018480000FC7FC3F3785D +S31AFE00F9E04BFFEC5D38600000480000F0813E0004394000013935 +S31AFE00F9F500080038000006396000049969000598090004B14970 +S31AFE00FA0A0000B1490006B1090002801C3D983D60000090090080 +S31AFE00FA1F0E394B4454A10A0004800B4454B109000C900900086B +S31AFE00FA34817F00003D40000191690018396ABE14380000FF93EA +S31AFE00FA49EB00089801000D93AB000439200001912ABE14980149 +S31AFE00FA5E0008980100099801000A9801000B9801000C3BA0001E +S31AFE00FA73073F8000013B60001CB37E000C7FC3F3783881000851 +S31AFE00FA8838A008064BFFEDD14BFFDE817C7F1B78480000144B99 +S31AFE00FA9DFFEC61801CBE142C0000004182FF344BFFDE217C7F30 +S31AFE00FAB21850280300F94081FFE47FA0EB782C0000003BBDFF66 +S31AFE00FAC7FF4181FFB47FC3F3784BFFEB6D3860FFFF8001002C20 +S31AFE00FADC7C0803A6836100148381001883A1001C83C1002083A9 +S31AFE00FAF1E10024382100284E8000209421FFD87C0802A693013C +S31AFE00FB0600089321000C93410010936100149381001893A100D2 +S31AFE00FB1B1C93C1002093E100249001002C3D2000013B29BE204C +S31AFE00FB303B1900967C7B1B787C9C23787F3DCB783B4000007F9C +S31AFE00FB45BEEB787F63DB787FC4F37838A000044BFFCAD92C03AB +S31AFE00FB5A00007F5FD378418200383BBE000A7C1DC0003B5F0078 +S31AFE00FB6F0A4081FFD4801B00007F63DB78901C0000389C00048B +S31AFE00FB844BFFFDE52C030000408000283860FFFF4800006C7C5F +S31AFE00FB991AC82EA13D0008817D0004B13C0008901C0000917CAD +S31AFE00FBAE00044800004C3CC0000081263DBC80FC00003909004C +S31AFE00FBC3011D29000A3D600001A15C0008801C0004396BBE2013 +S31AFE00FBD87CE9592E7D295A142C080010B14900089009000491A0 +S31AFE00FBED063DBC4082000C3800000090063DBC38600000800152 +S31AFE00FC02002C7C0803A6830100088321000C834100108361009C +S31AFE00FC17148381001883A1001C83C1002083E1002438210028F7 +S31AFE00FC2C4E8000209421FFD87C0802A693610014938100189352 +S31AFE00FC41A1001C93C1002093E100249001002C3D200001396924 +S31AFE00FC56BEEC800BFFD47C9C23782C0000007CDB3378418200E9 +S31AFE00FC6B0C3800000A4800010438000001B009BEEC88030000BE +S31AFE00FC80396B00022C0000002F85000041820018980B00008CDB +S31AFE00FC95030001396B00012C0000004082FFF038000000980BF5 +S31AFE00FCAA0000396B0001409E00103D20FE0138695A20480000EF +S31AFE00FCBF1C2C0500014182000C3800000A480000A83D20FE0181 +S31AFE00FCD438695A2C880300002C00000041820018980B00008C2F +S31AFE00FCE9030001396B00012C0000004082FFF03D2000013BA93A +S31AFE00FCFEBED438000000980B00007FA3EB783880000038A0006B +S31AFE00FD130C4BFFB5A13D600000812B3DC43BFDFFEC3800000185 +S31AFE00FD28B13F0018B01F001AA01C0004392900012C0000003B47 +S31AFE00FD3DC00000912B3DC493DF00144082000C38000045B01C93 +S31AFE00FD5200047F85E378387D0018388002057FA6EB78480020B9 +S31AFE00FD67C12C0300004080001438000009901B00003860FFFF3D +S31AFE00FD7C4800006038000001901DFFEC3920FFFF913F00107F3F +S31AFE00FD9165DB7893DF000C93DF000893DF0004386100083880DA +S31AFE00FDA600014800006D2C0300014182001093DDFFEC3860FF99 +S31AFE00FDBBFF48000020817F0234813F000C396BFFFF39290001C1 +S31AFE00FDD0913F000C917F0234386000008001002C7C0803A68303 +S31AFE00FDE56100148381001883A1001C83C1002083E100243821EF +S31AFE00FDFA00284E8000203D200001380000009009BEC038600095 +S31AFE00FE0F004E8000209421FFC87C0802A692C1001092E100145A +S31AFE00FE24930100189321001C934100209361002493810028936E +S31AFE00FE39A1002C93C1003093E100349001003C7C9923783B609F +S31AFE00FE4E00007C1BC8003D2000013BC9BEEC7C7A1B787CBC2B44 +S31AFE00FE6378408001783BFEFFD43B0100083AE000043AC0000964 +S31AFE00FE78813F000C2C0900004081005C7C1BC8507F890000801C +S31AFE00FE8D9F02347F43D3784FFEE3827FA0002657BD07FE7FBD2E +S31AFE00FEA200D07C00E8787D3DE8387FBD03787FA5EB784BFFB386 +S31AFE00FEB729801F0234813F000C7C00EA147D3D4850901F0234B7 +S31AFE00FECC913F000C7F7BEA147F5AEA14480000FC801F00102857 +S31AFE00FEE10001FF408100F838000001900100083920000091385B +S31AFE00FEF60004387F002C3880020538BF002038DF00147F07C3C2 +S31AFE00FF0B78480020457C631B794080002C813F00043929000132 +S31AFE00FF202C09000F913F000441810010801F00082C00000040CB +S31AFE00FF35820044380000084800008CA81E00002C000003408222 +S31AFE00FF4A0064813F0008A97E0002392900017C0B480040820055 +S31AFE00FF5F1C3863FFFC381E0004907F000C901F0234917F000865 +S31AFE00FF74907F0010A01F000AB2FE0000B01E0002387F002C38F1 +S31AFE00FF8980000438BF002038DF001448001E912C0300004080B3 +S31AFE00FF9E003892DC00003860FFFF480000382C0000054082009B +S31AFE00FFB314A81E00023860FFFF901C0000480000203800000B6C +S31AFE00FFC8901C00003860FFFF480000107C1BC8004180FEA07F49 +S31AFE00FFDD63DB788001003C7C0803A682C1001082E1001483011D +S31AFE00FFF200188321001C83410020836100248381002883A100E2 +S31AFE0100072C83C1003083E10034382100384E8000203803FFFFEF +S31AFE01001C2800000B3D20FE0138695A344D8100203D60FE013949 +S31AFE0100316B5B505400103A7D4B002E3D20FE0139295B507D4ADB +S31AFE0100464A147D4903A64E8004203C60FE0138635A444E80003F +S31AFE01005B203C60FE0138635A544E8000203C60FE0138635A68A1 +S31AFE0100704E8000203C60FE0138635A8C4E8000203C60FE0138AB +S31AFE010085635AA44E8000203C60FE0138635AB84E8000203C6040 +S31AFE01009AFE0138635ACC4E8000203C60FE0138635ADC4E800064 +S31AFE0100AF203C60FE0138635AF04E8000203C60FE0138635B0C0C +S31AFE0100C44E8000203C60FE0138635B204E8000203C60FE0138C2 +S31AFE0100D9635B344E800020380000047C0903A63980000089631E +S31AFE0100EE000038E000012C0B000038A0000038C0000A38630033 +S31AFE010103014182011069600030212000007C0901147CE900399B +S31AFE01011841820030892300003809FFBF280000194181000C38E8 +S31AFE01012D0900205409063E2C090078408200108D63000138C086 +S31AFE010142001038630001392BFFD0380BFFBF7D2A4B787C0803D2 +S31AFE010157785529063E5400063E21290009392000007D2949140D +S31AFE01016C20000005380000007C0001147D27037938E00000391A +S31AFE01018120000040820010380BFF9F2800000541810008392041 +S31AFE01019600012C090000418200685540063E2800000941810022 +S31AFE0101AB0C7D49537848000030380BFF9F280000054181000C49 +S31AFE0101C0392BFFA94800001C5500063E200000057C0001107CEE +S31AFE0101D50003B8392BFFC97C0948387C093000408000208963A3 +S31AFE0101EA00007C0531D62C0B00007CA04A14386300014082FF65 +S31AFE0101FF0C480000142C0B002E4182000C386000004E800020C4 +S31AFE0102145580402E7C0C2B784200FED091840000386000014E56 +S31AFE0102298000209421FFE87C0802A693A1000C93C1001093E13B +S31AFE01023E00149001001C890300033FA0000188A3000088C30000 +S31AFE0102530188E300023C80FE0138845B80387DC0F84BFFC0C199 +S31AFE010268387DC0F88001001C7C0803A683A1000C83C10010833E +S31AFE01027DE10014382100184E800020812300007C09180041820F +S31AFE01029200208123000490890000800300049064000090040062 +S31AFE0102A704908300044E80002090890004908900009124000049 +S31AFE0102BC912400044E8000207C6B1B78806B00007C0358004104 +S31AFE0102D182001880030000900B000081230000916900044E80EB +S31AFE0102E60020386000004E8000209421FFE87C0802A693A1005C +S31AFE0102FB0C93C1001093E100149001001C3D0000003CE00000EB +S31AFE010310392844443967443C912844449167443C3D4000019102 +S31AFE0103252900043BCAC118916B00043FA000003BE000107FC466 +S31AFE01033AF378387D443C4BFFFF4937FFFFFF3BDE06104082FF53 +S31AFE01034FEC8001001C7C0803A683A1000C83C1001083E10014E2 +S31AFE010364382100184E8000209421FFF87C0802A69001000C802B +S31AFE010379040000A124000490030010B123001480040000A104E9 +S31AFE01038E00043D20000039694454900944543D400000B10B0050 +S31AFE0103A304906A4460480000158001000C7C0803A63821000826 +S31AFE0103B84E8000209421FFF87C0802A69001000C8123000038EC +S31AFE0103CD8300108009000038A000007C0803A64E800021800185 +S31AFE0103E2000C7C0803A6382100084E8000209421FF587C0802E7 +S31AFE0103F7A67D8000269321008C9341009093610094938100984B +S31AFE01040C93A1009C93C100A093E100A4900100AC918100883DE6 +S31AFE0104212000003929320083A9004C3D6000002C1D00007C7BB8 +S31AFE0104361B787C9A23787CBC2B7883EB44603BC00005418200B8 +S31AFE01044B547FBFEB78815F0000801F000C816A00243D200000AB +S31AFE0104602C00000039293DC8916A0028912A00244082002C807F +S31AFE0104750A00003C800000388444547FE3FB7838A000007C0822 +S31AFE01048A03A64E800021801F000C60000001901F000C2E1D00AE +S31AFE01049F004800003C813F00007FE3FB788009001C7C0803A658 +S31AFE0104B44E8000213D20000039293200800900483C600003607E +S31AFE0104C9630D407C0803A64E80002137DEFFFF408100E8813FD1 +S31AFE0104DE00007FE3FB788009000C7C0803A64E8000212C03004F +S31AFE0104F3004182FFB03D2000008009445C3D6000002C0000002E +S31AFE0105083920000E380000003B2B444C900B444C9121000C93C8 +S31AFE01051D61000893410010938100143FC000004182003848000D +S31AFE01053224A57C7D1B783C60FE0138635B8C4BFFBE6D7F63DB0B +S31AFE010547783880000E4BFFC9B57F43D3787F84E3784BFFC9A96D +S31AFE01055C7FA3EB78480024E1813F000038A00002800900103848 +S31AFE010571DC000E7F27CB787FE3FB78388100087C0803A64E800C +S31AFE0105860021801E444C2C000000408200307FFDFB787FDFF3AE +S31AFE01059B78813D00007FA3EB788009001C7C0803A64E800021CA +S31AFE0105B0801F444C2C0000004182FFE47FBFEB78419200188123 +S31AFE0105C53F000038000000816900289009002891690024800133 +S31AFE0105DA00AC818100887C0803A68321008C834100908361003C +S31AFE0105EF948381009883A1009C83C100A083E100A47D80812078 +S31AFE010604382100A84E8000209421FFF87C0802A69001000C3D3B +S31AFE0106192000003809444C7C04000040820010380000019009B2 +S31AFE01062E444C480000188123000081690028800B00087C0803F2 +S31AFE010643A64E8000218001000C7C0803A6382100084E800020FF +S31AFE0106589421FFE07C0802A69361000C9381001093A1001493C9 +S31AFE01066DC1001893E1001C900100243D20000039293200838958 +S31AFE010682004C3D6000002C1C00007C7D1B787C9B237883CB445D +S31AFE01069760418200547F9EE378815E0000801E000C816A0024C2 +S31AFE0106AC3D2000002C00000039293DC8916A0028912A00244002 +S31AFE0106C182002C800A00003C800000388444547FC3F37838A052 +S31AFE0106D600007C0803A64E800021801E000C60000001901E0035 +S31AFE0106EB0C813E00007FC3F3788009001C7C0803A64E800021BC +S31AFE0107003C600000386344444BFFFBBD7C7F1B7941820054393F +S31AFE0107153F000CA009000C817F000C8149000481090008B01D91 +S31AFE01072A000C917D0000915D0004911D000880BF00087F63DBEF +S31AFE01073F7838A5FFF2389F001A4BFFAA953C6000003863443C29 +S31AFE0107547FE4FB784BFFFB31807F000848000008386000002C24 +S31AFE0107691C000041820018813E000038000000816900289009DD +S31AFE01077E002891690024800100247C0803A68361000C83810055 +S31AFE0107931083A1001483C1001883E1001C382100204E800020C1 +S31AFE0107A89421FFE87C0802A693A1000C93C1001093E1001490B3 +S31AFE0107BD01001C7CA02B797C0903A64081003C7C9F23787FC91C +S31AFE0107D202A63FA00000807F000080BF0004809D44504BFFA9A0 +S31AFE0107E7F9801D4450813F000437DEFFFF7C004A143BFF0008DB +S31AFE0107FC901D44504082FFD88001001C7C0803A683A1000C838C +S31AFE010811C1001083E10014382100184E8000209421FF607C088D +S31AFE01082602A69361008C9381009093A1009493C1009893E100C4 +S31AFE01083B9C900100A47C7E1B783C6000007C9B23783863443CDC +S31AFE0108504BFFFA757C7C1B787F89FE707D20E2787C0048508148 +S31AFE0108657E00007C00FE70393C000C7D3F0038800B001493E189 +S31AFE01087A00089361000C7FC3F3783881000838A000017C08038E +S31AFE01088FA64E8000213D2000008009445C2C000000418200380D +S31AFE0108A4480021317C7D1B783C60FE0138635B9C4BFFBAF97F6B +S31AFE0108B9E3FB783880000E4BFFC641387F000E389BFFF24BFFE5 +S31AFE0108CEC6357FA3EB784800216D813E0000800900282C00001E +S31AFE0108E3004182005C3C60000038633D98389F001E38A00004FF +S31AFE0108F84BFFBD352C03000041820040815E00007FC3F378816B +S31AFE01090D2A00287F64DB78800900043D60FE017C0803A683AAC5 +S31AFE0109220014396B07A83D20000093E94450916A00144E80000A +S31AFE01093721813E000093A900142C1C0000418200183C600000B7 +S31AFE01094C937C0008386344447F84E3784BFFF931800100A47CE4 +S31AFE0109610803A68361008C8381009083A1009483C1009883E1CF +S31AFE010976009C382100A04E8000209421FFF87C0802A69001007B +S31AFE01098B0C3D2000008069446081630000800B00207C0803A6A0 +S31AFE0109A04E8000218001000C7C0803A6382100084E80002094B1 +S31AFE0109B521FFF87C0802A69001000C7C641B783C60FE0138639E +S31AFE0109CA5BAC4BFFB9E18001000C7C0803A6382100084E80003F +S31AFE0109DF209421FFF07C0802A693E1000C900100143D2000018B +S31AFE0109F43BE92EDC801F001C2C0000004082002C90692EDC9053 +S31AFE010A099F00044BFF65DD7C631B794082001C801F0008392053 +S31AFE010A1E00017C0000D0913F001C901F001038600000800100AD +S31AFE010A33147C0803A683E1000C382100104E8000204E800020B3 +S31AFE010A489421FFF07C0802A693C1000893E1000C900100147CC7 +S31AFE010A5D7E1B783C600000386341184BFFFFDD7C6A1B787FF8C8 +S31AFE010A728AA657FF0FFE39200000380000807C0903A661201007 +S31AFE010A87003D600E007C0004AC7D398BA67D788BA67C198BA6AB +S31AFE010A9C7D788BA6392900104200FFE03C000C007C0004AC7C97 +S31AFE010AB1188BA63D6004007C0004AC7D788BA64C00012C7C10EA +S31AFE010AC68BA64C00012C7FC3F3787D4803A64E8000212C1F0017 +S31AFE010ADB00418200103C0002007C0004AC7C188BA6800100146A +S31AFE010AF07C0803A683C1000883E1000C382100104E8000203D6F +S31AFE010B0520000139292EDC8009001C7C6B1B782C00000040823C +S31AFE010B1A000C386000074E800020800900147C0B004041800003 +S31AFE010B2F1480090018386000007C0B00404D8000203860000112 +S31AFE010B444E8000203D20000139692EDC800B001C2C000000418B +S31AFE010B5982001C812B00143860000091240000800B001890059F +S31AFE010B6E00004E800020386000074E8000203D20000139692EC4 +S31AFE010B83DC800B001C7C6A1B782C0000004182001C812B00089D +S31AFE010B9838600000912A0000800B000C900400004E800020389F +S31AFE010BAD6000074E8000209421FFD87C0802A67D80002693412A +S31AFE010BC20010936100149381001893A1001C93C1002093E1009D +S31AFE010BD7249001002C9181000C3D2000013BA92EDC801D001C00 +S31AFE010BEC7C7F1B782C0000007C9E23787CBA2B783B80000038B4 +S31AFE010C01600007418201043C6000003863415C4BFFFE35801DBC +S31AFE010C1600107C7B1B787FBFF2147FFF00383C60FE0138635B9F +S31AFE010C2BE87FE4FB787FA5EB784BFFB7797D788AA6556B0FFEFE +S31AFE010C4039200000380000807C0903A6612010003D400E007CC3 +S31AFE010C550004AC7D398BA67D588BA67C198BA67D588BA63929BA +S31AFE010C6A00104200FFE03C000C007C0004AC7C188BA63D400485 +S31AFE010C7F007C0004AC7D588BA64C00012C7C108BA64C00012C7A +S31AFE010C942E0B000048000020801E00083C60FE015400F87E7C1E +S31AFE010CA90002147FFF021438635C004BFFB6F97C1FE840408014 +S31AFE010CBE002C3D2000013BC92EDC7FE3FB78809E00087F68039F +S31AFE010CD3A64E8000214BFF638D7C7C1B794182FFBC93FA0000A1 +S31AFE010CE8419200103C0002007C0004AC7C188BA63C60FE01380D +S31AFE010CFD635C044BFFB6AD7F83E3788001002C8181000C7C08D1 +S31AFE010D1203A683410010836100148381001883A1001C83C100B2 +S31AFE010D272083E100247D808120382100284E8000209421FFD871 +S31AFE010D3C7C0802A67D8000269321000C9341001093610014930F +S31AFE010D5181001893A1001C93C1002093E100249001002C9181C4 +S31AFE010D6600083D20000180092EF87CBD2B782C0000007CD933CE +S31AFE010D7B787C7E1B787C9C23783B600000386000074182012880 +S31AFE010D903C600000386342604BFFFCAD7C7A1B783C60FE013821 +S31AFE010DA5635C087F84E3787CBCEA147FC6F3784BFFB5F97D783C +S31AFE010DBA8AA6556B0FFE39200000380000807C0903A661201052 +S31AFE010DCF003D400E007C0004AC7D398BA67D588BA67C198BA6A0 +S31AFE010DE47D588BA6392900104200FFE03C000C007C0004AC7C6C +S31AFE010DF9188BA63D4004007C0004AC7D588BA64C00012C7C10DF +S31AFE010E0E8BA64C00012C2E0B0000480000243C60FE0138635CE9 +S31AFE010E23004BFFB58957E0F87E7C0002147F9C02147FBFE85047 +S31AFE010E387FDE02142C1D0000408100543D20000181692EE47FF6 +S31AFE010E4DA5EB787F8558007FC3F3787F84E3784FFEE3827C00EE +S31AFE010E620026540007FE7C0000D07D6B00787CA000387C055B1B +S31AFE010E77787F4803A67CBF2B784E8000214BFF61E17C7B1B7995 +S31AFE010E8C4182FF9093D90000419200103C0002007C0004AC7CC5 +S31AFE010EA1188BA63C60FE0138635C044BFFB5017F63DB788001A2 +S31AFE010EB6002C818100087C0803A68321000C8341001083610057 +S31AFE010ECB148381001883A1001C83C1002083E100247D80812013 +S31AFE010EE0382100284E8000202803000D418100C43D60FE0139F6 +S31AFE010EF56B5DC85460103A7D4B002E3D20FE0139295DC87D4AB5 +S31AFE010F0A4A147D4903A64E8004203C60FE0138635C284E800086 +S31AFE010F1F203C60FE0138635C484E8000203C60FE0138635C6CD2 +S31AFE010F344E8000203C60FE0138635C904E8000203C60FE0138D2 +S31AFE010F49635CA84E8000203C60FE0138635CC04E8000203C605D +S31AFE010F5EFE0138635CDC4E8000203C60FE0138635CF44E800065 +S31AFE010F73203C60FE0138635D044E8000203C60FE0138635D2804 +S31AFE010F884E8000203C60FE0138635D4C4E8000203C60FE0138C1 +S31AFE010F9D635D704E8000203C60FE0138635D944E8000203C606B +S31AFE010FB2FE0138635DB44E8000209421FFF87C0802A690010023 +S31AFE010FC70C3803FFFE2800001D418100A03D60FE01396B5E0087 +S31AFE010FDC5400103A7D4B002E3D20FE0139295E007D4A4A147DA9 +S31AFE010FF14903A64E8004203860000248000078386000414BFF85 +S31AFE01100689A154637F3E2C03000241820040280300024181000F +S31AFE01101B102C030001418200384800002C2C03000441820024F2 +S31AFE0110302C0300084082001C38600008480000383860000E4883 +S31AFE0110450000303860000C4800002838600004480000203860B1 +S31AFE01105A0005480000183860000A480000103860000B48000032 +S31AFE01106F083860000F8001000C7C0803A6382100084E800020AF +S31AFE0110843D200000816943DC806B00985463C23E4E8000209430 +S31AFE01109921FFF87C0802A69001000C7C641B78386000404BFFC7 +S31AFE0110AE890D8001000C7C0803A6382100084E8000209421FFD5 +S31AFE0110C3F87C0802A69001000C386000414BFF88D56064060008 +S31AFE0110D8548004203D2000005484045E90093DD4386000414BA1 +S31AFE0110EDFF88CD8001000C7C0803A6382100084E8000209421D7 +S31AFE011102FFF87C0802A69001000C386000414BFF88953D200076 +S31AFE0111170080893DD4546305E8380000007C64237890093DD4A3 +S31AFE01112C386000414BFF88898001000C7C0803A6382100084E0C +S31AFE0111418000204E8000204E8000209421FFF87C0802A69001AF +S31AFE011156000C386000404BFF88493D20FE0139299E947C634A67 +S31AFE01116B78200300007C6019148001000C7C0803A638210008AB +S31AFE0111804E8000209421FFF87C0802A69001000C386000404BCF +S31AFE011195FF881138830004386000404BFF88198001000C7C0815 +S31AFE0111AA03A6382100084E8000209421FFF87C0802A6900100CA +S31AFE0111BF0C3D20000080093DD82C0000004082001038000001D8 +S31AFE0111D490093DD8480008A98001000C7C0803A6382100084EF1 +S31AFE0111E98000203D20000080093DDC2C0000004C8200203800FB +S31AFE0111FE000190093DDC7CFE9AA674E7FFFF3D2000017D29030A +S31AFE011213A638008001B00709C07C0902A6600086A07C0903A601 +S31AFE0112284200000080070ABC3D600001600000C090070ABC8181 +S31AFE01123D270AB8616B00A2552906AE91270AB8916709F039402A +S31AFE011252000091470AE038002810B0073E8039273E803800285D +S31AFE01126700B009000239000001910700303800001898090004BB +S31AFE01127C98090005B109000638000000B14900282C000003B1B8 +S31AFE01129149002C38000004B149002E7C0903A6394728103D60E7 +S31AFE0112A60000B1090030914B44647D45537839072800388728E4 +S31AFE0112BB0838C000003960900039272830B0CA0002912A0004FD +S31AFE0112D0B16A000040820010A00A000060002000B00A000039FA +S31AFE0112E54A0008392900014200FFDC7CA92B78A00900183960FB +S31AFE0112FA000160002000B0090018B168000239202000B12728F4 +S31AFE01130F0090880004380000FF98070A863920000599270A8A90 +S31AFE01132438004820B0070A8239204823B1270A8238000091B02B +S31AFE0113390709C04E80002039233E80A00900207D4302147D4B5B +S31AFE01134E5378A00A00007008800041820028A00A0000700820EB +S31AFE0113630041820010A00900027D43021448000008394A000841 +S31AFE0113787C0A58004082FFD47D495378A009000070008000407E +S31AFE01138D82FFF87D2A4B787C090378A00A0000700B100041826B +S31AFE0113A20014A00A00007000EFFFB00A0000B12A0002A12A00B3 +S31AFE0113B7023900000038090001B00A0002816A00045529043E34 +S31AFE0113CC7C8B49AEA00A000060008000B00A0000A12A00007189 +S31AFE0113E1208000418200647D4B53787D0A43783D0000076108A9 +S31AFE0113F6FFFF394A00017C0A400040820038A1230A82394000D2 +S31AFE01140B007129FFFDB1230A82A00B00005400047EB00B000095 +S31AFE011420A1230A8261290002B1230A82A00B000060008000B03B +S31AFE0114350B0000A00B0000700980004082FFB87D6A5B787D49F5 +S31AFE01144A5378A0090000700080004082FFF87D2A4B78B00A0047 +S31AFE01145F024E8000203D2000008149446438E33E80A00A000031 +S31AFE011474700880004182000C386000004E800020812A00043929 +S31AFE0114896000008809000098040000B10A0002812A000499694E +S31AFE01149E0000A00A000060008000B00A0000A12A000071202074 +S31AFE0114B3004182000C3943281048000008394A00083D20000064 +S31AFE0114C8914944647C188AA654000FFE2C0000004182002881CB +S31AFE0114DD2A0004A16700062C0B0000408100187C004BAC7C00BA +S31AFE0114F204AC356BFFF0392900104181FFF0386000014E800017 +S31AFE011507209421FFE87C0802A693E100149001001C7C7F1B781F +S31AFE01151C7FE3FB78388100084BFFFF412C0300004182FFF0882C +S31AFE0115316100088001001C7C0803A683E10014382100184E80B6 +S31AFE01154600209421FFE87C0802A693A1000C93C1001093E1008B +S31AFE01155B149001001C7CBF2B787FE0FB782C0000007C7D1B784D +S31AFE0115707C9E23783BFFFFFF41820024889E00007FA3EB784B97 +S31AFE011585FFFDBD7FE0FB782C0000003BDE00013BFFFFFF408281 +S31AFE01159AFFE48001001C7C0803A683A1000C83C1001083E100A2 +S31AFE0115AF14382100184E8000209421FFE87C0802A693A1000CA7 +S31AFE0115C493C1001093E100149001001C7CBF2B787FE0FB782C98 +S31AFE0115D90000007C7D1B787C9E23783BFFFFFF418200247FA376 +S31AFE0115EEEB784BFFFF197FE0FB782C000000987E00003BDE00F1 +S31AFE011603013BFFFFFF4082FFE48001001C7C0803A683A1000CF5 +S31AFE01161883C1001083E10014382100184E8000209421FFE87C75 +S31AFE01162D0802A69381000893A1000C93C1001093E1001490011A +S31AFE011642001C3D20000080093DE03D6000001FE0000A3B8B32D1 +S31AFE011657007C7D1B787C9E237848000014813C004838600064DB +S31AFE01166C7D2803A64E8000217FA3EB787FC4F3784BFFFDE97C48 +S31AFE011681631B79408200102C1F00003BFFFFFF4082FFD48001ED +S31AFE011696001C7C0803A68381000883A1000C83C1001083E100FD +S31AFE0116AB14382100184E8000209421FF807C8023782C000005B6 +S31AFE0116C090A1001090C1001490E100189101001C9121002091D0 +S31AFE0116D54100249081000C386000004182002C28000005418103 +S31AFE0116EA00102C00000441820144480002B42C000006418202A9 +S31AFE0116FF782C00000741820278480002A03D60FE01800B5F4C2D +S31AFE0117143D20FE0139295E787D2902147D2903A64E8004203DED +S31AFE01172920FF0061290014800900007C0006AC60000400900935 +S31AFE01173E00007C0006AC480000E03D20FF0061290200A00900AA +S31AFE011753007C0006AC60000008B00900007C0006AC480000C0F7 +S31AFE0117683D20FF0061290200A00900007C0006AC60000004B094 +S31AFE01177D0900007C0006AC480000A03D20FF0061290240A00962 +S31AFE01179200007C0006AC60000004B00900007C0006AC4800007C +S31AFE0117A7803D20FF0061290220A00900007C0006AC6000000861 +S31AFE0117BCB00900007C0006AC480000603D20FF0061290220A0DC +S31AFE0117D10900007C0006AC60000004B00900007C0006AC480034 +S31AFE0117E600403D20FF0061290940800900007C0006AC60000063 +S31AFE0117FB80900900007C0006AC480000203D20FF0061290948EE +S31AFE011810800900007C0006AC60000010900900007C0006AC3D93 +S31AFE0118252000003800000190093DE4480001783D20000080698F +S31AFE01183A3DE43800000090093DE43D60FE01800B60343D20FE6B +S31AFE01184F0139295F607D2902147D2903A64E8004203D20FF0004 +S31AFE01186461290014800900007C0006AC540005A8900900007CFF +S31AFE0118790006AC4800012C3D20FF0061290200A00900007C0021 +S31AFE01188E06AC7000FFF75400043EB00900007C0006AC48000162 +S31AFE0118A3083D20FF0061290200A00900007C0006AC7000FFFBFA +S31AFE0118B85400043EB00900007C0006AC480000E43D20FF0061B0 +S31AFE0118CD290240A00900007C0006AC7000FFFB5400043EB00906 +S31AFE0118E200007C0006AC480000C03D20FF0061290220A0090005 +S31AFE0118F7007C0006AC7000FFF75400043EB00900007C0006ACC6 +S31AFE01190C4800009C3D20FF0061290220A00900007C0006AC708E +S31AFE01192100FFFB5400043EB00900007C0006AC480000783D2018 +S31AFE011936FF0061290940800900007C0006AC5400066E900900AD +S31AFE01194B007C0006AC480000583D20FF006129094880090000F4 +S31AFE0119607C0006AC54000734900900007C0006AC480000383831 +S31AFE01197560003648000030396100083801008839200003986192 +S31AFE01198A00719921007090010074916100783D200000800B0051 +S31AFE01199F0880693DE090093DE0382100804E8000209421FFE807 +S31AFE0119B47C0802A693C1001093E100149001001C7C9E23783966 +S31AFE0119C92000007C7F1B78913E0000881F0A86700B0001418211 +S31AFE0119DE008838000001981F0A863D20000081494464A00A006E +S31AFE0119F3007009800040820060812A00043960000188090000E5 +S31AFE011A0898010008B16A0002A00A000060009000B00A0000A111 +S31AFE011A1D2A0000712B20004182000C395F281048000008394A57 +S31AFE011A3200083D2000009149446438610008388000014BFF9679 +S31AFE011A477D2C0300004182000C38000001901E000038000010DB +S31AFE011A5C901F094C392000017D234B788001001C7C0803A68362 +S31AFE011A71C1001083E10014382100184E8000209421FFF07C088B +S31AFE011A8602A693C1000893E1000C900100143D2000003BE9326A +S31AFE011A9B00813F00343860FFFF7D2803A64E8000213D2000000D +S31AFE011AB080093DE87C7E1B782C00000040820094380000019096 +S31AFE011AC5093DE84BFFF725813F0034386000007D2803A64E80CB +S31AFE011ADA0021815F00147C1E9AA67400FFFF3D20FE01900A009B +S31AFE011AEF0039291548912A00043D60FE01396B15B83D20FE01F6 +S31AFE011B04916A000839291340912A000C3D60FE01396B15083DAE +S31AFE011B1920FE01916A0010392916B4912A00143D60FE01396B4D +S31AFE011B2E19B03D20FE01916A001839291628912A001C801F004F +S31AFE011B43347FC3F3787C0803A64E800021800100147C0803A6C9 +S31AFE011B5883C1000883E1000C382100104E8000203D2000008182 +S31AFE011B6D2944682C09000041820024A00900047C002000408262 +S31AFE011B82000C3860FFFF4E800020812900002C0900004082FF19 +S31AFE011B97E43D2000008009446890694468B083000490A30008A7 +S31AFE011BAC90030000386000004E8000203D20000081294468391A +S31AFE011BC16000002C0900004D8200207D2A4B78A00900047C00F3 +S31AFE011BD618004082001C2C0B00004182001080090000900B00D1 +S31AFE011BEB0048000008814900007D2B4B78812900002C0900007C +S31AFE011C004082FFD03D200000914944684E8000209421FFE87C50 +S31AFE011C150802A69381000893A1000C93C1001093E1001490012C +S31AFE011C2A001C7C7E1B7883FE000838000000A13F00066000FFF1 +S31AFE011C3FFF7C090000817E00047C9C23784082000C380000004B +S31AFE011C54B01F0006A01F00047D635B78B00B0002A3BF00044BBD +S31AFE011C69FFCA657C651B787FA4EB787FE3FB784BFFC9E92C0339 +S31AFE011C7E0000408200603D200000816944682C0B00004182003D +S31AFE011C9350A12B0004A01F00027C09000040820034A0BF000478 +S31AFE011CA8800B00087D635B7838A5FFF87F86E378A0FF000038D1 +S31AFE011CBD9F00087C0803A64E8000217FC3F3784BFFC9714800D1 +S31AFE011CD20018816B00002C0B00004082FFB87FC3F3784BFFC984 +S31AFE011CE7598001001C7C0803A68381000883A1000C83C1001030 +S31AFE011CFC83E10014382100184E8000209421FFD87C0802A693AC +S31AFE011D110100089321000C93410010936100149381001893A1A3 +S31AFE011D26001C93C1002093E100249001002C7C9C2378281C05C2 +S31AFE011D3BC07C791B787CB82B787CDA33787CFE3B78418100A8D7 +S31AFE011D50386005EA4BFFC8857C7F1B794182009883BF000838EF +S31AFE011D651C0008837F0004B01F000CB3DD0000B35D0002A01FFE +S31AFE011D7A000C392000007F85E378B01D0004B13D00067F24CB58 +S31AFE011D8F78387D00084BFF94493D20000080093D983960001179 +S31AFE011DA4901B000C81380000997B0009913B0010A01D00047F7C +S31AFE011DB963DB78B01B0002A39F000C4BFFC9097C651B787F84AC +S31AFE011DCEE3787FA3EB784BFFC88DB07D00067F05C3787FE3FB2D +S31AFE011DE378388000114BFFC5DD7FE3FB784BFFC84D8001002CD8 +S31AFE011DF87C0803A6830100088321000C83410010836100148319 +S31AFE011E0D81001883A1001C83C1002083E10024382100284E80A7 +S31AFE011E2200209421FFD87C0802A69381001893A1001C93C100FE +S31AFE011E372093E100249001002C7CBF2B787C7D1B787C9C2378FF +S31AFE011E4C7CDE33787FE3FB78388100084BFFDCA52C03000041A6 +S31AFE011E61800024A0DF0004A0FE00047FA3EB787F84E37838A1E2 +S31AFE011E7600084BFFFE91386000004800001C3C60FE013C80FE20 +S31AFE011E8B01386360483884606C4BFFA5193860FFFF8001002C26 +S31AFE011EA07C0803A68381001883A1001C83C1002083E10024387B +S31AFE011EB52100284E8000209421FFE87C0802A69381000893A1C4 +S31AFE011ECA000C93C1001093E100149001001C3F8000007CBF2B34 +S31AFE011EDF783D200000807C446C7CDD33787CFE3B7893E9447007 +S31AFE011EF44BFF92E93D200000816944742C0B00004182001CB347 +S31AFE011F09CB0004801D000039200000900B0000913C446C480099 +S31AFE011F1E00143C60FE013863607C7FE4FB784BFFA481800100BD +S31AFE011F331C7C0803A68381000883A1000C83C1001083E1001443 +S31AFE011F48382100184E8000209421FFD07C0802A69341001893F1 +S31AFE011F5D61001C9381002093A1002493C1002893E1002C9001B4 +S31AFE011F720034A3A600047CBA2B787C7E1B787C9C23783CA0FEE1 +S31AFE011F87017CFF3B7838A51EBC386100087FA4EB784BFFFBD11D +S31AFE011F9C2C0300004080000C3860FFFF48000084813F00043CCE +S31AFE011FB1001062817F000060004DD37D2900161D6B03E8552977 +S31AFE011FC6D1BE7F6B4A143D4000003D2000003D60000093CA4412 +S31AFE011FDB6C93894470934B44744BFFB92D7FBAEB787C7E1B78C1 +S31AFE011FF03BE0FFFF3FA000003F8000004BFFB8D17C7E18507C6F +S31AFE01200503D840408000184BFFC6F1801D446C2C000000408292 +S31AFE01201AFFE483FC44707F43D3784BFFFB957FE3FB7880010059 +S31AFE01202F347C0803A6834100188361001C8381002083A10024EE +S31AFE01204483C1002883E1002C382100304E8000209421FFE87CF7 +S31AFE0120590802A693A1000C93C1001093E100149001001C3D2087 +S31AFE01206E000080093DF07C9F23782C0000004082007C4BFFD266 +S31AFE012083C53D20000138692218800300042C00000540820018B3 +S31AFE012098A00300162C000000408200504BFFD399480000482CC5 +S31AFE0120AD00000040820014480009BD3800000A981F00004800F4 +S31AFE0120C200603FA00001389D285C38A000804BFFD4012C0300C5 +S31AFE0120D7003BBD285C3D2000003D60000093A94490906B3DF041 +S31AFE0120EC4082000C38600000480000303D400000816A44903D83 +S31AFE012101000000880B0000396B0001981F000081283DF0916A04 +S31AFE01211644903929FFFF91283DF0386000018001001C7C0803D8 +S31AFE01212BA683A1000C83C1001083E10014382100184E80002099 +S31AFE0121409421FFE87C0802A693C1001093E100149001001C7CA8 +S31AFE0121557F1B787C9E23784BFFFEF92C030000418200CC3D204D +S31AFE01216A00008009441C2C00000040820048881E00002C00006A +S31AFE01217FFF4082003C7FE3FB78388100084BFFFEC92C03000073 +S31AFE0121944182FFF0880100082C0000FD41820058418100102CAC +S31AFE0121A90000F441820018480000802C0000FF40820078386088 +S31AFE0121BE00014800007438000003981E00007FE3FB78388000CC +S31AFE0121D3FF480001D17FE3FB78388000FC480001C57FE3FB786D +S31AFE0121E838800006480001B9480000C54BFFFFC87FE3FB7838F2 +S31AFE0121FD8100084BFFFE552C0300004182FFF07FE3FB78388034 +S31AFE01221200FF480001917FE3FB78388000FC4800018588810079 +S31AFE012227087FE3FB7848000179386000008001001C7C0803A69C +S31AFE01223C83C1001083E10014382100184E8000209421FFE87C45 +S31AFE0122510802A693C1001093E100149001001C7C7E1B783BE082 +S31AFE012266000A4800001C37FFFFFF40820010480000413BE00046 +S31AFE01227B0A480000084BFFB64D7FC3F378388100084BFFFEB537 +S31AFE0122902C0300004182FFD8886100088001001C7C0803A6832D +S31AFE0122A5C1001083E10014382100184E8000209421FFE87C0857 +S31AFE0122BA02A693A1000C93C1001093E100149001001C3D20002C +S31AFE0122CF013BA928DC4800003080BE3DF47FE3FB787FA4EB78CA +S31AFE0122E44BFFD3017C631B7940810014801E3DF47FBD1A147CC5 +S31AFE0122F9030050901E3DF44BFFD0453FC00000801E3DF42C0040 +S31AFE01230E0000418200303D2000013BE92218801F00042C000037 +S31AFE012323054082000C7FE3FB784BFFD111801F00042C000000FD +S31AFE0123384082FFA0480007353D200001392928DC3D6000003D08 +S31AFE01234D4000003BE000003C600001912B449493EA3DF43863A1 +S31AFE01236222184BFFD0913D20000039293200800900442C000092 +S31AFE012377004182001093E90044386000004BFF8D6D8001001C40 +S31AFE01238C7C0803A683A1000C83C1001083E10014382100184E4F +S31AFE0123A18000209421FFF07C0802A693E1000C900100143D60F0 +S31AFE0123B60000812B44942C0400249889000039290001912B44B1 +S31AFE0123CB9440820010380000013D200000900944783FE0000088 +S31AFE0123E0801F4478688B0023212B00007D6959143140FFFF7DE7 +S31AFE0123F52A01107D2058394182001C3D400000392000013D6012 +S31AFE01240A000038000000912A447C900B44803D600000812B3D20 +S31AFE01241FF4392900012C090100912B3DF44182002C3D200000DD +S31AFE0124348009447C2C000000418200283D600000812B448039E8 +S31AFE0124492900012C090003912B4480408200104BFFFE5D3800E8 +S31AFE01245E0000901F4478800100147C0803A683E1000C3821006E +S31AFE012473104E8000209421FFE87C0802A693A1000C93C10010E5 +S31AFE01248893E100149001001C480005457C7D1B783C60FE013C10 +S31AFE01249D80FE0138A0012338846170386361684BFF9F017FA3AD +S31AFE0124B2EB784800058D8001001C7C0803A683A1000C83C10095 +S31AFE0124C71083E10014382100184E8000209421FFE87C0802A64C +S31AFE0124DC93A1000C93C1001093E100149001001C480004E97C5C +S31AFE0124F17D1B783C60FE013C80FE0138A0013538846180386325 +S31AFE01250661684BFF9EA57FA3EB78480005318001001C7C08033E +S31AFE01251BA683A1000C83C1001083E10014382100184E800020A5 +S31AFE0125309421FFE87C0802A693A1000C93C1001093E10014900D +S31AFE01254501001C7C7D1B787C9E23784BFFFD653D20000083E9A9 +S31AFE01255A3DEC480000084BFFB36D7FA3EB787FC4F3784BFFFB0C +S31AFE01256FD57C631B79408200102C1F00003BFFFFFF4082FFE014 +S31AFE0125848001001C7C0803A683A1000C83C1001083E10014383F +S31AFE0125992100184E8000209421FF787C0802A693C1008093E161 +S31AFE0125AE00849001008C3804FFFC2800000490A1001090C1007D +S31AFE0125C31490E100189101001C91210020914100249081000CCE +S31AFE0125D83BC00000418103643D60FE01396B61905400103A7D79 +S31AFE0125ED4B002E3D20FE01392961907D4A4A147D4903A64E804A +S31AFE01260204203FE00000801F3DF83D6000002C00000039200085 +S31AFE01261701912B3DFC408200144BFFE361907F3DF82C030000DC +S31AFE01262C41820314811F3DF83808FFFF28000039418103043D40 +S31AFE01264160FE01396B61A85400103A7D4B002E3D20FE01392921 +S31AFE01265661A87D4A4A147D4903A64E8004203D20FF00612900F5 +S31AFE01266B14816900007C0006AC3948FFFF3C0080007C005430EE +S31AFE0126807D6B0378916900007C0006AC480002B43D20FF0061FA +S31AFE012695290200A00900007C0006AC60000008B00900007C008C +S31AFE0126AA06AC480002943D20FF0061290200A00900007C000673 +S31AFE0126BFAC60000004B00900007C0006AC480002743D20FF00F0 +S31AFE0126D461290240A00900007C0006AC60000004B00900007CB0 +S31AFE0126E90006AC480002543D20FF0061290220A00900007C005A +S31AFE0126FE06AC60000008B00900007C0006AC480002343D20FFE7 +S31AFE0127130061290220A00900007C0006AC60000004B00900000C +S31AFE0127287C0006AC480002143D20FF0061290940800900007CD7 +S31AFE01273D0006AC60000080900900007C0006AC480001F43D208F +S31AFE012752FF0061290948816900007C0006AC3948FFE53C00805A +S31AFE012767007C0054307D6B0378916900007C0006AC480001C8BC +S31AFE01277C3D60000083CB3DFC38000000900B3DFC3D2000008135 +S31AFE012791493DF82C0A0000418201A87D4853783808FFFF280018 +S31AFE0127A60039418101983D60FE01396B62905400103A7D4B00ED +S31AFE0127BB2E3D20FE01392962907D4A4A147D4903A64E800420A0 +S31AFE0127D03D20FF0061290014816900007C0006AC3948FFFF3C22 +S31AFE0127E50080007C0054307D6B0078916900007C0006AC48008A +S31AFE0127FA01483D20FF0061290200A00900007C0006AC7000FF4E +S31AFE01280FF75400043EB00900007C0006AC480001243D20FF0072 +S31AFE01282461290200A00900007C0006AC7000FFFB5400043EB087 +S31AFE0128390900007C0006AC480001003D20FF0061290240A00934 +S31AFE01284E00007C0006AC7000FFFB5400043EB00900007C000607 +S31AFE012863AC480000DC3D20FF0061290220A00900007C0006ACAC +S31AFE0128787000FFF75400043EB00900007C0006AC480000B83D26 +S31AFE01288D20FF0061290220A00900007C0006AC7000FFFB5400D1 +S31AFE0128A2043EB00900007C0006AC480000943D20FF0061290928 +S31AFE0128B740800900007C0006AC5400066E900900007C0006AC81 +S31AFE0128CC480000743D20FF0061290948816900007C0006AC39AE +S31AFE0128E148FFE53C0080007C0054307D6B0078916900007C001F +S31AFE0128F606AC480000483D20000083C93DF84800003C394100AA +S31AFE01290B083800000039210090396000039121007498010071BC +S31AFE01292099610070914100783D200000800A000883C93DEC90F5 +S31AFE012935093DEC480000084BFFF9797FC3F3788001008C7C080C +S31AFE01294A03A683C1008083E10084382100884E8000209421FF9B +S31AFE01295FE07C0802A693A1001493C1001893E1001C9001002459 +S31AFE0129747C7D1B787C9F23787CA32B784BFF7E3D380000009078 +S31AFE0129891F00007FA3EB78388100084BFFF7AD2C0300004182EF +S31AFE01299E0018880100082C0000034082000C38000001901F0091 +S31AFE0129B30038600001800100247C0803A683A1001483C100180B +S31AFE0129C883E1001C382100204E8000209421FFE87C0802A693B3 +S31AFE0129DD81000893A1000C93C1001093E100149001001C3FA09F +S31AFE0129F200003BBD3200813D00343860FFFF7D2803A64E8000FD +S31AFE012A0721801D00347C7C1B78386000007C0803A64E80002184 +S31AFE012A1C7F83E3788001001C7C0803A68381000883A1000C83BA +S31AFE012A31C1001083E10014382100184E8000209421FFF87C08B3 +S31AFE012A4602A69001000C3D20000039293200800900347C0803FC +S31AFE012A5BA64E8000218001000C7C0803A6382100084E800020C3 +S31AFE012A709421FFE87C0802A693A1000C93C1001093E1001490C8 +S31AFE012A8501001C3FA000003BBD3200817D00343D200000806999 +S31AFE012A9A44887D6803A63D20000038000000900943F44E800095 +S31AFE012AAF21801D00303D2000008069448C7C0803A64E800021ED +S31AFE012AC43D20000038000001900944108001001C7C0803A68328 +S31AFE012AD9A1000C83C1001083E10014382100184E800020942156 +S31AFE012AEEFFE87C0802A693A1000C93C1001093E10014900100FE +S31AFE012B031C3FA000003BBD3200811D00343860FFFF7D0803A6FD +S31AFE012B183D400000392000013D60000038000000912A43F49075 +S31AFE012B2D0B44104E8000213D20000090694488813D0034386094 +S31AFE012B4200017D2803A64E800021813D00303860FFFF7D28030F +S31AFE012B57A64E8000213D200000801D00309069448C3860000143 +S31AFE012B6C7C0803A64E8000218001001C7C0803A683A1000C83B6 +S31AFE012B81C1001083E10014382100184E8000209421FFE87C0872 +S31AFE012B9602A69381000893A1000C93C1001093E10014900100A4 +S31AFE012BAB1C3FC0000083FE3E002C1F0000408200A83FA00000A2 +S31AFE012BC03BBD3200813D00343860FFFF7D2803A64E800021818B +S31AFE012BD53D00347C7C1B78386000017D2803A64E800021815D36 +S31AFE012BEA00143D20FE0139292478912A00043D60FE01396B2440 +S31AFE012BFFD43D20FE01916A0008392923A4912A000C3D60FE01FD +S31AFE012C14396B224C3D20FE01916A0010392925A0912A00143DFA +S31AFE012C2960FE01396B295C3D20FE01916A001839292530912A28 +S31AFE012C3E001C801D00347F83E3787C0803A64E800021380000DE +S31AFE012C53013D200000901E3E0093E9441C3D2000003FA0000104 +S31AFE012C68A0894406387D22184BFFC6F93BBD2218801D00043DD7 +S31AFE012C7D200000900944848001001C7C0803A68381000883A1C2 +S31AFE012C92000C83C1001083E10014382100184E8000209421FF3D +S31AFE012CA7F07C0802A693E1000C900100143D2000008009442088 +S31AFE012CBC2C000000418200904BFFC6813D2000013BE922183DF5 +S31AFE012CD1200000817F0004800944847C005800418200602C0B46 +S31AFE012CE60004408200484BFFFE013C6000013D200001392928F8 +S31AFE012CFBDC3C80000038C3285C3CA00000396000013940000DAC +S31AFE012D103D0000003CE000003800000090C4449091653DF09934 +S31AFE012D2543285C9128449490073DF4801F00042C0000004082E3 +S31AFE012D3A00084BFFFE553D2000018009221C3D600000900B4439 +S31AFE012D4F84800100147C0803A683E1000C382100104E8000205D +S31AFE012D649421FFE07C0802A69361000C9381001093A100149396 +S31AFE012D79C1001893E1001C900100243F8000003FA0000038004C +S31AFE012D8E0001392023283D6000003B600000901C4400913D444C +S31AFE012DA3043C60FE013BBD44043B9C4400386360E4388B445CDA +S31AFE012DB8936B445C38A000014BFEFBC53C60FE017FA4EB783828 +S31AFE012DCD6360BC38A000024BFEFBB13C60FE01386361147F84F0 +S31AFE012DE2E37838A000014BFEFB9D3C60FE013C8000003863616F +S31AFE012DF73038843D9838A000054BFEFB853C60FE013C80000103 +S31AFE012E0C3863615838842DC438A000054BFEFB6D3D200000932D +S31AFE012E216944204BFFD4CD4BFFB6913D6000003D2000003929F2 +S31AFE012E3641183BAB41087C1D48004182003C7D3B4B783B8000E4 +S31AFE012E4B01813D00047FA3EB787D2803A64E8000217C631B7975 +S31AFE012E604182000C939D000C48000008907D000C3BBD00107C60 +S31AFE012E751DD8004082FFD43D200000800944602C000000408241 +S31AFE012E8A00143C60FE01386363784BFF9519480000903D2000DC +S31AFE012E9F00800944002C000000418200283C60000138632DB020 +S31AFE012EB4480001092C030000418200143C60FE01386363984B30 +S31AFE012EC9FF94E5480000103D20000038000001900944203D202F +S31AFE012EDE0000800944202C000000418200403C60000038633D4A +S31AFE012EF3984BFFD3397C641B783C60FE01386363C44BFF94A980 +S31AFE012F083C60000138632DC44BFFD31D7C641B783C60FE013806 +S31AFE012F1D6363CC4BFF948D4BFFFC6D800100247C0803A6836134 +S31AFE012F32000C8381001083A1001483C1001883E1001C382100F8 +S31AFE012F47204E8000209421FFF07C0802A693E1000C900100146D +S31AFE012F5C3D200000806944987C9F23782C030000418200084B3E +S31AFE012F71FF826D881F00002C0000024082002C3C80000038841D +S31AFE012F864454387F001C38A000064BFF969D2C0300004082007A +S31AFE012F9B10801F00103D20000090093D98800100147C0803A6D0 +S31AFE012FB083E1000C382100104E8000209421FE887C0802A69346 +S31AFE012FC521015C93410160936101649381016893A1016C93C174 +S31AFE012FDA017093E101749001017C3D20000090694498386100AA +S31AFE012FEF187C791B783880000038A0012C4BFF82B93D20000089 +S31AFE0130048089445439694454A06B00043D201234394000003C70 +S31AFE013019E0000038C00001612955553960000639073D9898C183 +S31AFE01302E00199961001A9121001C99473D9899480003380000BC +S31AFE013043FF90810034B06100389801015198C1001899480001A8 +S31AFE013058994800023CA0FE017D1D437838A52F4C980101489879 +S31AFE01306D0101499801014A9801014B9801014C9801014D9801CF +S31AFE013082014E9801014F9801015038610008388000444BFFEA41 +S31AFE013097D53B8000023B4101483F6000004BFFA86D7C7E1B783D +S31AFE0130AC7F23CB783880012C7F45D37838C0004338E000444B4F +S31AFE0130C1FFEC494BFFB639881B3D982C00000040820028881D55 +S31AFE0130D600012C0000004082001C881D00022C00000040820040 +S31AFE0130EB108BFD00032C1F000041820014386000444BFFEABD41 +S31AFE01310038600000480000384BFFA7C57C7E1850280307CF4044 +S31AFE01311581FFB07F80E3782C0000003B9CFFFF4181FF8038603C +S31AFE01312A00444BFFEA8D3D20000093E9445C3860FFFF800101F5 +S31AFE01313F7C7C0803A68321015C834101608361016483810168F1 +S31AFE01315483A1016C83C1017083E10174382101784E8000200181 +S31AFE013169FF91B49421FFD07C0802A69301001093210014934118 +S31AFE01317E00189361001C9381002093A1002493C1002893E10093 +S31AFE0131932C90010034480000057FC802A6801EFFCC7FC0F21447 +S31AFE0131A82C0300003B000000408000247D0400D07D2300D031CD +S31AFE0131BD48FFFF7C0A41107CE048507CE33B787D0443783B005E +S31AFE0131D2FFFF2C050000408000247D8600D07D2500D0314CFF0F +S31AFE0131E7FF7C0A61107D6048507D655B787D8663787F18C0F881 +S31AFE0131FC7CAA2B797C7F1B787CC833787C9D2378408202FC7C82 +S31AFE01321108F8404081011839600000616BFFFF7C0858407CC9C5 +S31AFE013226337841810014200800FF7C0001105405073848000079 +S31AFE01323B1C3C0000FF6000FFFF7C0800107C000110540006F851 +S31AFE01325060050010817E80007D292C307C0B48AE7C002A142017 +S31AFE013265A000202C0500004182001C200500207FA004307FE97F +S31AFE01327A28307D3F03787FBD28307D082830550A843E7C1F532B +S31AFE01328F967D6051D67C0703785506043E7C6731D67D2BF85016 +S31AFE0132A45529801E57A0843E7D2903787C091840408000247DDC +S31AFE0132B92942147C09404038E7FFFF418000147C0918404080E8 +S31AFE0132CE000C38E7FFFF7D2942147D2348507C0953967D6051ED +S31AFE0132E3D67C0A03787C6A31D67C0B48505409801E57A0043EBA +S31AFE0132F87D2003787C001840408000207C0042147C00404039E9 +S31AFE01330D4AFFFF418000107C00184040800008394AFFFF54E03C +S31AFE013322801E7C055378480003CC2C0800004082000C38000056 +S31AFE013337017D005396380000006000FFFF7C0800407D0943787A +S31AFE01334C41810014200800FF7C000110540A07384800001C3CA0 +S31AFE0133610000FF6000FFFF7C0800107C000110540006F8600A18 +S31AFE0133760010817E80007D2954307C0B48AE7C00521420A00065 +S31AFE01338B202C050000408200107FE8F85038800001480000C88D +S31AFE0133A020E500207FA93C307FEC3C307FE028307C1F4B787FEF +S31AFE0133B5BD28307D082830550A843E7C0C53967D6051D67C06F4 +S31AFE0133CA03785505043E7CE629D67D2B60505529801E57E08442 +S31AFE0133DF3E7D2903787C093840408000247D2942147C09404093 +S31AFE0133F438C6FFFF418000147C0938404080000C38C6FFFF7DAC +S31AFE0134092942147D2748507C0953967D6051D67C0A03787CEA15 +S31AFE01341E29D67D2B48505529801E57E0043E7D2903787C0938E2 +S31AFE01343340408000247D2942147C094040394AFFFF4180001404 +S31AFE0134487C0938404080000C394AFFFF7D29421454C0801E7CF6 +S31AFE01345D0453787FE74850550A843E7C1F53967D6051D67C075C +S31AFE01347203785506043E7C6731D67D2BF8505529801E57A084B7 +S31AFE0134873E7D2903787C091840408000247D2942147C0940400A +S31AFE01349C38E7FFFF418000147C0918404080000C38E7FFFF7DE1 +S31AFE0134B12942147D2348507C0953967D6051D67C0A03787C6AF1 +S31AFE0134C631D67C0B48505409801E57A0043E7D2003787C0018E6 +S31AFE0134DB40408000207C0042147C004040394AFFFF4180001097 +S31AFE0134F07C00184040800008394AFFFF54E0801E7C055378483F +S31AFE0135050001F47C0AF8404081000C38A00000480001E0396092 +S31AFE01351A0000616BFFFF7C0A58407D49537841810014200A001E +S31AFE01352FFF7C000110540707384800001C3C0000FF6000FFFF5F +S31AFE0135447C0A00107C000110540006F860070010817E80007D85 +S31AFE013559293C307C0B48AE7C003A1420A000202C0500004082A9 +S31AFE01356E00307D3F50107D2949107D2900D07C08E810380000CE +S31AFE013583007C0001147D2A037938A000004182016438A00001A1 +S31AFE0135984800015C20E500207FAB3C307D093C307FEC3C307D73 +S31AFE0135AD4A28307FE028307C1F5B787D4A4B787FBD28307D089A +S31AFE0135C228305547843E7C0C3B967D6039D67C0503785544045B +S31AFE0135D73E7CC521D67D2B60505529801E57E0843E7D290378D6 +S31AFE0135EC7C093040408000247D2952147C09504038A5FFFF41AF +S31AFE0136018000147C0930404080000C38A5FFFF7D2952147D26D0 +S31AFE01361648507C093B967D6039D67C0703787CC721D67C6B4859 +S31AFE01362B505469801E57E0043E7D2303787C0330404080002473 +S31AFE0136407C6352147C03504038E7FFFF418000147C03304040FB +S31AFE01365580000C7C63521438E7FFFF54A0801E7C6618507C0510 +S31AFE01366A3B7854AB043E550A043E7CEB51D65508843E54A98483 +S31AFE01367F3E7D6B41D67D4951D67D2941D654E0843E7D6B021456 +S31AFE0136947D6B52147D4A58107D4A51107D4A53B83C0900017CE3 +S31AFE0136A90050787D295038556A801E7D290378556B843E7C098C +S31AFE0136BE5A1454E7043E7D2A3A147C001840418100247D29E8CA +S31AFE0136D3107D2949107D2900D07C001A78216000007C0B01142D +S31AFE0136E87C0A48394182000838A5FFFF388000007CBA2B782C5E +S31AFE0136FD1800007C9923787F23CB787F44D378418200207F8412 +S31AFE01371200D07D2300D0317CFFFF7C0BE1107F6048507F63DB06 +S31AFE013727787F84E378800100347C0803A6830100108321001484 +S31AFE01373C834100188361001C8381002083A1002483C10028833C +S310FE013751E1002C382100304E800020E4 +S31AFE0137604E6574776F726B20686172647761726520616464723C +S31AFE013775657373205B4D41435D000071756963635F6573610099 +S31AFE01378A0000657468300000000071756963635F6574680000FF +S31AFE01379F0051554943432045746865726E65743A204E6F20669F +S31AFE0137B472656520786D697420627566666572730A0000004C7A +S31AFE0137C96F616420612066696C65006C6F616400000000454C40 +S31AFE0137DE4620696D61676573206E6F7420737570706F727465E2 +S31AFE0137F3640A000000496E76616C696420532D7265636F726468 +S31AFE013808206174206F66667365742025702C20696E7075743A9F +S31AFE01381D2025630A00000042616420532D7265636F7264206336 +S31AFE0138326F756E74206174206F66667365742025700A0000005B +S31AFE0138470041646472657373206F6666736574203D2025700ADE +S31AFE01385C00000000417474656D707420746F206C6F616420533D +S31AFE0138712D7265636F7264206461746120746F206164647265B4 +S31AFE01388673733A202570205B6E6F7420696E2052414D5D0A0029 +S31AFE01389B002A2A2A205761726E696E672120436865636B737598 +S31AFE0138B06D206661696C757265202D20416464723A20256C783E +S31AFE0138C52C202530326C58203C3E202530326C580A0000456E90 +S31AFE0138DA74727920706F696E743A2025702C206164647265737D +S31AFE0138EF732072616E67653A2025702D25700A0000496E7661D6 +S31AFE0139046C696420532D7265636F7264206174206F6666736529 +S31AFE01391974203078256C782C20747970653A2025780A00000040 +S31AFE01392E0000FFFF1D0CFFFF1B5CFFFF1B5CFFFF1B5CFFFF1CDF +S31AFE013943F4FFFF1CF4FFFF1CF4FFFF1CA8FFFF1CA8FFFF1CA814 +S31AFE013958256308000A000000766572626F7365006C6F61642005 +S31AFE01396D72617720646174610000006C6F61642061646472657C +S31AFE013982737300000000646F776E6C6F6164206D6F64652028E0 +S31AFE01399754465450206F722078797A4D4F44454D2900000000B1 +S31AFE0139AC686F7374206E616D652028495020616464726573739B +S31AFE0139C129000066696C65206E616D65000000496E76616C69FF +S31AFE0139D66420495020616464726573733A2025730A006D6F6478 +S31AFE0139EB656D000000496E76616C696420276D6F6465273A20BC +S31AFE013A0025730A00746674700000000054465450206D6F646549 +S31AFE013A15207265717569726573206120776F726B696E67206ED7 +S31AFE013A2A6574776F726B0A00000046696C65206E616D65206D0E +S31AFE013A3F697373696E670A000075736167653A206C6F616420A7 +S31AFE013A5425730A00537065636966696564206164647265737324 +S31AFE013A692028257029206973206E6F7420696E2052414D2E0AA1 +S31AFE013A7E000043616E2774206C6F616420272573273A202573C9 +S31AFE013A930A00000000526177206C6F6164207265717569726508 +S31AFE013AA8732061206D656D6F727920616464726573730A0052F5 +S31AFE013ABD61772066696C65206C6F616465642025702D25700A4D +S31AFE013AD20000454C4600556E7265636F676E697A656420696D20 +S31AFE013AE761676520747970653A20256C780A0000005B2D765DEE +S31AFE013AFC205B2D6E203C636F756E743E5D205B2D6C203C6C6539 +S31AFE013B116E6774683E5D205B2D74203C74696D656F75743E5D34 +S31AFE013B26205B2D72203C726174653E5D0A2020202020202020BE +S31AFE013B3B5B2D69203C49505F616464723E5D202D68203C49504B +S31AFE013B505F616464723E00004E6574776F726B20636F6E6E6506 +S31AFE013B6563746976697479207465737400000070696E670000AC +S31AFE013B7A00003C636F756E743E202D206E756D626572206F66A3 +S31AFE013B8F207061636B65747320746F2074657374003C74696DA8 +S31AFE013BA4656F75743E202D206D617820236D732070657220703F +S31AFE013BB961636B6574205B726F756E7420747269705D006C6F20 +S31AFE013BCE63616C204950206164647265737300000000686F73A4 +S31AFE013BE3742049502061646472657373003C6C656E6774683E99 +S31AFE013BF8202D2073697A65206F66207061796C6F616400007616 +S31AFE013C0D6572626F7365206F7065726174696F6E0000003C727E +S31AFE013C226174653E202D2074696D65206265747765656E20705A +S31AFE013C3761636B6574730000000000000050494E47202D204914 +S31AFE013C4C6E76616C6964206F7074696F6E207370656369666924 +S31AFE013C6165640A0000000050494E47202D20496E76616C696414 +S31AFE013C7620495020616464726573733A2025730A000050494E92 +S31AFE013C8B473A2043616E27742066696E6420616464726573730A +S31AFE013CA0206F662073657276657220272573270A0000000050FE +S31AFE013CB5494E47202D20686F737420495020616464726573732D +S31AFE013CCA2072657175697265640A00000000496E76616C69648E +S31AFE013CDF206C656E677468207370656369666965643A2025647A +S31AFE013CF40A0000004E6574776F726B2050494E47202D2066722F +S31AFE013D096F6D202573000020746F2025730A0069636D70202D51 +S31AFE013D1E207365713A20256C642C2074696D653A20256C642069 +S31AFE013D33287469636B73290A0050494E47202D2072656365695A +S31AFE013D4876656420256C64206F6620256C64206578706563745A +S31AFE013D5D65640A00000000000000007B636D64737D00004D612C +S31AFE013D726E61676520464C41534820696D616765730066697336 +S31AFE013D87005B2D6C5D000000004D616E61676520636F6E666959 +S31AFE013D9C6775726174696F6E206B65707420696E20464C415393 +S31AFE013DB148206D656D6F727900000066636F6E666967005B2D93 +S31AFE013DC6665D00000000496E697469616C697A6520464C4153C8 +S31AFE013DDB4820496D6167652053797374656D205B4649535D0024 +S31AFE013DF0696E6974000000005B2D635D00000000446973706CC1 +S31AFE013E05617920636F6E74656E7473206F6620464C4153482098 +S31AFE013E1A496D6167652053797374656D205B4649535D0000004C +S31AFE013E2F006C6973740000000000000000446973706C617920C7 +S31AFE013E4466726565205B617661696C61626C655D206C6F63618A +S31AFE013E5974696F6E732077697468696E20464C41534820496D0B +S31AFE013E6E6167652053797374656D205B4649535D000066726571 +S31AFE013E8365000000002D66203C666C6173685F616464723E206B +S31AFE013E982D6C203C6C656E6774683E00457261736520464C4178 +S31AFE013EAD534820636F6E74656E747300000000657261736500C2 +S31AFE013EC200006E616D6500000000446973706C617920616E2060 +S31AFE013ED7696D6167652066726F6D20464C41534820496D6167CE +S31AFE013EEC652053797374656D205B4649535D000064656C6574EA +S31AFE013F016500005B2D62203C6D656D6F72795F6C6F61645F61A3 +S31AFE013F166464726573733E5D205B2D635D206E616D6500000048 +S31AFE013F2B004C6F616420696D6167652066726F6D20464C4153BF +S31AFE013F404820496D6167652053797374656D205B4649535D209D +S31AFE013F55696E746F2052414D0000006C6F6164000000002D6269 +S31AFE013F6A203C6D656D5F626173653E202D6C203C696D61676552 +S31AFE013F7F5F6C656E6774683E205B2D73203C646174615F6C65C8 +S31AFE013F946E6774683E5D0A2020202020205B2D66203C666C6180 +S31AFE013FA973685F616464723E5D205B2D65203C656E7472795F94 +S31AFE013FBE706F696E743E5D205B2D72203C72616D5F6164647274 +S31AFE013FD33E5D205B2D6E5D203C6E616D653E0000004372656110 +S31AFE013FE8746520616E20696D6167650063726561746500002A36 +S31AFE013FFD2A2A20696E76616C696420276669732720636F6D6DD3 +S31AFE014012616E643A2025730A0000666973200000000066756CBC +S31AFE0140276C20696E697469616C697A6174696F6E2C2065726187 +S31AFE01403C73657320616C6C206F6620666C617368000000004162 +S31AFE014051626F757420746F20696E697469616C697A65205B6665 +S31AFE0140666F726D61745D20464C41534820696D61676520737903 +S31AFE01407B7374656D002A2A2041626F727465640A002A2A2A2095 +S31AFE014090496E697469616C697A6520464C41534820496D6167D8 +S31AFE0140A5652053797374656D0A0000526564426F6F7400526587 +S31AFE0140BA64426F6F745B6261636B75705D00526564426F6F7417 +S31AFE0140CF20636F6E6669670000464953206469726563746F72E3 +S31AFE0140E479000000202020696E697469616C697A6174696F6E01 +S31AFE0140F9206661696C65642025703A2030782578282573290AE1 +S31AFE01410E0000202020205761726E696E673A2064657669636577 +S31AFE01412320636F6E74656E7473206E6F74206572617365642CC3 +S31AFE01413820736F6D6520626C6F636B73206D6179206E6F742003 +S31AFE01414D626520757361626C650A004572726F722077726974FB +S31AFE014162696E6720696D6167652064657363726970746F727310 +S31AFE0141772061742025703A2030782578282573290A00000000F2 +S31AFE01418C646973706C617920636865636B73756D730000004EEF +S31AFE0141A1616D652020202020202020202020202020464C4153EB +S31AFE0141B64820616464722020202573202020204C656E67746812 +S31AFE0141CB202020202020456E74727920706F696E740A000000B4 +S31AFE0141E0436865636B73756D000000004D656D206164647200B8 +S31AFE0141F5000000252D313673202030782530386C5820202030BB +S31AFE01420A782530386C58202030782530386C582020307825305B +S31AFE01421F386C580A00202030782530386C58202E2E20307825DD +S31AFE01423430386C580A0000006D656D6F72792062617365206165 +S31AFE0142496464726573730072616D2062617365206164647265BB +S31AFE01425E737300000000656E74727920706F696E74206164649B +S31AFE0142737265737300464C415348206D656D6F727920626173F7 +S31AFE014288652061646472657373000000696D616765206C656E4F +S31AFE01429D677468205B696E20464C4153485D00696D6167652064 +S31AFE0142B273697A65205B61637475616C20646174615D0000002B +S31AFE0142C700646F6E277420636F70792066726F6D2052414D2032 +S31AFE0142DC746F20464C4153482C206A75737420757064617465A2 +S31AFE0142F1206469726563746F72790066696C65206E616D65005D +S31AFE0143060000696E76616C696420617267756D656E74730000C0 +S31AFE01431B00726571756972656420706172616D65746572206DB9 +S31AFE014330697373696E670000496E76616C696420464C41534891 +S31AFE01434520696D6167652073697A652F6C656E67746820636FBD +S31AFE01435A6D62696E6174696F6E0A00000000496E76616C6964B7 +S31AFE01436F20464C41534820616464726573733A20257020282544 +S31AFE01438473290A0020202076616C69642072616E6765206973E0 +S31AFE0143992025702D25700A000000004E616D6520697320746F09 +S31AFE0143AE6F206C6F6E672C206D757374206265206C65737320C3 +S31AFE0143C37468616E2025642063686172730A0000002A2A205786 +S31AFE0143D841524E494E473A2052414D20616464726573733A2072 +S31AFE0143ED2570206D617920626520696E76616C69640A0043611E +S31AFE0144026E2774206C6F6361746520256C642062797465732083 +S31AFE0144176672656520696E20464C4153480A000000496D6167DC +S31AFE01442C6520666F756E642C2062757420464C415348206164CB +S31AFE014441647265737320696E636F72726563740A000000496D97 +S31AFE01445661676520666F756E642C20627574204C454E4754486A +S31AFE01446B20697320696E636F727265637420283078256C782039 +S31AFE014480213D203078256C78290A0000416E20696D61676520CE +S31AFE0144956E616D6564202725732720657869737473000043619E +S31AFE0144AA6E27742070726F6772616D2074686973207265676938 +S31AFE0144BF6F6E202D20636F6E7461696E7320636F646520696E88 +S31AFE0144D420757365210A000043616E27742065726173652072C7 +S31AFE0144E96567696F6E2061742025703A20307825782825732975 +S31AFE0144FE0A0043616E27742070726F6772616D20726567696F9F +S31AFE0145136E2061742025703A2030782578282573290A000000E4 +S31AFE0145284572726F722065726173696E672061742025703A2062 +S31AFE01453D30782578282573290A00004572726F722070726F674A +S31AFE01455272616D6D696E672061742025703A20307825782825CE +S31AFE01456773290A00006C656E67746800006D697373696E6720F8 +S31AFE01457C617267756D656E740000000043616E277420657261BD +S31AFE0145917365207468697320726567696F6E202D20636F6E749B +S31AFE0145A661696E7320636F646520696E20757365210A00000006 +S31AFE0145BB00696D616765206E616D65000044656C657465206946 +S31AFE0145D06D61676520272573270000004E6F20696D6167652031 +S31AFE0145E52725732720666F756E640A000000006D656D6F7279F7 +S31AFE0145FA205B6C6F61645D20626173652061646472657373006E +S31AFE01460F00646973706C617920636865636B73756D0000000028 +S31AFE0146244E6F742061206C6F616461626C6520696D6167650A49 +S31AFE014639000000436865636B73756D3A2030782530386C780AB7 +S31AFE01464E00002A2A205761726E696E67202D20636865636B732A +S31AFE014663756D206661696C7572652E202073746F7265643A20FA +S31AFE01467830782530386C782C20636F6D70757465643A20307860 +S31AFE01468D2530386C780A00464C4153483A206472697665722024 +S31AFE0146A2696E6974206661696C6564212C207374617475733A7A +S31AFE0146B720307825780A000000464C4153483A202570202D20B0 +S31AFE0146CC25702C20256420626C6F636B73206F662025702062A0 +S31AFE0146E17974657320656163682E0A00000000746F6F206665D4 +S31AFE0146F67720617267756D656E7473000000756E7265636F674A +S31AFE01470B6E697A656420636F6D6D616E640000000052756E2026 +S31AFE01472073637269707420617420626F6F740000626F6F745F0E +S31AFE01473573637269707400426F6F742073637269707400626FBB +S31AFE01474A6F745F7363726970745F6461746100000000426F6F65 +S31AFE01475F74207363726970742074696D656F7574202831303017 +S31AFE014774306D73207265736F6C7574696F6E2900626F6F745F6B +S31AFE0147897363726970745F74696D656F75740025733A20000029 +S31AFE01479E000025732000747275650000000066616C736500007E +S31AFE0147B300256C64200000000030782530325800003A00000016 +S31AFE0147C8200000003F3F00000A0000002E2E2025730A000045CC +S31AFE0147DD6E746572207363726970742C207465726D696E6174A4 +S31AFE0147F265207769746820656D707479206C696E650A0000004B +S31AFE014807003E3E200000000000FFFEE738FFFEE75CFFFEE7D8E3 +S31AFE01481CFFFEE7E4FFFEE770FFFEE78CFFFEE8E4FFFEE910FF38 +S31AFE014831FEEA7CFFFEE9CCFFFEE940FFFEE968FFFEE5E8FFFE1C +S31AFE014846E5E8FFFEE5F8FFFEE600FFFEE5E8FFFEE5F06C6973EA +S31AFE01485B7420636F6E66696775726174696F6E206F6E6C790055 +S31AFE0148702A2A20696E76616C696420656E7472790A0000000077 +S31AFE014885000000FFFEE4E4FFFEE53CFFFEE4FCFFFEE500FFFE7A +S31AFE01489AE508FFFEE51455706461746520526564426F6F7420CF +S31AFE0148AF6E6F6E2D766F6C6174696C6520636F6E66696775729A +S31AFE0148C46174696F6E0000004572726F722077726974696E6791 +S31AFE0148D920636F6E66696720646174612061742025703A203041 +S31AFE0148EE782578282573290A00005265717565737420666F7258 +S31AFE01490320636F6E6669672076616C75652027257327202D2054 +S31AFE01491877726F6E6720747970650A0043616E27742066696E62 +S31AFE01492D6420636F6E666967206461746120666F722027257376 +S31AFE014942270A00000000FFFEE108FFFEE108FFFEE140FFFEE162 +S31AFE01495728FFFEE108FFFEE1144E6F20737061636520746F203A +S31AFE01496C61646420272573270A000000FFFEDF24FFFEDF24FFF9 +S31AFE014981FEDF40FFFEDF40FFFEDF24FFFEDF30464C4153482049 +S31AFE014996636F6E66696775726174696F6E20636865636B737589 +S31AFE0149AB6D206572726F72206F7220696E76616C6964206B6543 +S31AFE0149C0790A000000000000FFFF1B04FFFF1B04FFFF1B04FF04 +S31AFE0149D5FF1B04FFFF1B04FFFF1B04FFFF1B04FFFF1B04FFFF38 +S31AFE0149EA1B04FFFF1B04FFFF1B04FFFF1B04FFFF1B04FFFF1B07 +S31AFE0149FF04FFFF1B04FFFF1B04FFFF1B24FFFF1B44FFFF1B6449 +S31AFE014A14FFFF1B84FFFF1BA4FFFF1C08FFFF1C08FFFF1C08FFC9 +S31AFE014A29FF1C08FFFF1BC4FFFF1BE4FFFF1BE4FFFF1BE4FFFF7E +S31AFE014A3E1BE4FFFF1BE4FFFF1BE4FFFF1BE4FFFF1BE4FFFF1B52 +S31AFE014A53E4FFFF1BE4FFFF1BE4FFFF1BE4FFFF1BE4FFFF1BE474 +S31AFE014A68FFFF1BE4FFFF1BE4FFFF1BE4FFFF1BE4FFFF1BE4FF44 +S31AFE014A7DFF1BE4FFFF1BE4FFFF1BE4FFFF1BE4FFFF1BE4FFFF2F +S31AFE014A921BE4FFFF1BE4FFFF1BE4FFFF1BE4FFFF1BE4FFFF1BFE +S31AFE014AA7E4FFFF1BE4FFFF1BE4FFFF1BC4FFFF1BC4FFFF1BC480 +S31AFE014ABCFFFF1BC4FFFF1BC4FFFF1BC4FFFF1BC4FFFF1BC4FF90 +S31AFE014AD1FF1BC4FFFF1BC4FFFF1BC4FFFF1BC4FFFF1BC4FFFF7B +S31AFE014AE61BC4FFFF1BC4FFFF1BC4FFFF1B3CFFFF1B3CFFFF1B5A +S31AFE014AFB60FFFF1B84FFFF1B84FFFF1BC4FFFF1BC4FFFF1BC470 +S31AFE014B10FFFF1BC4FFFF1BA8FFFF1BC4FFFF1BC4FFFF1BC4FF57 +S31AFE014B25FF1BC4FFFF1BC4FFFF1BC4FFFF1BC4FFFF1BC4FFFF26 +S31AFE014B3A1BC4FFFF1BC4FFFF1BC4FFFF1BC4FFFF1BC4FFFF1BF5 +S31AFE014B4FC4FFFF1BC4FFFF1BC4FFFF1BC4FFFF1BC4FFFF1BC437 +S31AFE014B64FFFF1BC4FFFF1BC4FFFF1BC4FFFF1BC4FFFF1BC4FFE7 +S31AFE014B79FF1BC4FFFF1BC4FFFF1BC4FFFF1BC4FFFF1BC4FFFFD2 +S31AFE014B8E1BC4FFFF1BC4FFFF1BC4FFFF1AF8FFFF1AF8FFFF1A3C +S31AFE014BA3F8FFFF1AF8FFFF1AF8FFFF1AF8FFFF1AF8FFFF1AF8B0 +S31AFE014BB8FFFF1AF8FFFF1AF8FFFF1AF8FFFF1AF8FFFF1AF8FF94 +S31AFE014BCDFF1AF8FFFF1AF8FFFF1AF8FFFF1B18FFFF1B38FFFF1D +S31AFE014BE21B58FFFF1B78FFFF1B98FFFF1BFCFFFF1BFCFFFF1BC1 +S31AFE014BF7FCFFFF1BFCFFFF1BB8FFFF1BD8FFFF1BD8FFFF1BD8EF +S31AFE014C0CFFFF1BD8FFFF1BD8FFFF1BD8FFFF1BD8FFFF1BD8FFDA +S31AFE014C21FF1BD8FFFF1BD8FFFF1BD8FFFF1BD8FFFF1BD8FFFFC5 +S31AFE014C361BD8FFFF1BD8FFFF1BD8FFFF1BD8FFFF1BD8FFFF1B94 +S31AFE014C4BD8FFFF1BD8FFFF1BD8FFFF1BD8FFFF1BD8FFFF1BD8C2 +S31AFE014C60FFFF1BD8FFFF1BD8FFFF1BD8FFFF1BD8FFFF1BD8FF86 +S31AFE014C75FF1BD8FFFF1BD8FFFF1BD83031323334353637383944 +S31AFE014C8A6162636465660000000000000000503031004F4B0070 +S31AFE014C9F0045303100453033004530320042303100FFFF32E44F +S31AFE014CB4FFFF3B5CFFFF3388FFFF3A14FFFF385CFFFF3B5CFF26 +S31AFE014CC9FF3B5CFFFF3B5CFFFF3514FFFF39E4FFFF3B5CFFFFB1 +S31AFE014CDE3B5CFFFF3B5CFFFF3B5CFFFF3610FFFF3B5CFFFF3BE9 +S31AFE014CF35CFFFF3514FFFF336CFFFF3B5CFFFF385CFFFF39FC0D +S31AFE014D08FFFF3B5CFFFF3B5CFFFF3B5CFFFF360CFFFF3B5CFFFE +S31AFE014D1DFF3B5CFFFF3B5CFFFF3B5CFFFF3B5CFFFF3B5CFFFF94 +S31AFE014D323B5CFFFF3B5CFFFF3B5CFFFF3AE8FFFF385CFFFF33C3 +S31AFE014D4728FFFF3B5CFFFF3B5CFFFF3378FFFF3B5CFFFF3B5C2D +S31AFE014D5CFFFF3B5CFFFF39C0FFFF3B5CFFFF3528FFFF3B5CFF2D +S31AFE014D71FF3B5CFFFF3B5CFFFF3360FFFF39DCFFFF385C0000C7 +S31AFE014D86000030313233343536373839616263646566000000B1 +S31AFE014D9B0000000000FFFF5708FFFF5708FFFF5708FFFF57088A +S31AFE014DB0FFFF5708FFFF5708FFFF5708FFFF5708FFFF5708FF19 +S31AFE014DC5FF5708FFFF5708FFFF5708FFFF5708FFFF5708FFFF04 +S31AFE014DDA5708FFFF5708FFFF5648FFFF5648FFFF567CFFFF56A7 +S31AFE014DEFB0FFFF56B0FFFF5708FFFF5708FFFF5708FFFF570882 +S31AFE014E04FFFF56E4FFFF5708FFFF5708FFFF5708FFFF5708FFE9 +S31AFE014E19FF5708FFFF5708FFFF5708FFFF5708FFFF5708FFFFAF +S31AFE014E2E5708FFFF5708FFFF5708FFFF5708FFFF5708FFFF5742 +S31AFE014E4308FFFF5708FFFF5708FFFF5708FFFF5708FFFF57087C +S31AFE014E58FFFF5708FFFF5708FFFF5708FFFF5708FFFF5708FF70 +S31AFE014E6DFF5708FFFF5708FFFF5708FFFF5708FFFF5708FFFF5B +S31AFE014E825708FFFF5708FFFF56BCFFFF56BCFFFF56BCFFFF56D6 +S31AFE014E97BCFFFF56BCFFFF56BCFFFF56BCFFFF56BCFFFF56BCF5 +S31AFE014EACFFFF56BCFFFF56BCFFFF56BCFFFF56BCFFFF56BCFF9D +S31AFE014EC1FF56BCFFFF56BCFFFF56E4FFFF5708FFFF572CFFFFA2 +S31AFE014ED65750FFFF5774FFFF57E0FFFF57E0FFFF57E0FFFF575E +S31AFE014EEBE0FFFF5798FFFF57B8FFFF57B8FFFF57B8FFFF57B8AC +S31AFE014F00FFFF57B8FFFF57B8FFFF57B8FFFF57B8FFFF57B8FF57 +S31AFE014F15FF57B8FFFF57B8FFFF57B8FFFF57B8FFFF57B8FFFF42 +S31AFE014F2A57B8FFFF57B8FFFF57B8FFFF57B8FFFF57B8FFFF57D5 +S31AFE014F3FB8FFFF57B8FFFF57B8FFFF57B8FFFF57B8FFFF57B85F +S31AFE014F54FFFF57B8FFFF57B8FFFF57B8FFFF57B8FFFF57B8FF03 +S31AFE014F69FF57B8FFFF57B8FFFF5738FFFF5738FFFF5738FFFF6E +S31AFE014F7E5738FFFF5738FFFF5738FFFF5738FFFF5738FFFF5701 +S31AFE014F9338FFFF5738FFFF5738FFFF5738FFFF5738FFFF57380B +S31AFE014FA8FFFF5738FFFF5738FFFF5760FFFF5780FFFF57A0FF57 +S31AFE014FBDFF57C0FFFF57E0FFFF5848FFFF5848FFFF5848FFFFB7 +S31AFE014FD25848FFFF5800FFFF5820FFFF5820FFFF5820FFFF5817 +S31AFE014FE720FFFF5820FFFF5820FFFF5820FFFF5820FFFF582042 +S31AFE014FFCFFFF5820FFFF5820FFFF5820FFFF5820FFFF5820FF4E +S31AFE015011FF5820FFFF5820FFFF5820FFFF5820FFFF5820FFFF38 +S31AFE0150265820FFFF5820FFFF5820FFFF5820FFFF5820FFFF58CA +S31AFE01503B20FFFF5820FFFF5820FFFF5820FFFF5820FFFF5820ED +S31AFE015050FFFF5820FFFF5820FFFF57A0FFFF57A0FFFF57A0FF7C +S31AFE015065FF57A0FFFF57A0FFFF57A0FFFF57A0FFFF57A0FFFF69 +S31AFE01507A57A0FFFF57A0FFFF57A0FFFF57A0FFFF57A0FFFF57FC +S31AFE01508FA0FFFF57A0FFFF57A0FFFF57C8FFFF57E8FFFF5808C5 +S31AFE0150A4FFFF5828FFFF5848FFFF5890FFFF5890FFFF5890FF25 +S31AFE0150B9FF5890FFFF5890FFFF5868FFFF5868FFFF5868FFFFD8 +S31AFE0150CE5868FFFF5868FFFF5868FFFF5868FFFF5868FFFF58BA +S31AFE0150E368FFFF5868FFFF5868FFFF5868FFFF5868FFFF586895 +S31AFE0150F8FFFF5868FFFF5868FFFF5868FFFF5868FFFF5868FFE9 +S31AFE01510DFF5868FFFF5868FFFF5868FFFF5868FFFF5868FFFFD3 +S31AFE0151225868FFFF5868FFFF5868FFFF5868FFFF5868FFFF5865 +S31AFE01513768FFFF5868FFFF5868FFFF57ECFFFF5830FFFF57EC72 +S31AFE01514CFFFF5830FFFF57ECFFFF5830FFFF57ECFFFF5830FF36 +S31AFE015161FF57ECFFFF5830FFFF57ECFFFF5830FFFF57ECFFFF66 +S31AFE0151765830FFFF57ECFFFF5830FFFF5830FFFF5830FFFF586E +S31AFE01518B30FFFF5830FFFF5830FFFF5830FFFF5830FFFF58303C +S31AFE0151A0FFFF5830FFFF5830FFFF5830FFFF5830FFFF5830FF58 +S31AFE0151B5FF5830FFFF5830FFFF5830FFFF5830FFFF5830FFFF43 +S31AFE0151CA5830FFFF5830FFFF5830FFFF5830FFFF5830FFFF58D5 +S31AFE0151DF30FFFF5830FFFF5830FFFF5830FFFF5830FFFF5830E8 +S31AFE0151F4FFFF5830FFFF5830FFFF5830FFFF5830FFFF5830FF04 +S31AFE015209FF5830FFFF5830FFFF5830FFFF5830FFFF5830FFFFEE +S31AFE01521E5830FFFF5830FFFF5830FFFF5848FFFF5848FFFF5850 +S31AFE01523348FFFF5848FFFF5848FFFF5848FFFF5848FFFF584803 +S31AFE015248FFFF5848FFFF5848FFFF5848FFFF5848FFFF5848FF37 +S31AFE01525DFF5848FFFF5848FFFF5848FFFF5788FFFF5788FFFFA4 +S31AFE01527257BCFFFF57F0FFFF57F0FFFF5848FFFF5848FFFF58F3 +S31AFE01528748FFFF5848FFFF5824FFFF5848FFFF5848FFFF5848D3 +S31AFE01529CFFFF5848FFFF5848FFFF5848FFFF5848FFFF5848FFE3 +S31AFE0152B1FF5848FFFF5848FFFF5848FFFF5848FFFF5848FFFFCE +S31AFE0152C65848FFFF5848FFFF5848FFFF5848FFFF5848FFFF5860 +S31AFE0152DB48FFFF5848FFFF5848FFFF5848FFFF5848FFFF58485B +S31AFE0152F0FFFF5848FFFF5848FFFF5848FFFF5848FFFF5848FF8F +S31AFE015305FF5848FFFF5848FFFF584800000000446973706C6156 +S31AFE01531A7920526564426F6F742076657273696F6E20696E66AE +S31AFE01532F6F726D6174696F6E0076657273696F6E005B3C746F7B +S31AFE0153447069633E5D00000048656C702061626F7574206865C7 +S31AFE0153596C703F0000000068656C70000000005B2D77203C74A7 +S31AFE01536E696D656F75743E5D205B656E7472795D0000457865CB +S31AFE0153836375746520636F64652061742061206C6F6361746992 +S31AFE0153986F6E0000676F00002D62203C6C6F636174696F6E3EC6 +S31AFE0153AD205B2D6C203C6C656E6774683E5D00446973706C61FC +S31AFE0153C27920286865782064756D702920612072616E676520FE +S31AFE0153D76F66206D656D6F72790000000064756D700000000078 +S31AFE0153EC5B4F4E207C204F46465D00004D616E616765206D6184 +S31AFE0154016368696E65206361636865730000006361636865000F +S31AFE01541600005265736574207468652073797374656D00000053 +S31AFE01542B007265736574000000506C6174666F726D3A2025730D +S31AFE01544020282573292025730A0000004D6F746F726F6C61201A +S31AFE0154554D425800000000506F77657250432038363000436F46 +S31AFE01546A707972696768742028432920323030302C20323030AD +S31AFE01547F312C20526564204861742C20496E632E0A0A00000096 +S31AFE01549452414D3A2025702D25700A003D3D204578656375745B +S31AFE0154A9696E6720626F6F742073637269707420696E20256482 +S31AFE0154BE2E25303364207365636F6E6473202D20656E74657220 +S31AFE0154D3205E4320746F2061626F72740A00000000526564425C +S31AFE0154E86F6F743E200000002A2A204572726F723A20496C6C01 +S31AFE0154FD6567616C20636F6D6D616E643A20222573220A0000BD +S31AFE01551200006F6E00006F666600496E76616C69642063616359 +S31AFE0155276865206D6F64653A2025730A00636163686573203F16 +S31AFE01553C0A0000003C746F7069633E00496E76616C696420616A +S31AFE0155517267756D656E740A00000025730A2020202573202555 +S31AFE015566730A000000006261736520616464726573730000000D +S31AFE01557B006C656E677468000044756D702077686174205B6C43 +S31AFE0155906F636174696F6E5D3F0A0000776169742074696D65EA +S31AFE0155A56F7574000000007374617274696E6720616464726508 +S31AFE0155BA73730000000041626F757420746F2073746172742085 +S31AFE0155CF657865637574696F6E206174202570202D2061626FA5 +S31AFE0155E472742077697468205E432077697468696E20256420AE +S31AFE0155F97365636F6E64730A0000002E2E2E205265736574747E +S31AFE01560E696E672E00000A0000002121206F6F70732C20524506 +S31AFE015623534554206E6F7420776F726B696E67206F6E207468F6 +S31AFE015638697320706C6174666F726D0A000000003031323334F3 +S31AFE01564D35363738390000303132333435363738396162636499 +S31AFE01566265660000000030313233343536373839414243444507 +S31AFE015677460000000000000000FFFF68E0FFFF6A90FFFF6A909D +S31AFE01568CFFFF6A90FFFF6A90FFFF6A90FFFF6A90FFFF6A90FF2D +S31AFE0156A1FF6A90FFFF6A90FFFF6A90FFFF6A24FFFF68E0FFFF36 +S31AFE0156B66A90FFFF6A90FFFF6A90FFFF6A90FFFF6A90FFFF6A98 +S31AFE0156CB90FFFF6A90FFFF6A90FFFF6A90FFFF6A90FFFF6A905D +S31AFE0156E0FFFF68C0FFFF6A90FFFF6A90FFFF69B8FFFF6A90FF84 +S31AFE0156F5FF6A90FFFF6A90FFFF6A90FFFF68E0000000005E43CB +S31AFE01570A0A003078253038583A200000000025303258000000B5 +S31AFE01571F002020000020000000207C0000256300007C0A000066 +S31AFE015734202D2061726520796F7520737572652028792F6E29D3 +S31AFE0157493F2000556E62616C616E63656420737472696E672122 +S31AFE01575E0A00416D626967756F757320636F6D6D616E64202735 +S31AFE0157732573272C2063686F69636573206172653A20257300E9 +S31AFE015788202573000A00000055736167653A0A0020202573250F +S31AFE01579D732025730A00002A2A204572726F723A2025732061CC +S31AFE0157B26C7265616479207370656369666965640A002A2A2012 +S31AFE0157C74572726F723A20696E76616C6964206E756D626572D4 +S31AFE0157DC202725732720666F722025730A0000002A2A20457259 +S31AFE0157F1726F723A20696E76616C696420666C61672027256381 +S31AFE015806270A000000002A2A204572726F723A206E6F206465B9 +S31AFE01581B6661756C742F6E6F6E2D666C616720617267756D6575 +S31AFE0158306E747320737570706F727465640A000078797A4D6FD2 +S31AFE01584564656D202D202573206D6F64652C20256428534F4862 +S31AFE01585A292F256428535458292F25642843414E2920706163D4 +S31AFE01586F6B6574732C20256420726574726965730A000000006B +S31AFE01588443524300436B73756D00000043616E2774206163633B +S31AFE0158996573732066696C65000000536F7272792C207A4D6F49 +S31AFE0158AE64656D206E6F7420617661696C61626C652079657406 +S31AFE0158C30054696D6564206F7574000000456E64206F662066CE +S31AFE0158D8696C650043616E63656C6C6564000000496E76616C07 +S31AFE0158ED6964206672616D696E67004352432F636865636B7358 +S31AFE015902756D206572726F720000426C6F636B20736571756531 +S31AFE0159176E6365206572726F7200000000556E6B6E6F776E20E6 +S31AFE01592C6572726F7200000000000000FFFF889CFFFF8890FF00 +S31AFE015941FF8884FFFF8878FFFF886CFFFF8860FFFF8854FFFF93 +S31AFE01595688484275665B25645D2F25703A206275663A202570BF +S31AFE01596B2C206C656E3A2025642F25642C206E6578743A202572 +S31AFE015980700A000046726565206C697374203D2025700A002AEF +S31AFE0159952A205761726E696E673A2063616E277420696E7374D3 +S31AFE0159AA616C6C206C697374656E657220666F722065746865F7 +S31AFE0159BF726E65742074797065203078253032780A0000000062 +S31AFE0159D45F5F656E65745F706F6C6C3A206E6F206D6F7265200F +S31AFE0159E9627566666572730A00000000000000FFFF9644FFFFD7 +S31AFE0159FE969CFFFF9918FFFF96F0FFFF96F0FFFF9798FFFF97E4 +S31AFE015A13D8FFFF9874FFFF98B8FFFF98F84E455441534349496B +S31AFE015A28000000004F43544554000000556E6B6E6F776E206570 +S31AFE015A3D72726F7200000066696C65206E6F7420666F756E643D +S31AFE015A5200006163636573732076696F6C6174696F6E000000D3 +S31AFE015A67006469736B2066756C6C206F7220616C6C6F636174A6 +S31AFE015A7C696F6E20657863656564656400000000696C6C656766 +S31AFE015A91616C2054465450206F7065726174696F6E0000756EFC +S31AFE015AA66B6E6F776E207472616E736665722049440066696C4C +S31AFE015ABB6520616C726561647920657869737473006E6F20733A +S31AFE015AD07563682075736572000000006F7065726174696F6ECC +S31AFE015AE52074696D6564206F757400736F6D6520736F72742040 +S31AFE015AFA6F66206E6574776F726B206572726F720000696E76FC +S31AFE015B0F616C696420706172616D6574657200000070726F743C +S31AFE015B246F636F6C2076696F6C6174696F6E000066696C652005 +S31AFE015B396973206C6172676572207468616E2062756666657274 +S31AFE015B4E0000FFFFA500FFFFA50CFFFFA518FFFFA524FFFFA5C6 +S31AFE015B6330FFFFA53CFFFFA548FFFFA554FFFFA560FFFFA56C25 +S31AFE015B78FFFFA578FFFFA58425642E25642E25642E25640045DE +S31AFE015B8D746865726E65742073656E643A0A0045746865726E90 +S31AFE015BA2657420726563763A0A006574685F6472765F64737268 +S31AFE015BB72073686F756C64206E6F742062652063616C6C656448 +S31AFE015BCC3A20766563746F722025642C20646174612025780A7C +S31AFE015BE1000000000000002E2E2E2045726173652066726F6D3C +S31AFE015BF62025702D25703A2000002E0000000A0000002E2E2E02 +S31AFE015C0B2050726F6772616D2066726F6D2025702D25702061BB +S31AFE015C20742025703A2000004E6F206572726F72202D206F7094 +S31AFE015C3565726174696F6E20636F6D706C657465000000446541 +S31AFE015C4A7669636520697320696E20657261736520737573708B +S31AFE015C5F656E64207374617465000000004465766963652069DA +S31AFE015C747320696E2070726F6772616D2073757370656E642052 +S31AFE015C8973746174650000496E76616C696420464C415348206B +S31AFE015C9E616464726573730000004572726F7220747279696EA6 +S31AFE015CB36720746F2065726173650000004572726F722074722D +S31AFE015CC879696E6720746F206C6F636B2F756E6C6F636B00453F +S31AFE015CDD72726F7220747279696E6720746F2070726F6772617D +S31AFE015CF26D0047656E65726963206572726F7200000044657605 +S31AFE015D076963652F726567696F6E2069732077726974652D70BA +S31AFE015D1C726F74656374656400000000464C415348207375623B +S31AFE015D312D73797374656D206E6F7420696E697469616C697A28 +S31AFE015D46656400000000446174612076657269667920666169FB +S31AFE015D5B6C6564206166746572206F7065726174696F6E0000D6 +S31AFE015D704472697665722074696D6564206F757420776169742D +S31AFE015D85696E6720666F72206465766963650044726976657263 +S31AFE015D9A20646F6573206E6F7420737570706F72742064657617 +S31AFE015DAF6963650000556E6B6E6F776E206572726F720000006F +S31AFE015DC400000000FFFFB14CFFFFB170FFFFB17CFFFFB188FF4A +S31AFE015DD9FFB194FFFFB1A0FFFFB1ACFFFFB1B8FFFFB1E8FFFFC6 +S31AFE015DEEB158FFFFB164FFFFB1C4FFFFB1D0FFFFB1DCFFFFB252 +S31AFE015E0368FFFFB268FFFFB260FFFFB1F8FFFFB260FFFFB2008E +S31AFE015E18FFFFB238FFFFB240FFFFB250FFFFB250FFFFB248FFA1 +S31AFE015E2DFFB258FFFFB238FFFFB270FFFFB250FFFFB258FFFF44 +S31AFE015E42B258FFFFB260FFFFB268FFFFB270FFFFB270FFFFB224 +S31AFE015E5770FFFFB270FFFFB270FFFFB270FFFFB270FFFFB25839 +S31AFE015E6CFFFFB258FFFFB258FFFFB258FFFFB8B0FFFFB8B0FF39 +S31AFE015E81FFB8B0FFFFB8B0FFFFB8B0FFFFB8B0FFFFB8B0FFFF0A +S31AFE015E96B8B0FFFFB8B0FFFFB8B0FFFFB8B0FFFFB8B0FFFFB83C +S31AFE015EABB0FFFFB8B0FFFFB8B0FFFFB8B0FFFFB8D0FFFFB8F0CF +S31AFE015EC0FFFFB910FFFFB930FFFFB950FFFFB9ACFFFFB9ACFF4E +S31AFE015ED5FFB9ACFFFFB9ACFFFFB970FFFFB990FFFFB990FFFF39 +S31AFE015EEAB990FFFFB990FFFFB990FFFFB990FFFFB990FFFFB982 +S31AFE015EFF90FFFFB990FFFFB990FFFFB990FFFFB990FFFFB99096 +S31AFE015F14FFFFB990FFFFB990FFFFB990FFFFB990FFFFB990FF11 +S31AFE015F29FFB990FFFFB990FFFFB990FFFFB990FFFFB990FFFFFC +S31AFE015F3EB990FFFFB990FFFFB990FFFFB990FFFFB990FFFFB92D +S31AFE015F5390FFFFB990FFFFB990FFFFB990FFFFB900FFFFB90061 +S31AFE015F68FFFFB900FFFFB900FFFFB900FFFFB900FFFFB900FF8D +S31AFE015F7DFFB900FFFFB900FFFFB900FFFFB900FFFFB900FFFF78 +S31AFE015F92B900FFFFB900FFFFB900FFFFB900FFFFB920FFFFB989 +S31AFE015FA744FFFFB968FFFFB98CFFFFB9B0FFFFBA48FFFFBA48D3 +S31AFE015FBCFFFFBA48FFFFBA48FFFFB9D4FFFFB9F4FFFFB9F4FFEB +S31AFE015FD1FFB9F4FFFFB9F4FFFFB9F4FFFFB9F4FFFFB9F4FFFF60 +S31AFE015FE6B9F4FFFFB9F4FFFFB9F4FFFFB9F4FFFFB9F4FFFFB991 +S31AFE015FFBF4FFFFB9F4FFFFB9F4FFFFB9F4FFFFB9F4FFFFB9F441 +S31AFE016010FFFFB9F4FFFFB9F4FFFFB9F4FFFFB9F4FFFFB9F4FF20 +S31AFE016025FFB9F4FFFFB9F4FFFFB9F4FFFFB9F4FFFFB9F4FFFF0B +S31AFE01603AB9F4FFFFB9F4FFFFB9F4FFFFB9F425733A2043616E9A +S31AFE01604F27742066696E642061646472657373206F66207365E8 +S31AFE016064727665720A0000005F5F7564705F73656E64746F0066 +S31AFE0160790000007564705F7265637666726F6D202D2064726F4F +S31AFE01608E70706564207061636B6574206F6620256420627974AA +S31AFE0160A365730A000047444220636F6E6E656374696F6E207054 +S31AFE0160B86F7274006764625F706F7274000000004E6574776F1B +S31AFE0160CD726B20646562756720617420626F6F742074696D651D +S31AFE0160E200006E65745F646562756700000055736520424F4FCA +S31AFE0160F7545020666F72206E6574776F726B20636F6E666967C4 +S31AFE01610C75726174696F6E00626F6F74700000004C6F63616C68 +S31AFE016121204950206164647265737300000000626F6F74705F22 +S31AFE0161366D795F69700044656661756C74207365727665722095 +S31AFE01614B49502061646472657373000000626F6F74705F736540 +S31AFE016160727665725F69700025732E25640A00006E65745F69C6 +S31AFE0161756F5F7772697465000000006E65745F696F5F72656102 +S31AFE01618A640000000000FFFFC5ECFFFFC474FFFFC76CFFFFC7BC +S31AFE01619F78FFFFC7AC00000000FFFFC4BCFFFFC4BCFFFFC4BC83 +S31AFE0161B4FFFFC4BCFFFFC4BCFFFFC4BCFFFFC4BCFFFFC4BCFF5C +S31AFE0161C9FFC4BCFFFFC4BCFFFFC4BCFFFFC4BCFFFFC4BCFFFF47 +S31AFE0161DEC4BCFFFFC4BCFFFFC4BCFFFFC4E8FFFFC508FFFFC5F3 +S31AFE0161F328FFFFC548FFFFC568FFFFC798FFFFC798FFFFC7981D +S31AFE016208FFFFC798FFFFC588FFFFC5A8FFFFC5A8FFFFC5A8FF94 +S31AFE01621DFFC5A8FFFFC5A8FFFFC5A8FFFFC5A8FFFFC5A8FFFF51 +S31AFE016232C5A8FFFFC5A8FFFFC5A8FFFFC5A8FFFFC5A8FFFFC576 +S31AFE016247A8FFFFC5A8FFFFC5A8FFFFC5A8FFFFC5A8FFFFC5A87E +S31AFE01625CFFFFC5A8FFFFC5A8FFFFC5A8FFFFC5A8FFFFC5A8FF12 +S31AFE016271FFC5A8FFFFC5A8FFFFC5A8FFFFC5A8FFFFC5A8FFFFFD +S31AFE016286C5A8FFFFC5A8FFFFC5A8FFFFC540FFFFC540FFFFC5F2 +S31AFE01629B40FFFFC540FFFFC540FFFFC540FFFFC540FFFFC5409A +S31AFE0162B0FFFFC540FFFFC540FFFFC540FFFFC540FFFFC540FFC6 +S31AFE0162C5FFC540FFFFC540FFFFC540FFFFC56CFFFFC590FFFF35 +S31AFE0162DAC5B4FFFFC5D8FFFFC5FCFFFFC6B0FFFFC6B0FFFFC62B +S31AFE0162EFB0FFFFC6B0FFFFC620FFFFC640FFFFC640FFFFC64081 +S31AFE016304FFFFC640FFFFC640FFFFC640FFFFC640FFFFC640FF6C +S31AFE016319FFC640FFFFC640FFFFC640FFFFC640FFFFC640FFFF57 +S31AFE01632EC640FFFFC640FFFFC640FFFFC640FFFFC640FFFFC67B +S31AFE01634340FFFFC640FFFFC640FFFFC640FFFFC640FFFFC640EC +S31AFE016358FFFFC640FFFFC640FFFFC640FFFFC640FFFFC640FF18 +S31AFE01636DFFC640FFFFC640FFFFC6404E6F206E6574776F726B22 +S31AFE01638220696E746572666163657320666F756E640A00000077 +S31AFE0163970043616E27742067657420424F4F545020696E666F6F +S31AFE0163AC202D206E6574776F726B2064697361626C6564210ADD +S31AFE0163C100000049503A20257300002C2044656661756C742006 +S317FE0163D67365727665723A2025730A000000000000001D +S31AFE0163E80A526564426F6F7428746D2920646562756720656E96 +S31AFE0163FD7669726F6E6D656E74202D206275696C742030393A54 +S31AFE01641235303A31322C2046656220323320323030310A0000A3 +S31AFE0164270065436F7320474442207374756273205B76696120B8 +S31AFE01643C526564426F6F745D202D206275696C74204665622060 +S31AFE01645132332032303031202F2030393A35303A3132000000D5 +S31AFE01646600007C2F2D5C7C2D00005B2D725D205B2D765D205BF2 +S31AFE01647B2D68203C686F73743E5D205B2D6D207B5446545020AF +S31AFE0164907C2078797A4D4F44454D7D5D0A202020202020202095 +S31AFE0164A55B2D62203C626173655F616464726573733E5D203CC0 +S31AFE0164BA66696C655F6E616D653E00000000000033F80000843B +S31AFE0164CF40FE01378C000000000000000000000000FE005CE473 +S31AFE0164E4FE005CFCFE005CD4FE005CBCFE005B4CFE005A00FE09 +S31AFE0164F9006134FE0058C0FE0058B800003DC8000000000800C3 +S31AFE01650E3E2879B80000FE006248FE00B138FE00B138FE00B1B7 +S31AFE01652338FE00B138FE00B138FE00B138FE00B138FE00B138A3 +S31AFE016538FE00B138FE00B138FE00B138FE00B138FE00B138FEC8 +S31AFE01654D00B138FE00B138FE00B138FE00B138FE00B138FE00B1 +S31AFE016562B138FE00B138FE00B138FE00B138FE00B138FE00B1EB +S31AFE01657738FE00B138FE00B138FE00B138FE00B138FE00B1384F +S31AFE01658CFE00B138FE00B138FE00B138FE00B138FE00B138FE74 +S31AFE0165A100B138FE00B138FE00B138FE00B138FE00B138FE005D +S31AFE0165B6B138FE00B138FE00B138FE00B138FE00B138FE00B197 +S31AFE0165CB38FE00B138FE00B138FE00B138FE00B138FE00B138FB +S31AFE0165E0FE00B138FE00B138FE00B138FE00B138FE00B138FE20 +S31AFE0165F500B138FE00B138FE00B13800000000000000000000D5 +S31AFE01660A00000000000000000000000000000000000000000076 +S31AFE01661F00000000000000000000000000000000000000000061 +S31AFE0166340000000000000000000000000000000000000000004C +S31AFE01664900000000000000000000000000000000000000000037 +S31AFE01665E00000000000000000000000000000000000000000022 +S31AFE0166730000000000000000000000000000000000000000000D +S31AFE016688000000000000000000000000000000000000000000F8 +S31AFE01669D000000000000000000000000000000000000000000E3 +S31AFE0166B2000000000000000000000000000000000000000000CE +S31AFE0166C7000000000000000000000000000000000000000000B9 +S31AFE0166DC000000000000000000000000000000000000000000A4 +S31AFE0166F10000000000000000000000000000000000000000008F +S31AFE01670600000000000000000000000000000000000000000079 +S31AFE01671B00000000000000000000000000000000000000000064 +S31AFE0167300000000000000000000000000000000000000000004F +S31AFE0167450000000000000000000000000000000000000000003A +S31AFE01675A00000000000000000000000000000000000000000025 +S31AFE01676F00000000000000000000000000000000000000000010 +S31AFE016784000000000000000000000000000000000000000000FB +S31AFE016799000000000000000000000000000000000000000000E6 +S31AFE0167AE000000000000000000000000000000000000000000D1 +S31AFE0167C3000000000000000000000000000000000000000000BC +S31AFE0167D8FE000000FE0000000040000000000000FF000000FF6D +S31AFE0167ED0000000010000001000000FA100000FA10000000006D +S31AFE016802000401000000000000000000000000800000000000F7 +S31AFE01681700000000000000000000000000000000000000000067 +S31AFE01682C00000000FE008890FE0088EC000000000000000000CA +S31AFE016841000000FFFFFFFF0000000000000000FE009938000072 +S31AFE01685600000000000000012AF8000000000000000000000005 +S31AFE01686B0000000000FFFFFFFEFFFFFFFE0000102120423063F7 +S31AFE016880408450A560C670E781089129A14AB16BC18CD1ADE1D2 +S31AFE016895CEF1EF123102103273225252B5429472F762D6933983 +S31AFE0168AA8318B37BA35AD3BDC39CF3FFE3DE2462344304201437 +S31AFE0168BF0164E674C744A45485A56AB54B85289509E5EEF5CF87 +S31AFE0168D4C5ACD58D365326721611063076D766F6569546B4B714 +S31AFE0168E95BA77A97198738F7DFE7FED79DC7BC48C458E56886C1 +S31AFE0168FE78A70840186128023823C9CCD9EDE98EF9AF89489937 +S31AFE01691369A90AB92B5AF54AD47AB76A961A710A503A332A123E +S31AFE016928DBFDCBDCFBBFEB9E9B798B58BB3BAB1A6CA67C874C80 +S31AFE01693DE45CC52C223C030C601C41EDAEFD8FCDECDDCDAD2A84 +S31AFE016952BD0B8D689D497E976EB65ED54EF43E132E321E510EAC +S31AFE01696770FF9FEFBEDFDDCFFCBF1BAF3A9F598F78918881A9CF +S31AFE01697CB1CAA1EBD10CC12DF14EE16F108000A130C220E3502A +S31AFE0169910440257046606783B99398A3FBB3DAC33DD31CE37F23 +S31AFE0169A6F35E02B1129022F332D24235521462777256B5EAA556 +S31AFE0169BBCB95A88589F56EE54FD52CC50D34E224C314A004810C +S31AFE0169D07466644754244405A7DBB7FA879997B8E75FF77EC743 +S31AFE0169E51DD73C26D336F2069116B06657767646155634D94C37 +S31AFE0169FAC96DF90EE92F99C889E9B98AA9AB5844486578066895 +S31AFE016A0F2718C008E1388228A3CB7DDB5CEB3FFB1E8BF99BD847 +S31AFE016A24ABBBBB9A4A755A546A377A160AF11AD02AB33A92FD74 +S31AFE016A392EED0FDD6CCD4DBDAAAD8B9DE88DC97C266C075C6467 +S31AFE016A4E4C453CA22C831CE00CC1EF1FFF3ECF5DDF7CAF9BBF6C +S31AFE016A63BA8FD99FF86E177E364E555E742E933EB20ED11EF014 +S31AFE016A780000000077073096EE0E612C990951BA076DC41970C9 +S31AFE016A8D6AF48FE963A5359E6495A30EDB883279DCB8A4E0D599 +S31AFE016AA2E91E97D2D98809B64C2B7EB17CBDE7B82D0790BF1D2C +S31AFE016AB7911DB710646AB020F2F3B9714884BE41DE1ADAD47DB5 +S31AFE016ACC6DDDE4EBF4D4B55183D385C7136C9856646BA8C0FD86 +S31AFE016AE162F97A8A65C9EC14015C4F63066CD9FA0F3D638D0876 +S31AFE016AF60DF53B6E20C84C69105ED56041E4A26771723C03E467 +S31AFE016B0BD14B04D447D20D85FDA50AB56B35B5A8FA42B2986C81 +S31AFE016B20DBBBC9D6ACBCF94032D86CE345DF5C75DCD60DCFABFE +S31AFE016B35D13D5926D930AC51DE003AC8D75180BFD0611621B450 +S31AFE016B4AF4B556B3C423CFBA9599B8BDA50F2802B89E5F05884C +S31AFE016B5F08C60CD9B2B10BE9242F6F7C8758684C11C1611DAB46 +S31AFE016B74B6662D3D76DC419001DB710698D220BCEFD5102A7156 +S31AFE016B89B1858906B6B51F9FBFE4A5E8B8D4337807C9A20F001C +S31AFE016B9EF9349609A88EE10E98187F6A0DBB086D3D2D91646C4B +S31AFE016BB397E6635C016B6B51F41C6C6162856530D8F262004E91 +S31AFE016BC86C0695ED1B01A57B8208F4C1F50FC45765B0D9C6125F +S31AFE016BDDB7E9508BBEB8EAFCB9887C62DD1DDF15DA2D498CD30B +S31AFE016BF27CF3FBD44C654DB261583AB551CEA3BC0074D4BB3042 +S31AFE016C07E24ADFA5413DD895D7A4D1C46DD3D6F4FB4369E96AC4 +S31AFE016C1C346ED9FCAD678846DA60B8D044042D7333031DE5AA79 +S31AFE016C310A4C5FDD0D7CC95005713C270241AABE0B1010C90C91 +S31AFE016C4620865768B525206F85B3B966D409CE61E49F5EDEF94B +S31AFE016C5B0E29D9C998B0D09822C7D7A8B459B33D172EB40D81AA +S31AFE016C70B7BD5C3BC0BA6CADEDB883209ABFB3B603B6E20C7447 +S31AFE016C85B1D29AEAD547399DD277AF04DB261573DC1683E363BC +S31AFE016C9A0B1294643B840D6D6A3E7A6A5AA8E40ECF0B9309FF9D +S31AFE016CAF9D0A00AE277D079EB1F00F93448708A3D21E01F26829 +S31AFE016CC46906C2FEF762575D806567CB196C36716E6B06E7FE73 +S31AFE016CD9D41B7689D32BE010DA7A5A67DD4ACCF9B9DF6F8EBE71 +S31AFE016CEEEFF917B7BE4360B08ED5D6D6A3E8A1D1937E38D8C2D6 +S31AFE016D03C44FDFF252D1BB67F1A6BC57673FB506DD48B2364BEA +S31AFE016D18D80D2BDAAF0A1B4C36034AF641047A60DF60EFC3A826 +S31AFE016D2D67DF55316E8EEF4669BE79CB61B38CBC66831A256FF1 +S31AFE016D42D2A05268E236CC0C7795BB0B4703220216B95505268C +S31AFE016D572FC5BA3BBEB2BD0B282BB45A925CB36A04C2D7FFA752 +S31AFE016D6CB5D0CF312CD99E8B5BDEAE1D9B64C2B0EC63F2267509 +S31AFE016D816AA39C026D930A9C0906A9EB0E363F72076785050017 +S31AFE016D96571395BF4A82E2B87A147BB12BAE0CB61B3892D28E25 +S31AFE016DAB9BE5D5BE0D7CDCEFB70BDBDF2186D3D2D4F1D4E242E2 +S31AFE016DC068DDB3F81FDA836E81BE16CDF6B9265B6FB077E118FE +S31AFE016DD5B7477788085AE6FF0F6A7066063BCA11010B5C8F6599 +S31AFE016DEA9EFFF862AE69616BFFD3166CCF45A00AE278D70DD293 +S31AFE016DFFEE4E0483543903B3C2A7672661D06016F74969474D9A +S31AFE016E143E6E77DBAED16A4AD9D65ADC40DF0B6637D83BF0A9DB +S31AFE016E29BCAE53DEBB9EC547B2CF7F30B5FFE9BDBDF21CCABA76 +S31AFE016E3EC28A53B3933024B4A3A6BAD03605CDD7069354DE5779 +S31AFE016E532923D967BFB3667A2EC4614AB85D681B022A6F2B94B8 +S31AFE016E68B40BBE37C30C8EA15A05DF1B2D02EF8D00000000005A +S31AFE016E7D000000000000000000000000000000000000000000FB +S31AFE016E92000000000000000000000000000000000000000000E6 +S31AFE016EA70000001E1400001E14FE01036CFE010820FE01060CC7 +S31AFE016EBC000000000000000000000000000003E80000000000D1 +S31AFE016ED1000000000001F40000000000000000000000000000B2 +S31AFE016EE600000000000000010202030303030404040404040465 +S31AFE016EFB04050505050505050505050505050505050606060611 +S31AFE016F10060606060606060606060606060606060606060606E9 +S31AFE016F25060606060606060707070707070707070707070707C6 +S31AFE016F3A070707070707070707070707070707070707070707AA +S31AFE016F4F07070707070707070707070707070707070707070795 +S31AFE016F6407070707070707070808080808080808080808080873 +S31AFE016F7908080808080808080808080808080808080808080856 +S31AFE016F8E08080808080808080808080808080808080808080841 +S31AFE016FA30808080808080808080808080808080808080808082C +S31AFE016FB808080808080808080808080808080808080808080817 +S31AFE016FCD08080808080808080808080808080808080808080802 +S31AFE016FE20808080808080808080800000000FE013FF4FE013FD5 +S31AFE016FF7E4FE013F68FE003A04FE013EFCFE013ECCFE013EC477 +S31AFE01700CFE003628FE013EBCFE013EA4FE013E88FE00382CFE0F +S31AFE017021013E80FE013E3CFE013E38FE004208FE013DF0FE0135 +S31AFE0170363DCCFE013DC4FE00444CFE013E30FE013E00FE013DC3 +S31AFE01704BF8FE0042FCFE013F60FE013F2CFE013F04FE00347803 +S31AFE017060FE015410FE0153F8FE0153ECFE00B6F4FE0153E4FE4F +S31AFE0170750153BCFE0153A0FE00B970FE013D84FE013D70FE016D +S31AFE01708A3D68FE0032E4FE013DBCFE013D90FE013D88FE002C81 +S31AFE01709F04FE01539CFE015380FE015368FE00BA68FE01536087 +S31AFE0170B4FE01534CFE015340FE00B870FE0137D4FE0137C80064 +S31AFE0170C9003388FE004D3CFE013B74FE013B58FE013AF8FE00FC +S31AFE0170DE489CFE01542CFE015418FE015310FE00BC00FE01535C +S31AFE0170F338FE015314FE015310FE00B368FE014730FE01471C92 +S31AFE01710800000000000000010000000100000000FE014748FEDF +S31AFE01711D01473CFE0147300000000100000004FE013E38FE01E5 +S31AFE0171324784FE01475CFE01473000000001000000020000005D +S31AFE01714700FE016114FE0160F000000000000000010000000169 +S31AFE01715C00000001FE016130FE01611CFE016114000000000098 +S31AFE01717100000500000000FE016158FE01613CFE016114000037 +S31AFE01718600000000000500000000FE0160BCFE0160A8000000C8 +S31AFE01719B00000000010000000200002328FE0160E4FE0160C822 +S31AFE0171B000000000000000010000000100000000FE013780FE0F +S31AFE0171C501376000000000000000010000000600000000FE0112 +S31AFE0171DA2CA400000000FE0025E000000000FE012D6400000038 +S31AFE0171EF00FE013794FE005D14000033E0000000003D60FE009F +S31AFE017204380000AA980B055539200055992B02AA380000909813 +S31AFE0172190B0555892B000099230000880B0001392000FF9803FF +S31AFE01722E0001380001F47C0903A6992B0000420000004E800016 +S31AFE01724320546A0018396000AA996A055539200055992A02AA7E +S31AFE01725838000080980A0555996A0555992A02AA3D20004C7D76 +S31AFE01726D2903A63800003098030000392000007D6902A6616B7F +S31AFE0172824B407D6903A688030000700B000841820014700B0078 +S31AFE01729720408200684200FFEC3920000C2C0900004082003CCE +S31AFE0172AC3C00004C7C0903A67D6902A6616B4B407D6903A68816 +S31AFE0172C10300002C0000FF41820014700B0020408200284200E7 +S31AFE0172D6FFEC3920000C2C0900004182000C380000FF980A0071 +S31AFE0172EB00880300003D60000148000024392000024BFFFFE070 +S31AFE017300392000024BFFFFA0356BFFFF3863000140810030887C +S31AFE0173150300002C0000FF4182FFEC7D2BFE707D604A787C0051 +S31AFE01732A58507C03FE707C6018F87D2918387000000B7D2903AE +S31AFE01733F787D234B784E8000209421FFE893A1000C93C100102B +S31AFE01735493E100147CA52B7939000000408100C03BA000AA3B58 +S31AFE017369C000553BE000A0398000FF546A00189BAA05559BCAA8 +S31AFE01737E02AA3D20004C7D2903A69BEA05558804000038E400CA +S31AFE01739301980300007C0902A660004B407C0903A638C3000102 +S31AFE0173A889630000880400007C0058004182001471690020406E +S31AFE0173BD8200544200FFE83900000C2C08000041820008998A50 +S31AFE0173D2000089230000880400007CE43B787C0900007CC3335F +S31AFE0173E778418200307D09FE707D2042787C0048507C00FE70D8 +S31AFE0173FC7C0900F87D0000387129000B7C084B784800001439C4 +S31AFE0174110000044BFFFFB434A5FFFF4181FF5C7D03437883A10D +S31AFE017426000C83C1001083E10014382100184E80002000003ED7 +S316FE01743B044E80002100000000000000000000000048 S705FE000100FB diff --git a/packages/hal/powerpc/mbx/current/misc/redboot_RAM.cfg b/packages/hal/powerpc/mbx/current/misc/redboot_RAM.cfg deleted file mode 100644 --- a/packages/hal/powerpc/mbx/current/misc/redboot_RAM.cfg +++ /dev/null @@ -1,56 +0,0 @@ -cdl_savefile_version 1; -cdl_savefile_command cdl_savefile_version {}; -cdl_savefile_command cdl_savefile_command {}; -cdl_savefile_command cdl_configuration { description hardware template package }; -cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; - -cdl_configuration eCos { - description "" ; - hardware mbx ; - template redboot ; - package -hardware CYGPKG_HAL_POWERPC current ; - package -hardware CYGPKG_HAL_POWERPC_MPC8xx current ; - package -hardware CYGPKG_HAL_POWERPC_MBX current ; - package -hardware CYGPKG_HAL_QUICC current ; - package -hardware CYGPKG_IO_SERIAL_POWERPC_QUICC_SMC current ; - package -hardware CYGPKG_DEVS_ETH_POWERPC_QUICC current ; - package -template CYGPKG_HAL current ; - package -template CYGPKG_INFRA current ; - package -template CYGPKG_REDBOOT current ; - package CYGPKG_IO_ETH_DRIVERS current ; - package CYGPKG_IO_FLASH current ; - package CYGPKG_DEVS_FLASH_MBX current ; -}; - -cdl_option CYGBLD_BUILD_GDB_STUBS { - user_value 0 -}; - -cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { - user_value 0 -}; - -cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { - inferred_value 0 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { - inferred_value 0 -}; - -cdl_component CYGBLD_BUILD_REDBOOT { - user_value 1 -}; - - diff --git a/packages/hal/powerpc/mbx/current/misc/redboot_RAM.ecm b/packages/hal/powerpc/mbx/current/misc/redboot_RAM.ecm new file mode 100644 --- /dev/null +++ b/packages/hal/powerpc/mbx/current/misc/redboot_RAM.ecm @@ -0,0 +1,57 @@ +cdl_savefile_version 1; +cdl_savefile_command cdl_savefile_version {}; +cdl_savefile_command cdl_savefile_command {}; +cdl_savefile_command cdl_configuration { description hardware template package }; +cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; + +cdl_configuration eCos { + description "" ; + hardware mbx ; + template redboot ; + package -hardware CYGPKG_HAL_POWERPC current ; + package -hardware CYGPKG_HAL_POWERPC_MPC8xx current ; + package -hardware CYGPKG_HAL_POWERPC_MBX current ; + package -hardware CYGPKG_HAL_QUICC current ; + package -hardware CYGPKG_IO_SERIAL_POWERPC_QUICC_SMC current ; + package -hardware CYGPKG_DEVS_ETH_POWERPC_QUICC current ; + package -hardware CYGPKG_DEVS_FLASH_MBX current ; + package -hardware CYGPKG_DEVS_FLASH_AMD_AM29XXXXX current ; + package -template CYGPKG_HAL current ; + package -template CYGPKG_INFRA current ; + package -template CYGPKG_REDBOOT current ; + package CYGPKG_IO_ETH_DRIVERS current ; + package CYGPKG_IO_FLASH current ; +}; + +cdl_option CYGBLD_BUILD_GDB_STUBS { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { + inferred_value 0 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { + inferred_value 0 +}; + +cdl_component CYGBLD_BUILD_REDBOOT { + user_value 1 +}; + + diff --git a/packages/hal/powerpc/mbx/current/misc/redboot_ROM.cfg b/packages/hal/powerpc/mbx/current/misc/redboot_ROM.cfg deleted file mode 100644 --- a/packages/hal/powerpc/mbx/current/misc/redboot_ROM.cfg +++ /dev/null @@ -1,64 +0,0 @@ -cdl_savefile_version 1; -cdl_savefile_command cdl_savefile_version {}; -cdl_savefile_command cdl_savefile_command {}; -cdl_savefile_command cdl_configuration { description hardware template package }; -cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; -cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; - -cdl_configuration eCos { - description "" ; - hardware mbx ; - template redboot ; - package -hardware CYGPKG_HAL_POWERPC current ; - package -hardware CYGPKG_HAL_POWERPC_MPC8xx current ; - package -hardware CYGPKG_HAL_POWERPC_MBX current ; - package -hardware CYGPKG_HAL_QUICC current ; - package -hardware CYGPKG_IO_SERIAL_POWERPC_QUICC_SMC current ; - package -hardware CYGPKG_DEVS_ETH_POWERPC_QUICC current ; - package -template CYGPKG_HAL current ; - package -template CYGPKG_INFRA current ; - package -template CYGPKG_REDBOOT current ; - package CYGPKG_IO_ETH_DRIVERS current ; - package CYGPKG_IO_FLASH current ; - package CYGPKG_DEVS_FLASH_MBX current ; -}; - -cdl_option CYGBLD_BUILD_GDB_STUBS { - user_value 0 -}; - -cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { - user_value 0 -}; - -cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { - inferred_value 0 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { - inferred_value 1 -}; - -cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { - inferred_value 0 -}; - -cdl_option CYGSEM_HAL_ROM_MONITOR { - user_value 1 -}; - -cdl_component CYG_HAL_STARTUP { - user_value ROM -}; - -cdl_component CYGBLD_BUILD_REDBOOT { - user_value 1 -}; - - diff --git a/packages/hal/powerpc/mbx/current/misc/redboot_ROM.ecm b/packages/hal/powerpc/mbx/current/misc/redboot_ROM.ecm new file mode 100644 --- /dev/null +++ b/packages/hal/powerpc/mbx/current/misc/redboot_ROM.ecm @@ -0,0 +1,65 @@ +cdl_savefile_version 1; +cdl_savefile_command cdl_savefile_version {}; +cdl_savefile_command cdl_savefile_command {}; +cdl_savefile_command cdl_configuration { description hardware template package }; +cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; + +cdl_configuration eCos { + description "" ; + hardware mbx ; + template redboot ; + package -hardware CYGPKG_HAL_POWERPC current ; + package -hardware CYGPKG_HAL_POWERPC_MPC8xx current ; + package -hardware CYGPKG_HAL_POWERPC_MBX current ; + package -hardware CYGPKG_HAL_QUICC current ; + package -hardware CYGPKG_IO_SERIAL_POWERPC_QUICC_SMC current ; + package -hardware CYGPKG_DEVS_ETH_POWERPC_QUICC current ; + package -hardware CYGPKG_DEVS_FLASH_MBX current ; + package -hardware CYGPKG_DEVS_FLASH_AMD_AM29XXXXX current ; + package -template CYGPKG_HAL current ; + package -template CYGPKG_INFRA current ; + package -template CYGPKG_REDBOOT current ; + package CYGPKG_IO_ETH_DRIVERS current ; + package CYGPKG_IO_FLASH current ; +}; + +cdl_option CYGBLD_BUILD_GDB_STUBS { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { + inferred_value 0 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { + inferred_value 0 +}; + +cdl_option CYGSEM_HAL_ROM_MONITOR { + user_value 1 +}; + +cdl_component CYG_HAL_STARTUP { + user_value ROM +}; + +cdl_component CYGBLD_BUILD_REDBOOT { + user_value 1 +}; + + diff --git a/packages/hal/sh/sh3/current/ChangeLog b/packages/hal/sh/sh3/current/ChangeLog --- a/packages/hal/sh/sh3/current/ChangeLog +++ b/packages/hal/sh/sh3/current/ChangeLog @@ -1,3 +1,12 @@ +2001-02-26 Jesper Skov + + * include/mod_regs_ser.h: Add a couple of zeroes to + SCIF clear masks (for looks - no semantic change). + +2001-02-23 Jesper Skov + + * include/var_cache.h: Include plf_cache.h + 2001-02-02 Jesper Skov * src/sh3_sci.c: Baud rate is always specified, remove fallback diff --git a/packages/hal/sh/sh3/current/include/mod_regs_ser.h b/packages/hal/sh/sh3/current/include/mod_regs_ser.h --- a/packages/hal/sh/sh3/current/include/mod_regs_ser.h +++ b/packages/hal/sh/sh3/current/include/mod_regs_ser.h @@ -174,7 +174,7 @@ // When clearing the status register, always write the value: // CYGARC_REG_SCSSR2_CLEARMASK & ~bit // to prevent other bits than the one of interest to be cleared. -#define CYGARC_REG_SCSSR1_CLEARMASK 0xf3 +#define CYGARC_REG_SCSSR1_CLEARMASK 0x00f3 // Serial FIFO Control Register #define CYGARC_REG_SCFCR1_RTRG_MASK 0xc0 // receive fifo data trigger @@ -252,7 +252,7 @@ // When clearing the status register, always write the value: // CYGARC_REG_SCSSR2_CLEARMASK & ~bit // to prevent other bits than the one of interest to be cleared. -#define CYGARC_REG_SCSSR2_CLEARMASK 0xf3 +#define CYGARC_REG_SCSSR2_CLEARMASK 0x00f3 // Serial FIFO Control Register #define CYGARC_REG_SCFCR2_RTRG_MASK 0xc0 // receive fifo data trigger diff --git a/packages/hal/sh/sh3/current/include/var_cache.h b/packages/hal/sh/sh3/current/include/var_cache.h --- a/packages/hal/sh/sh3/current/include/var_cache.h +++ b/packages/hal/sh/sh3/current/include/var_cache.h @@ -54,6 +54,8 @@ #include #include // HAL_READ/WRITE macros +#include // Platform cache definitions + #include CYGBLD_HAL_CPU_MODULES_H // cache module specs #include // CYGARC_REG_ definitions diff --git a/packages/hal/sh/sh4/current/ChangeLog b/packages/hal/sh/sh4/current/ChangeLog --- a/packages/hal/sh/sh4/current/ChangeLog +++ b/packages/hal/sh/sh4/current/ChangeLog @@ -1,3 +1,8 @@ +2001-02-26 Jesper Skov + + * include/mod_regs_ser.h: Add a couple of zeroes to SCIF clear + masks (for looks - no semantic change). + 2001-02-02 Jesper Skov * cdl/hal_sh_sh4.cdl: Added baud rate option. diff --git a/packages/hal/sh/sh4/current/include/mod_regs_ser.h b/packages/hal/sh/sh4/current/include/mod_regs_ser.h --- a/packages/hal/sh/sh4/current/include/mod_regs_ser.h +++ b/packages/hal/sh/sh4/current/include/mod_regs_ser.h @@ -171,7 +171,7 @@ // When clearing the status register, always write the value: // CYGARC_REG_SCSSR2_CLEARMASK & ~bit // to prevent other bits than the one of interest to be cleared. -#define CYGARC_REG_SCSSR1_CLEARMASK 0xf3 +#define CYGARC_REG_SCSSR1_CLEARMASK 0x00f3 // Serial FIFO Control Register #define CYGARC_REG_SCFCR1_RTRG_MASK 0xc0 // receive fifo data trigger @@ -251,7 +251,7 @@ // When clearing the status register, always write the value: // CYGARC_REG_SCSSR2_CLEARMASK & ~bit // to prevent other bits than the one of interest to be cleared. -#define CYGARC_REG_SCSSR2_CLEARMASK 0xf3 +#define CYGARC_REG_SCSSR2_CLEARMASK 0x00f3 // Serial FIFO Control Register #define CYGARC_REG_SCFCR2_RTRG_MASK 0xc0 // receive fifo data trigger diff --git a/packages/infra/current/ChangeLog b/packages/infra/current/ChangeLog --- a/packages/infra/current/ChangeLog +++ b/packages/infra/current/ChangeLog @@ -1,3 +1,7 @@ +2001-02-23 Robin Farine + + * include/cyg_type.h: Do alignment consistency check. + 2001-01-05 Nick Garnett * include/clist.hxx: Many changes to make these classes usable in diff --git a/packages/infra/current/include/cyg_type.h b/packages/infra/current/include/cyg_type.h --- a/packages/infra/current/include/cyg_type.h +++ b/packages/infra/current/include/cyg_type.h @@ -125,6 +125,7 @@ // ------------------------------------------------------------------------- // Provide a default architecture alignment // This may be overridden in basetype.h if necessary. +// These should be straightforward numbers to allow use in assembly. #ifndef CYGARC_ALIGNMENT # define CYGARC_ALIGNMENT 8 @@ -133,6 +134,9 @@ #ifndef CYGARC_P2ALIGNMENT # define CYGARC_P2ALIGNMENT 3 #endif +#if (CYGARC_ALIGNMENT) != (1 << CYGARC_P2ALIGNMENT) +# error "Inconsistent CYGARC_ALIGNMENT and CYGARC_P2ALIGNMENT values" +#endif // ------------------------------------------------------------------------- // The obvious few that compilers may define for you. diff --git a/packages/io/flash/current/ChangeLog b/packages/io/flash/current/ChangeLog --- a/packages/io/flash/current/ChangeLog +++ b/packages/io/flash/current/ChangeLog @@ -1,3 +1,23 @@ +2001-02-23 Jesper Skov + + * include/flash.h: HAL_FLASH_CACHES_WANT_OPTIMAL replaced with + (opposite sense) HAL_FLASH_CACHES_OLD_MACROS. + + * src/flash.c (__anonymizer): Use to force the compiler to use + jumps instead of branches. + +2001-02-22 Jesper Skov + + * include/flash_dev.h: Added. Contains macros and definitions + common to all (new style) flash device drivers. + + * include/flash.h: Added two new error codes. + * cdl/io_flash.cdl: Added CYGHWR_IO_FLASH_DEVICE_IN_RAM. + * src/flash.c: Made functions respect + CYGHWR_IO_FLASH_DEVICE_IN_RAM and jump directly to the code + instead of copying it around. + (__arm_broken): Work around problem with ARM tools. + 2001-02-06 Hugo Tyson * src/flash.c (flash_erase): Add an additional argument to the diff --git a/packages/io/flash/current/cdl/io_flash.cdl b/packages/io/flash/current/cdl/io_flash.cdl --- a/packages/io/flash/current/cdl/io_flash.cdl +++ b/packages/io/flash/current/cdl/io_flash.cdl @@ -64,6 +64,14 @@ cdl_package CYGPKG_IO_FLASH { for the current platform." } + cdl_interface CYGHWR_IO_FLASH_DEVICE_IN_RAM { + display "Hardware FLASH device drivers are in RAM" + flavor booldata + description " + This option prevents the IO driver from copying the device + driver functions to RAM before calling them." + } + cdl_interface CYGHWR_IO_FLASH_BLOCK_LOCKING { display "Hardware can support block locking" description " diff --git a/packages/io/flash/current/include/flash.h b/packages/io/flash/current/include/flash.h --- a/packages/io/flash/current/include/flash.h +++ b/packages/io/flash/current/include/flash.h @@ -77,6 +77,8 @@ externC int printf(char* fmt, ...); #define FLASH_ERR_ERASE_SUSPEND 0x09 // Device is in erase suspend mode #define FLASH_ERR_PROGRAM_SUSPEND 0x0a // Device is in in program suspend mode #define FLASH_ERR_DRV_VERIFY 0x0b // Driver failed to verify data +#define FLASH_ERR_DRV_TIMEOUT 0x0c // Driver timed out waiting for device +#define FLASH_ERR_DRV_WRONG_PART 0x0d // Driver does not support device #ifdef _FLASH_PRIVATE_ @@ -90,28 +92,26 @@ struct flash_info { int init; }; -extern struct flash_info flash_info; -extern int flash_hwr_init(void); -extern int flash_hwr_map_error(int err); +externC struct flash_info flash_info; +externC int flash_hwr_init(void); +externC int flash_hwr_map_error(int err); //--------------------------------------------------------------------------- -//Execution of relocated code must be done inside a -//HAL_FLASH_CACHES_OFF/HAL_FLASH_CACHES_ON region - disabling the -//cache on unified cache systems is necessary to prevent burst access -//to the flash area being programmed. With Harvard style caches, only -//the data cache needs to be disabled, but the instruction cache must -//still be invalidated to ensure the relocated code is properly -//fetched from memory. +// Execution of flash code must be done inside a +// HAL_FLASH_CACHES_OFF/HAL_FLASH_CACHES_ON region - disabling the +// cache on unified cache systems is necessary to prevent burst access +// to the flash area being programmed. With Harvard style caches, only +// the data cache needs to be disabled, but the instruction cache is +// disabled for consistency. // Targets may provide alternative implementations for these macros in // the hal_cache.h (or var/plf) files. -// The first part below is the optimal implementation, but it does not -// always work. The second part is a more safe implementation that has -// been tested to work on some targets - it may not be suitable for -// targets that would do burst access to the flash (data cache needs -// disabling as well). +// The first part below is a generic, optimal implementation. The +// second part is the old implementation that has been tested to work +// on some targets - but it is not be suitable for targets that would +// do burst access to the flash (it does not disable the data cache). // NOTE: Do _not_ change any of the below macros without checking that // the changed code still works on _all_ platforms that rely on these @@ -121,7 +121,8 @@ extern int flash_hwr_map_error(int err) #ifndef HAL_FLASH_CACHES_OFF -#ifdef HAL_FLASH_CACHES_WANT_OPTIMAL // Optimal implementation +// Some drivers have only been tested with the old macros below. +#ifndef HAL_FLASH_CACHES_OLD_MACROS #ifdef HAL_CACHE_UNIFIED @@ -159,7 +160,7 @@ extern int flash_hwr_map_error(int err) #endif // HAL_CACHE_UNIFIED -#else // HAL_FLASH_CACHES_WANT_OPTIMAL +#else // HAL_FLASH_CACHES_OLD_MACROS // Note: This implementation is broken as it will always enable the i-cache // even if it was not enabled before. It also doesn't work if the @@ -177,7 +178,7 @@ extern int flash_hwr_map_error(int err) #define HAL_FLASH_CACHES_ON(_d_, _i_) \ HAL_ICACHE_ENABLE(); -#endif // HAL_FLASH_CACHES_WANT_OPTIMAL +#endif // HAL_FLASH_CACHES_OLD_MACROS #endif // HAL_FLASH_CACHES_OFF diff --git a/packages/io/flash/current/include/flash_dev.h b/packages/io/flash/current/include/flash_dev.h new file mode 100644 --- /dev/null +++ b/packages/io/flash/current/include/flash_dev.h @@ -0,0 +1,157 @@ +#ifndef CYGONCE_IO_FLASH_FLASH_DEV_H +#define CYGONCE_IO_FLASH_FLASH_DEV_H +//========================================================================== +// +// flash_dev.h +// +// Common flash device driver definitions +// +//========================================================================== +//####COPYRIGHTBEGIN#### +// +// ------------------------------------------- +// The contents of this file are subject to the Red Hat eCos Public License +// Version 1.1 (the "License"); you may not use this file except in +// compliance with the License. You may obtain a copy of the License at +// http://www.redhat.com/ +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +// License for the specific language governing rights and limitations under +// the License. +// +// The Original Code is eCos - Embedded Configurable Operating System, +// released September 30, 1998. +// +// The Initial Developer of the Original Code is Red Hat. +// Portions created by Red Hat are +// Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc. +// All Rights Reserved. +// ------------------------------------------- +// +//####COPYRIGHTEND#### +//========================================================================== +//#####DESCRIPTIONBEGIN#### +// +// Author(s): hmt +// Contributors: hmt, jskov +// Date: 2001-02-22 +// Purpose: Define common flash device driver definitions +// Description: The flash_data_t type is used for accessing +// devices at the correct width. +// The FLASHWORD macro must be used to create constants +// of suitable width. +// The FLASH_P2V macro can be used to fix up non-linear +// mappings of flash blocks (defaults to a linear +// implementation). +// +//####DESCRIPTIONEND#### +// +//========================================================================== + +#ifdef _FLASH_PRIVATE_ + +// ------------------------------------------------------------------------ +// +// No mapping on this target - but these casts would be needed if some +// manipulation did occur. An example of this might be: +// // First 4K page of flash at physical address zero is +// // virtually mapped at address 0xa0000000. +// #define FLASH_P2V(x) ((volatile flash_t *)(((unsigned)(x) < 0x1000) ? +// ((unsigned)(x) | 0xa0000000) : +// (unsigned)(x))) + +#ifndef FLASH_P2V +#define FLASH_P2V( _a_ ) ((volatile flash_t *)((unsigned int)(_a_))) +#endif + +// ------------------------------------------------------------------------ +// +// This generic code is intended to deal with all shapes and orientations +// of Intel StrataFlash. Trademarks &c belong to their respective owners. +// +// It therefore needs some trickery to define the constants and accessor +// types that we use to interact with the device or devices. +// +// The assumptions are that +// o Parallel devices, we write to, with the "opcode" replicated per +// device +// o The "opcode" and status returns exist only in the low byte of the +// device's interface regardless of its width. +// o Hence opcodes and status are only one byte. +// An exception is the test for succesfully erased data. +// +// ------------------------------------------------------------------------ + +#if 8 == CYGNUM_FLASH_WIDTH + +# if 1 == CYGNUM_FLASH_INTERLEAVE +# define FLASHWORD( k ) ((flash_data_t)(k)) // To narrow a 16-bit constant +typedef cyg_uint8 flash_data_t; +# elif 2 == CYGNUM_FLASH_INTERLEAVE +// 2 devices to make 16-bit +# define FLASHWORD( k ) ((k)+((k)<<8)) +typedef cyg_uint16 flash_data_t; +# elif 4 == CYGNUM_FLASH_INTERLEAVE +// 4 devices to make 32-bit +# define FLASHWORD( k ) ((k)+((k)<<8)+((k)<<16)+((k)<<24)) +typedef cyg_uint32 flash_data_t; +# elif 8 == CYGNUM_FLASH_INTERLEAVE +// 8 devices to make 64-bit - intermediate requires explicit widening +# define FLASHWORD32( k ) ((flash_data_t)((k)+((k)<<8)+((k)<<16)+((k)<<24))) +# define FLASHWORD( k ) (FLASHWORD32( k ) + (FLASHWORD32( k ) << 32)); +typedef cyg_uint64 flash_data_t; +# else +# error How many 8-bit flash devices? +# endif + +#elif 16 == CYGNUM_FLASH_WIDTH + +# if 1 == CYGNUM_FLASH_INTERLEAVE +# define FLASHWORD( k ) (k) +typedef cyg_uin16 flash_data_t; +# elif 2 == CYGNUM_FLASH_INTERLEAVE +// 2 devices to make 32-bit +# define FLASHWORD( k ) ((k)+((k)<<16)) +typedef cyg_uint32 flash_data_t; +# elif 2 == CYGNUM_FLASH_INTERLEAVE +// 4 devices to make 64-bit - intermediate requires explicit widening +# define FLASHWORD32( k ) ((flash_data_t)((k)+((k)<<16))) +# define FLASHWORD( k ) (FLASHWORD32( k ) + (FLASHWORD32( k ) << 32)); +typedef cyg_uint64 flash_data_t; +# else +# error How many 16-bit flash devices? +# endif + +#elif 32 == CYGNUM_FLASH_WIDTH + +# if 1 == CYGNUM_FLASH_INTERLEAVE +# define FLASHWORD( k ) (k) +typedef cyg_uint32 flash_data_t; +# elif 2 == CYGNUM_FLASH_INTERLEAVE +// 2 devices to make 64-bit - intermediate requires explicit widening +# define FLASHWORD32( k ) ((flash_data_t)(k)) +# define FLASHWORD( k ) (FLASHWORD32( k ) + (FLASHWORD32( k ) << 32)); +typedef cyg_uint64 flash_data_t; +# else +# error How many 32-bit flash devices? +# endif + +#else +# error What flash width? +#endif + +// Data (not) that we read back: +#if 0 == CYGNUM_FLASH_BLANK +# define FLASH_BlankValue ((flash_data_t)0) +#elif 1 == CYGNUM_FLASH_BLANK +# define FLASH_BlankValue ((flash_data_t)(-1ll)) +#else +# error What blank value? +#endif + +#endif // _FLASH_PRIVATE_ + +#endif // CYGONCE_IO_FLASH_FLASH_DEV_H +//---------------------------------------------------------------------------- +// end of flash_dev.h diff --git a/packages/io/flash/current/src/flash.c b/packages/io/flash/current/src/flash.c --- a/packages/io/flash/current/src/flash.c +++ b/packages/io/flash/current/src/flash.c @@ -58,7 +58,8 @@ #undef RAM_FLASH_DEV_DEBUG #if !defined(CYG_HAL_STARTUP_RAM) && defined(RAM_FLASH_DEV_DEBUG) # warning "Can only enable the flash debugging when configured for RAM startup" -# undef RAM_FLASH_DEV_DEBUG +# undef CYGHWR_IO_FLASH_DEVICE_IN_RAM +# define CYGHWR_IO_FLASH_DEVICE_IN_RAM 1 #endif struct flash_info flash_info; @@ -79,27 +80,44 @@ flash_init(void *work_space, int work_sp return FLASH_ERR_OK; } +#ifdef CYGHWR_IO_FLASH_DEVICE_IN_RAM +// Use this function to make function pointers anonymous - forcing the +// compiler to use jumps instead of branches when calling driver +// services. +static void* __anonymizer(void* p) +{ + return p; +} +#endif + // FIXME: Want to change all drivers to use this function. But it may // make sense to wait till device structure pointer arguments get // added as well. void flash_dev_query(void* data) { - extern char flash_query[], flash_query_end[]; typedef void code_fun(void*); - int code_len; code_fun *_flash_query; int d_cache, i_cache; - // Query the device driver - copy 'query' code to RAM for execution - code_len = (unsigned long)&flash_query_end - (unsigned long)&flash_query; - _flash_query = (code_fun *)flash_info.work_space; - memcpy(_flash_query, &flash_query, code_len); +#ifdef CYGHWR_IO_FLASH_DEVICE_IN_RAM + { + externC code_fun flash_query; + _flash_query = (code_fun*) __anonymizer(&flash_query); + } +#else + { + extern char flash_query[], flash_query_end[]; + int code_len; + + // Query the device driver - copy 'query' code to RAM for execution + code_len = (unsigned long)&flash_query_end - (unsigned long)&flash_query; + _flash_query = (code_fun *)flash_info.work_space; + memcpy(_flash_query, &flash_query, code_len); + } +#endif HAL_FLASH_CACHES_OFF(d_cache, i_cache); -#ifdef RAM_FLASH_DEV_DEBUG - _flash_query = &flash_query; -#endif (*_flash_query)(data); HAL_FLASH_CACHES_ON(d_cache, i_cache); } @@ -144,8 +162,6 @@ flash_erase(void *addr, int len, void ** { unsigned short *block, *end_addr; int stat = 0; - extern char flash_erase_block[], flash_erase_block_end[]; - int code_len; typedef int code_fun(unsigned short *, unsigned int); code_fun *_flash_erase_block; int d_cache, i_cache; @@ -154,21 +170,30 @@ flash_erase(void *addr, int len, void ** return FLASH_ERR_NOT_INIT; } - // Copy 'erase' code to RAM for execution - code_len = (unsigned long)&flash_erase_block_end - (unsigned long)&flash_erase_block; - _flash_erase_block = (code_fun *)flash_info.work_space; - memcpy(_flash_erase_block, &flash_erase_block, code_len); +#ifdef CYGHWR_IO_FLASH_DEVICE_IN_RAM + { + externC code_fun flash_erase_block; + _flash_erase_block = (code_fun*) __anonymizer(&flash_erase_block); + } +#else + { + extern char flash_erase_block[], flash_erase_block_end[]; + int code_len; - HAL_FLASH_CACHES_OFF(d_cache, i_cache); + // Copy 'erase' code to RAM for execution + code_len = (unsigned long)&flash_erase_block_end - (unsigned long)&flash_erase_block; + _flash_erase_block = (code_fun *)flash_info.work_space; + memcpy(_flash_erase_block, &flash_erase_block, code_len); + } +#endif + block = (unsigned short *)((unsigned long)addr & flash_info.block_mask); end_addr = (unsigned short *)((unsigned long)addr+len); printf("... Erase from %p-%p: ", (void*)block, (void*)end_addr); + HAL_FLASH_CACHES_OFF(d_cache, i_cache); while (block < end_addr) { -#ifdef RAM_FLASH_DEV_DEBUG - _flash_erase_block = &flash_erase_block; -#endif // Supply the blocksize for a gross check for erase success stat = (*_flash_erase_block)(block, flash_info.block_size); stat = flash_hwr_map_error(stat); @@ -188,8 +213,7 @@ int flash_program(void *_addr, void *_data, int len, void **err_addr) { int stat = 0; - int code_len, size; - extern char flash_program_buf[], flash_program_buf_end[]; + int size; typedef int code_fun(unsigned short *, unsigned short *, int); code_fun *_flash_program_buf; unsigned short *addr = (unsigned short *)_addr; @@ -200,20 +224,30 @@ flash_program(void *_addr, void *_data, return FLASH_ERR_NOT_INIT; } - // Copy 'program' code to RAM for execution - code_len = (unsigned long)&flash_program_buf_end - (unsigned long)&flash_program_buf; - _flash_program_buf = (code_fun *)flash_info.work_space; - memcpy(_flash_program_buf, &flash_program_buf, code_len); +#ifdef CYGHWR_IO_FLASH_DEVICE_IN_RAM + { + externC code_fun flash_program_buf; + _flash_program_buf = (code_fun*) __anonymizer(&flash_program_buf); + } +#else + { + int code_len; + extern char flash_program_buf[], flash_program_buf_end[]; + // Copy 'program' code to RAM for execution + code_len = (unsigned long)&flash_program_buf_end - (unsigned long)&flash_program_buf; + _flash_program_buf = (code_fun *)flash_info.work_space; + memcpy(_flash_program_buf, &flash_program_buf, code_len); + } +#endif + + printf("... Program from %p-%p at %p: ", (void*)data, + (void*)(((unsigned long)data)+len), (void*)addr); + HAL_FLASH_CACHES_OFF(d_cache, i_cache); - - printf("... Program from %p-%p at %p: ", (void*)data, (void*)(((unsigned long)data)+len), (void*)addr); - while (len > 0) { size = len; if (size > flash_info.block_size) size = flash_info.block_size; -#ifdef RAM_FLASH_DEV_DEBUG - _flash_program_buf = &flash_program_buf; -#endif + stat = (*_flash_program_buf)(addr, data, size); stat = flash_hwr_map_error(stat); if (stat) { @@ -237,8 +271,6 @@ flash_lock(void *addr, int len, void **e { unsigned short *block, *end_addr; int stat = 0; - extern char flash_lock_block[], flash_lock_block_end[]; - int code_len; typedef int code_fun(unsigned short *); code_fun *_flash_lock_block; int d_cache, i_cache; @@ -247,21 +279,29 @@ flash_lock(void *addr, int len, void **e return FLASH_ERR_NOT_INIT; } - // Copy 'lock' code to RAM for execution - code_len = (unsigned long)&flash_lock_block_end - (unsigned long)&flash_lock_block; - _flash_lock_block = (code_fun *)flash_info.work_space; - memcpy(_flash_lock_block, &flash_lock_block, code_len); - HAL_FLASH_CACHES_OFF(d_cache, i_cache); +#ifdef CYGHWR_IO_FLASH_DEVICE_IN_RAM + { + externC code_fun flash_lock_block; + _flash_lock_block = (code_fun*) __anonymizer(&flash_lock_block); + } +#else + { + extern char flash_lock_block[], flash_lock_block_end[]; + int code_len; + // Copy 'lock' code to RAM for execution + code_len = (unsigned long)&flash_lock_block_end - (unsigned long)&flash_lock_block; + _flash_lock_block = (code_fun *)flash_info.work_space; + memcpy(_flash_lock_block, &flash_lock_block, code_len); + } +#endif block = (unsigned short *)((unsigned long)addr & flash_info.block_mask); end_addr = (unsigned short *)((unsigned long)addr+len); printf("... Lock from %p-%p: ", block, end_addr); + HAL_FLASH_CACHES_OFF(d_cache, i_cache); while (block < end_addr) { -#ifdef RAM_FLASH_DEV_DEBUG - _flash_lock_block = &flash_lock_block; -#endif stat = (*_flash_lock_block)(block); stat = flash_hwr_map_error(stat); if (stat) { @@ -281,8 +321,6 @@ flash_unlock(void *addr, int len, void * { unsigned short *block, *end_addr; int stat = 0; - extern char flash_unlock_block[], flash_unlock_block_end[]; - int code_len; typedef int code_fun(unsigned short *, int, int); code_fun *_flash_unlock_block; int d_cache, i_cache; @@ -291,21 +329,29 @@ flash_unlock(void *addr, int len, void * return FLASH_ERR_NOT_INIT; } - // Copy 'lock' code to RAM for execution - code_len = (unsigned long)&flash_unlock_block_end - (unsigned long)&flash_unlock_block; - _flash_unlock_block = (code_fun *)flash_info.work_space; - memcpy(_flash_unlock_block, &flash_unlock_block, code_len); - HAL_FLASH_CACHES_OFF(d_cache, i_cache); +#ifdef CYGHWR_IO_FLASH_DEVICE_IN_RAM + { + externC code_fun flash_unlock_block; + _flash_unlock_block = (code_fun*) __anonymizer(&flash_unlock_block); + } +#else + { + extern char flash_unlock_block[], flash_unlock_block_end[]; + int code_len; + // Copy 'lock' code to RAM for execution + code_len = (unsigned long)&flash_unlock_block_end - (unsigned long)&flash_unlock_block; + _flash_unlock_block = (code_fun *)flash_info.work_space; + memcpy(_flash_unlock_block, &flash_unlock_block, code_len); + } +#endif block = (unsigned short *)((unsigned long)addr & flash_info.block_mask); end_addr = (unsigned short *)((unsigned long)addr+len); printf("... Unlock from %p-%p: ", block, end_addr); + HAL_FLASH_CACHES_OFF(d_cache, i_cache); while (block < end_addr) { -#ifdef RAM_FLASH_DEV_DEBUG - _flash_unlock_block = &flash_unlock_block; -#endif stat = (*_flash_unlock_block)(block, flash_info.block_size, flash_info.blocks); stat = flash_hwr_map_error(stat); if (stat) { @@ -347,6 +393,10 @@ flash_errmsg(int err) return "FLASH sub-system not initialized"; case FLASH_ERR_DRV_VERIFY: return "Data verify failed after operation"; + case FLASH_ERR_DRV_TIMEOUT: + return "Driver timed out waiting for device"; + case FLASH_ERR_DRV_WRONG_PART: + return "Driver does not support device"; default: return "Unknown error"; } diff --git a/packages/kernel/current/ChangeLog b/packages/kernel/current/ChangeLog --- a/packages/kernel/current/ChangeLog +++ b/packages/kernel/current/ChangeLog @@ -1,3 +1,7 @@ +2001-02-23 Jonathan Larmour + + * include/thread.inl (attach_stack): Check for non-NULL stack base. + 2001-02-11 Jonathan Larmour * tests/stress_threads.c: CYGINT_ISO_STDIO_FORMATTED_IO needs a diff --git a/packages/kernel/current/include/thread.inl b/packages/kernel/current/include/thread.inl --- a/packages/kernel/current/include/thread.inl +++ b/packages/kernel/current/include/thread.inl @@ -165,6 +165,7 @@ inline void Cyg_HardwareThread::attach_s unsigned int i; + CYG_ASSERT( NULL != base, "stack base non-NULL" ); CYG_ASSERT( 0 == ((sizeof(CYG_WORD)-1) & (cyg_uint32)base), "stack base alignment" ); CYG_ASSERT( 0 == ((sizeof(CYG_WORD)-1) & (cyg_uint32)top), "stack top alignment" ); diff --git a/packages/net/tcpip/current/ChangeLog b/packages/net/tcpip/current/ChangeLog --- a/packages/net/tcpip/current/ChangeLog +++ b/packages/net/tcpip/current/ChangeLog @@ -1,3 +1,41 @@ +2001-02-23 Jonathan Larmour + + * src/lib/tftp_server.c (STACK_SIZE): Align + +2001-02-20 Jonathan Larmour + + * cdl/net.cdl: Avoid puts to the CDL header when a CDL + define will do. + Rename CYGPKG_NET_BRIDGE_CODE -> CYGPKG_NET_BRIDGE + Rename CYGPKG_NET_NBRIDGE -> CYGNUM_NET_BRIDGES + Rename CYGPKG_NET_BRIDGE_HANDLER -> CYGINT_NET_BRIDGE_HANDLER + Make if_bridge.c compilation conditional on CYGPKG_NET_BRIDGE + + * src/sys/net/if_bridge.c: Reflect above renames. + +2001-02-20 Hugo Tyson +2001-02-15 Martin Buck + + * cdl/net.cdl: Split up CYGPKG_NET_NBRIDGE into 2 parts: + CYGPKG_NET_NBRIDGE and CYGPKG_NET_BRIDGE_HANDLER. If + CYGPKG_NET_BRIDGE_HANDLER is nonzero, calls to an Ethernet + bridge are inserted into the stack's data path. If + CYGPKG_NET_NBRIDGE is nonzero, the standard OpenBSD bridge + code is added. This setup allows you to implement your own + bridge as a separate package which then implements + CYGPKG_NET_BRIDGE_HANDLER so it gets called by the stack. + NBRIDGE now is the same as CYGPKG_NET_BRIDGE_HANDLER instead + of CYGPKG_NET_NBRIDGE. This means it's nonzero if the bridge + is wanted, but it no longer contains the number of bridge + buffers requested. This shouldn't be a problem, because the + only place where the actual number of buffers is required is + in if_bridge.c, which now uses CYGPKG_NET_NBRIDGE instead + of NBRIDGE. + + * src/sys/net/if_bridge.c: Use CYGPKG_NET_NBRIDGE instead of + NBRIDGE, because the latter one now only means that there is + a bridge, not that we should implement it. + 2001-01-07 Gary Thomas * src/ecos/support.c: diff --git a/packages/net/tcpip/current/cdl/net.cdl b/packages/net/tcpip/current/cdl/net.cdl --- a/packages/net/tcpip/current/cdl/net.cdl +++ b/packages/net/tcpip/current/cdl/net.cdl @@ -63,92 +63,91 @@ cdl_package CYGPKG_NET { requires { CYGBLD_ISO_BSDTYPES_HEADER == "" } compile ecos/support.c \ - ecos/synch.c \ - ecos/timeout.c \ + ecos/synch.c \ + ecos/timeout.c \ ecos/init.cxx \ sys/kern/uipc_mbuf.c \ - sys/kern/uipc_domain.c \ - sys/kern/uipc_socket.c \ - sys/kern/uipc_socket2.c \ - sys/kern/kern_subr.c \ - sys/net/if.c \ - sys/net/rtsock.c \ - sys/net/raw_cb.c \ - sys/net/raw_usrreq.c \ - sys/net/route.c \ - sys/net/radix.c \ - sys/net/if_ethersubr.c \ - sys/net/if_loop.c \ - sys/net/if_bridge.c \ - sys/netinet/igmp.c \ - sys/netinet/raw_ip.c \ - sys/netinet/in.c \ - sys/netinet/in_cksum.c \ - sys/netinet/in_pcb.c \ - sys/netinet/in_proto.c \ - sys/netinet/ip_id.c \ - sys/netinet/ip_icmp.c \ - sys/netinet/ip_input.c \ - sys/netinet/ip_output.c \ - sys/netinet/if_ether.c \ - sys/netinet/udp_usrreq.c \ - sys/netinet/tcp_input.c \ - sys/netinet/tcp_output.c \ - sys/netinet/tcp_subr.c \ - sys/netinet/tcp_debug.c \ - sys/netinet/tcp_usrreq.c \ - sys/netinet/tcp_timer.c \ - lib/inet_addr.c \ - lib/bootp_support.c \ - lib/dhcp_support.c \ - lib/dhcp_prot.c \ - lib/network_support.c \ - lib/getproto.c \ - lib/getserv.c \ - lib/gethost.c + sys/kern/uipc_domain.c \ + sys/kern/uipc_socket.c \ + sys/kern/uipc_socket2.c \ + sys/kern/kern_subr.c \ + sys/net/if.c \ + sys/net/rtsock.c \ + sys/net/raw_cb.c \ + sys/net/raw_usrreq.c \ + sys/net/route.c \ + sys/net/radix.c \ + sys/net/if_ethersubr.c \ + sys/net/if_loop.c \ + sys/netinet/igmp.c \ + sys/netinet/raw_ip.c \ + sys/netinet/in.c \ + sys/netinet/in_cksum.c \ + sys/netinet/in_pcb.c \ + sys/netinet/in_proto.c \ + sys/netinet/ip_id.c \ + sys/netinet/ip_icmp.c \ + sys/netinet/ip_input.c \ + sys/netinet/ip_output.c \ + sys/netinet/if_ether.c \ + sys/netinet/udp_usrreq.c \ + sys/netinet/tcp_input.c \ + sys/netinet/tcp_output.c \ + sys/netinet/tcp_subr.c \ + sys/netinet/tcp_debug.c \ + sys/netinet/tcp_usrreq.c \ + sys/netinet/tcp_timer.c \ + lib/inet_addr.c \ + lib/bootp_support.c \ + lib/dhcp_support.c \ + lib/dhcp_prot.c \ + lib/network_support.c \ + lib/getproto.c \ + lib/getserv.c \ + lib/gethost.c cdl_option CYGPKG_NET_API_LOCAL { - display "Implement the socket API locally" - flavor bool - active_if !CYGPKG_IO_FILEIO - default_value 1 - - compile sys/kern/uipc_syscalls.c \ + display "Implement the socket API locally" + flavor bool + active_if !CYGPKG_IO_FILEIO + default_value 1 + + compile sys/kern/uipc_syscalls.c \ sys/kern/sys_socket.c \ sys/kern/sys_generic.c \ - lib/socket.c \ - lib/close.c \ - lib/read.c \ - lib/write.c \ - lib/bind.c \ - lib/connect.c \ - lib/accept.c \ - lib/listen.c \ - lib/shutdown.c \ - lib/sendto.c \ - lib/recvfrom.c \ - lib/getsockname.c \ - lib/getpeername.c \ - lib/getsockopt.c \ - lib/setsockopt.c \ - lib/ioctl.c \ - lib/select.c + lib/socket.c \ + lib/close.c \ + lib/read.c \ + lib/write.c \ + lib/bind.c \ + lib/connect.c \ + lib/accept.c \ + lib/listen.c \ + lib/shutdown.c \ + lib/sendto.c \ + lib/recvfrom.c \ + lib/getsockname.c \ + lib/getpeername.c \ + lib/getsockopt.c \ + lib/setsockopt.c \ + lib/ioctl.c \ + lib/select.c - description " - This option controls support for the network-stack supplied - API." + description " + This option controls support for the network-stack supplied + API." } cdl_option CYGPKG_NET_API_FILEIO { - display "Implement the socket API via Fileio package" - active_if CYGPKG_IO_FILEIO - default_value 1 + display "Implement the socket API via Fileio package" + active_if CYGPKG_IO_FILEIO + default_value 1 - compile -library=libextras.a sys/kern/sockio.c + compile -library=libextras.a sys/kern/sockio.c - description " - This option controls support for the fileio subsystem supplied API." + description " + This option controls support for the fileio subsystem supplied API." } cdl_component CYGPKG_NET_INET { @@ -158,6 +157,7 @@ cdl_package CYGPKG_NET { default_value 1 description " This option enables support for INET (IP) network processing." + define INET cdl_option CYGPKG_NET_INET6 { display "IPv6 support" @@ -165,9 +165,7 @@ cdl_package CYGPKG_NET { default_value 0 description " This option enables support for new IPv6." - define_proc { - puts $::cdl_header "#define INET6" - } + define INET6 } cdl_option CYGPKG_NET_ROUTING { @@ -177,14 +175,9 @@ cdl_package CYGPKG_NET { default_value 0 description " This option enables support for packet routing." - define_proc { - puts $::cdl_header "#define MROUTING" - } + define MROUTING } - define_proc { - puts $::cdl_header "#define INET" - } } cdl_component CYGPKG_NET_TFTP { @@ -197,17 +190,17 @@ cdl_package CYGPKG_NET { This option provides additional library support for the TFTP (Trivial File Transfer Protocol)." - cdl_option CYGPKG_NET_TFTPD_THREAD_PRIORITY { - display "Priority level for TFTP daemon thread." - flavor data - default_value 10 - description " - This option allows the thread priority level used by the - TFTP server thread to be adjusted by the user. It should be set - high enough that sufficient CPU resources are available to - process network data, but may be adjusted so that application - threads can have precedence over TFTP server processing." - } + cdl_option CYGPKG_NET_TFTPD_THREAD_PRIORITY { + display "Priority level for TFTP daemon thread." + flavor data + default_value 10 + description " + This option allows the thread priority level used by the + TFTP server thread to be adjusted by the user. It should be set + high enough that sufficient CPU resources are available to + process network data, but may be adjusted so that application + threads can have precedence over TFTP server processing." + } cdl_option CYGPKG_NET_TFTP_FILE_ACCESS { display "File I/O functions for TFTP server" @@ -220,60 +213,60 @@ cdl_package CYGPKG_NET { } cdl_component CYGPKG_NET_DHCP { - display "Use full DHCP instead of BOOTP" - active_if (CYGHWR_NET_DRIVERS > 0) - flavor bool - default_value 1 - description " - Provide DHCP for initializing the IP address - of network interfaces. The DHCP client is capable of falling - back to BOOTP usage if the server does not support DHCP, so it - should never be necessary to disable this option. However, - depending on other configuration the DHCP client may provide or - require a kernel thread of its own; this consumes quite a lot - of resource which a BOOTP solution does not require." + display "Use full DHCP instead of BOOTP" + active_if (CYGHWR_NET_DRIVERS > 0) + flavor bool + default_value 1 + description " + Provide DHCP for initializing the IP address + of network interfaces. The DHCP client is capable of falling + back to BOOTP usage if the server does not support DHCP, so it + should never be necessary to disable this option. However, + depending on other configuration the DHCP client may provide or + require a kernel thread of its own; this consumes quite a lot + of resource which a BOOTP solution does not require." - cdl_option CYGOPT_NET_DHCP_DHCP_THREAD { - display "DHCP management thread" - flavor bool - default_value 1 - description " - Provide a separate thread to renew DHCP leases; otherwise - the application MUST periodically examine the semaphore - dhcp_needs_attention and call dhcp_bind() if it is - signalled. If enabled, this thread does all that for you. - Independent of this option, initialization of the - interfaces still occurs in init_all_network_interfaces() - and your startup code must call that. It will start the - DHCP management thread if necessary. If a lease fails to - be renewed, the management thread will shut down all - interfaces and attempt to initialize all the interfaces - again from scratch. This may cause application problems, - in which case managing the DHCP state in an application - aware thread is recommended. See comments in dhcp.h" - } + cdl_option CYGOPT_NET_DHCP_DHCP_THREAD { + display "DHCP management thread" + flavor bool + default_value 1 + description " + Provide a separate thread to renew DHCP leases; otherwise + the application MUST periodically examine the semaphore + dhcp_needs_attention and call dhcp_bind() if it is + signalled. If enabled, this thread does all that for you. + Independent of this option, initialization of the + interfaces still occurs in init_all_network_interfaces() + and your startup code must call that. It will start the + DHCP management thread if necessary. If a lease fails to + be renewed, the management thread will shut down all + interfaces and attempt to initialize all the interfaces + again from scratch. This may cause application problems, + in which case managing the DHCP state in an application + aware thread is recommended. See comments in dhcp.h" + } - cdl_option CYGOPT_NET_DHCP_DHCP_THREAD_PARAM { - display "DHCP management thread loops forever" - flavor data - default_value 1 - active_if CYGOPT_NET_DHCP_DHCP_THREAD - description " - If the parameter is nonzero, it loops forever; if zero, - the thread exits if a lease expires, and the application - must detect this and tidy up or reboot the whole machine." - } - cdl_option CYGPKG_NET_DHCP_THREAD_PRIORITY { - display "DHCP management thread priority" - flavor data - default_value CYGPKG_NET_THREAD_PRIORITY + 1 - active_if CYGOPT_NET_DHCP_DHCP_THREAD - description " - This option sets the thread priority level used by the DHCP - management thread. It should be high enough that it can run - when necessary, but it does not need to be as high as the - network thread itself." - } + cdl_option CYGOPT_NET_DHCP_DHCP_THREAD_PARAM { + display "DHCP management thread loops forever" + flavor data + default_value 1 + active_if CYGOPT_NET_DHCP_DHCP_THREAD + description " + If the parameter is nonzero, it loops forever; if zero, + the thread exits if a lease expires, and the application + must detect this and tidy up or reboot the whole machine." + } + cdl_option CYGPKG_NET_DHCP_THREAD_PRIORITY { + display "DHCP management thread priority" + flavor data + default_value CYGPKG_NET_THREAD_PRIORITY + 1 + active_if CYGOPT_NET_DHCP_DHCP_THREAD + description " + This option sets the thread priority level used by the DHCP + management thread. It should be high enough that it can run + when necessary, but it does not need to be as high as the + network thread itself." + } } cdl_option CYGPKG_NET_SYSCTL { @@ -290,10 +283,10 @@ cdl_package CYGPKG_NET { default_value 7 description " This option allows the thread priority level used by the - networking stack to be adjusted by the user. It should be set - high enough that sufficient CPU resources are available to - process network data, but may be adjusted so that application - threads can have precedence over network processing." + networking stack to be adjusted by the user. It should be set + high enough that sufficient CPU resources are available to + process network data, but may be adjusted so that application + threads can have precedence over network processing." } cdl_option CYGPKG_NET_FAST_THREAD_PRIORITY { @@ -302,13 +295,13 @@ cdl_package CYGPKG_NET { default_value CYGPKG_NET_THREAD_PRIORITY - 1 description " This option sets the thread priority level used by the fast - network thread. The fast network thread runs often but briefly, to - service network device interrupts and network timeout events. This - thread should have higher priority than the background network - thread. It is reasonable to set this thread's priority higher than - application threads for best network throughput, or to set it lower - than application threads for best latency for those application - threads themselves, potentially at a cost to network throughput." + network thread. The fast network thread runs often but briefly, to + service network device interrupts and network timeout events. This + thread should have higher priority than the background network + thread. It is reasonable to set this thread's priority higher than + application threads for best network throughput, or to set it lower + than application threads for best latency for those application + threads themselves, potentially at a cost to network throughput." } cdl_option CYGPKG_NET_NBPF { @@ -317,22 +310,35 @@ cdl_package CYGPKG_NET { default_value 0 description " This option controls the number of active BPF filters." - define_proc { - puts $::cdl_header "#define NBPFILTER CYGPKG_NET_NBPF" - } + define NBPFILTER } - cdl_option CYGPKG_NET_NBRIDGE { - display "Number of bridge buffers?" - flavor data - default_value 0 - description " - This option controls the number of bridge buffers and indeed - whether bridging code is enabled at all via 'standard' - symbol NBRIDGE." - define_proc { - puts $::cdl_header "#define NBRIDGE CYGPKG_NET_NBRIDGE" - } + cdl_component CYGPKG_NET_BRIDGE { + display "Built-in ethernet bridge code" + default_value 0 + implements CYGINT_NET_BRIDGE_HANDLER + no_define + description " + This option controls whether to include the built-in code for + the Ethernet bridge." + compile sys/net/if_bridge.c + + cdl_option CYGNUM_NET_BRIDGES { + display "Number of Ethernet bridges" + flavor data + default_value 1 + legal_values 1 to 999999 + } + } + + cdl_interface CYGINT_NET_BRIDGE_HANDLER { + display "Support for ethernet bridges in the IP stack" + define NBRIDGE + description " + This interface controls whether calls to bridge code are made + from the IP stack; these are needed if the built-in bridge code + is used, but they can also be enabled in order to call different + bridge code from an external component." } cdl_option CYGPKG_NET_NGIF { @@ -341,24 +347,20 @@ cdl_package CYGPKG_NET { default_value 0 description " This option controls the number of active GIF things." - define_proc { - puts $::cdl_header "#define NGIF CYGPKG_NET_NGIF" - } + define NGIF } cdl_option CYGPKG_NET_NLOOP { display "Number of loopback interfaces" flavor data default_value 1 - requires { (CYGPKG_NET_NLOOP > 1) ? CYGPKG_LIBC_STDIO : 1 } + requires { (CYGPKG_NET_NLOOP > 1) ? CYGPKG_LIBC_STDIO : 1 } description " This option controls the number of loopback, i.e. local, interfaces. There is seldom need for this value to be anything other than one. If a different value is required, then the C library STDIO package is required for sprintf()." - define_proc { - puts $::cdl_header "#define NLOOP CYGPKG_NET_NLOOP" - } + define NLOOP } cdl_option CYGPKG_NET_MEM_USAGE { @@ -367,7 +369,7 @@ cdl_package CYGPKG_NET { default_value 256*1024 description " This option controls the amount of memory pre-allocated - for buffers used by the networking code." + for buffers used by the networking code." } cdl_option CYGPKG_NET_NUM_WAKEUP_EVENTS { @@ -376,13 +378,13 @@ cdl_package CYGPKG_NET { default_value 8 description " This option controls the number of pending network events - used by the networking code." + used by the networking code." } cdl_component CYGPKG_NET_OPTIONS { display "Networking support build options" flavor none - no_define + no_define cdl_option CYGPKG_NET_CFLAGS_ADD { display "Additional compiler flags" @@ -392,7 +394,7 @@ cdl_package CYGPKG_NET { description " This option modifies the set of compiler flags for building the networking package. - These flags are used in addition + These flags are used in addition to the set of global flags." } @@ -409,66 +411,66 @@ cdl_package CYGPKG_NET { } cdl_component CYGPKG_NET_BUILD_TESTS { - display "Build networking tests (demo programs)" - flavor bool - no_define - default_value 0 - description " - This option enables the building of additional network tests - which at this time are just demos; otherwise only loopback - interface tests will be built." + display "Build networking tests (demo programs)" + flavor bool + no_define + default_value 0 + description " + This option enables the building of additional network tests + which at this time are just demos; otherwise only loopback + interface tests will be built." - cdl_option CYGPKG_NET_TESTS { - display "Networking tests" - flavor data - no_define - calculated { CYGPKG_NET_BUILD_TESTS ? \ - "tests/mbuf_test \ - tests/socket_test \ - tests/ftp_test \ - tests/server_test \ - tests/nc_test_master \ - tests/nc_test_slave \ - tests/tftp_client_test \ - tests/tftp_server_test \ - tests/tcp_echo \ - tests/set_mac_address \ - tests/bridge \ - tests/flood \ - tests/ping_test \ - tests/dhcp_test \ - tests/ping_lo_test \ - tests/tcp_lo_test \ - tests/udp_lo_test \ - tests/multi_lo_select \ - tests/tcp_lo_select" - : - "tests/ping_lo_test \ - tests/tcp_lo_test \ - tests/udp_lo_test \ - tests/multi_lo_select \ - tests/tcp_lo_select" - } - description " - This option specifies the set of tests - for the networking package." - } - - cdl_option CYGPKG_NET_TESTS_USE_RT_TEST_HARNESS { - display "Use real-time response test harness (if available)" - default_value 0 - description " - Platform and/or ethernet device driver packages may - provide a test harness to verify that interrupts are - not disabled or flooded for too long during a test. If - such is provided, CYGTST_DEVS_ETH_TEST_NET_REALTIME is - defined and can be #include'd to acquire the support. - Some tests in the TCP/IP stack can use this harness; - this option controls whether they do. The StrongARM - EBSA285 Ethernet device driver is one package that - provides such a harness. See the file - tests/test_net_realtime.h in there for details." - } + cdl_option CYGPKG_NET_TESTS { + display "Networking tests" + flavor data + no_define + calculated { CYGPKG_NET_BUILD_TESTS ? \ + "tests/mbuf_test \ + tests/socket_test \ + tests/ftp_test \ + tests/server_test \ + tests/nc_test_master \ + tests/nc_test_slave \ + tests/tftp_client_test \ + tests/tftp_server_test \ + tests/tcp_echo \ + tests/set_mac_address \ + tests/bridge \ + tests/flood \ + tests/ping_test \ + tests/dhcp_test \ + tests/ping_lo_test \ + tests/tcp_lo_test \ + tests/udp_lo_test \ + tests/multi_lo_select \ + tests/tcp_lo_select" + : + "tests/ping_lo_test \ + tests/tcp_lo_test \ + tests/udp_lo_test \ + tests/multi_lo_select \ + tests/tcp_lo_select" + } + description " + This option specifies the set of tests + for the networking package." + } + + cdl_option CYGPKG_NET_TESTS_USE_RT_TEST_HARNESS { + display "Use real-time response test harness (if available)" + default_value 0 + description " + Platform and/or ethernet device driver packages may + provide a test harness to verify that interrupts are + not disabled or flooded for too long during a test. If + such is provided, CYGTST_DEVS_ETH_TEST_NET_REALTIME is + defined and can be #include'd to acquire the support. + Some tests in the TCP/IP stack can use this harness; + this option controls whether they do. The StrongARM + EBSA285 Ethernet device driver is one package that + provides such a harness. See the file + tests/test_net_realtime.h in there for details." + } } # Description and control over different interfaces @@ -497,28 +499,28 @@ cdl_package CYGPKG_NET { display "Initialize 'eth0' manually?" default_value 0 implements CYGHWR_NET_DRIVER_ETH0_SETUP - description " - If this option is selected, the eCos library provides no - initialization code for this interface; you must perform - all the initialization in the application, by means of - appropriate ioctl() calls, or by calling init_net() with an - appropriate bootp record you have constructed yourself." + description " + If this option is selected, the eCos library provides no + initialization code for this interface; you must perform + all the initialization in the application, by means of + appropriate ioctl() calls, or by calling init_net() with an + appropriate bootp record you have constructed yourself." } cdl_component CYGHWR_NET_DRIVER_ETH0_BOOTP { display "Use BOOTP/DHCP to initialize 'eth0'?" default_value 1 - implements CYGHWR_NET_DRIVER_ETH0_SETUP - description " - If this option is selected, init_all_network_interfaces() - will use DHCP or BOOTP to acquire initialization data for - this interface, and then set it up accordingly." + implements CYGHWR_NET_DRIVER_ETH0_SETUP + description " + If this option is selected, init_all_network_interfaces() + will use DHCP or BOOTP to acquire initialization data for + this interface, and then set it up accordingly." cdl_option CYGHWR_NET_DRIVER_ETH0_DHCP { display "Use DHCP rather than BOOTP for 'eth0'?" flavor bool default_value 1 - active_if CYGPKG_NET_DHCP + active_if CYGPKG_NET_DHCP } cdl_option CYGHWR_NET_DRIVER_ETH0_BOOTP_SHOW { @@ -530,31 +532,31 @@ cdl_package CYGPKG_NET { cdl_component CYGHWR_NET_DRIVER_ETH0_ADDRS { display "Address setups for 'eth0'" - implements CYGHWR_NET_DRIVER_ETH0_SETUP + implements CYGHWR_NET_DRIVER_ETH0_SETUP no_define - description " - These options let you configure all the initialization data - that init_all_network_interfaces() will use - for 'eth0' statically. Be careful when doing this, because - if you run the same application image on multiple boards, - they will have identical IP addresses and so on; this is a - Bad Thing. - The values you set are inserted in a bootp-style record - that is fed into a common setup routine to configure the - interface. That routine does not in fact use the 'Server - IP address' field. - The bootp record is also available to application code, and - some eCos networking test programs use the 'Server IP - address' field to mean 'a machine we can interact with' for - example to ping or perform ftp with. That is the rationale - for its inclusion here. - The gateway address is used to set up a default route if - nonzero. If you have more than one interface, setting up - more than one default route is will cause malfunctions. A - gateway address of 0.0.0.0 can be set to prevent that route - setup. Of course, your application can add real routes - once the interface(s) initialization is complete." + description " + These options let you configure all the initialization data + that init_all_network_interfaces() will use + for 'eth0' statically. Be careful when doing this, because + if you run the same application image on multiple boards, + they will have identical IP addresses and so on; this is a + Bad Thing. + The values you set are inserted in a bootp-style record + that is fed into a common setup routine to configure the + interface. That routine does not in fact use the 'Server + IP address' field. + The bootp record is also available to application code, and + some eCos networking test programs use the 'Server IP + address' field to mean 'a machine we can interact with' for + example to ping or perform ftp with. That is the rationale + for its inclusion here. + The gateway address is used to set up a default route if + nonzero. If you have more than one interface, setting up + more than one default route is will cause malfunctions. A + gateway address of 0.0.0.0 can be set to prevent that route + setup. Of course, your application can add real routes + once the interface(s) initialization is complete." cdl_option CYGHWR_NET_DRIVER_ETH0_ADDRS_IP { display "IP address for 'eth0'" @@ -607,29 +609,29 @@ cdl_package CYGPKG_NET { cdl_component CYGHWR_NET_DRIVER_ETH1_MANUAL { display "Initialize 'eth1' manually?" default_value 0 - implements CYGHWR_NET_DRIVER_ETH1_SETUP - description " - If this option is selected, the eCos library provides no - initialization code for this interface; you must perform - all the initialization in the application, by means of - appropriate ioctl() calls, or by calling init_net() with an - appropriate bootp record you have constructed yourself." + implements CYGHWR_NET_DRIVER_ETH1_SETUP + description " + If this option is selected, the eCos library provides no + initialization code for this interface; you must perform + all the initialization in the application, by means of + appropriate ioctl() calls, or by calling init_net() with an + appropriate bootp record you have constructed yourself." } cdl_component CYGHWR_NET_DRIVER_ETH1_BOOTP { display "Use BOOTP/DHCP to initialize 'eth1'?" default_value 1 - implements CYGHWR_NET_DRIVER_ETH1_SETUP - description " - If this option is selected, init_all_network_interfaces() - will use DHCP or BOOTP to acquire initialization data for - this interface, and then set it up accordingly." + implements CYGHWR_NET_DRIVER_ETH1_SETUP + description " + If this option is selected, init_all_network_interfaces() + will use DHCP or BOOTP to acquire initialization data for + this interface, and then set it up accordingly." cdl_option CYGHWR_NET_DRIVER_ETH1_DHCP { display "Use DHCP rather than BOOTP for 'eth1'?" flavor bool default_value 1 - active_if CYGPKG_NET_DHCP + active_if CYGPKG_NET_DHCP } cdl_option CYGHWR_NET_DRIVER_ETH1_BOOTP_SHOW { @@ -641,33 +643,33 @@ cdl_package CYGPKG_NET { cdl_component CYGHWR_NET_DRIVER_ETH1_ADDRS { display "Address setups for 'eth1'" - implements CYGHWR_NET_DRIVER_ETH1_SETUP + implements CYGHWR_NET_DRIVER_ETH1_SETUP no_define - description " - These options let you configure all the initialization data - that init_all_network_interfaces() will use - for 'eth1' statically. Be careful when doing this, because - if you run the same application image on multiple boards, - they will have identical IP addresses and so on; this is a - Bad Thing. - The values you set are inserted in a bootp-style record - that is fed into a common setup routine to configure the - interface. That routine does not in fact use the 'Server - IP address' field. - The bootp record is also available to application code, and - some eCos networking test programs use the 'Server IP - address' field to mean 'a machine we can interact with' for - example to ping or perform ftp with. That is the rationale - for its inclusion here. - The gateway address is used to set up a default route if - nonzero. If you have more than one interface, setting up - more than one default route is will cause malfunctions. A - gateway address of 0.0.0.0 can be set to prevent that route - setup. Of course, your application can add real routes - once the interface(s) initialization is complete. - This interface 'eth1' has no route set up in the default - configuration." + description " + These options let you configure all the initialization data + that init_all_network_interfaces() will use + for 'eth1' statically. Be careful when doing this, because + if you run the same application image on multiple boards, + they will have identical IP addresses and so on; this is a + Bad Thing. + The values you set are inserted in a bootp-style record + that is fed into a common setup routine to configure the + interface. That routine does not in fact use the 'Server + IP address' field. + The bootp record is also available to application code, and + some eCos networking test programs use the 'Server IP + address' field to mean 'a machine we can interact with' for + example to ping or perform ftp with. That is the rationale + for its inclusion here. + The gateway address is used to set up a default route if + nonzero. If you have more than one interface, setting up + more than one default route is will cause malfunctions. A + gateway address of 0.0.0.0 can be set to prevent that route + setup. Of course, your application can add real routes + once the interface(s) initialization is complete. + This interface 'eth1' has no route set up in the default + configuration." cdl_option CYGHWR_NET_DRIVER_ETH1_ADDRS_IP { display "IP address for 'eth1'" @@ -701,4 +703,3 @@ cdl_package CYGPKG_NET { } } } - diff --git a/packages/net/tcpip/current/src/lib/tftp_server.c b/packages/net/tcpip/current/src/lib/tftp_server.c --- a/packages/net/tcpip/current/src/lib/tftp_server.c +++ b/packages/net/tcpip/current/src/lib/tftp_server.c @@ -86,7 +86,7 @@ static struct info tftp_server_instrumen #endif // CYGOPT_NET_TFTP_SERVER_INSTRUMENT -#define STACK_SIZE (CYGNUM_HAL_STACK_SIZE_TYPICAL+(3*(SEGSIZE+sizeof(struct tftphdr)))) +#define STACK_SIZE (((CYGNUM_HAL_STACK_SIZE_TYPICAL+(3*(SEGSIZE+sizeof(struct tftphdr)))) + CYGARC_ALIGNMENT-1) & ~(CYGARC_ALIGNMENT-1)) static char *TFTP_tag = "TFTPD"; struct tftp_server { char *tag; diff --git a/packages/net/tcpip/current/src/sys/net/if_bridge.c b/packages/net/tcpip/current/src/sys/net/if_bridge.c --- a/packages/net/tcpip/current/src/sys/net/if_bridge.c +++ b/packages/net/tcpip/current/src/sys/net/if_bridge.c @@ -92,8 +92,6 @@ #include "enc.h" #endif -#if NBRIDGE > 0 - #include #ifndef __ECOS #include @@ -217,7 +215,7 @@ struct snap { u_int16_t type; }; -struct bridge_softc bridgectl[NBRIDGE]; +struct bridge_softc bridgectl[CYGNUM_NET_BRIDGES]; void bridgeattach __P((int)); int bridge_ioctl __P((struct ifnet *, u_long, caddr_t)); @@ -269,7 +267,7 @@ bridgeattach(unused) int i; struct ifnet *ifp; - for (i = 0; i < NBRIDGE; i++) { + for (i = 0; i < CYGNUM_NET_BRIDGES; i++) { bridgectl[i].sc_brtmax = BRIDGE_RTABLE_MAX; bridgectl[i].sc_brttimeout = BRIDGE_RTABLE_TIMEOUT; LIST_INIT(&bridgectl[i].sc_iflist); @@ -943,7 +941,7 @@ bridgeintr(void) struct mbuf *m; int i, s; - for (i = 0; i < NBRIDGE; i++) { + for (i = 0; i < CYGNUM_NET_BRIDGES; i++) { sc = &bridgectl[i]; for (;;) { s = splimp(); @@ -2032,4 +2030,3 @@ ifpromisc(ifp, pswitch) return ((*ifp->if_ioctl)(ifp, SIOCSIFFLAGS, (caddr_t)&ifr)); } -#endif /* NBRIDGE */ diff --git a/packages/redboot/current/ChangeLog b/packages/redboot/current/ChangeLog --- a/packages/redboot/current/ChangeLog +++ b/packages/redboot/current/ChangeLog @@ -1,3 +1,76 @@ +2001-02-26 Gary Thomas + + * include/redboot.h (RedBoot_INIT_PRIO): Slight change - avoid + arithmetic which C preprocessor doesn't handle anyway. This also + fixes prioritizing init entries. + + * src/flash.c (fis_load): Only load actual data [length] when loading + an image. + + * cdl/redboot.cdl: Change build rule to always rebuild 'version.o' + whenever the application is relinked. Thus the version string will + always accurately reflect the actual build date/time. + +2001-02-22 Hugo Tyson + + * cdl/redboot.cdl: New config options to control default creation + of various FIS image files. Also opt for a reserved area at the + base of flash, eg. for user's POST or other pre-RedBoot code that + we must not interfere with. This isn't the same as the extant + boot_offset option, so the two are made to work together. + Likewise an offset for the start of a POST-cooperative RedBoot + image, if any; the value is of course platform dependent, not + simply after the first RedBoot image, if there is one. + + Clarification: a POST-cooperative RedBoot image is a ROM-start + image that runs at a higher address in ROM, and which omits some + of the hardware initialization because it's already done by + whatever came before. Most targets do not have such a thing; + those that do, it is created by a config export file, not by a new + startup type. A POST Redboot can be tested from a plain ROM + redboot by just calling its entrypoint once it is installed in + flash; eg. by "go 0x50040044" at the RedBoot prompt. + + * src/flash.c (fis_init): Create additional optional entries for + o (reserved) reserved area at start, for preboot or post code. + o RedBoot itself now optional + o RedBoot[post] + o RedBoot[backup] + Also initialize their addresses, sizes, accordingly. + The default behaviour is unchanged. + The flash erase is moved to after the fis table init because the + fis table init most conveniently calculates the high water mark of + built-in default objects. + (fis_create): If creating a file which already exists (most likely + one of the preconfigured defaults) pick up Flash address and + length (the two required parameters) from there. They're required + to be the same to it's no loss of generality, and saves typing, + makes the default entries far more useful and so on. + (fis_delete): Skip those entries which were + preconfigured; we want nobody to be able to delete these. + (fis_free): Start searching for free space to list only after the + reserved base area - if there is one. + (fis_find_free): Start searching for free space only after the + reserved base area... + +2001-02-22 Jesper Skov + + * src/flash.c: Added default case to switch statement. + +2001-02-20 Gary Thomas + + * src/load.c: Remove unnecessary \r from usage message. + + * src/printf.c (_vprintf): Ensure CR/LF sequence, not LFCR. + + * src/net/ping.c: + * src/flash.c: Better usage messages [no naked linefeeds]. + + * src/net/ping.c: Tidy up usage message. Check for reasonable + packet lengths. + + * src/load.c: Tidy up usage message. + 2001-02-16 Nick Garnett * src/flash.c (load_flash_config): Move setting of config_ok to @@ -803,7 +876,7 @@ 2000-07-12 Gary Thomas /bin/redboot.elf : $(PREFIX)/lib/target.ld $(PREFIX)/lib/vectors.o $(PREFIX)/lib/libtarget.a $(PREFIX)/lib/libextras.a version.o + /bin/redboot.elf : $(PREFIX)/lib/target.ld $(PREFIX)/lib/vectors.o $(PREFIX)/lib/libtarget.a $(PREFIX)/lib/libextras.a @sh -c "mkdir -p $(dir $@)" + $(CC) -c $(INCLUDE_PATH) $(CFLAGS) -o version.o $(REPOSITORY)/$(PACKAGE)/src/version.c $(CC) $(LDFLAGS) -L$(PREFIX)/lib -Ttarget.ld -o $@ version.o } - make -priority 319 { - version.o: $(REPOSITORY)/$(PACKAGE)/src/version.c $(PREFIX)/lib/libtarget.a - $(CC) -c $(INCLUDE_PATH) $(CFLAGS) -o version.o $(REPOSITORY)/$(PACKAGE)/src/version.c - } } cdl_component CYGPKG_REDBOOT_NETWORKING { @@ -186,12 +183,90 @@ cdl_package CYGPKG_REDBOOT { cdl_option CYGBLD_REDBOOT_FLASH_BOOT_OFFSET { display "Offset from start of FLASH to RedBoot boot image" flavor data - default_value 0 + default_value CYGNUM_REDBOOT_FLASH_RESERVED_BASE + requires { CYGNUM_REDBOOT_FLASH_RESERVED_BASE <= \ + CYGBLD_REDBOOT_FLASH_BOOT_OFFSET } description " This option controls where the RedBoot boot image is located relative to the start of FLASH." } + cdl_option CYGNUM_REDBOOT_FLASH_RESERVED_BASE { + display "Size of reserved area at start of FLASH" + flavor data + default_value 0 + description " + This option reserves an area at the start of FLASH where RedBoot + will never interfere; it is expected that this area contains + (non-RedBoot-based) POST code or some other boot monitor that + executes before RedBoot." + } + + cdl_component CYGPKG_REDBOOT_FIS_CONTENTS { + display "Flash Image System default directory contents" + calculated 1 + + cdl_option CYGOPT_REDBOOT_FIS_RESERVED_BASE { + display "Pseudo-file to describe reserved area" + active_if { 0 != CYGNUM_REDBOOT_FLASH_RESERVED_BASE } + default_value 1 + description " + If an area of FLASH is reserved, it is informative to + have a fis entry describing it. This option controls + creation of such an entry by default in the fis init + command." + } + + cdl_option CYGOPT_REDBOOT_FIS_REDBOOT { + display "File to describe RedBoot boot image" + default_value 1 + description " + Normally a ROM-startup RedBoot image is first in the + FLASH, and the system boots using that image. This + option controls creation of an entry describing it in + the fis init command. It might be disabled if a + platform has an immutable boot image of its own, where + we use a POST-startup RedBoot instead, which performs + less board initialization." + } + + cdl_component CYGOPT_REDBOOT_FIS_REDBOOT_POST { + display "File to describe RedBoot POST-compatible image" + default_value !CYGOPT_REDBOOT_FIS_REDBOOT + description " + This option controls creation of an entry describing a + POST-startup RedBoot image in the fis init command. + Not all platforms support POST-startup. A platform + might have both for testing purposes, where the + eventual user would substitute their own POST code for + the initial ROM-startup RedBoot, and then jump to the + POST-compatible RedBoot immediately following." + cdl_option CYGNUM_REDBOOT_FIS_REDBOOT_POST_OFFSET { + display "Offset of POST image from FLASH start" + flavor booldata + default_value 0 + requires { CYGNUM_REDBOOT_FIS_REDBOOT_POST_OFFSET >= \ + CYGBLD_REDBOOT_FLASH_BOOT_OFFSET } + description " + This option specifies the offset for a POST image from + the start of FLASH. If unset, then the fis entry + describing the POST image will be placed where + convenient." + } + } + + cdl_option CYGOPT_REDBOOT_FIS_REDBOOT_BACKUP { + display "File to describe RedBoot backup image" + default_value 1 + description " + This option controls creation of an entry describing a + backup RedBoot image in the fis init command. + Conventionally a RAM-startup RedBoot image is kept + under this name for use in updating the ROM-based + RedBoot that boots the board." + } + } + cdl_component CYGSEM_REDBOOT_FLASH_CONFIG { display "Keep RedBoot configuration data in FLASH" flavor bool diff --git a/packages/redboot/current/include/redboot.h b/packages/redboot/current/include/redboot.h --- a/packages/redboot/current/include/redboot.h +++ b/packages/redboot/current/include/redboot.h @@ -148,7 +148,8 @@ static _cmd_entry(_s_,_h_,_u_,_f_,_n_) // Initialization functions #define RedBoot_INIT_FIRST 0000 -#define RedBoot_INIT_PRIO(_n_) 1000+_n_ +// Specify a 3 digit numeric value for proper prioritizing +#define RedBoot_INIT_PRIO(_n_) 1##_n_ #define RedBoot_INIT_LAST 9999 typedef void void_fun(void); typedef void_fun *void_fun_ptr; @@ -156,7 +157,8 @@ struct init_tab_entry { void_fun_ptr fun; } CYG_HAL_TABLE_TYPE; #define _RedBoot_init(_f_,_p_) \ -struct init_tab_entry _init_tab_##_p_##_f_ CYG_HAL_TABLE_QUALIFIED_ENTRY(RedBoot_inits,_f_) = { _f_ }; +struct init_tab_entry _init_tab_##_p_##_f_ \ + CYG_HAL_TABLE_QUALIFIED_ENTRY(RedBoot_inits,_p_##_f_) = { _f_ }; #define RedBoot_init(_f_,_p_) _RedBoot_init(_f_,_p_) // Main loop [idle] call-back functions diff --git a/packages/redboot/current/src/flash.c b/packages/redboot/current/src/flash.c --- a/packages/redboot/current/src/flash.c +++ b/packages/redboot/current/src/flash.c @@ -114,8 +114,8 @@ local_cmd_entry("load", ); local_cmd_entry("create", "Create an image", - "-b -l [-s ] - [-f ] [-e ] [-r ] [-n] ", + "-b -l [-s ]\n" + " [-f ] [-e ] [-r ] [-n] ", fis_create, FIS_cmds ); @@ -159,7 +159,7 @@ fis_usage(char *why) static void fis_init(int argc, char *argv[]) { - int stat, img_count = 0; + int stat; struct fis_image_desc *img; void *fis_base, *err_addr; #ifdef CYGSEM_REDBOOT_FLASH_CONFIG @@ -182,58 +182,52 @@ fis_init(int argc, char *argv[]) } printf("*** Initialize FLASH Image System\n"); - redboot_flash_start = (unsigned long)flash_start + CYGBLD_REDBOOT_FLASH_BOOT_OFFSET; #define MIN_REDBOOT_IMAGE_SIZE CYGBLD_REDBOOT_MIN_IMAGE_SIZE redboot_image_size = block_size > MIN_REDBOOT_IMAGE_SIZE ? block_size : MIN_REDBOOT_IMAGE_SIZE; - if (full_init) { - // Erase everything except default RedBoot images, fis block, and config block. - // FIXME! This still assumes that fis and config blocks can use top of FLASH. - if (CYGBLD_REDBOOT_FLASH_BOOT_OFFSET == 0) { - if ((stat = flash_erase((void *)((unsigned long)flash_start+(2*redboot_image_size)), - ((blocks-2)*block_size) - (2*redboot_image_size), - (void **)&err_addr)) != 0) { - printf(" initialization failed %p: 0x%x(%s)\n", - err_addr, stat, flash_errmsg(stat)); - } - } else { - if ((stat = flash_erase(flash_start, CYGBLD_REDBOOT_FLASH_BOOT_OFFSET, - (void **)&err_addr)) != 0) { - printf(" initialization failed %p: 0x%x(%s)\n", - err_addr, stat, flash_errmsg(stat)); - } else { - unsigned long erase_start, erase_size; - - erase_start = redboot_flash_start+(2*redboot_image_size); - erase_size = (blocks-2)*block_size; - erase_size -= erase_start - (unsigned long)flash_start; - - if (erase_size && (stat = flash_erase((void *)erase_start, erase_size, - (void **)&err_addr)) != 0) { - printf(" initialization failed %p: 0x%x(%s)\n", - err_addr, stat, flash_errmsg(stat)); - } - } - } - - } else { - printf(" Warning: device contents not erased, some blocks may not be usable\n"); - } // Create a pseudo image for RedBoot img = (struct fis_image_desc *)fis_work_block; +#ifdef CYGOPT_REDBOOT_FIS_RESERVED_BASE + memset(img, 0, sizeof(*img)); + strcpy(img->name, "(reserved)"); + img->flash_base = (unsigned long)flash_start; + img->mem_base = (unsigned long)flash_start; + img->size = CYGNUM_REDBOOT_FLASH_RESERVED_BASE; + img++; +#endif + redboot_flash_start = (unsigned long)flash_start + CYGBLD_REDBOOT_FLASH_BOOT_OFFSET; +#ifdef CYGOPT_REDBOOT_FIS_REDBOOT memset(img, 0, sizeof(*img)); strcpy(img->name, "RedBoot"); img->flash_base = redboot_flash_start; img->mem_base = redboot_flash_start; img->size = redboot_image_size; - img++; img_count++; + img++; + redboot_flash_start += redboot_image_size; +#endif +#ifdef CYGOPT_REDBOOT_FIS_REDBOOT_POST +#ifdef CYGNUM_REDBOOT_FIS_REDBOOT_POST_OFFSET + // Take care to place the POST entry at the right offset: + redboot_flash_start = (unsigned long)flash_start + CYGNUM_REDBOOT_FIS_REDBOOT_POST_OFFSET; +#endif + memset(img, 0, sizeof(*img)); + strcpy(img->name, "RedBoot[post]"); + img->flash_base = redboot_flash_start; + img->mem_base = redboot_flash_start; + img->size = redboot_image_size; + img++; + redboot_flash_start += redboot_image_size; +#endif +#ifdef CYGOPT_REDBOOT_FIS_REDBOOT_BACKUP // And a backup image memset(img, 0, sizeof(*img)); strcpy(img->name, "RedBoot[backup]"); - img->flash_base = redboot_flash_start+redboot_image_size; - img->mem_base = redboot_flash_start+redboot_image_size; + img->flash_base = redboot_flash_start; + img->mem_base = redboot_flash_start; img->size = redboot_image_size; - img++; img_count++; + img++; + redboot_flash_start += redboot_image_size; +#endif #ifdef CYGSEM_REDBOOT_FLASH_CONFIG // And a descriptor for the configuration data memset(img, 0, sizeof(*img)); @@ -242,7 +236,7 @@ fis_init(int argc, char *argv[]) img->flash_base = (unsigned long)cfg_base; img->mem_base = (unsigned long)cfg_base; img->size = block_size; - img++; img_count++; + img++; #endif // And a descriptor for the descriptor table itself memset(img, 0, sizeof(*img)); @@ -251,22 +245,59 @@ fis_init(int argc, char *argv[]) img->flash_base = (unsigned long)fis_base; img->mem_base = (unsigned long)fis_base; img->size = block_size; - img++; img_count++; + img++; + + // Do this after creating the initialized table because that inherently + // calculates where the high water mark of default RedBoot images is. + + if (full_init) { + unsigned long erase_start, erase_size; + // Erase everything except default RedBoot images, fis block, and config block. + // FIXME! This still assumes that fis and config blocks can use top of FLASH. + + // first deal with the possible first part, before RedBoot images: + erase_start = (unsigned long)flash_start + CYGNUM_REDBOOT_FLASH_RESERVED_BASE; + erase_size = (unsigned long)flash_start + CYGBLD_REDBOOT_FLASH_BOOT_OFFSET; + if ( erase_size > erase_start ) { + erase_size -= erase_start; + if ((stat = flash_erase((void *)erase_start, erase_size, + (void **)&err_addr)) != 0) { + printf(" initialization failed %p: 0x%x(%s)\n", + err_addr, stat, flash_errmsg(stat)); + } + } + // second deal with the larger part in the main: + erase_start = redboot_flash_start; // high water of created images +#ifdef CYGSEM_REDBOOT_FLASH_CONFIG + erase_size = (unsigned long)cfg_base - erase_start; // the gap between HWM and config data +#else + erase_size = (unsigned long)fis_base - erase_start; // the gap between HWM and fis data +#endif + if ((stat = flash_erase((void *)erase_start, erase_size, + (void **)&err_addr)) != 0) { + printf(" initialization failed %p: 0x%x(%s)\n", + err_addr, stat, flash_errmsg(stat)); + } + } else { + printf(" Warning: device contents not erased, some blocks may not be usable\n"); + } + #ifdef CYGSEM_REDBOOT_FLASH_LOCK_SPECIAL - // Insure [quietly] that the directory is unlocked before trying to update + // Ensure [quietly] that the directory is unlocked before trying to update flash_unlock((void *)fis_base, block_size, (void **)&err_addr); #endif if ((stat = flash_erase(fis_base, block_size, (void **)&err_addr)) != 0) { printf(" initialization failed %p: 0x%x(%s)\n", err_addr, stat, flash_errmsg(stat)); } else { if ((stat = flash_program(fis_base, fis_work_block, - img_count*sizeof(*img), (void **)&err_addr)) != 0) { + (unsigned long)img - (unsigned long)fis_work_block, + (void **)&err_addr)) != 0) { printf("Error writing image descriptors at %p: 0x%x(%s)\n", err_addr, stat, flash_errmsg(stat)); } } #ifdef CYGSEM_REDBOOT_FLASH_LOCK_SPECIAL - // Insure [quietly] that the directory is locked after the update + // Ensure [quietly] that the directory is locked after the update flash_lock((void *)fis_base, block_size, (void **)&err_addr); #endif } @@ -305,15 +336,15 @@ fis_free(int argc, char *argv[]) unsigned long *fis_ptr, *fis_end; unsigned long *area_start; - fis_ptr = (unsigned long *)((unsigned long)flash_start + 2*block_size); - fis_end = (unsigned long *)((unsigned long)flash_end + block_size); + // Do not search the area reserved for pre-RedBoot systems: + fis_ptr = (unsigned long *)((unsigned long)flash_start + CYGNUM_REDBOOT_FLASH_RESERVED_BASE); fis_end = (unsigned long *)(unsigned long)flash_end; area_start = fis_ptr; while (fis_ptr < fis_end) { if (*fis_ptr != (unsigned long)0xFFFFFFFF) { if (area_start != fis_ptr) { // Assume that this is something - printf(" 0x%08lX .. 0x%08lX\n", + printf(" 0x%08lX .. 0x%08lX\n", (unsigned long)area_start, (unsigned long)fis_ptr); } // Find next blank block @@ -335,14 +366,15 @@ fis_free(int argc, char *argv[]) } } -// Find the first unused area of flash which is long enougn +// Find the first unused area of flash which is long enough static bool fis_find_free(unsigned long *addr, unsigned long length) { unsigned long *fis_ptr, *fis_end; unsigned long *area_start; - fis_ptr = (unsigned long *)((unsigned long)flash_start + 2*block_size); + // Do not search the area reserved for pre-RedBoot systems: + fis_ptr = (unsigned long *)((unsigned long)flash_start + CYGNUM_REDBOOT_FLASH_RESERVED_BASE); fis_end = (unsigned long *)(unsigned long)flash_end; area_start = fis_ptr; while (fis_ptr < fis_end) { @@ -415,6 +447,27 @@ fis_create(int argc, char *argv[]) return; } + if ( name ) { + // Search existing files to acquire defaults for params not specified: + fis_addr = (void *)((unsigned long)flash_end - block_size); + memcpy(fis_work_block, fis_addr, block_size); + img = (struct fis_image_desc *)fis_work_block; + for (i = 0; i < block_size/sizeof(*img); i++, img++) { + if ((img->name[0] != (unsigned char)0xFF) && (strcmp(name, img->name) == 0)) { + // Found it, so get any unset but necessary params from there: + if ( !length_set ) { + length_set = true; + length = img->size; + } + if ( !flash_addr_set ) { + flash_addr_set = true; + flash_addr = img->flash_base; + } + break; + } + } + } + if ((!no_copy && !mem_addr_set) || (no_copy && !flash_addr_set) || !length_set || !name) { fis_usage("required parameter missing"); @@ -673,8 +726,28 @@ fis_delete(int argc, char *argv[]) fis_addr = (void *)((unsigned long)flash_end - block_size); memcpy(fis_work_block, fis_addr, block_size); img = (struct fis_image_desc *)fis_work_block; - img += 2; // Skip reserved files - for (i = 2; i < block_size/sizeof(*img); i++, img++) { + i = 0; +#ifdef CYGOPT_REDBOOT_FIS_RESERVED_BASE + i++; +#endif +#ifdef CYGOPT_REDBOOT_FIS_REDBOOT + i++; +#endif +#ifdef CYGOPT_REDBOOT_FIS_REDBOOT_BACKUP + i++; +#endif +#ifdef CYGOPT_REDBOOT_FIS_REDBOOT_POST + i++; +#endif +#ifdef CYGSEM_REDBOOT_FLASH_CONFIG + i++; +#endif +#if 1 // And the descriptor for the descriptor table itself + i++; +#endif + img += i; // Skip reserved files + + for ( /* i, img */; i < block_size/sizeof(*img); i++, img++) { if ((img->name[0] != (unsigned char)0xFF) && (strcmp(name, img->name) == 0)) { if (!verify_action("Delete image '%s'", name)) { return; @@ -746,7 +819,7 @@ fis_load(int argc, char *argv[]) printf("Not a loadable image\n"); return; } - memcpy((void *)mem_addr, (void *)img->flash_base, img->size); + memcpy((void *)mem_addr, (void *)img->flash_base, img->data_length); entry_address = (unsigned long *)img->entry_point; cksum = crc32((unsigned char *)mem_addr, img->data_length); if (show_cksum) { @@ -1057,6 +1130,8 @@ config_length(int type) return 0; case CONFIG_SCRIPT: return MAX_SCRIPT_LENGTH; + default: + return 0; } } @@ -1337,4 +1412,6 @@ load_flash_config(void) RedBoot_init(load_flash_config, RedBoot_INIT_FIRST); -#endif +#endif // CYGSEM_REDBOOT_FLASH_CONFIG + +// EOF flash.c diff --git a/packages/redboot/current/src/load.c b/packages/redboot/current/src/load.c --- a/packages/redboot/current/src/load.c +++ b/packages/redboot/current/src/load.c @@ -23,7 +23,7 @@ // // The Initial Developer of the Original Code is Red Hat. // Portions created by Red Hat are -// Copyright (C) 1998, 1999, 2000 Red Hat, Inc. +// Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc. // All Rights Reserved. // ------------------------------------------- // @@ -49,8 +49,8 @@ // Buffer used by redboot_getc getc_info_t getc_info; -static char usage[] = "[-r] [-v] [-h ] [-m {TFTP | xyzMODEM}]\r\n" -" [-b ] "; +static char usage[] = "[-r] [-v] [-h ] [-m {TFTP | xyzMODEM}]\n" + " [-b ] "; // Exported CLI function RedBoot_cmd("load", diff --git a/packages/redboot/current/src/net/ping.c b/packages/redboot/current/src/net/ping.c --- a/packages/redboot/current/src/net/ping.c +++ b/packages/redboot/current/src/net/ping.c @@ -53,7 +53,8 @@ static void do_ping(int argc, char *argv[]); RedBoot_cmd("ping", "Network connectivity test", - "[-v] [-n ] [-t ] [-i ] -h ", + "[-v] [-n ] [-l ] [-t ] [-r ]\n" + " [-i ] -h ", do_ping ); @@ -137,6 +138,10 @@ do_ping(int argc, char *argv[]) if (!length_set) { length = DEFAULT_LENGTH; } + if ((length < 64) || (length > 1400)) { + printf("Invalid length specified: %d\n", length); + return; + } if (!count_set) { count = DEFAULT_COUNT; } diff --git a/packages/redboot/current/src/printf.c b/packages/redboot/current/src/printf.c --- a/packages/redboot/current/src/printf.c +++ b/packages/redboot/current/src/printf.c @@ -23,7 +23,7 @@ // // The Initial Developer of the Original Code is Red Hat. // Portions created by Red Hat are -// Copyright (C) 1998, 1999, 2000 Red Hat, Inc. +// Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc. // All Rights Reserved. // ------------------------------------------- // @@ -178,12 +178,13 @@ static int res++; } while (length-- > 0) { - (*putc)(c = *cp++); - res++; + c = *cp++; if (c == '\n') { (*putc)('\r'); res++; } + (*putc)(c); + res++; } if (pad_on_right) { while (pad-- > 0) { @@ -192,12 +193,12 @@ static int } } } else { - (*putc)(c); - res++; if (c == '\n') { (*putc)('\r'); res++; } + (*putc)(c); + res++; } } return (res);