--- /dev/null
+2011-01-20 Whamcloud, Inc.
+ * version 1.41.14.wc1
+
+Severity : enhancement
+Description: update to latest upstream e2fsprogs release
+Details : Update to upstream e2fsprogs release 1.42. This release
+ includes functionality for filesystems with more than 2^32
+ blocks. For standard architectures, this allows filesystems
+ with more than 16TB of space. Not actually tested with >16TB
+ filesystems yet.
+
+Severity : enhancement
+Description: allow lfsck to run with both 1.x and 2.x filesystems
+Details : adapt lfsck to use FID-based inode and object addressing,
+ so that it can work with 2.x filesystems. This depends
+ on the llapi_path2fid()/LL_IOC_PATH2FID ioctl. If needed,
+ this could be worked around on older Lustre versions to just
+ return the IGIF inode number via stat and EXT2_IOC_GETVERSION.
+
+Severity : enhancement
+Description: avoid creating the lfsck size database
+Details : lfsck was creating the "szinfo" database on every run, but
+ it was never being used. Disable it until it is needed.
+
+Severity : major
+Description: flush client DLM cache when cloning duplicate objects
+Details : If the DLM has multiple locks referencing a single inode
+ it will trigger an LASSERT on the client. Flush the DLM
+ cache after cloning the first file to avoid this case.
+
+Severity : minor
+Description: zero large inode space when expanding inode
+Details : if "e2fsck -E expand_extra_inode" is run, the newly freed
+ space was not zeroed, leaving garbage in those fields.
+
+Severity : minor
+Description: validate inode creation time
+Details : validate that the inode creation time is after the mkfs time
+ in the superblock, and before "now + margin", or ask to fix it.
+
+---------------------------------------------------------------------------
+
+2011-01-20 Whamcloud, Inc.
+ * version 1.41.14.wc1
+
+Severity : enhancement
+Description: update to latest upstream e2fsprogs release
+Details : Update to upstream e2fsprogs release 1.41.14. This moves a
+ few Lustre patches into mainstream e2fsprogs, like debugfs
+ printing of flex_bg bitmap offsets. See RELEASE-NOTES.
+
+Severity : enhancement
+Description: remove patches to configure
+Details : Avoid patching the generated configure script, which was
+ cumbersome and error-prone. Instead, running configure with
+ the --enable-maintainer-mode option will cause configure to
+ be regenerated automatically when configure.in is patched.
+ Add this as a default configure option to the RPM .spec file.
+
+Severity : enhancement
+Description: add checks for db4.7 and db4.8 on newer distros for lfsck
+
+Severity : minor
+Description: add "Obsoletes e4fsprogs" for installing on RHEL systems that
+ provide an e4fsprogs RPM for ext4 testing.
+
+Severity : enhancement
+Bugzilla : 4424
+Description: Add basic regression test for large EAs in inodes
+
+Severity : enhancement
+Description: Improve dumpe2fs output to print bitmap/itable offsets more
+ sanely when flex_bg is configured on the filesystem.
+
+---------------------------------------------------------------------------
+
+2010-09-29 Oracle, Inc.
+ * version 1.41.12.2.ora1
+
+Severity : normal
+Bugzilla : 21704
+Description: add lfsck support for LOV_MAGIC_V3 (pools) EAs
+
+Severity : normal
+Bugzilla : 22162
+Description: Support journals larger than 2GB
+Details : libext2fs wasn't handling the high bits of the journal inode size
+
+Severity : normal
+Bugzilla : 23502
+Description: Fix slowdown when creating large extent-mapped journals (> 1GB)
+Details : When ext2fs_block_iterate2() is called on an extent-mapped file
+ with a depth > 1, it will erroneously calling the callback
+ function starting all over again with logical block 0. It
+ shouldn't do this, and it cases mke2fs to become very slow when
+ creating files with very large extent-mapped journals.
+
+Severity : enhancement
+Bugzilla : 21683
+Description: Add --lazy-journal-init option to speed up mke2fs.
+Details : This allows creating large journal files quickly during testing,
+ but is not strictly safe for production, since it is possible
+ in theory to have the journal accidentally replay the wrong data,
+ IFF the journal is not overwritten before the first crash.
+
+Severity : enhancement
+Bugzilla : 4424
+Description: Add large ea support to e2fsprogs
+
+Severity : enhancement
+Bugzilla : 23041
+Description: Don't start MMP for debugfs if the filesystem is opened in
+ catastrophic mode (read only, minimum metadata loaded).
+
+Severity : enhancement
+Bugzilla : 22421
+Description: Add check for ensuring that file system is writable before
+ starting MMP.
+
+Severity : enhancement
+Bugzilla :
+Description: Improve filefrag output so it can print new-style extent
+ lists even if FIEMAP support is not available.
+
+---------------------------------------------------------------------------
+
+2010-02-24 Sun Microsystems, Inc.
+ * version 1.41.10-sun2
+
+Severity : major
+Frequency : never
+Bugzilla : 18779
+Description: Fix a corruption problem in upstream e2fsprogs-1.41.10 when
+ "e2fsck -D" is run on a non-indexed directory with a directory
+ entry that sorts before "." or "..". This was never in any
+ Sun-released e2fsck package, but is recorded here to clarify
+ that this bug was fixed in this release.
+
+Severity : normal
+Frequency : only with a corrupt MMP block
+Bugzilla : 21543
+Description: Add check for e2fsck to correct a corrupted MMP block before the
+ filesystem is opened. Fix segfault at close if MMP wasn't started.
+
+Severity : enhancement
+Bugzilla : 21564
+Description: Print message if MMP timeout is very large.
+
+Severity : normal
+Frequency : SLES11 only
+Bugzilla : 20830
+Description: Allow ext2fs_attr_set() to include attribute prefix in the name,
+ instead of using ext2_attr_index_prefix[] outside of libext2fs.
+
+Severity : enhancement
+Bugzilla : 14548
+Description: Improve ZFS device probing in libblkid.
+
+---------------------------------------------------------------------------
+
+2009-06-13 Sun Microsystems, Inc.
+ * version 1.41.6-sun1
+
+Severity : major
+Frequency : always
+Bugzilla : 18779
+Description: Fix a critical regression in e2fsck introduced version 1.41.5
+ which can undo updates to the block group descriptors after a
+ journal replay.
+
+Severity : enhancement
+Bugzilla : 19536
+Description: add regression tests for MMP feature
+
+Severity : major
+Frequency : always
+Bugzilla : 19536
+Description: Free block statistics correctly when MMP is turned off
+
+---------------------------------------------------------------------------
+
+2009-05-12 Sun Microsystems, Inc.
+ * version 1.41.5-sun2
+
+Severity : major
+Frequency : always
+Bugzilla : 18735
+Description: e2fsck reading cached MMP block misses MMP block update
+
+---------------------------------------------------------------------------
+
+2009-04-30 Sun Microsystems, Inc.
+ * version 1.41.5-sun1
+
+Severity : enhancement
+Description: update to latest upstream e2fsprogs release
+Details : Update to upstream e2fsprogs release 1.41.5. This moves a
+ number of lustre patches into mainstream e2fsprogs, like extents,
+ uninitialized groups, and many smaller fixes. See RELEASE-NOTES.
+
+Severity : enhancement
+Bugzilla : 13419
+Description: lsattr print 'H' flag for huge files; document it and extent flag
+
+Severity : normal
+Frequency : if MMP was enabled with e2fsck, and e2fsck exited uncleanly
+Bugzilla : 18735
+Description: clear MMP e2fsck marker if e2fsck is interrupted
+Details : clear MMP e2fsck marker from the SIGINT and SIGTERM signal
+ handlers, or if e2fsck hits a fatal error.
+
+Severity : enhancement
+Bugzilla : 18735
+Description: add "clear-mmp" option to tune2fs to reset the MMP e2fsck marker
+Details : add an option to run "tune2fs -f -E clear-mmp" to reset the MMP
+ block, which is easier than disabling and re-enabling it.
+
+Severity : enhancement
+Bugzilla : 10555
+Description: Add FIEMAP(FIle Extent MAP) ioctl support to filefrag
+Details : FIEMAP ioctl allows applications to efficiently fetch the extent
+ information of a file. It can be used to map logical blocks in a
+ in a file to physical blocks in the block device. filefrag has
+ been modified to use the FIEMAP ioctl.
+
+Severity : normal
+Frequency : if MMP was enabled with tune2fs
+Bugzilla : 17531
+Description: Free block count should be updated when MMP enabled using tune2fs
+
+---------------------------------------------------------------------------
+
+2008-07-11 Sun Microsystems, Inc.
+ * version 1.40.11-sun1
+
+Severity : major
+Frequency : rare, if on-disk data is corrupted
+Bugzilla : 15320
+Description: kernel assertion with invalid eh_depth that e2fsck does not fix
+Details : fix invalid eh_depth in the inode if the last index was invalid
+
+Severity : enhancement
+Bugzilla : 15604
+Description: display i_version in debugfs "stat" command
+
+---------------------------------------------------------------------------
+
+2008-05-20 Sun Microsystems, Inc.
+ * version 1.40.7-sun3
+
+Severity : enhancement
+Bugzilla : 9570
+Description: improve e2fsck error message for invalid HTREE depth
+
+Severity : major
+Bugzilla : 15872
+Description: tune2fs cannot disable uninit_groups or mmp features
+Details : Upstream changes to the structure of tune2fs broke the
+ ability to disable the uninit_groups and mmp features.
+ This is particularly serious for mmp, because it will
+ render the filesystem unmountable.
+
+---------------------------------------------------------------------------
+
+2008-05-20 Sun Microsystems, Inc.
+ * version 1.40.7-sun2
+
+Severity : normal
+Bugzilla : 15725
+Description: fsck (e2fsck) -m hangs headless node
+Details : -m support for SLES10 patch was removed as this feature was
+ included in upstream e2fsprogs. But upstream e2fsprogs uses
+ "-M" whereas SLES10 assumes it to be "-m". Added this patch
+ to provide compatibility with SLES10.
+
+Severity : normal
+Bugzilla : 15320
+Description: OSS crashes as e2fsck doesn't fix the header
+Details : When the last extent index contained in an inode is deleted
+ it resulsts in a condition, eh_entries = 0 and eh_depth !=0,
+ which ldiskfs doesn't expect this and crashes. Fixed it by
+ clearing the eh_depth.
+
+---------------------------------------------------------------------------
+
+2008-03-14 Sun Microsystems, Inc.
+ * version 1.40.7-sun1
+
+Severity : enhancement
+Description: update to latest upstream e2fsprogs release
+Details : Update to upstream e2fsprogs release 1.40.7. See RELEASE-NOTES.
+
+Severity : enhancement
+Bugzilla : 13025
+Description: Free space fragmentation reporting tool
+Details : Add e2freefrag patch. Remove e2defragfree patch and changes to
+ further patches in series
+
+Severity : enhancement
+Description: Add basic ZFS filesystem detection to libblkid
+
+Severity : enhancement
+Description: Enable DIR_NLINK feature in the superblock
+Details : If there are any directories with > 65000 subdirectories, enable
+ the DIR_NLINK feature in the superblock.
+ This is not yet included in the Lustre e2fsprogs patch series.
+
+---------------------------------------------------------------------------
+
+2008-02-01 Sun Microsystems, Inc.
+ * version 1.40.5-sun1
+
+Severity : normal
+Bugzilla : 13150
+Description: e2fsprogs install error on SLES10 due to different library names
+Details : On SLES10 the e2fsprogs package splits out libcom_err and libss
+ into a separate libcom_err RPM. On RHEL5 the libraries are
+ split into a separate e2fsprogs-libs RPM. Add an "Obsoletes"
+ and "Provides" line for each distro to provide compatibility.
+
+Severity : normal
+Bugzilla : 14662
+Description: e2fsprogs does not contain et_list_{un,}lock() on SLES10
+Details : On SLES10 the e2fsprogs package has patches to add new functions
+ to the libcom_err library for making it thread safe. These
+ patches were added to e2fsprogs to provide compatibility.
+
+Severity : enhancement
+Description: update to latest upstream e2fsprogs release
+Details : Update to upstream e2fsprogs release 1.40.5. See RELEASE-NOTES.
+
+---------------------------------------------------------------------------
+
+2008-01-10 Cluster File Systems, Inc. <info@clusterfs.com>
+ * version 1.40.4-cfs1
+
+Severity : enhancement
+Description: update to latest upstream e2fsprogs release
+Details : Update to upstream e2fsprogs release 1.40.4. See RELEASE-NOTES.
+
+Severity : normal
+Bugzilla : 12723
+Description: lfsck segfaults on SLES10 due to different db4 header
+Details : lfsck was being built with a db4 header file different than the
+ shared library installed on the system, causing it to access
+ data structures incorrectly. Use the right header file.
+
+---------------------------------------------------------------------------
+
+2007-12-10 Cluster File Systems, Inc. <info@clusterfs.com>
+ * version 1.40.2-cfs5
+
+Severity : enhancement
+Bugzilla : 13108
+Description: e2scan lists directories with -D option
+Details : Add the ability to e2scan to list directories when the -D option
+ is specified. When specified with a date range, only directories
+ modified since that time will be output. When a full listing is
+ requested all directories will be output.
+
+---------------------------------------------------------------------------
+
+2007-11-09 Cluster File Systems, Inc. <info@clusterfs.com>
+ * version 1.40.2-cfs4
+
+Severity : major
+Frequency : filesystems with corrupt inode tables
+Bugzilla : 14085
+Description: e2fsck aborts if a non-regular file has a corrupt EA block
+Details : e2fsck incorrectly set an error return code if it read a
+ corrupt EA block and in the case of a file that did not have
+ any data blocks the error was not reset, causing e2fsck to
+ exit with an error. The EA block read should not be returning
+ an error in this case.
+
+---------------------------------------------------------------------------
+
+2007-10-29 Cluster File Systems, Inc. <info@clusterfs.com>
+ * version 1.40.2-cfs3
+
+Severity : enhancement
+Bugzilla : 10827
+Description: Add e2defragfree program to defrag free space in ext3.
+Details : e2defrgfree program tries to increase percentage of free chunks
+ in free space on ext3 filesystem. It scans inodes and migrates
+ extents to align free chunks.
+
+---------------------------------------------------------------------------
+
+2007-10-12 Cluster File Systems, Inc. <info@clusterfs.com>
+ * version 1.40.2-cfs2
+
+Severity : enhancement
+Bugzilla : 10657
+Description: Add journal checksum support to e2fsprogs.
+Details : Changes to e2fsck to allow recovery of filesystems using journals
+ containing checksums.
+
+Severity : major
+Frequency : only on Lustre OSTs systems where page size > filesystem blocksize
+Bugzilla : 13812
+Description: e2fsck can corrupt files by changing the i_size
+Details : On systems where page size is greater than filesystem blocksize
+ e2fsck would round off the i_size to the page size boundary.
+ Fix the check to allow blocks to the end of PAGE_SIZE.
+
+Severity : enhancement
+Bugzilla : 13108
+Description: Add e2scan program to efficiently scan filesystems for changes.
+Details : The e2scan program scans a filesystem for files that have changed
+ since a specific time. This is usually more efficient than
+ doing a filesystem-level scan as it avoids seeking as much as
+ possible.
+
+----------------------------------------------------------------------------
+
+2007-08-16 Cluster File Systems, Inc. <info@clusterfs.com>
+ * version 1.40.2-cfs1
+
+Severity : enhancement
+Bugzilla : 11644
+Description: Improve e2fsck heuristics for detecting corrupted inodes
+Details : Instead of doing piecemeal checking of inodes, this tracks all
+ errors detected in each inode, and if a certain badness threshold
+ is exceeded, the inode should be considered garbage.
+
+Severity : major
+Frequency : rarely, only for failover machines
+Bugzilla : 6334
+Description: Multiple mount protection support
+Details : The INCOMPAT_MMP feature will protect the filesystem from being
+ mounted more than once simultaneously, even on different nodes.
+ It will also protect against changes by e2fsprogs to the
+ filesystem if it is mounted. This assumes high importance in a
+ shared storage environment where multiple mounts can severely
+ corrupt the filesystem.
+
+Severity : normal
+Frequency : always on big-endian machines
+Bugzilla : 12774
+Description: Corrections for e2fsprogs test failures on big-endian machines
+Details : Correct upstream errors which caused some e2fsprogs regression
+ tests to fail. Also add support for in-inode extent swabbing.
+
+Severity : normal
+Frequency : unknown
+Bugzilla : 13111
+Description: Disable resize2fs if extents are enabled
+Details : We have received reports of resize2fs corrupting the filesystem
+ if extents are enabled. Although we are unable to reproduce the
+ problem, resize2fs has been disabled for filesystems using
+ extents as a precaution.
+
+Severity : enhancement
+Bugzilla : 11640
+Description: Random corruption test for e2fsprogs
+Details : This test script randomly corrupts a filesystem and test the
+ robustness of e2fsck in cleaning this corrupted filesystem.
+ This test is done with random features enabled and with random
+ amounts of corruption.
+
+----------------------------------------------------------------------------
+
+2007-06-04 Cluster File Systems, Inc. <info@clusterfs.com>
+ * version 1.39.cfs8
+
+Severity : minor
+Frequency : always
+Bugzilla : 12362
+Description: lfsck segfault if comma-separated OSTs are used on command-line
+Details : If the list of OSTs given to lfsck is comma-separated, instead
+ of space-separated, lfsck will segfault when freeing memory.
+ This problem did not actually affect any lfsck operations.
+
+
+Severity : enhancement
+Bugzilla : 12608
+Description: Report IO statistics to e2fsck
+Details : Report IO statistics for read/write performance for various
+ stages of e2fsck if the '-t' option is given.
+
+----------------------------------------------------------------------------
+
+2007-05-03 Cluster File Systems, Inc. <info@clusterfs.com>
+ * version 1.39.cfs7
+
+Severity : normal
+Frequency : always, if using uninit_groups
+Bugzilla : 12334
+Description: uninit_groups support was marking the last group UNINIT
+Details : With mke2fs -O uninit_groups the last group would incorrectly
+ be marked BLOCK_UNINIT. The kernel part of the patch did not
+ handle that gracefully. Fix mke2fs and e2fsck to not do this.
+
+Severity : enhancement
+Description: update from upstream e2fsprogs (2007-04-18)
+Details : Includes most of the LLNL Coverity fixes.
+ Includes equivalent fix+test for e2fsprogs-check_filetype.patch.
+ Adds e2fsck support for external database for many directories.
+
+----------------------------------------------------------------------------
+
+2007-03-26 Cluster File Systems, Inc. <info@clusterfs.com>
+ * version 1.39.cfs6
+
+Severity : enhancement
+Bugzilla : 11264
+Description: Add uninit_groups (GDT_CSUM) feature support
+Details : With an appropriate kernel, it is possible to improve e2fsck
+ performance to be a function of used inodes instead of total
+ inodes in the filesystem.
+
+Severity : Normal
+Frequency : always
+Bugzilla : 11781
+Description: f_extents_eh_depth regression test failure
+Details : The e2fsck regression test f_extents_eh_depth was failing because
+ it wasn't fixing the problem in the first pass.
+
--- /dev/null
+README for e2fsprogs/patches
+
+This directory contains patches required for use with Lustre that are
+for a specific e2fsprogs version, as shown in e2fsprogs-version.patch,
+in the order specified by "series". Some of the patches here may be
+"historical" in the sense that they have already been added to the
+upstream e2fsprogs repository since this release, but they are not in
+any official e2fsprogs release so are included here for reference.
+
+Unfortunately, it isn't possible to have an SRPM that doesn't have the
+patches applied, because the patches change the "configure" script, and
+that in turn changes the .spec file (built from .spec.in) and that is
+sourced by rpmbuild before the patches are applied...
+
--- /dev/null
+Index: e2fsprogs/lib/ext2fs/ext2_io.h
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/ext2_io.h
++++ e2fsprogs/lib/ext2fs/ext2_io.h
+@@ -88,6 +88,8 @@ struct struct_io_manager {
+ int count, const void *data);
+ errcode_t (*discard)(io_channel channel, unsigned long long block,
+ unsigned long long count);
++ errcode_t (*readahead)(io_channel channel, unsigned long block,
++ int count);
+ long reserved[16];
+ };
+
+@@ -101,6 +103,7 @@ struct struct_io_manager {
+ #define io_channel_close(c) ((c)->manager->close((c)))
+ #define io_channel_set_blksize(c,s) ((c)->manager->set_blksize((c),s))
+ #define io_channel_read_blk(c,b,n,d) ((c)->manager->read_blk((c),b,n,d))
++#define io_channel_readahead(c,b,n) ((c)->manager->readahead((c),b,n))
+ #define io_channel_write_blk(c,b,n,d) ((c)->manager->write_blk((c),b,n,d))
+ #define io_channel_flush(c) ((c)->manager->flush((c)))
+ #define io_channel_bumpcount(c) ((c)->refcount++)
+Index: e2fsprogs/lib/ext2fs/unix_io.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/unix_io.c
++++ e2fsprogs/lib/ext2fs/unix_io.c
+@@ -15,6 +15,9 @@
+ * %End-Header%
+ */
+
++#define _XOPEN_SOURCE 600
++#define _DARWIN_C_SOURCE
++#define _FILE_OFFSET_BITS 64
+ #define _LARGEFILE_SOURCE
+ #define _LARGEFILE64_SOURCE
+ #ifndef _GNU_SOURCE
+@@ -34,6 +37,9 @@
+ #ifdef __linux__
+ #include <sys/utsname.h>
+ #endif
++#if HAVE_SYS_TYPES_H
++#include <sys/types.h>
++#endif
+ #ifdef HAVE_SYS_IOCTL_H
+ #include <sys/ioctl.h>
+ #endif
+@@ -43,9 +49,6 @@
+ #if HAVE_SYS_STAT_H
+ #include <sys/stat.h>
+ #endif
+-#if HAVE_SYS_TYPES_H
+-#include <sys/types.h>
+-#endif
+ #if HAVE_SYS_RESOURCE_H
+ #include <sys/resource.h>
+ #endif
+@@ -119,6 +122,8 @@ static errcode_t unix_write_blk64(io_cha
+ int count, const void *data);
+ static errcode_t unix_discard(io_channel channel, unsigned long long block,
+ unsigned long long count);
++static errcode_t unix_readahead(io_channel channel, unsigned long block,
++ int count);
+
+ static struct struct_io_manager struct_unix_manager = {
+ EXT2_ET_MAGIC_IO_MANAGER,
+@@ -135,6 +140,7 @@ static struct struct_io_manager struct_u
+ unix_read_blk64,
+ unix_write_blk64,
+ unix_discard,
++ unix_readahead,
+ };
+
+ io_manager unix_io_manager = &struct_unix_manager;
+@@ -767,6 +773,20 @@ static errcode_t unix_write_blk64(io_cha
+ #endif /* NO_IO_CACHE */
+ }
+
++static errcode_t unix_readahead(io_channel channel, unsigned long block,
++ int count)
++{
++#ifdef POSIX_FADV_WILLNEED
++ struct unix_private_data *data;
++
++ data = (struct unix_private_data *)channel->private_data;
++ posix_fadvise(data->dev, (ext2_loff_t)block * channel->block_size,
++ (ext2_loff_t)count * channel->block_size,
++ POSIX_FADV_WILLNEED);
++#endif
++ return 0;
++}
++
+ static errcode_t unix_write_blk(io_channel channel, unsigned long block,
+ int count, const void *buf)
+ {
--- /dev/null
+Index: e2fsprogs/debugfs/debugfs.c
+===================================================================
+--- e2fsprogs.orig/debugfs/debugfs.c
++++ e2fsprogs/debugfs/debugfs.c
+@@ -494,9 +494,38 @@ static void dump_xattr_string(FILE *out,
+ fprintf(out, "%02x ", (unsigned char)str[i]);
+ }
+
++#ifdef ENABLE_LFSCK
++#include "ext2fs/lfsck.h"
++
++static void print_fidstr(FILE *out, ext2_ino_t inode_num, void *data, int len)
++{
++ static int fid_size_warning;
++ struct filter_fid *ff = data;
++
++ if (len < sizeof(*ff)) {
++ fprintf(stderr, "%s: error: fid for inode %u smaller than "
++ "expected (%d bytes), recompile?\n",
++ debug_prog_name, inode_num, len);
++ return;
++ }
++ if (len > sizeof(*ff) && !fid_size_warning) {
++ fprintf(stderr, "%s: warning: fid for inode %u larger than "
++ "expected (%d bytes), recompile?\n",
++ debug_prog_name, inode_num, len);
++ fid_size_warning = 1;
++ }
++ fprintf(out, " fid: objid=%llu seq=%llu parent="DFID" stripe=%u\n",
++ ext2fs_le64_to_cpu(ff->ff_objid),
++ ext2fs_le64_to_cpu(ff->ff_seq),
++ ext2fs_le64_to_cpu(ff->ff_parent_seq),
++ ext2fs_le32_to_cpu(ff->ff_parent_oid), /* f_ver */ 0,
++ ext2fs_le32_to_cpu(ff->ff_stripe));
++}
++#endif /* ENABLE_LFSCK */
++
+ static void internal_dump_inode_extra(FILE *out,
+ const char *prefix EXT2FS_ATTR((unused)),
+- ext2_ino_t inode_num EXT2FS_ATTR((unused)),
++ ext2_ino_t inode_num,
+ struct ext2_inode_large *inode)
+ {
+ struct ext2_ext_attr_entry *entry;
+@@ -536,6 +565,16 @@ static void internal_dump_inode_extra(FI
+ dump_xattr_string(out, start + entry->e_value_offs,
+ entry->e_value_size);
+ fprintf(out, "\" (%u)\n", entry->e_value_size);
++#ifdef ENABLE_LFSCK
++ /* Special decoding for Lustre fid */
++ if ((entry->e_name_index == EXT2_ATTR_INDEX_TRUSTED ||
++ entry->e_name_index == EXT2_ATTR_INDEX_LUSTRE) &&
++ !strncmp(EXT2_EXT_ATTR_NAME(entry),
++ "fid", entry->e_name_len))
++ print_fidstr(out, inode_num,
++ start + entry->e_value_offs,
++ entry->e_value_size);
++#endif
+ entry = next;
+ }
+ }
+Index: e2fsprogs/lib/ext2fs/lfsck.h
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/lfsck.h
++++ e2fsprogs/lib/ext2fs/lfsck.h
+@@ -42,6 +42,14 @@
+ #ifndef IDENTITY_DOWNCALL_MAGIC
+ #define l_object_seq l_object_gr /* for lov_ost_data_v1 */
+ #define lmm_object_seq lmm_object_gr /* for lov_mds_md_v1/3 */
++#define ff_seq ff_group /* for filter_fid */
++#define ff_parent_seq ff_fid.id /* for filter_fid */
++#define ff_parent_oid ff_fid.generation /* for filter_fid */
++#define ff_stripe ff_fid.f_type /* for filter_fid */
++#else
++#define ff_parent_seq ff_parent.f_seq /* for filter_fid */
++#define ff_parent_oid ff_parent.f_oid /* for filter_fid */
++#define ff_stripe ff_parent.f_ver /* for filter_fid */
+ #endif /* IDENTITY_DOWNCALL_MAGIC */
+
+ /* Unfortunately, neither the 1.8 or 2.x lustre_idl.h file is suitable
+Index: e2fsprogs/debugfs/Makefile.in
+===================================================================
+--- e2fsprogs.orig/debugfs/Makefile.in
++++ e2fsprogs/debugfs/Makefile.in
+@@ -24,6 +24,7 @@ SRCS= debug_cmds.c $(srcdir)/debugfs.c $
+ $(srcdir)/dump.c $(srcdir)/set_fields.c ${srcdir}/logdump.c \
+ $(srcdir)/htree.c $(srcdir)/unused.c
+
++@LFSCK_CMT@LUSTRE_INC=-I @LUSTRE@/lustre/include -I @LUSTRE@/include -Wall
+ LIBS= $(LIBEXT2FS) $(LIBE2P) $(LIBSS) $(LIBCOM_ERR) $(LIBBLKID) \
+ $(LIBUUID)
+ DEPLIBS= $(LIBEXT2FS) $(LIBE2P) $(DEPLIBSS) $(DEPLIBCOM_ERR) \
+@@ -31,7 +32,7 @@ DEPLIBS= $(LIBEXT2FS) $(LIBE2P) $(DEPLIB
+
+ .c.o:
+ $(E) " CC $<"
+- $(Q) $(CC) -c $(ALL_CFLAGS) $< -o $@
++ $(Q) $(CC) -c $(ALL_CFLAGS) $(LUSTRE_INC) $< -o $@
+
+ all:: $(PROGS) $(MANPAGES)
+
--- /dev/null
+Index: e2fsprogs/e2fsck/pass1.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/pass1.c
++++ e2fsprogs/e2fsck/pass1.c
+@@ -280,12 +280,11 @@ static void check_ea_in_inode(e2fsck_t c
+ int problem = 0;
+
+ inode = (struct ext2_inode_large *) pctx->inode;
+- storage_size = EXT2_INODE_SIZE(ctx->fs->super) - EXT2_GOOD_OLD_INODE_SIZE -
+- inode->i_extra_isize;
+- start = ((char *) inode) + EXT2_GOOD_OLD_INODE_SIZE +
+- inode->i_extra_isize + sizeof(__u32);
++ storage_size = EXT2_INODE_SIZE(ctx->fs->super) -
++ EXT2_GOOD_OLD_INODE_SIZE - inode->i_extra_isize;
++ entry = &IHDR(inode)->h_first_entry[0];
++ start = (char *)entry;
+ end = (char *) inode + EXT2_INODE_SIZE(ctx->fs->super);
+- entry = (struct ext2_ext_attr_entry *) start;
+
+ /* scan all entry's headers first */
+
+@@ -403,7 +402,7 @@ static void check_inode_extra_space(e2fs
+ e2fsck_mark_inode_bad(ctx, pctx->ino, BADNESS_HIGH);
+ }
+
+- eamagic = IHDR(inode);
++ eamagic = &IHDR(inode)->h_magic;
+ if (*eamagic != EXT2_EXT_ATTR_MAGIC &&
+ (ctx->flags & E2F_FLAG_EXPAND_EISIZE) &&
+ (inode->i_extra_isize < ctx->want_extra_isize)) {
+@@ -586,9 +585,8 @@ int e2fsck_pass1_delete_attr(e2fsck_t ct
+ int in_inode = 1, error;
+ unsigned int freed_bytes = inode->i_extra_isize;
+
+- start = (char *)inode + EXT2_GOOD_OLD_INODE_SIZE +
+- inode->i_extra_isize + sizeof(__u32);
+- entry_ino = (struct ext2_ext_attr_entry *)start;
++ entry_ino = &IHDR(inode)->h_first_entry[0];
++ start = (char *)entry_ino;
+
+ if (inode->i_file_acl) {
+ error = ext2fs_read_ext_attr(ctx->fs, inode->i_file_acl,
+Index: e2fsprogs/lib/ext2fs/ext2_ext_attr.h
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/ext2_ext_attr.h
++++ e2fsprogs/lib/ext2fs/ext2_ext_attr.h
+@@ -38,9 +38,14 @@ struct ext2_ext_attr_entry {
+ #endif
+ };
+
++struct ext2_xattr_ibody_header {
++ __u32 h_magic; /* EXT2_EXT_ATTR_MAGIC */
++ struct ext2_ext_attr_entry h_first_entry[0];
++};
++
+ #define BHDR(block) ((struct ext2_ext_attr_header *)block)
+-#define IHDR(inode) ((__u32 *)((char *)inode + EXT2_GOOD_OLD_INODE_SIZE + \
+- (inode)->i_extra_isize))
++#define IHDR(inode) ((struct ext2_xattr_ibody_header *)((char *)inode + \
++ EXT2_GOOD_OLD_INODE_SIZE + (inode)->i_extra_isize))
+ #define ENTRY(ptr) ((struct ext2_ext_attr_entry *)(ptr))
+
+ /* Name indexes */
+Index: e2fsprogs/lib/ext2fs/ext2fs.h
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/ext2fs.h
++++ e2fsprogs/lib/ext2fs/ext2fs.h
+@@ -1004,6 +1004,10 @@ extern errcode_t ext2fs_dup_handle(ext2_
+ extern errcode_t ext2fs_expand_dir(ext2_filsys fs, ext2_ino_t dir);
+
+ /* ext_attr.c */
++extern errcode_t ext2fs_attr_get(ext2_filsys fs, struct ext2_inode *inode,
++ int name_index, const char *name, char *buffer,
++ size_t buffer_size, int *easize);
++
+ extern __u32 ext2fs_ext_attr_hash_entry(struct ext2_ext_attr_entry *entry,
+ void *data);
+ int ext2fs_attr_get_next_attr(struct ext2_ext_attr_entry *entry, int name_index,
+Index: e2fsprogs/lib/ext2fs/ext_attr.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/ext_attr.c
++++ e2fsprogs/lib/ext2fs/ext_attr.c
+@@ -262,9 +262,12 @@ static errcode_t ext2fs_attr_check_names
+ return 0;
+ }
+
++/* The unused parameter used to be the blocksize, but with in-inode xattrs
++ * the xattr storage area size depends on where the xattrs are kept. Keep
++ * this parameter for API/ABI compatibility, but it is not needed. */
+ static errcode_t ext2fs_attr_find_entry(struct ext2_ext_attr_entry **pentry,
+ int name_index, const char *name,
+- int size, int sorted)
++ int unused, int sorted)
+ {
+ struct ext2_ext_attr_entry *entry;
+ int name_len;
+@@ -336,8 +339,6 @@ static errcode_t ext2fs_attr_ibody_find(
+ struct ext2_attr_info *i,
+ struct ext2_attr_ibody_find *is)
+ {
+- __u32 *eamagic;
+- char *start;
+ errcode_t error;
+
+ if (EXT2_INODE_SIZE(fs->super) == EXT2_GOOD_OLD_INODE_SIZE)
+@@ -345,17 +346,13 @@ static errcode_t ext2fs_attr_ibody_find(
+
+ if (inode->i_extra_isize == 0)
+ return 0;
+- eamagic = IHDR(inode);
+
+- start = (char *)inode + EXT2_GOOD_OLD_INODE_SIZE +
+- inode->i_extra_isize + sizeof(__u32);
+- is->s.first = (struct ext2_ext_attr_entry *)start;
+- is->s.base = start;
++ is->s.first = &IHDR(inode)->h_first_entry[0];
++ is->s.base = (char *)is->s.first;
+ is->s.here = is->s.first;
+ is->s.end = (char *)inode + EXT2_INODE_SIZE(fs->super);
+- if (*eamagic == EXT2_EXT_ATTR_MAGIC) {
+- error = ext2fs_attr_check_names((struct ext2_ext_attr_entry *)
+- start, is->s.end);
++ if (IHDR(inode)->h_magic == EXT2_EXT_ATTR_MAGIC) {
++ error = ext2fs_attr_check_names(is->s.first, is->s.end);
+ if (error)
+ return error;
+ /* Find the named attribute. */
+@@ -573,7 +570,6 @@ static errcode_t ext2fs_attr_ibody_set(e
+ struct ext2_attr_info *i,
+ struct ext2_attr_ibody_find *is)
+ {
+- __u32 *eamagic;
+ struct ext2_attr_search *s = &is->s;
+ errcode_t error;
+
+@@ -584,11 +580,10 @@ static errcode_t ext2fs_attr_ibody_set(e
+ if (error)
+ return error;
+
+- eamagic = IHDR(inode);
+ if (!EXT2_EXT_IS_LAST_ENTRY(s->first))
+- *eamagic = EXT2_EXT_ATTR_MAGIC;
++ IHDR(inode)->h_magic = EXT2_EXT_ATTR_MAGIC;
+ else
+- *eamagic = 0;
++ IHDR(inode)->h_magic = 0;
+
+ return ext2fs_write_inode_full(fs, is->ino, (struct ext2_inode *)inode,
+ EXT2_INODE_SIZE(fs->super));
+@@ -752,6 +747,7 @@ static errcode_t ext2fs_attr_block_get(e
+ goto cleanup;
+ memcpy(buffer, block_buf + entry->e_value_offs,
+ entry->e_value_size);
++ error = 0;
+ }
+
+ cleanup:
+@@ -760,6 +756,22 @@ cleanup:
+ return error;
+ }
+
++static errcode_t ext2fs_attr_check_ibody(ext2_filsys fs,
++ struct ext2_inode_large *inode)
++{
++ const int inode_size = EXT2_INODE_SIZE(fs->super);
++
++ if (inode_size == EXT2_GOOD_OLD_INODE_SIZE)
++ return EXT2_ET_EA_NAME_NOT_FOUND;
++
++ if (IHDR(inode)->h_magic != EXT2_EXT_ATTR_MAGIC)
++ return EXT2_ET_EA_BAD_MAGIC;
++
++ return ext2fs_attr_check_names(&IHDR(inode)->h_first_entry[0],
++ (char *)inode + inode_size);
++}
++
++
+ static errcode_t ext2fs_attr_ibody_get(ext2_filsys fs,
+ struct ext2_inode_large *inode,
+ int name_index, const char *name,
+@@ -768,26 +780,16 @@ static errcode_t ext2fs_attr_ibody_get(e
+ {
+ struct ext2_ext_attr_entry *entry;
+ int error;
+- char *end, *start;
+- __u32 *eamagic;
+-
+- if (EXT2_INODE_SIZE(fs->super) == EXT2_GOOD_OLD_INODE_SIZE)
+- return EXT2_ET_EA_NAME_NOT_FOUND;
+
+- eamagic = IHDR(inode);
+- error = ext2fs_attr_check_block(fs, buffer);
++ error = ext2fs_attr_check_ibody(fs, inode);
+ if (error)
+ return error;
+
+- start = (char *)inode + EXT2_GOOD_OLD_INODE_SIZE +
+- inode->i_extra_isize + sizeof(__u32);
+- entry = (struct ext2_ext_attr_entry *)start;
+- end = (char *)inode + EXT2_INODE_SIZE(fs->super);
+- error = ext2fs_attr_check_names(entry, end);
+- if (error)
+- goto cleanup;
++ entry = &IHDR(inode)->h_first_entry[0];
++
+ error = ext2fs_attr_find_entry(&entry, name_index, name,
+- end - (char *)entry, 0);
++ (char *)inode+EXT2_INODE_SIZE(fs->super)-
++ (char *)entry, 0);
+ if (error)
+ goto cleanup;
+ if (easize)
+@@ -796,7 +798,8 @@ static errcode_t ext2fs_attr_ibody_get(e
+ error = EXT2_ET_EA_TOO_BIG;
+ if (entry->e_value_size > buffer_size)
+ goto cleanup;
+- memcpy(buffer, start + entry->e_value_offs,entry->e_value_size);
++ memcpy(buffer, &IHDR(inode)->h_first_entry[0] +
++ entry->e_value_offs, entry->e_value_size);
+ }
+
+ cleanup:
+@@ -813,7 +816,7 @@ errcode_t ext2fs_attr_get(ext2_filsys fs
+ error = ext2fs_attr_ibody_get(fs, (struct ext2_inode_large *)inode,
+ name_index, name, buffer, buffer_size,
+ easize);
+- if (error == EXT2_ET_EA_NAME_NOT_FOUND)
++ if (error == EXT2_ET_EA_NAME_NOT_FOUND || error == EXT2_ET_EA_BAD_MAGIC)
+ error = ext2fs_attr_block_get(fs, inode, name_index, name,
+ buffer, buffer_size, easize);
+
+@@ -856,7 +859,6 @@ errcode_t ext2fs_expand_extra_isize(ext2
+ int *needed_size)
+ {
+ struct ext2_inode *inode_buf = NULL;
+- __u32 *eamagic = NULL;
+ struct ext2_ext_attr_header *header = NULL;
+ struct ext2_ext_attr_entry *entry = NULL, *last = NULL;
+ struct ext2_attr_ibody_find is = {
+@@ -894,10 +896,9 @@ retry:
+ if (inode->i_extra_isize >= new_extra_isize)
+ goto cleanup;
+
+- eamagic = IHDR(inode);
+ start = (char *)inode + EXT2_GOOD_OLD_INODE_SIZE + inode->i_extra_isize;
+ /* No extended attributes present */
+- if (*eamagic != EXT2_EXT_ATTR_MAGIC) {
++ if (IHDR(inode)->h_magic != EXT2_EXT_ATTR_MAGIC) {
+ memset(start, 0,
+ EXT2_INODE_SIZE(fs->super) - EXT2_GOOD_OLD_INODE_SIZE -
+ inode->i_extra_isize);
+Index: e2fsprogs/lib/ext2fs/Makefile.in
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/Makefile.in
++++ e2fsprogs/lib/ext2fs/Makefile.in
+@@ -152,6 +152,7 @@ SRCS= ext2_err.c \
+ $(srcdir)/tst_byteswap.c \
+ $(srcdir)/tst_getsize.c \
+ $(srcdir)/tst_iscan.c \
++ $(srcdir)/tst_read_ea.c \
+ $(srcdir)/undo_io.c \
+ $(srcdir)/unix_io.c \
+ $(srcdir)/unlink.c \
+@@ -224,6 +225,10 @@ tst_iscan: tst_iscan.o $(STATIC_LIBEXT2F
+ $(E) " LD $@"
+ $(Q) $(CC) -o tst_iscan tst_iscan.o $(STATIC_LIBEXT2FS) $(LIBCOM_ERR)
+
++tst_read_ea: tst_read_ea.o $(STATIC_LIBEXT2FS) $(DEPLIBCOM_ERR)
++ $(E) " LD $@"
++ $(Q) $(CC) -o tst_read_ea tst_read_ea.o $(STATIC_LIBEXT2FS) $(LIBCOM_ERR)
++
+ tst_getsize: tst_getsize.o $(STATIC_LIBEXT2FS) $(DEPLIBCOM_ERR)
+ $(E) " LD $@"
+ $(Q) $(CC) -o tst_getsize tst_getsize.o $(STATIC_LIBEXT2FS) \
+@@ -339,7 +344,7 @@ mkjournal: mkjournal.c $(STATIC_LIBEXT2F
+ $(E) " LD $@"
+ $(Q) $(CC) -o mkjournal $(srcdir)/mkjournal.c -DDEBUG $(STATIC_LIBEXT2FS) $(LIBCOM_ERR) $(ALL_CFLAGS)
+
+-check:: tst_bitops tst_badblocks tst_iscan tst_types tst_icount tst_super_size tst_types tst_csum
++check:: tst_bitops tst_badblocks tst_iscan tst_types tst_icount tst_super_size tst_types tst_csum tst_read_ea
+ LD_LIBRARY_PATH=$(LIB) DYLD_LIBRARY_PATH=$(LIB) ./tst_bitops
+ LD_LIBRARY_PATH=$(LIB) DYLD_LIBRARY_PATH=$(LIB) ./tst_badblocks
+ LD_LIBRARY_PATH=$(LIB) DYLD_LIBRARY_PATH=$(LIB) ./tst_iscan
+@@ -347,6 +352,7 @@ check:: tst_bitops tst_badblocks tst_isc
+ LD_LIBRARY_PATH=$(LIB) DYLD_LIBRARY_PATH=$(LIB) ./tst_icount
+ LD_LIBRARY_PATH=$(LIB) DYLD_LIBRARY_PATH=$(LIB) ./tst_super_size
+ LD_LIBRARY_PATH=$(LIB) DYLD_LIBRARY_PATH=$(LIB) ./tst_csum
++ LD_LIBRARY_PATH=$(LIB) DYLD_LIBRARY_PATH=$(LIB) ./tst_read_ea
+
+ installdirs::
+ $(E) " MKINSTALLDIRS $(libdir) $(includedir)/ext2fs"
+@@ -379,7 +385,7 @@ clean::
+ tst_badblocks tst_iscan ext2_err.et ext2_err.c ext2_err.h \
+ tst_byteswap tst_ismounted tst_getsize tst_sectgetsize \
+ tst_bitops tst_types tst_icount tst_super_size tst_csum \
+- ext2_tdbtool mkjournal debug_cmds.c \
++ tst_read_ea ext2_tdbtool mkjournal debug_cmds.c \
+ ../libext2fs.a ../libext2fs_p.a ../libext2fs_chk.a
+
+ mostlyclean:: clean
+@@ -736,6 +742,11 @@ tst_iscan.o: $(srcdir)/tst_iscan.c $(src
+ $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
+ $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
+ $(srcdir)/ext2_ext_attr.h $(srcdir)/bitops.h
++tst_read_ea.o: $(srcdir)/tst_read_ea.c $(srcdir)/ext2_fs.h \
++ $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
++ $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
++ $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
++ $(srcdir)/ext2_ext_attr.h $(srcdir)/bitops.h
+ undo_io.o: $(srcdir)/undo_io.c $(srcdir)/tdb.h $(srcdir)/ext2_fs.h \
+ $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
+Index: e2fsprogs/lib/ext2fs/tst_read_ea.c
+===================================================================
+--- /dev/null
++++ e2fsprogs/lib/ext2fs/tst_read_ea.c
+@@ -0,0 +1,219 @@
++/*
++ * tst_getsize.c --- this function tests the getsize function
++ *
++ * %Begin-Header%
++ * This file may be redistributed under the terms of the GNU Public
++ * License.
++ * %End-Header%
++ */
++
++#include <stdio.h>
++#include <string.h>
++#if HAVE_UNISTD_H
++#include <unistd.h>
++#endif
++#include <fcntl.h>
++#include <time.h>
++#include <sys/stat.h>
++#include <sys/types.h>
++#include <mntent.h>
++#include <assert.h>
++#if HAVE_ERRNO_H
++#include <errno.h>
++#endif
++
++#include "ext2_fs.h"
++#include "ext2fs.h"
++
++#define NR_XATTRS 256
++char tmpvalue[NR_XATTRS + 1];
++
++struct ea {
++ char *name;
++ char *value;
++};
++
++struct ea *ea_table;
++
++static void init_ea_table(void)
++{
++ int i;
++
++ ea_table = malloc(sizeof(struct ea) * NR_XATTRS);
++ if (ea_table == NULL) {
++ perror("maloc failed");
++ exit(1);
++ }
++ for (i = 0; i < NR_XATTRS; i ++) {
++ ea_table[i].name = malloc(i + 2 + strlen("user."));
++ if (ea_table[i].name == NULL) {
++ perror("malloc failed");
++ exit(1);
++ }
++ strcpy(ea_table[i].name, "user.");
++ memset(ea_table[i].name + strlen("user."), 'X', i + 1);
++ ea_table[i].name[i + 1 + strlen("user.")] = 0;
++
++ ea_table[i].value = malloc(NR_XATTRS - i + 1);
++ if (ea_table[i].value == NULL) {
++ perror("malloc failed");
++ exit(1);
++ }
++ memset(ea_table[i].value, 'Y', NR_XATTRS - i);
++ ea_table[i].value[NR_XATTRS - i] = 0;
++ }
++}
++
++static int set_xattrs(int fd)
++{
++ int i;
++
++ for (i = 0; i < NR_XATTRS; i ++) {
++ if (fsetxattr(fd, ea_table[i].name, ea_table[i].value,
++ NR_XATTRS - i + 1, XATTR_CREATE) == -1) {
++ if (errno != ENOSPC) {
++ perror("fsetxattr failed");
++ exit(1);
++ }
++ break;
++ }
++ }
++ printf("\t%d xattrs are set\n", i);
++ return i;
++}
++
++void get_xattrs1(int fd, int nr)
++{
++ int i;
++ ssize_t size;
++
++ printf("\ttesting fgetxattr .. "); fflush(stdout);
++
++ for (i = 0; i < nr; i ++) {
++ size = fgetxattr(fd, ea_table[i].name, tmpvalue,
++ NR_XATTRS - i + 1);
++ if (size == -1) {
++ perror("fgetxattr failed");
++ exit(1);
++ }
++ if (memcmp(ea_table[i].value, tmpvalue, nr - i + 1)) {
++ fprintf(stderr, "value mismatch");
++ exit(1);
++ }
++ }
++
++ printf("%d xattrs are checked, ok\n", i);
++}
++
++void get_xattrs2(const char *device, ext2_ino_t ino, int nr)
++{
++ ext2_filsys fs;
++ int i;
++ struct ext2_inode *inode;
++ errcode_t err;
++ int size;
++
++ printf("\ttesting ext2fs_attr_get .. "); fflush(stdout);
++
++ err = ext2fs_open(device, 0, 0, 0, unix_io_manager, &fs);
++ assert(err == 0);
++
++ err = ext2fs_get_mem(EXT2_INODE_SIZE(fs->super), &inode);
++ if (err) {
++ com_err("get_xattrs2", err, "allocating memory");
++ exit(1);
++ }
++
++ err = ext2fs_read_inode_full(fs, ino, inode,
++ EXT2_INODE_SIZE(fs->super));
++ if (err) {
++ com_err("get_xattrs2", err, "reading inode");
++ exit(1);
++ }
++ for (i = 0; i < nr; i ++) {
++ err = ext2fs_attr_get(fs, inode, EXT2_ATTR_INDEX_USER,
++ ea_table[i].name + strlen("user."),
++ tmpvalue, sizeof(tmpvalue), &size);
++ if (err) {
++ com_err("get_xattrs2", err, "getting xattr");
++ exit(1);
++ }
++ assert(size == (NR_XATTRS - i + 1));
++
++ if (memcmp(ea_table[i].value, tmpvalue, size)) {
++ fprintf(stderr, "value mismatch");
++ exit(1);
++ }
++ }
++ ext2fs_close(fs);
++
++ printf("%d xattrs are checked, ok\n", i);
++}
++
++int main(int argc, const char *argv[])
++{
++ ext2_filsys fs;
++ FILE *f;
++ struct mntent *mnt;
++ char *name;
++ int fd;
++ errcode_t err;
++ struct stat st;
++ int nr;
++ int tested = 0;
++
++ initialize_ext2_error_table();
++
++ init_ea_table();
++
++ f = setmntent(MOUNTED, "r");
++ if (!f) {
++ fprintf(stderr, "failed to setmntent\n");
++ return 1;
++ }
++
++ while ((mnt = getmntent(f)) != NULL) {
++ if (hasmntopt(mnt, "user_xattr") == NULL)
++ continue;
++ err = ext2fs_open(mnt->mnt_fsname, 0, 0, 0,
++ unix_io_manager, &fs);
++ if (err) {
++ com_err("tst_read_ea", err,
++ "opening fs %s:%s",
++ mnt->mnt_fsname, mnt->mnt_type);
++ continue;
++ }
++ ext2fs_close(fs);
++
++ printf("(%s)%s:%s\n", mnt->mnt_type, mnt->mnt_fsname, mnt->mnt_dir);
++
++ asprintf(&name, "%s/readeaXXXXXX", mnt->mnt_dir);
++ fd = mkstemp(name);
++ if (fd == -1) {
++ perror("mkstemp failed");
++ exit(1);
++ }
++ if (fstat(fd, &st)) {
++ perror("fstat failed");
++ exit(1);
++ }
++ nr = set_xattrs(fd);
++
++ sync();
++ get_xattrs1(fd, nr);
++ close(fd);
++
++ get_xattrs2(mnt->mnt_fsname, st.st_ino, nr);
++
++ unlink(name);
++ free(name);
++ tested = 1;
++ }
++ endmntent(f);
++
++ if (!tested)
++ fprintf(stderr,
++ "\tno ext2 based filesystems mounted with user_xattr\n"
++ "\thope it is ok\n");
++ return 0;
++}
--- /dev/null
+Add check for in-inode xattr to make sure that it is not referencing an offset
+that is beyond the end of the inode.
+
+Index: e2fsprogs/e2fsck/pass1.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/pass1.c
++++ e2fsprogs/e2fsck/pass1.c
+@@ -319,6 +319,13 @@ static void check_ea_in_inode(e2fsck_t c
+ goto fix;
+ }
+
++ /* Value size cannot be larger than EA space in inode */
++ if (entry->e_value_offs > storage_size ||
++ entry->e_value_offs + entry->e_value_size > storage_size) {
++ problem = PR_1_INODE_EA_BAD_VALUE;
++ goto fix;
++ }
++
+ hash = ext2fs_ext_attr_hash_entry(entry,
+ start + entry->e_value_offs);
+
+Index: e2fsprogs/e2fsck/problem.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/problem.c
++++ e2fsprogs/e2fsck/problem.c
+@@ -890,6 +890,11 @@ static struct e2fsck_problem problem_tab
+ "(size %Is, lblk %r)\n"),
+ PROMPT_CLEAR, PR_PREEN_OK },
+
++ /* Bad extended attribute value in inode */
++ { PR_1_INODE_EA_BAD_VALUE,
++ N_("@a in @i %i is corrupt (@n value)."),
++ PROMPT_CLEAR, 0},
++
+ /* Pass 1b errors */
+
+ /* Pass 1B: Rescan for duplicate/bad blocks */
+Index: e2fsprogs/e2fsck/problem.h
+===================================================================
+--- e2fsprogs.orig/e2fsck/problem.h
++++ e2fsprogs/e2fsck/problem.h
+@@ -520,6 +520,9 @@ struct problem_context {
+ /* EOFBLOCKS flag set when not necessary */
+ #define PR_1_EOFBLOCKS_FL_SET 0x010060
+
++/* Bad extended attribute value in inode */
++#define PR_1_INODE_EA_BAD_VALUE 0x010061
++
+ /*
+ * Pass 1b errors
+ */
--- /dev/null
+Allow an internal journal size larger than 2^32 bytes. The
+write_journal_inode() code is only setting the low 32-bit i_size for
+the journal size, fix it to set i_size_high also.
+
+Use s_jnl_blocks[15] to store the journal i_size_high backup. This
+field is currently unused, as EXT2_N_BLOCKS is 15, so it is using
+s_jnl_blocks[0..14], and i_size is in s_jnl_blocks[16].
+
+Rename the "size" argument to "blocks" for the journal creation functions
+to make it clear that this parameter is in units of blocks and not bytes.
+
+Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
+
+Index: e2fsprogs/debugfs/logdump.c
+===================================================================
+--- e2fsprogs.orig/debugfs/logdump.c
++++ e2fsprogs/debugfs/logdump.c
+@@ -209,6 +209,7 @@ void do_logdump(int argc, char **argv)
+ memset(&journal_inode, 0, sizeof(struct ext2_inode));
+ memcpy(&journal_inode.i_block[0], es->s_jnl_blocks,
+ EXT2_N_BLOCKS*4);
++ journal_inode.i_size_high = es->s_jnl_blocks[15];
+ journal_inode.i_size = es->s_jnl_blocks[16];
+ journal_inode.i_links_count = 1;
+ journal_inode.i_mode = LINUX_S_IFREG | 0600;
+Index: e2fsprogs/e2fsck/journal.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/journal.c
++++ e2fsprogs/e2fsck/journal.c
+@@ -288,6 +288,7 @@ static errcode_t e2fsck_get_journal(e2fs
+ memset(&j_inode->i_ext2, 0, sizeof(struct ext2_inode));
+ memcpy(&j_inode->i_ext2.i_block[0], sb->s_jnl_blocks,
+ EXT2_N_BLOCKS*4);
++ j_inode->i_ext2.i_size_high = sb->s_jnl_blocks[15];
+ j_inode->i_ext2.i_size = sb->s_jnl_blocks[16];
+ j_inode->i_ext2.i_links_count = 1;
+ j_inode->i_ext2.i_mode = LINUX_S_IFREG | 0600;
+@@ -301,7 +302,7 @@ static errcode_t e2fsck_get_journal(e2fs
+ retval = EXT2_ET_NO_JOURNAL;
+ goto try_backup_journal;
+ }
+- if (j_inode->i_ext2.i_size / journal->j_blocksize <
++ if (EXT2_I_SIZE(&j_inode->i_ext2) / journal->j_blocksize <
+ JFS_MIN_JOURNAL_BLOCKS) {
+ retval = EXT2_ET_JOURNAL_TOO_SMALL;
+ goto try_backup_journal;
+@@ -310,8 +311,8 @@ static errcode_t e2fsck_get_journal(e2fs
+ retval = ext2fs_block_iterate3(ctx->fs, j_inode->i_ino,
+ BLOCK_FLAG_HOLE, 0,
+ process_journal_block, &pb);
+- if ((pb.last_block+1) * ctx->fs->blocksize <
+- j_inode->i_ext2.i_size) {
++ if ((pb.last_block + 1) * ctx->fs->blocksize <
++ EXT2_I_SIZE(&j_inode->i_ext2)) {
+ retval = EXT2_ET_JOURNAL_TOO_SMALL;
+ goto try_backup_journal;
+ }
+@@ -322,7 +323,8 @@ static errcode_t e2fsck_get_journal(e2fs
+ goto errout;
+ }
+
+- journal->j_maxlen = j_inode->i_ext2.i_size / journal->j_blocksize;
++ journal->j_maxlen = EXT2_I_SIZE(&j_inode->i_ext2) /
++ journal->j_blocksize;
+
+ #ifdef USE_INODE_IO
+ retval = ext2fs_inode_io_intern2(ctx->fs, sb->s_journal_inum,
+@@ -943,6 +945,7 @@ void e2fsck_move_ext3_journal(e2fsck_t c
+ if (fix_problem(ctx, PR_0_BACKUP_JNL, &pctx)) {
+ memcpy(sb->s_jnl_blocks, inode.i_block,
+ EXT2_N_BLOCKS*4);
++ sb->s_jnl_blocks[15] = inode.i_size_high;
+ sb->s_jnl_blocks[16] = inode.i_size;
+ sb->s_jnl_backup_type = EXT3_JNL_BACKUP_BLOCKS;
+ ext2fs_mark_super_dirty(fs);
+Index: e2fsprogs/e2fsck/unix.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/unix.c
++++ e2fsprogs/e2fsck/unix.c
+@@ -1374,7 +1374,8 @@ print_unsupp_features:
+ * find the default journal size.
+ */
+ if (sb->s_jnl_backup_type == EXT3_JNL_BACKUP_BLOCKS)
+- journal_size = sb->s_jnl_blocks[16] >> 20;
++ journal_size = (sb->s_jnl_blocks[15] << (32 - 20)) |
++ (sb->s_jnl_blocks[16] >> 20);
+ else
+ journal_size = -1;
+
+Index: e2fsprogs/lib/ext2fs/ext2fs.h
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/ext2fs.h
++++ e2fsprogs/lib/ext2fs/ext2fs.h
+@@ -1250,11 +1250,11 @@ extern errcode_t ext2fs_zero_blocks(ext2
+ extern errcode_t ext2fs_zero_blocks2(ext2_filsys fs, blk64_t blk, int num,
+ blk64_t *ret_blk, int *ret_count);
+ extern errcode_t ext2fs_create_journal_superblock(ext2_filsys fs,
+- __u32 size, int flags,
++ __u32 blocks, int flags,
+ char **ret_jsb);
+ extern errcode_t ext2fs_add_journal_device(ext2_filsys fs,
+ ext2_filsys journal_dev);
+-extern errcode_t ext2fs_add_journal_inode(ext2_filsys fs, blk_t size,
++extern errcode_t ext2fs_add_journal_inode(ext2_filsys fs, blk_t blocks,
+ int flags);
+ extern int ext2fs_default_journal_size(__u64 blocks);
+
+Index: e2fsprogs/lib/ext2fs/mkjournal.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/mkjournal.c
++++ e2fsprogs/lib/ext2fs/mkjournal.c
+@@ -42,13 +42,13 @@
+ * returns it as an allocated block.
+ */
+ errcode_t ext2fs_create_journal_superblock(ext2_filsys fs,
+- __u32 size, int flags,
++ __u32 blocks, int flags,
+ char **ret_jsb)
+ {
+ errcode_t retval;
+ journal_superblock_t *jsb;
+
+- if (size < 1024)
++ if (blocks < 1024)
+ return EXT2_ET_JOURNAL_TOO_SMALL;
+
+ if ((retval = ext2fs_get_mem(fs->blocksize, &jsb)))
+@@ -62,7 +62,7 @@ errcode_t ext2fs_create_journal_superblo
+ else
+ jsb->s_header.h_blocktype = htonl(JFS_SUPERBLOCK_V2);
+ jsb->s_blocksize = htonl(fs->blocksize);
+- jsb->s_maxlen = htonl(size);
++ jsb->s_maxlen = htonl(blocks);
+ jsb->s_nr_users = htonl(1);
+ jsb->s_first = htonl(1);
+ jsb->s_sequence = htonl(1);
+@@ -90,14 +90,14 @@ errcode_t ext2fs_create_journal_superblo
+ * filesystems.
+ */
+ static errcode_t write_journal_file(ext2_filsys fs, char *filename,
+- blk_t size, int flags)
++ blk_t blocks, int flags)
+ {
+ errcode_t retval;
+ char *buf = 0;
+ int fd, ret_size;
+ blk_t i;
+
+- if ((retval = ext2fs_create_journal_superblock(fs, size, flags, &buf)))
++ if ((retval = ext2fs_create_journal_superblock(fs, blocks, flags,&buf)))
+ return retval;
+
+ /* Open the device or journal file */
+@@ -117,7 +117,7 @@ static errcode_t write_journal_file(ext2
+ goto errout;
+ memset(buf, 0, fs->blocksize);
+
+- for (i = 1; i < size; i++) {
++ for (i = 1; i < blocks; i++) {
+ ret_size = write(fd, buf, fs->blocksize);
+ if (ret_size < 0) {
+ retval = errno;
+@@ -284,15 +284,16 @@ static int mkjournal_proc(ext2_filsys fs
+ * This function creates a journal using direct I/O routines.
+ */
+ static errcode_t write_journal_inode(ext2_filsys fs, ext2_ino_t journal_ino,
+- blk64_t size, int flags)
++ blk_t blocks, int flags)
+ {
+ char *buf;
+ dgrp_t group, start, end, i, log_flex;
+ errcode_t retval;
+ struct ext2_inode inode;
++ unsigned long long inode_size;
+ struct mkjournal_struct es;
+
+- if ((retval = ext2fs_create_journal_superblock(fs, size, flags, &buf)))
++ if ((retval = ext2fs_create_journal_superblock(fs, blocks, flags, &buf)))
+ return retval;
+
+ if ((retval = ext2fs_read_bitmaps(fs)))
+@@ -304,7 +305,7 @@ static errcode_t write_journal_inode(ext
+ if (inode.i_blocks > 0)
+ return EEXIST;
+
+- es.num_blocks = size;
++ es.num_blocks = blocks;
+ es.newblocks = 0;
+ es.buf = buf;
+ es.err = 0;
+@@ -360,7 +361,12 @@ static errcode_t write_journal_inode(ext
+ if ((retval = ext2fs_read_inode(fs, journal_ino, &inode)))
+ goto errout;
+
+- inode.i_size += fs->blocksize * size;
++ inode_size = (unsigned long long)fs->blocksize * blocks;
++ inode.i_size = inode_size & 0xFFFFFFFF;
++ inode.i_size_high = (inode_size >> 32) & 0xFFFFFFFF;
++ if (inode.i_size_high)
++ fs->super->s_feature_ro_compat |=
++ EXT2_FEATURE_RO_COMPAT_LARGE_FILE;
+ ext2fs_iblk_add_blocks(fs, &inode, es.newblocks);
+ inode.i_mtime = inode.i_ctime = fs->now ? fs->now : time(0);
+ inode.i_links_count = 1;
+@@ -371,6 +377,7 @@ static errcode_t write_journal_inode(ext
+ retval = 0;
+
+ memcpy(fs->super->s_jnl_blocks, inode.i_block, EXT2_N_BLOCKS*4);
++ fs->super->s_jnl_blocks[15] = inode.i_size_high;
+ fs->super->s_jnl_blocks[16] = inode.i_size;
+ fs->super->s_jnl_backup_type = EXT3_JNL_BACKUP_BLOCKS;
+ ext2fs_mark_super_dirty(fs);
+@@ -467,7 +474,7 @@ errcode_t ext2fs_add_journal_device(ext2
+ * POSIX routines if the filesystem is mounted, or using direct I/O
+ * functions if it is not.
+ */
+-errcode_t ext2fs_add_journal_inode(ext2_filsys fs, blk_t size, int flags)
++errcode_t ext2fs_add_journal_inode(ext2_filsys fs, blk_t blocks, int flags)
+ {
+ errcode_t retval;
+ ext2_ino_t journal_ino;
+@@ -504,7 +511,7 @@ errcode_t ext2fs_add_journal_inode(ext2_
+ if ((fd = open(jfile, O_CREAT|O_WRONLY, 0600)) < 0)
+ return errno;
+
+- if ((retval = write_journal_file(fs, jfile, size, flags)))
++ if ((retval = write_journal_file(fs, jfile, blocks, flags)))
+ goto errout;
+
+ /* Get inode number of the journal file */
+@@ -544,7 +551,7 @@ errcode_t ext2fs_add_journal_inode(ext2_
+ }
+ journal_ino = EXT2_JOURNAL_INO;
+ if ((retval = write_journal_inode(fs, journal_ino,
+- size, flags)))
++ blocks, flags)))
+ return retval;
+ }
+
+Index: e2fsprogs/lib/ext2fs/swapfs.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/swapfs.c
++++ e2fsprogs/lib/ext2fs/swapfs.c
+@@ -81,16 +81,16 @@ void ext2fs_swap_super(struct ext2_super
+ sb->s_hash_seed[i] = ext2fs_swab32(sb->s_hash_seed[i]);
+
+ /* if journal backup is for a valid extent-based journal... */
+- if (!ext2fs_extent_header_verify(sb->s_jnl_blocks,
+- sizeof(sb->s_jnl_blocks))) {
+- /* ... swap only the journal i_size */
+- sb->s_jnl_blocks[16] = ext2fs_swab32(sb->s_jnl_blocks[16]);
+- /* and the extent data is not swapped on read */
+- return;
++ if (ext2fs_extent_header_verify(sb->s_jnl_blocks,
++ sizeof(sb->s_jnl_blocks)) == 0) {
++ /* ... swap only the journal i_size and i_size_high,
++ * and the extent data is not swapped on read */
++ i = 15;
++ } else {
++ /* direct/indirect journal: swap it all */
++ i = 0;
+ }
+-
+- /* direct/indirect journal: swap it all */
+- for (i=0; i < 17; i++)
++ for (; i < 17; i++)
+ sb->s_jnl_blocks[i] = ext2fs_swab32(sb->s_jnl_blocks[i]);
+ }
+
+Index: e2fsprogs/resize/resize2fs.c
+===================================================================
+--- e2fsprogs.orig/resize/resize2fs.c
++++ e2fsprogs/resize/resize2fs.c
+@@ -1879,6 +1879,7 @@ static errcode_t fix_sb_journal_backup(e
+ if (retval)
+ return retval;
+ memcpy(fs->super->s_jnl_blocks, inode.i_block, EXT2_N_BLOCKS*4);
++ fs->super->s_jnl_blocks[15] = inode.i_size_high;
+ fs->super->s_jnl_blocks[16] = inode.i_size;
+ fs->super->s_jnl_backup_type = EXT3_JNL_BACKUP_BLOCKS;
+ ext2fs_mark_super_dirty(fs);
+Index: e2fsprogs/tests/m_extent_journal/expect.1
+===================================================================
+--- /dev/null
++++ e2fsprogs/tests/m_extent_journal/expect.1
+@@ -0,0 +1,84 @@
++Filesystem label=
++OS type: Linux
++Block size=2048 (log=1)
++Fragment size=2048 (log=1)
++Stride=0 blocks, Stripe width=0 blocks
++16384 inodes, 32768 blocks
++1638 blocks (5.00%) reserved for the super user
++First data block=0
++Maximum filesystem blocks=33554432
++2 block groups
++16384 blocks per group, 16384 fragments per group
++8192 inodes per group
++Superblock backups stored on blocks:
++ 16384
++
++Allocating group tables: 0/2\b\b\b1/2\b\b\b \b\b\bdone
++Writing inode tables: 0/2\b\b\b1/2\b\b\b \b\b\bdone
++Creating journal (4096 blocks): done
++Writing superblocks and filesystem accounting information: 0/2\b\b\b1/2\b\b\b \b\b\bdone
++
++0/2\b\b\b1/2\b\b\b \b\b\bFilesystem features: has_journal ext_attr resize_inode dir_index filetype extent sparse_super
++
++Pass 1: Checking inodes, blocks, and sizes
++Pass 2: Checking directory structure
++Pass 3: Checking directory connectivity
++Pass 4: Checking reference counts
++Pass 5: Checking group summary information
++test_filesys: 11/16384 files (0.0% non-contiguous), 5200/32768 blocks
++Exit status is 0
++
++Filesystem volume name: <none>
++Last mounted on: <not available>
++Filesystem magic number: 0xEF53
++Filesystem revision #: 1 (dynamic)
++Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent sparse_super
++Default mount options: (none)
++Filesystem state: clean
++Errors behavior: Continue
++Filesystem OS type: Linux
++Inode count: 16384
++Block count: 32768
++Reserved block count: 1638
++Free blocks: 27568
++Free inodes: 16373
++First block: 0
++Block size: 2048
++Fragment size: 2048
++Reserved GDT blocks: 31
++Blocks per group: 16384
++Fragments per group: 16384
++Inodes per group: 8192
++Inode blocks per group: 512
++Mount count: 0
++Check interval: 15552000 (6 months)
++Reserved blocks uid: 0
++Reserved blocks gid: 0
++First inode: 11
++Inode size: 128
++Journal inode: 8
++Default directory hash: half_md4
++Journal backup: inode blocks
++Journal features: (none)
++Journal size: 8M
++Journal length: 4096
++Journal sequence: 0x00000001
++Journal start: 0
++
++
++Group 0: (Blocks 0-16383)
++ Primary superblock at 0, Group descriptors at 1-1
++ Reserved GDT blocks at 2-32
++ Block bitmap at 33 (+33), Inode bitmap at 34 (+34)
++ Inode table at 35-546 (+35)
++ 15827 free blocks, 8181 free inodes, 2 directories
++ Free blocks: 557-16383
++ Free inodes: 12-8192
++Group 1: (Blocks 16384-32767)
++ Backup superblock at 16384, Group descriptors at 16385-16385
++ Reserved GDT blocks at 16386-16416
++ Block bitmap at 16417 (+33), Inode bitmap at 16418 (+34)
++ Inode table at 16419-16930 (+35)
++ 11741 free blocks, 8192 free inodes, 0 directories
++ Free blocks: 21027-32767
++ Free inodes: 8193-16384
+Index: e2fsprogs/tests/m_extent_journal/script
+===================================================================
+--- /dev/null
++++ e2fsprogs/tests/m_extent_journal/script
+@@ -0,0 +1,7 @@
++DESCRIPTION="extent-mapped journal"
++FS_SIZE=65536
++MKE2FS_DEVICE_SECTSIZE=2048
++export MKE2FS_DEVICE_SECTSIZE
++MKE2FS_OPTS="-O extents -j"
++. $cmd_dir/run_mke2fs
++unset MKE2FS_DEVICE_SECTSIZE
--- /dev/null
+Fix the ZFS device detection by looking at multiple uberblocks to see if
+any are present, rather than looking for the ZFS boot block which is not
+always present.
+
+There may be up to 128 uberblocks, but the first 4 are not written to disk
+on a newly-formatted filesystem so check several of them at different
+offsets within the uberblock array.
+
+Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
+
+Index: e2fsprogs/lib/blkid/probe.h
+===================================================================
+--- e2fsprogs.orig/lib/blkid/probe.h
++++ e2fsprogs/lib/blkid/probe.h
+@@ -193,6 +193,16 @@ struct jfs_super_block {
+ unsigned char js_loguuid[16];
+ };
+
++#define UBERBLOCK_MAGIC 0x00bab10c /* oo-ba-bloc! */
++struct zfs_uberblock {
++ __u64 ub_magic; /* UBERBLOCK_MAGIC */
++ __u64 ub_version; /* ZFS_VERSION */
++ __u64 ub_txg; /* txg of last sync */
++ __u64 ub_guid_sum; /* sum of all vdev guids */
++ __u64 ub_timestamp; /* UTC time of last sync */
++ char ub_rootbp; /* MOS objset_phys_t */
++};
++
+ struct romfs_super_block {
+ unsigned char ros_magic[8];
+ __u32 ros_dummy1[2];
+Index: e2fsprogs/lib/blkid/probe.c
+===================================================================
+--- e2fsprogs.orig/lib/blkid/probe.c
++++ e2fsprogs/lib/blkid/probe.c
+@@ -1434,10 +1434,19 @@ static struct blkid_magic type_array[] =
+ { "iso9660", 32, 1, 5, "CD001", probe_iso9660 },
+ { "iso9660", 32, 9, 5, "CDROM", probe_iso9660 },
+ { "jfs", 32, 0, 4, "JFS1", probe_jfs },
+- { "zfs", 8, 0, 8, "\0\0\x02\xf5\xb0\x07\xb1\x0c", probe_zfs },
+- { "zfs", 8, 0, 8, "\x0c\xb1\x07\xb0\xf5\x02\0\0", probe_zfs },
+- { "zfs", 264, 0, 8, "\0\0\x02\xf5\xb0\x07\xb1\x0c", probe_zfs },
+- { "zfs", 264, 0, 8, "\x0c\xb1\x07\xb0\xf5\x02\0\0", probe_zfs },
++ /* ZFS has 128 root blocks (#4 is the first used), check only 6 of them */
++ { "zfs", 128, 0, 8, "\0\0\0\0\0\xba\xb1\x0c", probe_zfs },
++ { "zfs", 128, 0, 8, "\x0c\xb1\xba\0\0\0\0\0", probe_zfs },
++ { "zfs", 132, 0, 8, "\0\0\0\0\0\xba\xb1\x0c", probe_zfs },
++ { "zfs", 132, 0, 8, "\x0c\xb1\xba\0\0\0\0\0", probe_zfs },
++ { "zfs", 136, 0, 8, "\0\0\0\0\0\xba\xb1\x0c", probe_zfs },
++ { "zfs", 136, 0, 8, "\x0c\xb1\xba\0\0\0\0\0", probe_zfs },
++ { "zfs", 384, 0, 8, "\0\0\0\0\0\xba\xb1\x0c", probe_zfs },
++ { "zfs", 384, 0, 8, "\x0c\xb1\xba\0\0\0\0\0", probe_zfs },
++ { "zfs", 388, 0, 8, "\0\0\0\0\0\xba\xb1\x0c", probe_zfs },
++ { "zfs", 388, 0, 8, "\x0c\xb1\xba\0\0\0\0\0", probe_zfs },
++ { "zfs", 392, 0, 8, "\0\0\0\0\0\xba\xb1\x0c", probe_zfs },
++ { "zfs", 392, 0, 8, "\x0c\xb1\xba\0\0\0\0\0", probe_zfs },
+ { "hfsplus", 1, 0, 2, "BD", probe_hfsplus },
+ { "hfsplus", 1, 0, 2, "H+", probe_hfsplus },
+ { "hfsplus", 1, 0, 2, "HX", probe_hfsplus },
--- /dev/null
+The patch changes the order that the config file and command line are
+parsed so that command line has precedence. It also parses the -E
+option for every occurrence, otherwise the -E option is not cumulative.
+
+Signed-off-by: Jim Garlick <garlick@llnl.gov>
+Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
+
+Index: e2fsprogs/e2fsck/unix.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/unix.c
++++ e2fsprogs/e2fsck/unix.c
+@@ -654,7 +654,6 @@ static errcode_t PRS(int argc, char *arg
+ #ifdef HAVE_SIGNAL_H
+ struct sigaction sa;
+ #endif
+- char *extended_opts = 0;
+ char *cp;
+ int res; /* result of sscanf */
+ #ifdef CONFIG_JBD_DEBUG
+@@ -686,6 +685,12 @@ static errcode_t PRS(int argc, char *arg
+ else
+ ctx->program_name = "e2fsck";
+
++ if ((cp = getenv("E2FSCK_CONFIG")) != NULL)
++ config_fn[0] = cp;
++ profile_set_syntax_err_cb(syntax_err_report);
++ profile_init(config_fn, &ctx->profile);
++
++
+ while ((c = getopt (argc, argv, "panyrcC:B:dE:fvtFVM:b:I:j:P:l:L:N:SsDk")) != EOF)
+ switch (c) {
+ case 'C':
+@@ -716,7 +721,7 @@ static errcode_t PRS(int argc, char *arg
+ ctx->options |= E2F_OPT_COMPRESS_DIRS;
+ break;
+ case 'E':
+- extended_opts = optarg;
++ parse_extended_opts(ctx, optarg);
+ break;
+ case 'p':
+ case 'a':
+@@ -851,13 +856,6 @@ static errcode_t PRS(int argc, char *arg
+ argv[optind]);
+ fatal_error(ctx, 0);
+ }
+- if (extended_opts)
+- parse_extended_opts(ctx, extended_opts);
+-
+- if ((cp = getenv("E2FSCK_CONFIG")) != NULL)
+- config_fn[0] = cp;
+- profile_set_syntax_err_cb(syntax_err_report);
+- profile_init(config_fn, &ctx->profile);
+
+ if (flush) {
+ fd = open(ctx->filesystem_name, O_RDONLY, 0);
--- /dev/null
+Don't consider only an error in the superblock summary as incorrect.
+The kernel does not update this field except at unmount time. Any
+other unfixed errors will themselves mark the filesystem invalid.
+
+Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
+
+Index: e2fsprogs/e2fsck/pass5.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/pass5.c
++++ e2fsprogs/e2fsck/pass5.c
+@@ -401,8 +401,7 @@ redo_counts:
+ if (fix_problem(ctx, PR_5_FREE_BLOCK_COUNT, &pctx)) {
+ ext2fs_free_blocks_count_set(fs->super, free_blocks);
+ ext2fs_mark_super_dirty(fs);
+- } else
+- ext2fs_unmark_valid(fs);
++ }
+ }
+ errout:
+ ext2fs_free_mem(&free_array);
+@@ -679,8 +678,7 @@ do_counts:
+ if (fix_problem(ctx, PR_5_FREE_INODE_COUNT, &pctx)) {
+ fs->super->s_free_inodes_count = free_inodes;
+ ext2fs_mark_super_dirty(fs);
+- } else
+- ext2fs_unmark_valid(fs);
++ }
+ }
+ errout:
+ ext2fs_free_mem(&free_array);
+Index: e2fsprogs/e2fsck/problem.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/problem.c
++++ e2fsprogs/e2fsck/problem.c
+@@ -1571,7 +1571,7 @@ static struct e2fsck_problem problem_tab
+ /* Free inodes count wrong */
+ { PR_5_FREE_INODE_COUNT,
+ N_("Free @is count wrong (%i, counted=%j).\n"),
+- PROMPT_FIX, PR_PREEN_OK | PR_PREEN_NOMSG },
++ PROMPT_FIX, PR_PREEN_OK | PR_NO_OK | PR_PREEN_NOMSG },
+
+ /* Free blocks count for group wrong */
+ { PR_5_FREE_BLOCK_COUNT_GROUP,
+@@ -1581,7 +1581,7 @@ static struct e2fsck_problem problem_tab
+ /* Free blocks count wrong */
+ { PR_5_FREE_BLOCK_COUNT,
+ N_("Free @bs count wrong (%b, counted=%c).\n"),
+- PROMPT_FIX, PR_PREEN_OK | PR_PREEN_NOMSG },
++ PROMPT_FIX, PR_PREEN_OK | PR_NO_OK | PR_PREEN_NOMSG },
+
+ /* Programming error: bitmap endpoints don't match */
+ { PR_5_BMAP_ENDPOINTS,
--- /dev/null
+Index: e2fsprogs/lib/blkid/probe.h
+===================================================================
+--- e2fsprogs.orig/lib/blkid/probe.h
++++ e2fsprogs/lib/blkid/probe.h
+@@ -120,6 +120,7 @@ struct ext2_super_block {
+ #define EXT4_FEATURE_INCOMPAT_MMP 0x0100
+ #define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200
+ #define EXT4_FEATURE_INCOMPAT_EA_INODE 0x0400
++#define EXT4_FEATURE_INCOMPAT_DIRDATA 0x1000
+
+ #define EXT2_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \
+ EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \
+Index: e2fsprogs/lib/e2p/feature.c
+===================================================================
+--- e2fsprogs.orig/lib/e2p/feature.c
++++ e2fsprogs/lib/e2p/feature.c
+@@ -78,6 +78,8 @@ static struct feature feature_list[] = {
+ "mmp" },
+ { E2P_FEATURE_INCOMPAT, EXT4_FEATURE_INCOMPAT_EA_INODE,
+ "large_xattr" },
++ { E2P_FEATURE_INCOMPAT, EXT4_FEATURE_INCOMPAT_DIRDATA,
++ "dirdata" },
+ { 0, 0, 0 },
+ };
+
+Index: e2fsprogs/lib/ext2fs/ext2_fs.h
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/ext2_fs.h
++++ e2fsprogs/lib/ext2fs/ext2_fs.h
+@@ -698,13 +698,27 @@ struct ext2_super_block {
+ #define EXT2_FEATURE_COMPAT_SUPP 0
+ #define EXT2_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE| \
+ EXT4_FEATURE_INCOMPAT_MMP|\
+- EXT4_FEATURE_INCOMPAT_EA_INODE)
++ EXT4_FEATURE_INCOMPAT_EA_INODE|\
++ EXT4_FEATURE_INCOMPAT_DIRDATA)
+ #define EXT2_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \
+ EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \
+ EXT4_FEATURE_RO_COMPAT_DIR_NLINK| \
+ EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE| \
+ EXT2_FEATURE_RO_COMPAT_BTREE_DIR)
+
++#define EXT2_FT_MASK 0x0f
++
++/* lu_fid size and NUL char */
++#define EXT2_DIRENT_LUFID_SIZE (17 + 1)
++#define EXT2_DIRENT_LUFID 0x10
++#define EXT2_DIR_PAD 4
++#define EXT2_DIR_ROUND (EXT2_DIR_PAD - 1)
++#define __EXT2_DIR_REC_LEN(len) (((len) + 8 + EXT2_DIR_ROUND) & \
++ ~EXT2_DIR_ROUND)
++
++#define EXT2_DIR_REC_LEN(de) (__EXT2_DIR_REC_LEN(de->name_len +\
++ ext2_get_dirent_size(de)))
++
+ /*
+ * Default values for user and/or group using reserved blocks
+ */
+@@ -770,16 +784,6 @@ struct ext2_dir_entry_2 {
+ #define EXT2_FT_MAX 8
+
+ /*
+- * EXT2_DIR_PAD defines the directory entries boundaries
+- *
+- * NOTE: It must be a multiple of 4
+- */
+-#define EXT2_DIR_PAD 4
+-#define EXT2_DIR_ROUND (EXT2_DIR_PAD - 1)
+-#define EXT2_DIR_REC_LEN(name_len) (((name_len) + 8 + EXT2_DIR_ROUND) & \
+- ~EXT2_DIR_ROUND)
+-
+-/*
+ * This structure will be used for multiple mount protection. It will be
+ * written into the block number saved in the s_mmp_block field in the
+ * superblock. Programs that check MMP should assume that if SEQ_FSCK
+@@ -812,4 +816,7 @@ struct mmp_struct {
+ */
+ #define EXT2_MMP_MIN_CHECK_INTERVAL 5
+
++int ext2_get_dirent_dirdata_size(struct ext2_dir_entry_2 *de, char dirdata_flags);
++int ext2_get_dirent_size(struct ext2_dir_entry_2 *de);
++
+ #endif /* _LINUX_EXT2_FS_H */
+Index: e2fsprogs/lib/ext2fs/ext2fs.h
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/ext2fs.h
++++ e2fsprogs/lib/ext2fs/ext2fs.h
+@@ -572,6 +572,7 @@ typedef struct ext2_icount *ext2_icount_
+ EXT4_FEATURE_INCOMPAT_FLEX_BG|\
+ EXT4_FEATURE_INCOMPAT_MMP|\
+ EXT4_FEATURE_INCOMPAT_EA_INODE|\
++ EXT4_FEATURE_INCOMPAT_DIRDATA|\
+ EXT4_FEATURE_INCOMPAT_64BIT)
+ #else
+ #define EXT2_LIB_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE|\
+@@ -582,6 +583,7 @@ typedef struct ext2_icount *ext2_icount_
+ EXT4_FEATURE_INCOMPAT_FLEX_BG|\
+ EXT4_FEATURE_INCOMPAT_MMP|\
+ EXT4_FEATURE_INCOMPAT_EA_INODE|\
++ EXT4_FEATURE_INCOMPAT_DIRDATA|\
+ EXT4_FEATURE_INCOMPAT_64BIT)
+ #endif
+ #define EXT2_LIB_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER|\
+@@ -1641,6 +1643,24 @@ _INLINE_ __u64 ext2fs_div64_ceil(__u64 a
+ return ((a - 1) / b) + 1;
+ }
+
++
++_INLINE_ struct ext2_dx_root_info* get_ext2_dx_root_info(ext2_filsys fs, char *buf)
++{
++ struct ext2_dir_entry_2 * de = (struct ext2_dir_entry_2 *) buf;
++
++ if (!(fs->super->s_feature_incompat & EXT4_FEATURE_INCOMPAT_DIRDATA))
++ return (struct ext2_dx_root_info *)(buf +
++ __EXT2_DIR_REC_LEN(1) +__EXT2_DIR_REC_LEN(2));
++
++ /* get dotdot first */
++ de = (struct ext2_dir_entry_2 *)((char *)de + de->rec_len);
++
++ /* dx root info is after dotdot entry */
++ de = (struct ext2_dir_entry_2 *)((char *)de + EXT2_DIR_REC_LEN(de));
++
++ return (struct ext2_dx_root_info*) de;
++}
++
+ #undef _INLINE_
+ #endif
+
+Index: e2fsprogs/misc/mke2fs.c
+===================================================================
+--- e2fsprogs.orig/misc/mke2fs.c
++++ e2fsprogs/misc/mke2fs.c
+@@ -815,6 +815,7 @@ static __u32 ok_features[3] = {
+ EXT4_FEATURE_INCOMPAT_FLEX_BG|
+ EXT4_FEATURE_INCOMPAT_EA_INODE|
+ EXT4_FEATURE_INCOMPAT_MMP |
++ EXT4_FEATURE_INCOMPAT_DIRDATA|
+ EXT4_FEATURE_INCOMPAT_64BIT,
+ /* R/O compat */
+ EXT2_FEATURE_RO_COMPAT_LARGE_FILE|
+Index: e2fsprogs/misc/tune2fs.c
+===================================================================
+--- e2fsprogs.orig/misc/tune2fs.c
++++ e2fsprogs/misc/tune2fs.c
+@@ -127,7 +127,8 @@ static __u32 ok_features[3] = {
+ EXT3_FEATURE_INCOMPAT_EXTENTS |
+ EXT4_FEATURE_INCOMPAT_FLEX_BG |
+ EXT4_FEATURE_INCOMPAT_EA_INODE|
+- EXT4_FEATURE_INCOMPAT_MMP,
++ EXT4_FEATURE_INCOMPAT_MMP|
++ EXT4_FEATURE_INCOMPAT_DIRDATA,
+ /* R/O compat */
+ EXT2_FEATURE_RO_COMPAT_LARGE_FILE |
+ EXT4_FEATURE_RO_COMPAT_HUGE_FILE|
+@@ -146,7 +147,8 @@ static __u32 clear_ok_features[3] = {
+ EXT2_FEATURE_INCOMPAT_FILETYPE |
+ EXT4_FEATURE_INCOMPAT_FLEX_BG |
+ EXT4_FEATURE_INCOMPAT_EA_INODE|
+- EXT4_FEATURE_INCOMPAT_MMP,
++ EXT4_FEATURE_INCOMPAT_MMP|
++ EXT4_FEATURE_INCOMPAT_DIRDATA,
+ /* R/O compat */
+ EXT2_FEATURE_RO_COMPAT_LARGE_FILE |
+ EXT4_FEATURE_RO_COMPAT_HUGE_FILE|
+Index: e2fsprogs/e2fsck/pass1.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/pass1.c
++++ e2fsprogs/e2fsck/pass1.c
+@@ -2030,7 +2030,7 @@ static int handle_htree(e2fsck_t ctx, st
+ }
+
+ /* XXX should check that beginning matches a directory */
+- root = (struct ext2_dx_root_info *) (block_buf + 24);
++ root = get_ext2_dx_root_info(fs, block_buf);
+
+ if ((root->reserved_zero || root->info_length < 8) &&
+ fix_problem(ctx, PR_1_HTREE_BADROOT, pctx))
+Index: e2fsprogs/e2fsck/pass2.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/pass2.c
++++ e2fsprogs/e2fsck/pass2.c
+@@ -329,13 +329,82 @@ static EXT2_QSORT_TYPE special_dir_block
+ return (int) (db_a->blockcnt - db_b->blockcnt);
+ }
+
++void ext2_fix_dirent_dirdata(struct ext2_dir_entry_2 *de)
++{
++ int i = 0, dirdatalen, rlen;
++ __u8 flags = 0, new_flag = 0;
++ __u8 de_flags = de->file_type & ~EXT2_FT_MASK;
++
++ while (i < 4) {
++
++ flags = new_flag | (1 << i) << 4;
++
++ if ((de_flags & flags) == flags) {
++
++ dirdatalen = ext2_get_dirent_dirdata_size(de, flags);
++ rlen = __EXT2_DIR_REC_LEN(de->name_len + dirdatalen);
++
++ if (rlen > de->rec_len)
++ break;
++
++ new_flag |= flags;
++ }
++ i++;
++ }
++
++ de->file_type = (de->file_type & EXT2_FT_MASK) | new_flag;
++}
++
++
++/*
++ * check for dirent data in ext3 dirent.
++ * return 0 if dirent data is ok.
++ * return 1 if dirent data does not exist.
++ * return 2 if dirent was modified due to error.
++ */
++int e2fsck_check_dirent_data(e2fsck_t ctx, struct ext2_dir_entry_2 *de,
++ unsigned int offset, struct problem_context *pctx)
++{
++ if (!(ctx->fs->super->s_feature_incompat &
++ EXT4_FEATURE_INCOMPAT_DIRDATA)) {
++ if (de->file_type & ~EXT2_FT_MASK) {
++ /* clear dirent extra data flags. */
++ if (fix_problem(ctx, PR_2_CLEAR_DIRDATA, pctx)) {
++ de->file_type &= EXT2_FT_MASK;
++ return 2;
++ }
++ }
++ return 1;
++ }
++ if (de->file_type & ~EXT2_FT_MASK) {
+
++ if (de->rec_len >= EXT2_DIR_REC_LEN(de) ||
++ (de->rec_len + offset == EXT2_BLOCK_SIZE(ctx->fs->super))) {
++ if (ext2_get_dirent_dirdata_size(de, EXT2_DIRENT_LUFID) ==
++ EXT2_DIRENT_LUFID_SIZE)
++ return 0;
++ }
++ /* just clear dirent data flags for now, we should fix FID data
++ * in lustre specific pass.
++ */
++ if (fix_problem(ctx, PR_2_CLEAR_DIRDATA, pctx)) {
++ ext2_fix_dirent_dirdata(de);
++ if (ext2_get_dirent_dirdata_size(de, EXT2_DIRENT_LUFID) !=
++ EXT2_DIRENT_LUFID_SIZE) {
++ de->file_type &= ~EXT2_DIRENT_LUFID;
++ }
++
++ return 2;
++ }
++ }
++ return 1;
++}
+ /*
+ * Make sure the first entry in the directory is '.', and that the
+ * directory entry is sane.
+ */
+ static int check_dot(e2fsck_t ctx,
+- struct ext2_dir_entry *dirent,
++ struct ext2_dir_entry *dirent, unsigned int offset,
+ ext2_ino_t ino, struct problem_context *pctx)
+ {
+ struct ext2_dir_entry *nextdir;
+@@ -343,6 +412,7 @@ static int check_dot(e2fsck_t ctx,
+ int status = 0;
+ int created = 0;
+ int problem = 0;
++ int dir_data_error;
+
+ if (!dirent->inode)
+ problem = PR_2_MISSING_DOT;
+@@ -352,10 +422,14 @@ static int check_dot(e2fsck_t ctx,
+ else if (dirent->name[1] != '\0')
+ problem = PR_2_DOT_NULL_TERM;
+
++ dir_data_error = e2fsck_check_dirent_data(ctx,
++ (struct ext2_dir_entry_2 *)dirent,
++ offset, pctx);
++
+ (void) ext2fs_get_rec_len(ctx->fs, dirent, &rec_len);
+ if (problem) {
+ if (fix_problem(ctx, problem, pctx)) {
+- if (rec_len < 12)
++ if (rec_len < 12 && dir_data_error)
+ rec_len = dirent->rec_len = 12;
+ dirent->inode = ino;
+ dirent->name_len = 1;
+@@ -371,7 +445,7 @@ static int check_dot(e2fsck_t ctx,
+ status = 1;
+ }
+ }
+- if (rec_len > 12) {
++ if (rec_len > 12 && dir_data_error) {
+ new_len = rec_len - 12;
+ if (new_len > 12) {
+ if (created ||
+@@ -396,11 +470,12 @@ static int check_dot(e2fsck_t ctx,
+ * here; this gets done in pass 3.
+ */
+ static int check_dotdot(e2fsck_t ctx,
+- struct ext2_dir_entry *dirent,
++ struct ext2_dir_entry *dirent, unsigned int offset,
+ ext2_ino_t ino, struct problem_context *pctx)
+ {
+ int problem = 0;
+ unsigned int rec_len;
++ int dir_data_error;
+
+ if (!dirent->inode)
+ problem = PR_2_MISSING_DOT_DOT;
+@@ -411,10 +486,14 @@ static int check_dotdot(e2fsck_t ctx,
+ else if (dirent->name[2] != '\0')
+ problem = PR_2_DOT_DOT_NULL_TERM;
+
++ dir_data_error = e2fsck_check_dirent_data(ctx,
++ (struct ext2_dir_entry_2 *)dirent,
++ offset, pctx);
++
+ (void) ext2fs_get_rec_len(ctx->fs, dirent, &rec_len);
+ if (problem) {
+ if (fix_problem(ctx, problem, pctx)) {
+- if (rec_len < 12)
++ if (rec_len < 12 && dir_data_error)
+ dirent->rec_len = 12;
+ /*
+ * Note: we don't have the parent inode just
+@@ -476,6 +555,12 @@ static _INLINE_ int check_filetype(e2fsc
+ int should_be = EXT2_FT_UNKNOWN;
+ __u16 result;
+ struct ext2_inode inode;
++ __u8 dirdata = 0;
++
++ if (ctx->fs->super->s_feature_incompat & EXT4_FEATURE_INCOMPAT_DIRDATA) {
++ dirdata = filetype & ~EXT2_FT_MASK;
++ filetype = filetype & EXT2_FT_MASK;
++ }
+
+ if (!(ctx->fs->super->s_feature_incompat &
+ EXT2_FEATURE_INCOMPAT_FILETYPE)) {
+@@ -510,7 +595,7 @@ static _INLINE_ int check_filetype(e2fsc
+ pctx) == 0)
+ return 0;
+
+- dirent->name_len = (dirent->name_len & 0xFF) | should_be << 8;
++ dirent->name_len = ((dirent->name_len & 0xFF) | (dirdata | should_be) << 8);
+ return 1;
+ }
+
+@@ -532,7 +617,7 @@ static void parse_int_node(ext2_filsys f
+ ext2_dirhash_t hash = 0, prev_hash;
+
+ if (db->blockcnt == 0) {
+- root = (struct ext2_dx_root_info *) (block_buf + 24);
++ root = get_ext2_dx_root_info(fs, block_buf);
+
+ #ifdef DX_DEBUG
+ printf("Root node dump:\n");
+@@ -543,7 +628,7 @@ static void parse_int_node(ext2_filsys f
+ printf("\t Flags: %d\n", root->unused_flags);
+ #endif
+
+- ent = (struct ext2_dx_entry *) (block_buf + 24 + root->info_length);
++ ent = (struct ext2_dx_entry *) ((char *) root + root->info_length);
+ } else {
+ ent = (struct ext2_dx_entry *) (block_buf+8);
+ }
+@@ -807,7 +892,7 @@ static int check_dir_block(ext2_filsys f
+ (void) ext2fs_get_rec_len(fs, dirent, &rec_len);
+ limit = (struct ext2_dx_countlimit *) (buf+8);
+ if (db->blockcnt == 0) {
+- root = (struct ext2_dx_root_info *) (buf + 24);
++ root = get_ext2_dx_root_info(fs, buf);
+ dx_db->type = DX_DIRBLOCK_ROOT;
+ dx_db->flags |= DX_FLAG_FIRST | DX_FLAG_LAST;
+ if ((root->reserved_zero ||
+@@ -864,10 +949,10 @@ out_htree:
+ }
+
+ if (dot_state == 0) {
+- if (check_dot(ctx, dirent, ino, &cd->pctx))
++ if (check_dot(ctx, dirent, offset, ino, &cd->pctx))
+ dir_modified++;
+ } else if (dot_state == 1) {
+- ret = check_dotdot(ctx, dirent, ino, &cd->pctx);
++ ret = check_dotdot(ctx, dirent, offset, ino, &cd->pctx);
+ if (ret < 0)
+ goto abort_free_dict;
+ if (ret)
+@@ -883,6 +968,11 @@ out_htree:
+ if (!dirent->inode)
+ goto next;
+
++ ret = e2fsck_check_dirent_data(ctx, (struct ext2_dir_entry_2 *)dirent,
++ offset, &cd->pctx);
++ if (ret == 2)
++ dir_modified++;
++
+ /*
+ * Make sure the inode listed is a legal one.
+ */
+Index: e2fsprogs/e2fsck/pass3.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/pass3.c
++++ e2fsprogs/e2fsck/pass3.c
+@@ -606,6 +606,7 @@ static int fix_dotdot_proc(struct ext2_d
+ struct fix_dotdot_struct *fp = (struct fix_dotdot_struct *) priv_data;
+ errcode_t retval;
+ struct problem_context pctx;
++ __u16 dirdata = 0;
+
+ if ((dirent->name_len & 0xFF) != 2)
+ return 0;
+@@ -625,6 +626,9 @@ static int fix_dotdot_proc(struct ext2_d
+ fix_problem(fp->ctx, PR_3_ADJUST_INODE, &pctx);
+ }
+ dirent->inode = fp->parent;
++
++ dirdata = dirent->name_len & (~EXT2_FT_MASK << 8);
++
+ if (fp->ctx->fs->super->s_feature_incompat &
+ EXT2_FEATURE_INCOMPAT_FILETYPE)
+ dirent->name_len = (dirent->name_len & 0xFF) |
+@@ -632,6 +636,9 @@ static int fix_dotdot_proc(struct ext2_d
+ else
+ dirent->name_len = dirent->name_len & 0xFF;
+
++ if (fp->ctx->fs->super->s_feature_incompat & EXT4_FEATURE_INCOMPAT_DIRDATA)
++ dirent->name_len |= dirdata;
++
+ fp->done++;
+ return DIRENT_ABORT | DIRENT_CHANGED;
+ }
+Index: e2fsprogs/e2fsck/problem.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/problem.c
++++ e2fsprogs/e2fsck/problem.c
+@@ -1427,6 +1427,11 @@ static struct e2fsck_problem problem_tab
+ N_("@i %i is badly corrupt (badness value = %N). "),
+ PROMPT_CLEAR, PR_PREEN_OK },
+
++ /* Directory entry dirdata length set incorrectly */
++ { PR_2_CLEAR_DIRDATA,
++ N_("@E dirdata length set incorrectly.\n"),
++ PROMPT_CLEAR, PR_PREEN_OK },
++
+ /* Pass 3 errors */
+
+ /* Pass 3: Checking directory connectivity */
+Index: e2fsprogs/e2fsck/problem.h
+===================================================================
+--- e2fsprogs.orig/e2fsck/problem.h
++++ e2fsprogs/e2fsck/problem.h
+@@ -858,6 +858,9 @@ struct problem_context {
+ /* Inode completely corrupt */
+ #define PR_2_INODE_TOOBAD 0x020049
+
++/* Directory dirdata flag set */
++#define PR_2_CLEAR_DIRDATA 0x02f000
++
+ /*
+ * Pass 3 errors
+ */
+Index: e2fsprogs/e2fsck/rehash.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/rehash.c
++++ e2fsprogs/e2fsck/rehash.c
+@@ -148,7 +148,7 @@ static int fill_dir_block(ext2_filsys fs
+ }
+ ent = fd->harray + fd->num_array++;
+ ent->dir = dirent;
+- fd->dir_size += EXT2_DIR_REC_LEN(dirent->name_len & 0xFF);
++ fd->dir_size += __EXT2_DIR_REC_LEN(dirent->name_len & 0xFF);
+ ent->ino = dirent->inode;
+ if (fd->compress)
+ ent->hash = ent->minor_hash = 0;
+@@ -440,7 +440,7 @@ static errcode_t copy_dir_entries(e2fsck
+ ent = fd->harray + i;
+ if (ent->dir->inode == 0)
+ continue;
+- rec_len = EXT2_DIR_REC_LEN(ent->dir->name_len & 0xFF);
++ rec_len = __EXT2_DIR_REC_LEN(ent->dir->name_len & 0xFF);
+ if (rec_len > left) {
+ if (left) {
+ left += prev_rec_len;
+Index: e2fsprogs/lib/ext2fs/link.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/link.c
++++ e2fsprogs/lib/ext2fs/link.c
+@@ -41,7 +41,7 @@ static int link_proc(struct ext2_dir_ent
+ unsigned int rec_len, min_rec_len, curr_rec_len;
+ int ret = 0;
+
+- rec_len = EXT2_DIR_REC_LEN(ls->namelen);
++ rec_len = __EXT2_DIR_REC_LEN(ls->namelen);
+
+ ls->err = ext2fs_get_rec_len(ls->fs, dirent, &curr_rec_len);
+ if (ls->err)
+@@ -68,7 +68,7 @@ static int link_proc(struct ext2_dir_ent
+ * truncate it and return.
+ */
+ if (dirent->inode) {
+- min_rec_len = EXT2_DIR_REC_LEN(dirent->name_len & 0xFF);
++ min_rec_len = __EXT2_DIR_REC_LEN(dirent->name_len & 0xFF);
+ if (curr_rec_len < (min_rec_len + rec_len))
+ return ret;
+ rec_len = curr_rec_len - min_rec_len;
+Index: e2fsprogs/lib/ext2fs/newdir.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/newdir.c
++++ e2fsprogs/lib/ext2fs/newdir.c
+@@ -56,8 +56,8 @@ errcode_t ext2fs_new_dir_block(ext2_fils
+ dir->inode = dir_ino;
+ dir->name_len = 1 | filetype;
+ dir->name[0] = '.';
+- rec_len = fs->blocksize - EXT2_DIR_REC_LEN(1);
+- dir->rec_len = EXT2_DIR_REC_LEN(1);
++ rec_len = fs->blocksize - __EXT2_DIR_REC_LEN(1);
++ dir->rec_len = __EXT2_DIR_REC_LEN(1);
+
+ /*
+ * Set up entry for '..'
+Index: e2fsprogs/lib/ext2fs/dirblock.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/dirblock.c
++++ e2fsprogs/lib/ext2fs/dirblock.c
+@@ -58,6 +58,39 @@ errcode_t ext2fs_read_dir_block3(ext2_fi
+ return retval;
+ }
+
++/*
++ * Compute the total directory entry data length.
++ * This includes the filename and an implicit NUL terminator (always present),
++ * and optional extensions. Each extension has a bit set in the high 4 bits of
++ * de->file_type, and the extension length is the first byte in each entry.
++ */
++int ext2_get_dirent_size(struct ext2_dir_entry_2 *de)
++{
++ return ext2_get_dirent_dirdata_size(de, ~EXT2_FT_MASK);
++}
++
++int ext2_get_dirent_dirdata_size(struct ext2_dir_entry_2 *de, char dirdata_flags)
++{
++ char *len = de->name + de->name_len + 1 /* NUL terminator */;
++ int dlen = 0;
++ __u8 extra_data_flags = (de->file_type & ~EXT2_FT_MASK) >> 4;
++
++ dirdata_flags >>= 4;
++ while ((extra_data_flags & dirdata_flags) != 0) {
++ if (extra_data_flags & 1) {
++ if (dirdata_flags & 1)
++ dlen += *len;
++
++ len += *len;
++ }
++ extra_data_flags >>= 1;
++ dirdata_flags >>= 1;
++ }
++
++ /* add NUL terminator byte to dirdata length */
++ return dlen + (dlen != 0);
++}
++
+ errcode_t ext2fs_read_dir_block2(ext2_filsys fs, blk_t block,
+ void *buf, int flags EXT2FS_ATTR((unused)))
+ {
--- /dev/null
+Fix dblist size accounting in the case where ext2fs_resize_mem() fails
+to allocate a larger buffer.
+
+Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
+
+Index: e2fsprogs/lib/ext2fs/dblist.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/dblist.c
++++ e2fsprogs/lib/ext2fs/dblist.c
+@@ -172,7 +172,7 @@ errcode_t ext2fs_add_dir_block2(ext2_dbl
+ sizeof(struct ext2_db_entry2),
+ &dblist->list);
+ if (retval) {
+- dblist->size -= 100;
++ dblist->size = old_size / sizeof(struct ext2_db_entry2);
+ return retval;
+ }
+ }
--- /dev/null
+Allow mke2fs discard patches to pass regression tests.
+
+Index: e2fsprogs/lib/ext2fs/unix_io.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/unix_io.c
++++ e2fsprogs/lib/ext2fs/unix_io.c
+@@ -870,8 +870,11 @@ static errcode_t unix_discard(io_channel
+ range[1] = (__uint64_t)(count) * channel->block_size;
+
+ ret = ioctl(data->dev, BLKDISCARD, &range);
+- if (ret < 0)
++ if (ret < 0) {
++ if (errno == ENOTTY)
++ return EXT2_ET_UNIMPLEMENTED;
+ return errno;
++ }
+ return 0;
+ #else
+ return EXT2_ET_UNIMPLEMENTED;
+Index: e2fsprogs/misc/mke2fs.c
+===================================================================
+--- e2fsprogs.orig/misc/mke2fs.c
++++ e2fsprogs/misc/mke2fs.c
+@@ -2010,29 +2010,37 @@ static int mke2fs_discard_device(ext2_fi
+ count *= (1024 * 1024);
+ count /= fs->blocksize;
+
+- ext2fs_numeric_progress_init(fs, &progress,
+- _("Discarding device blocks: "),
+- blocks);
+ while (cur < blocks) {
+- ext2fs_numeric_progress_update(fs, &progress, cur);
+-
+ if (cur + count > blocks)
+ count = blocks - cur;
+
+ retval = io_channel_discard(fs->io, cur, count, fs->blocksize);
++ if (cur == 0) {
++ /* If discard is unimplemented skip the progress bar */
++ if (retval == EXT2_ET_UNIMPLEMENTED)
++ return retval;
++
++ ext2fs_numeric_progress_init(fs, &progress,
++ _("Discarding device blocks: "),
++ blocks);
++ }
++
++ ext2fs_numeric_progress_update(fs, &progress, cur);
++
+ if (retval)
+ break;
++
+ cur += count;
+ }
+
+ if (retval) {
+- ext2fs_numeric_progress_close(fs, &progress,
+- _("failed - "));
++ ext2fs_numeric_progress_close(fs, &progress, _("failed - "));
+ if (!quiet)
+ printf("%s\n",error_message(retval));
+- } else
++ } else {
+ ext2fs_numeric_progress_close(fs, &progress,
+ _("done \n"));
++ }
+
+ return retval;
+ }
+Index: e2fsprogs/lib/et/Makefile.in
+===================================================================
+--- e2fsprogs.orig/lib/et/Makefile.in
++++ e2fsprogs/lib/et/Makefile.in
+@@ -96,7 +96,7 @@ install:: compile_et libcom_err.a $(HFIL
+ echo " INSTALL_DATA $(includedir)/et/$$i"; \
+ $(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)$(includedir)/et/$$i; \
+ done
+- $(Q) $(LN) $(LINK_INSTALL_FLAGS) $(includedir)/et/com_err.h $(DESTDIR)$(includedir)
++ $(Q) $(LN) $(LINK_INSTALL_FLAGS) -s $(includedir)/et/com_err.h $(DESTDIR)$(includedir)
+ $(Q) for i in $(SHARE_FILES); do \
+ echo " INSTALL_DATA $(datadir)/et/$$i"; \
+ $(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)$(datadir)/et/$$i; \
--- /dev/null
+b=13698
+The checks done by e2fsck for mounted vs. read-only runs is confusing.
+
+On the one hand, if e2fsck is NOT run with the "-n" flag (i.e. it might
+modify the filesystem), there is no guarantee that it will open the
+filesystem with the EXCLUSIVE flag (i.e. O_EXCL) to prevent the block
+device from being used (in most cases = mounted).
+
+On the other hand, if e2fsck is run with "-n" (i.e. read-only),
+and the /etc/fstab or /proc/mounts does not report the same block
+device to match the mountpoint (which happens for Lustre, and can
+also happen if there is an overlay mount) then the e2fsck thinks
+the filesystem is unmounted, but fails because the EXCLUSIVE flag
+is set even though it is running read-only.
+
+Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
+
+Index: e2fsprogs/e2fsck/unix.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/unix.c
++++ e2fsprogs/e2fsck/unix.c
+@@ -1056,9 +1056,10 @@ restart:
+ if (!old_bitmaps)
+ flags |= EXT2_FLAG_64BITS;
+ if ((ctx->options & E2F_OPT_READONLY) == 0)
+- flags |= EXT2_FLAG_RW;
+- if ((ctx->mount_flags & EXT2_MF_MOUNTED) == 0)
+- flags |= EXT2_FLAG_EXCLUSIVE;
++ flags |= EXT2_FLAG_RW | EXT2_FLAG_EXCLUSIVE;
++ /* we would abort above in check_mount() unless user asks for this */
++ if ((ctx->mount_flags & EXT2_MF_MOUNTED) != 0)
++ flags &= ~EXT2_FLAG_EXCLUSIVE;
+
+ retval = try_open_fs(ctx, flags, io_ptr, &fs);
+
--- /dev/null
+Index: e2fsprogs/configure.in
+===================================================================
+--- e2fsprogs.orig/configure.in
++++ e2fsprogs/configure.in
+@@ -589,6 +589,28 @@ DEBUGFS_CMT=
+ )
+ AC_SUBST(DEBUGFS_CMT)
+ dnl
++dnl handle --enable-e2scan
++dnl
++AC_ARG_ENABLE([e2scan],
++[ --disable-e2scan disable support of e2scan program],
++if test "$enableval" = "no"
++then
++ echo "Disabling e2scan support"
++ E2SCAN_CMT="#"
++ E2SCAN_MAN=.\"
++else
++ E2SCAN_CMT=
++ E2SCAN_MAN=
++ echo "Enabling e2scan support"
++fi
++,
++echo "Enabling e2scan support by default"
++E2SCAN_CMT=
++E2SCAN_MAN=
++)
++AC_SUBST(E2SCAN_CMT)
++AC_SUBST(E2SCAN_MAN)
++dnl
+ dnl handle --enable-imager
+ dnl
+ AC_ARG_ENABLE([imager],
+@@ -812,6 +834,10 @@ AC_CHECK_HEADERS(net/if.h,,,
+ #endif
+ ]])
+ AC_CHECK_HEADERS(db.h)
++dnl do not check sqlite3.h if e2scan is disabled
++if test x"$E2SCAN_CMT" == x; then
++AC_CHECK_HEADERS(sqlite3.h)
++fi
+ AC_FUNC_VPRINTF
+ dnl Check to see if dirent has member d_reclen. On cygwin those d_reclen
+ dnl is not decleared.
+@@ -954,6 +980,51 @@ AC_CHECK_LIB(db-4.8, db_env_create,
+ AC_DEFINE(HAVE_DB4)])
+ AC_SUBST(DB4VERSION)
+ dnl
++dnl Check to see if static sqlite exists
++dnl
++AC_ARG_WITH(
++ [sqlite3],
++ [ --with-sqlite3=DIR location of sqlite3 library (default /usr/lib)],,
++ [with_sqlite3=/usr/lib])
++
++dnl do not check sqlite3 library if e2scan is disabled
++if test x"$E2SCAN_CMT" == x; then
++
++CFLAGS_OLD=$CFLAGS
++SQLITE3_LIB=''
++dnl
++dnl check static sqlite3 first
++dnl
++CFLAGS="$CFLAGS_OLD -L$with_sqlite3 -static -pthread"
++AC_CHECK_LIB(sqlite3, sqlite3_open,
++ [
++ SQLITE3_LIB="-L$with_sqlite3 -static -pthread -lsqlite3"
++ AC_DEFINE(HAVE_SQLITE3)
++ ])
++
++if test x"$SQLITE3_LIB" == x; then
++dnl
++dnl static sqlite3 is not found, check dynamic sqlite3
++dnl
++ AC_MSG_WARN(no static sqlite3 - looking for dynamic one)
++ CFLAGS="$CFLAGS_OLD -L$with_sqlite3 -pthread"
++ AC_CHECK_LIB(sqlite3, sqlite3_close,
++ [
++ SQLITE3_LIB="-L$with_sqlite3 -pthread -lsqlite3"
++ AC_DEFINE(HAVE_SQLITE3)
++ ])
++fi
++
++AC_SUBST(SQLITE3_LIB)
++CFLAGS=$CFLAGS_OLD
++
++if test x"$SQLITE3_LIB" == x; then
++ AC_MSG_WARN(no sqlite3 - e2scan will not support database based scanning)
++fi
++
++fi
++
++dnl
+ dnl See if optreset exists
+ dnl
+ AC_MSG_CHECKING(for optreset)
+@@ -1170,7 +1241,7 @@ for i in MCONFIG Makefile e2fsprogs.spec
+ lib/ss/ss.pc lib/uuid/uuid.pc lib/et/com_err.pc \
+ lib/e2p/e2p.pc lib/blkid/blkid.pc lib/ext2fs/ext2fs.pc \
+ misc/Makefile ext2ed/Makefile e2fsck/Makefile \
+- debugfs/Makefile tests/Makefile tests/progs/Makefile \
++ debugfs/Makefile e2scan/Makefile tests/Makefile tests/progs/Makefile \
+ resize/Makefile doc/Makefile intl/Makefile \
+ intl/libgnuintl.h po/Makefile.in ; do
+ if test -d `dirname ${srcdir}/$i` ; then
+Index: e2fsprogs/e2fsprogs.spec.in
+===================================================================
+--- e2fsprogs.orig/e2fsprogs.spec.in
++++ e2fsprogs/e2fsprogs.spec.in
+@@ -150,6 +150,7 @@ exit 0
+ %{_sbindir}/e2freefrag
+ %{_sbindir}/e4defrag
+ @LFSCK_CMT@%{_sbindir}/lfsck
++@E2SCAN_CMT@%{_sbindir}/e2scan
+
+ %{_root_libdir}/libblkid.so.*
+ %{_root_libdir}/libcom_err.so.*
+@@ -183,6 +184,7 @@ exit 0
+ %{_mandir}/man8/fsck.ext4dev.8*
+ %{_mandir}/man8/e2image.8*
+ %{_mandir}/man8/e2label.8*
++@E2SCAN_CMT@%{_mandir}/man8/e2scan.8*
+ %{_mandir}/man8/e2undo.8*
+ %{_mandir}/man8/fsck.8*
+ %{_mandir}/man8/logsave.8*
+Index: e2fsprogs/e2scan/db.c
+===================================================================
+--- /dev/null
++++ e2fsprogs/e2scan/db.c
+@@ -0,0 +1,265 @@
++#define _GNU_SOURCE
++#define _FILE_OFFSET_BITS 64
++
++#include <stdio.h>
++#include <time.h>
++#include <unistd.h>
++#include <ext2fs/ext2fs.h>
++#include <sys/stat.h>
++
++#if defined(HAVE_SQLITE3) && defined(HAVE_SQLITE3_H)
++
++#include <sqlite3.h>
++
++/* e2scan.c */
++extern ext2_filsys fs;
++extern struct {
++ int mode;
++ int nr;
++ union {
++ struct {
++ int fd;
++ int nr_commands;
++ } db;
++ struct {
++ /* number of files newer than specified time */
++ ext2_ino_t nr_files;
++ /* number of files reported */
++ ext2_ino_t nr_reported;
++ time_t mtimestamp;
++ time_t ctimestamp;
++ } fl;
++ };
++} scan_data;
++
++int block_iterate_cb(ext2_filsys fs, blk_t *block_nr,
++ e2_blkcnt_t blockcnt,
++ blk_t ref_block EXT2FS_ATTR((unused)),
++ int ref_offset EXT2FS_ATTR((unused)),
++ void *priv_data);
++
++
++static long count = 10000;
++
++static void exec_one_sql_noreturn(sqlite3 *db, char *sqls)
++{
++ char *errmsg = NULL;
++
++ if (sqlite3_exec(db, sqls, NULL, NULL, &errmsg) != SQLITE_OK) {
++ fprintf(stderr, "SQL error: %s;\nrequest: %s", errmsg, sqls);
++ sqlite3_free(errmsg);
++ exit(1);
++ }
++}
++
++static void create_sql_table(sqlite3 *db, const char *table_name,
++ const char *columns)
++{
++ char *sqls;
++
++ if (asprintf(&sqls, "create table %s (%s)", table_name, columns) < 0) {
++ perror("asprintf failed");
++ exit(1);
++ }
++
++ exec_one_sql_noreturn(db, sqls);
++ free(sqls);
++}
++
++static void begin_one_transaction(sqlite3 *db)
++{
++ exec_one_sql_noreturn(db, "BEGIN;");
++}
++
++static void commit_one_transaction(sqlite3 *db)
++{
++ exec_one_sql_noreturn(db, "COMMIT;");
++}
++
++static void batch_one_transaction(sqlite3 *db)
++{
++ static long num = 0;
++
++ num ++;
++ if (num % count == 0) {
++ commit_one_transaction(db);
++ begin_one_transaction(db);
++ }
++ /* else do nothing */
++}
++
++#define COLUMNS "ino, generation, parent, name, size, mtime, ctime, dtime"
++
++static void create_full_db(const char *name, int fd)
++{
++ sqlite3 *db;
++ int rd;
++ int nr;
++ char sqls[512];
++
++ if (sqlite3_open(name, &db) != SQLITE_OK) {
++ fprintf(stderr, "failed to sqlite3_open: %s\n", name);
++ sqlite3_close(db);
++ exit(1);
++ }
++ create_sql_table(db, "dirs", COLUMNS);
++ create_sql_table(db, "files", COLUMNS);
++
++ begin_one_transaction(db);
++
++ nr = 0;
++ while (1) {
++ rd = read(fd, sqls, 512);
++ if (rd == -1) {
++ perror("read failed\n");
++ exit(1);
++ }
++ if (rd != 512)
++ break;
++ nr ++;
++ exec_one_sql_noreturn(db, sqls);
++ batch_one_transaction(db);
++ }
++ commit_one_transaction(db);
++ printf("database is created, %d records are inserted\n", nr);
++ sqlite3_close(db);
++}
++
++/* write sql command to pipe */
++#define PIPECMDLEN 512
++static void write_sql_command(int fd, const char *sqls)
++{
++ char buf[PIPECMDLEN];
++
++ if (strlen(sqls) + 1 > PIPECMDLEN) {
++ fprintf(stderr, "too long command");
++ exit(1);
++ }
++ strcpy(buf, sqls);
++ if (write(fd, buf, PIPECMDLEN) != PIPECMDLEN) {
++ perror("failed to write to pipe");
++ exit(1);
++ }
++ scan_data.db.nr_commands ++;
++}
++
++pid_t fork_db_creation(const char *database)
++{
++ int p[2];
++ struct stat st;
++ pid_t pid;
++
++ if (stat(database, &st) == 0) {
++ fprintf(stderr, "%s exists. remove it first\n", database);
++ exit(1);
++ }
++ if (pipe(p) == -1) {
++ fprintf(stderr, "failed to pipe");
++ exit(1);
++ }
++
++ pid = fork();
++ if (pid == (pid_t)-1) {
++ fprintf(stderr, "failed to fork");
++ exit(1);
++ }
++ if (pid == (pid_t)0) {
++ /* child, read data written by parent and write to
++ * database */
++ close(p[1]);
++ create_full_db(database, p[0]);
++ close(p[0]);
++ exit(0);
++ }
++
++ /* parent, read inodes and write them to pipe */
++ close(p[0]);
++ scan_data.db.fd = p[1];
++ return pid;
++}
++
++void database_iscan_action(ext2_ino_t ino, struct ext2_inode *inode,
++ int fd, char *buf)
++{
++ char *sqls;
++
++ if (LINUX_S_ISDIR(inode->i_mode)) {
++ if (ino == EXT2_ROOT_INO) {
++ sqls = sqlite3_mprintf("%s (%u,%u,%u,'%q',%u,%u,%u,%u)",
++ "insert into dirs values",
++ ino, inode->i_generation, ino, "/",
++ inode->i_size, inode->i_mtime,
++ inode->i_ctime, inode->i_dtime);
++ write_sql_command(fd, sqls);
++ sqlite3_free(sqls);
++ }
++
++ if (ext2fs_block_iterate2(fs, ino, 0, buf,
++ block_iterate_cb, &ino)) {
++ fprintf(stderr, "ext2fs_block_iterate2 failed\n");
++ exit(1);
++ }
++ }
++}
++
++/*
++ * callback for ext2fs_dblist_dir_iterate to be called for each
++ * directory entry
++ */
++int database_dblist_iterate_cb(ext2_ino_t dir, struct ext2_dir_entry *dirent,
++ int namelen, int fd)
++{
++ struct ext2_inode inode;
++ char *table;
++ char *sqls;
++ errcode_t retval;
++ char str[256];
++
++ if (!ext2fs_fast_test_inode_bitmap2(fs->inode_map, dirent->inode))
++ /* entry of deleted file? can that ever happen */
++ return 0;
++
++ retval = ext2fs_read_inode(fs, dirent->inode, &inode);
++ if (retval) {
++ com_err("ext2fs_read_inode", retval, "while reading inode");
++ exit(1);
++ }
++
++ if (LINUX_S_ISDIR(inode.i_mode))
++ table = "dirs";
++ else
++ table = "files";
++
++ sprintf(str, "%.*s", namelen, dirent->name);
++ sqls = sqlite3_mprintf("%s %s %s (%u,%u,%u,'%q',%u,%u,%u,%u)",
++ "insert into", table, "values",
++ dirent->inode, inode.i_generation, dir,
++ str,
++ inode.i_size, inode.i_mtime,
++ inode.i_ctime, inode.i_dtime);
++ write_sql_command(fd, sqls);
++ sqlite3_free(sqls);
++
++ return 0;
++}
++
++#else
++
++pid_t fork_db_creation(const char *database)
++{
++ return 0;
++}
++
++void database_iscan_action(ext2_ino_t ino, struct ext2_inode *inode,
++ int fd, char *buf)
++{
++ return;
++}
++
++int database_dblist_iterate_cb(ext2_ino_t dir, struct ext2_dir_entry *dirent,
++ int namelen, int fd)
++{
++ return 0;
++}
++
++#endif
+Index: e2fsprogs/e2scan/e2scan.8.in
+===================================================================
+--- /dev/null
++++ e2fsprogs/e2scan/e2scan.8.in
+@@ -0,0 +1,116 @@
++.TH e2scan 1 "2006 Sep 26" Lustre "backup utilities"
++.SH NAME
++e2scan \- scan an Ext2-type filesystem for modified inodes
++.SH SYNOPSIS
++.br
++.B e2scan
++@E2SCAN_MAN@{
++.B -l
++@E2SCAN_MAN@|
++@E2SCAN_MAN@.B -f
++@E2SCAN_MAN@}
++[
++.BI -a " groups"
++] [
++.BI -b " blocks"
++] [
++.BI -C " chdir"
++] [
++@E2SCAN_MAN@.BI -d " database"
++@E2SCAN_MAN@] [
++.BI -n " filename"
++] [
++.BI -N " date"
++] [
++.BI -o " outfile"
++]
++.I device
++.br
++.SH DESCRIPTION
++.BR e2scan ,
++iterates all inodes on
++.IR device ,
++find inodes modified since the specified time (default 1 day), and prints
++their pathnames relative to the root of the filesystem. This allows the
++pathnames to be used as input to a backup tool running in the mountpoint, like
++.BR "tar \-C" ,
++as the filesystem may be mounted at an arbitrary mountpoint.
++
++The
++.B e2scan
++program is optimized for scanning an entire filesystem for (modified) files,
++but is not efficient for smaller subdirectory scans. Use
++.BR find (1)
++for that purpose instead.
++.SH OPTIONS
++.TP
++.BI \-a " groups"
++Set readahead for inode table blocks to get better performance when scanning
++.IR device .
++Default is 1 group of readahead.
++.TP
++.BI \-b " inode_buffer_blocks"
++Set number of inode blocks to read from disk at a time.
++.TP
++.BI \-C " directory"
++Specify the working directory (relative to the root of the filesystem
++being scanned) for the output pathnames. Only directories underneath
++the root will be candidates for listing. For Lustre MDT filesystems the
++pathname must be prefixed with "/ROOT" to dump the client visible filesystem.
++@E2SCAN_MAN@.TP
++@E2SCAN_MAN@.BI \-d " database_file"
++@E2SCAN_MAN@Specify output file for database when running in
++@E2SCAN_MAN@.B \-f
++@E2SCAN_MAN@mode.
++.TP
++.B \-D
++Also include directories in the output. The default is to only list files,
++because tools like
++.BR tar (1)
++will recurse into directories and files that are also listed therein will be
++backed up twice.
++@E2SCAN_MAN@.TP
++@E2SCAN_MAN@.B \-f
++@E2SCAN_MAN@List files in the filesystem and insert them into the
++@E2SCAN_MAN@.BR sqlite3 (1)
++@E2SCAN_MAN@database named by the
++@E2SCAN_MAN@.B \-d
++@E2SCAN_MAN@option.
++.TP
++.B \-l
++List files in the filesystem to standard output, or to the file specified
++with the
++.B \-o
++option. This is the default mode.
++.TP
++.BI \-n " filename"
++Dump only files newer than the specified
++.IR filename .
++.TP
++.BI \-N " date"
++Dump only files newer than the specified date. This supports a wide
++variety of input formats like "YYYY-MM-DD HH:MM:SS". Use a date of
++.R 0
++to dump all files.
++.TP
++.BI \-o " outfile"
++Record the files found into
++.I outfile
++instead of the default standard output.
++.SH EXAMPLES
++To dump all of the files in the filesystem into the file
++.IR myfilelist :
++.IP
++e2scan -N 0 -o myfilelist /dev/sdb1
++.PP
++To list files and directories newer than Feb 6, 2007 in the /home directory:
++.IP
++e2scan -D -N "Feb 6 00:00:00 2007" -C /home /dev/sdb1
++.PP
++.SH AUTHOR
++This version of
++.B e2scan
++was originally written by Vladimir Saviliev <vladimir.saviliev@sun.com>
++and Andreas Dilger <adilger@whamcloud.com>.
++.SH SEE ALSO
++.BR find (1)
+Index: e2fsprogs/e2scan/e2scan.c
+===================================================================
+--- /dev/null
++++ e2fsprogs/e2scan/e2scan.c
+@@ -0,0 +1,640 @@
++#define _GNU_SOURCE
++#define _FILE_OFFSET_BITS 64
++#define _XOPEN_SOURCE /* for getdate */
++#define _XOPEN_SOURCE_EXTENDED /* for getdate */
++
++#include <stdio.h>
++#include <sys/stat.h>
++#include <time.h>
++#include <unistd.h>
++#include <ext2fs/ext2fs.h>
++#include <string.h>
++#include <limits.h>
++#include <sys/wait.h>
++#include <sys/errno.h>
++
++ext2_filsys fs;
++const char *database = "e2scan.db";
++int readahead_groups = 1; /* by default readahead one group inode table */
++FILE *outfile;
++
++void usage(char *prog)
++{
++ fprintf(stderr,
++#if defined(HAVE_SQLITE3) && defined(HAVE_SQLITE3_H)
++ "\nUsage: %s {-l | -f} [ options ] device-filename\nModes:"
++ "\t-f: create file database\n"
++#else
++ "\nUsage: %s -l [ options ] device-filename\nModes:"
++#endif
++ "\t-l: list recently changed files\n"
++ "Options:\n"
++ "\t-a groups: readahead 'groups' inode tables (default %d)\n"
++ "\t-b blocks: buffer 'blocks' inode table blocks\n"
++ "\t-C chdir: list files relative to 'chdir' in filesystem\n"
++ "\t-d database: output database filename (default %s)\n"
++ "\t-D: list not only files, but directories as well\n"
++ "\t-n filename: list files newer than 'filename'\n"
++ "\t-N date: list files newer than 'date' (default 1 day, "
++ "0 for all files)\n"
++ "\t-o outfile: output file list to 'outfile'\n",
++ prog, readahead_groups, database);
++ exit(1);
++}
++
++#define SM_NONE 0
++#define SM_DATABASE 1 /* -f */
++#define SM_FILELIST 2 /* -l */
++
++struct {
++ int mode;
++ int nr;
++ union {
++ struct {
++ int fd;
++ int nr_commands;
++ } db;
++ struct {
++ /* number of files newer than specified time */
++ ext2_ino_t nr_files;
++ ext2_ino_t nr_dirs;
++ /* number of files reported */
++ ext2_ino_t nr_reported;
++ time_t mtimestamp;
++ time_t ctimestamp;
++ int with_dirs;
++ } fl;
++ };
++} scan_data = { .mode = SM_FILELIST, };
++
++/* db.c */
++pid_t fork_db_creation(const char *database);
++void database_iscan_action(ext2_ino_t ino,
++ struct ext2_inode *inode, int fd, char *buf);
++int database_dblist_iterate_cb(ext2_ino_t dir, struct ext2_dir_entry *dirent,
++ int namelen, int fd);
++
++/* filelist.c */
++void filelist_iscan_action(ext2_ino_t ino,
++ struct ext2_inode *inode, char *buf);
++int filelist_dblist_iterate_cb(ext2_ino_t dirino,
++ struct ext2_dir_entry *dirent,
++ int namelen);
++int create_root_dentries(char *root);
++void report_root(void);
++
++
++static void get_timestamps(const char *filename)
++{
++ struct stat st;
++
++ if (stat(filename, &st) == -1) {
++ perror("failed to stat file");
++ exit(1);
++ }
++ scan_data.fl.mtimestamp = st.st_mtime;
++ scan_data.fl.ctimestamp = st.st_ctime;
++}
++
++/*
++ * callback for ext2fs_block_iterate2, it adds directory leaf blocks
++ * to dblist
++ */
++int block_iterate_cb(ext2_filsys fs, blk_t *block_nr,
++ e2_blkcnt_t blockcnt,
++ blk_t ref_block EXT2FS_ATTR((unused)),
++ int ref_offset EXT2FS_ATTR((unused)),
++ void *priv_data)
++{
++ int ret;
++ ext2_ino_t *ino;
++
++ if ((int) blockcnt < 0)
++ /* skip indirect blocks */
++ return 0;
++ ret = 0;
++ ino = priv_data;
++ if (ext2fs_add_dir_block(fs->dblist, *ino, *block_nr, (int) blockcnt))
++ ret |= BLOCK_ABORT;
++
++ return ret;
++}
++
++/*
++ * done_group callback for inode scan.
++ * When i-th group of inodes is scanned over, readahead for i+2-th
++ * group is issued. Inode table readahead for two first groups is
++ * issued before scan begin.
++ */
++errcode_t done_group_callback(ext2_filsys fs, ext2_inode_scan scan,
++ dgrp_t group, void *vp)
++{
++ dgrp_t ra_group;
++ unsigned long ra_start;
++ int ra_size;
++
++ if (readahead_groups <= 0)
++ return 0;
++
++ if (((group + 1) % readahead_groups) != 0)
++ return 0;
++
++ ra_group = group + 1 + readahead_groups;
++ if (ra_group >= fs->group_desc_count)
++ return 0;
++
++ ra_start = ext2fs_inode_table_loc(fs, ra_group);
++ if (ra_group + readahead_groups > fs->group_desc_count)
++ ra_size = fs->group_desc_count - ra_group;
++ else
++ ra_size = readahead_groups;
++
++ ra_size *= fs->inode_blocks_per_group;
++ io_channel_readahead(fs->io, ra_start, ra_size);
++ return 0;
++}
++
++#define DEFAULT_CHUNK_SIZE 16
++__u32 chunk_size; /* in blocks */
++int nr_chunks;
++
++struct chunk {
++ __u32 start;
++ __u32 covered;
++} *cur_chunk, *ra_chunk, *chunks;
++
++/* callback for ext2fs_dblist_iterate */
++static int fill_chunks(ext2_filsys fs, struct ext2_db_entry *db_info,
++ void *priv_data)
++{
++ __u32 cur;
++
++ cur = db_info->blk / chunk_size;
++ if (cur_chunk == NULL || cur != cur_chunk->start) {
++ /* new sweep starts */
++ if (cur_chunk == NULL)
++ cur_chunk = chunks;
++ else
++ cur_chunk ++;
++
++ cur_chunk->start = cur;
++ cur_chunk->covered = 1;
++ } else
++ cur_chunk->covered ++;
++
++ return 0;
++}
++
++/* callback for ext2fs_dblist_iterate */
++static int count_chunks(ext2_filsys fs, struct ext2_db_entry *db_info,
++ void *priv_data)
++{
++ __u32 cur;
++ static __u32 prev = (__u32)-1;
++
++ cur = db_info->blk / chunk_size;
++ if (cur != prev) {
++ nr_chunks ++;
++ prev = cur;
++ }
++ return 0;
++}
++
++/* create list of chunks, readahead two first of them */
++static void make_chunk_list(ext2_dblist dblist)
++{
++ chunk_size = readahead_groups * DEFAULT_CHUNK_SIZE;
++ if (chunk_size == 0)
++ return;
++
++ ext2fs_dblist_iterate(dblist, count_chunks, NULL);
++ chunks = malloc(sizeof(struct chunk) * nr_chunks);
++ if (chunks == NULL) {
++ fprintf(stderr, "malloc failed\n");
++ exit(1);
++ }
++ ext2fs_dblist_iterate(dblist, fill_chunks, NULL);
++
++ /* start readahead for two first chunks */
++ ra_chunk = chunks;
++ cur_chunk = NULL;
++
++ io_channel_readahead(fs->io,
++ ra_chunk->start * chunk_size,
++ chunk_size);
++ ra_chunk ++;
++ if (ra_chunk < chunks + nr_chunks)
++ io_channel_readahead(fs->io,
++ ra_chunk->start * chunk_size,
++ chunk_size);
++}
++
++/*
++ * this is called for each directory block when it is read by dblist
++ * iterator
++ */
++static int dblist_readahead(void *vp)
++{
++ if (chunk_size == 0)
++ return 0;
++ if (cur_chunk == NULL)
++ cur_chunk = chunks;
++ if (--cur_chunk->covered == 0) {
++ /*
++ * last block of current chunk is read, readahead
++ * chunk is under I/O, get new readahead chunk, move
++ * current chunk
++ */
++ cur_chunk ++;
++ ra_chunk ++;
++ if (ra_chunk < chunks + nr_chunks)
++ io_channel_readahead(fs->io,
++ ra_chunk->start * chunk_size,
++ chunk_size);
++ }
++ return 0;
++}
++
++/*
++ * callback for ext2fs_dblist_dir_iterate to be called for each
++ * directory entry, perform actions common for both database and
++ * filelist modes, call specific functions depending on the mode
++ */
++static int dblist_iterate_cb(ext2_ino_t dirino, int entry,
++ struct ext2_dir_entry *dirent,
++ int offset EXT2FS_ATTR((unused)),
++ int blocksize EXT2FS_ATTR((unused)),
++ char *buf EXT2FS_ATTR((unused)),
++ void *private)
++{
++ int namelen;
++
++ if (offset == 0) {
++ /* new directory block is read */
++ scan_data.nr ++;
++ dblist_readahead(NULL);
++ }
++
++ if (dirent->inode == 0)
++ return 0;
++
++ namelen = (dirent->name_len & 0xFF);
++ if (namelen == 2 && !strncmp(dirent->name, "..", 2))
++ return 0;
++
++ if (namelen == 1 && !strncmp(dirent->name, ".", 1))
++ return 0;
++
++ if (dirent->inode > fs->super->s_inodes_count) {
++ fprintf(stderr, "too big ino %u (%.*s)\n",
++ dirent->inode, namelen, dirent->name);
++ exit(1);
++ }
++
++ if (scan_data.mode == SM_DATABASE)
++ return database_dblist_iterate_cb(dirino, dirent, namelen,
++ scan_data.db.fd);
++
++ return filelist_dblist_iterate_cb(dirino, dirent, namelen);
++}
++
++int main(int argc, char **argv)
++{
++ char *root = "/";
++ int inode_buffer_blocks = 0;
++ errcode_t retval;
++ char *block_buf;
++ ext2_inode_scan scan;
++ struct ext2_inode inode;
++ ext2_ino_t ino;
++ dgrp_t nr;
++ time_t t;
++ int c;
++ pid_t pid;
++
++ /*
++ * by default find for files which are modified less than one
++ * day ago
++ */
++ scan_data.fl.mtimestamp = time(NULL) - 60 * 60 * 24;
++ scan_data.fl.ctimestamp = scan_data.fl.mtimestamp;
++ outfile = stdout;
++
++ opterr = 0;
++#if defined(HAVE_SQLITE3) && defined(HAVE_SQLITE3_H)
++#define OPTF "f"
++#else
++#define OPTF ""
++#endif
++ while ((c = getopt(argc, argv, "a:b:C:d:D"OPTF"hln:N:o:")) != EOF) {
++ char *end;
++
++ switch (c) {
++ case 'a':
++ if (optarg == NULL)
++ usage(argv[0]);
++ readahead_groups = strtoul(optarg, &end, 0);
++ if (*end) {
++ fprintf(stderr, "%s: bad -a argument '%s'\n",
++ argv[0], optarg);
++ usage(argv[0]);
++ }
++ break;
++ case 'b':
++ inode_buffer_blocks = strtoul(optarg, &end, 0);
++ if (*end) {
++ fprintf(stderr, "%s: bad -b argument '%s'\n",
++ argv[0], optarg);
++ usage(argv[0]);
++ }
++ break;
++ case 'C':
++ root = optarg;
++ break;
++ case 'd':
++ database = optarg;
++ break;
++ case 'D':
++ scan_data.fl.with_dirs = 1;
++ break;
++ case 'f':
++#if !defined(HAVE_SQLITE3) || !defined(HAVE_SQLITE3_H)
++ fprintf(stderr,
++ "%s: sqlite3 was not detected on configure, "
++ "database creation is not supported\n",argv[0]);
++ return 1;
++#endif
++ scan_data.mode = SM_DATABASE;
++ break;
++ case 'l':
++ scan_data.mode = SM_FILELIST;
++ break;
++ case 'n':
++ get_timestamps(optarg);
++ break;
++ case 'N': {
++ const char *fmts[] = {"%c", /*date/time current locale*/
++ "%Ec",/*date/time alt. locale*/
++ "%a%t%b%t%d,%t%Y%t%H:%M:%S",
++ "%a,%t%d%t%b%t%Y%t%H:%M:%S",
++ "%a%t%b%t%d%t%H:%M:%S%t%Z%t%Y",
++ "%a%t%b%t%d%t%H:%M:%S%t%Y",
++ "%b%t%d%t%H:%M:%S%t%Z%t%Y",
++ "%b%t%d%t%H:%M:%S%t%Y",
++ "%x%t%X",/*date time*/
++ "%Ex%t%EX",/*alternate date time*/
++ "%F", /*ISO 8601 date*/
++ "%+", /*`date` format*/
++ "%s", /*seconds since epoch */
++ NULL,
++ };
++ const char **fmt;
++ char *ret;
++ struct tm tmptm, *tm = NULL;
++ time_t now = time(0);
++
++ tmptm = *localtime(&now);
++
++ for (fmt = &fmts[0]; *fmt != NULL; fmt++) {
++ if (strptime(optarg, *fmt, &tmptm) != NULL) {
++ tm = &tmptm;
++ break;
++ }
++ }
++
++ if (tm == NULL) {
++ fprintf(stderr, "%s: bad -N argument '%s'\n",
++ argv[0], optarg);
++ usage(argv[0]);
++ }
++ scan_data.fl.mtimestamp = mktime(tm);
++ scan_data.fl.ctimestamp = scan_data.fl.mtimestamp;
++ break;
++ }
++ case 'o':
++ outfile = fopen(optarg, "w");
++ if (outfile == NULL) {
++ fprintf(stderr, "%s: can't open '%s': %s\n",
++ argv[0], optarg, strerror(errno));
++ usage(argv[0]);
++ }
++ break;
++ default:
++ fprintf(stderr, "%s: unknown option '-%c'\n",
++ argv[0], optopt);
++ case 'h':
++ usage(argv[0]);
++ }
++ }
++
++ if (scan_data.mode == SM_NONE || argv[optind] == NULL)
++ usage(argv[0]);
++
++
++ fprintf(stderr, "generating list of files with\n"
++ "\tmtime newer than %s"
++ "\tctime newer than %s",
++ ctime(&scan_data.fl.mtimestamp),
++ ctime(&scan_data.fl.ctimestamp));
++
++ retval = ext2fs_open(argv[optind], EXT2_FLAG_SOFTSUPP_FEATURES,
++ 0, 0, unix_io_manager, &fs);
++ if (retval != 0) {
++ com_err("ext2fs_open", retval, "opening %s\n", argv[optind]);
++ return 1;
++ }
++
++ t = time(NULL);
++
++ for (nr = 0; nr < fs->group_desc_count; nr ++)
++ io_channel_readahead(fs->io,
++ ext2fs_inode_bitmap_loc(fs, nr), 1);
++ retval = ext2fs_read_inode_bitmap(fs);
++ if (retval) {
++ com_err("ext2fs_read_inode_bitmap", retval,
++ "opening inode bitmap on %s\n", argv[optind]);
++ exit(1);
++ }
++ fprintf(stderr, "inode bitmap is read, %ld seconds\n", time(NULL) - t);
++
++
++ if (inode_buffer_blocks == 0)
++ inode_buffer_blocks = fs->inode_blocks_per_group;
++
++ retval = ext2fs_open_inode_scan(fs, inode_buffer_blocks, &scan);
++ if (retval) {
++ com_err("ext2fs_open_inode_scan", retval,
++ "opening inode scan on %s\n", argv[optind]);
++ fprintf(stderr, "failed to open inode scan\n");
++ exit(1);
++ }
++ ext2fs_set_inode_callback(scan, done_group_callback, NULL);
++
++ retval = ext2fs_init_dblist(fs, NULL);
++ if (retval) {
++ com_err("ext2fs_init_dblist", retval,
++ "initializing dblist\n");
++ exit(1);
++ }
++
++ block_buf = (char *)malloc(fs->blocksize * 3);
++ if (block_buf == NULL) {
++ fprintf(stderr, "%s: failed to allocate memory for block_buf\n",
++ argv[0]);
++ exit(1);
++ }
++ memset(block_buf, 0, fs->blocksize * 3);
++
++ switch (scan_data.mode) {
++ case SM_DATABASE:
++ pid = fork_db_creation(database);
++ break;
++
++ case SM_FILELIST:
++ c = create_root_dentries(root);
++ if (c == ENOENT && strncmp(root, "/ROOT", 5) != 0) {
++ /* Try again with prepending "/ROOT" */
++ char newroot[PATH_MAX];
++ if (snprintf(newroot, PATH_MAX, "/ROOT/%s", root) >=
++ PATH_MAX) {
++ fprintf(stderr, "%s: root path '%s' too long\n",
++ argv[0], root);
++ exit(1);
++ }
++ if (create_root_dentries(newroot) == 0)
++ c = 0;
++ }
++ if (c == ENOENT)
++ fprintf(stderr,
++ "%s: visible filesystem root '%s' not found\n",
++ argv[0], root);
++ else if (c == EIO)
++ fprintf(stderr,
++ "%s: error reading visible root: '%s'\n",
++ argv[0], root);
++ else if (c == ENOTDIR)
++ fprintf(stderr,
++ "%s: visible root '%s' not a directory\n",
++ argv[0], root);
++ if (c)
++ exit(1);
++ break;
++ default:
++ break;
++ }
++
++ t = time(NULL);
++ fprintf(stderr, "scanning inode tables .. ");
++ scan_data.nr = 0;
++
++ done_group_callback(fs, scan, -readahead_groups * 2, NULL);
++ done_group_callback(fs, scan, -readahead_groups, NULL);
++ while (ext2fs_get_next_inode(scan, &ino, &inode) == 0) {
++ if (ino == 0)
++ break;
++
++ scan_data.nr ++;
++ if (ext2fs_fast_test_inode_bitmap2(fs->inode_map, ino) == 0)
++ /* deleted - always skip for now */
++ continue;
++ switch (scan_data.mode) {
++ case SM_DATABASE:
++ database_iscan_action(ino, &inode, scan_data.db.fd,
++ block_buf);
++ break;
++
++ case SM_FILELIST:
++ filelist_iscan_action(ino, &inode, block_buf);
++ break;
++
++ default:
++ break;
++ }
++ }
++
++ switch (scan_data.mode) {
++ case SM_DATABASE:
++ fprintf(stderr,
++ "done\n\t%d inodes, %ld seconds\n",
++ scan_data.nr, time(NULL) - t);
++ break;
++
++ case SM_FILELIST:
++ fprintf(stderr, "done\n\t%d inodes, %ld seconds, %d files, "
++ "%d dirs to find\n",
++ scan_data.nr, time(NULL) - t, scan_data.fl.nr_files,
++ scan_data.fl.nr_dirs);
++ if (scan_data.fl.nr_files == 0 && scan_data.fl.nr_dirs == 0) {
++ ext2fs_close_inode_scan(scan);
++ ext2fs_close(fs);
++ free(block_buf);
++ return 0;
++ }
++ break;
++
++ default:
++ break;
++ }
++
++ t = time(NULL);
++ fprintf(stderr, "scanning directory blocks (%u).. ",
++ ext2fs_dblist_count(fs->dblist));
++
++ /* root directory does not have name, handle it separately */
++ report_root();
++ /*
++ * we have a list of directory leaf blocks, blocks are sorted,
++ * but can be not very sequential. If such blocks are close to
++ * each other, read throughput can be improved if blocks are
++ * read not sequentially, but all at once in a big
++ * chunk. Create list of those chunks, it will be then used to
++ * issue readahead
++ */
++ make_chunk_list(fs->dblist);
++
++ scan_data.nr = 0;
++ retval = ext2fs_dblist_dir_iterate(fs->dblist,
++ DIRENT_FLAG_INCLUDE_EMPTY,
++ block_buf,
++ dblist_iterate_cb, NULL);
++ if (retval) {
++ com_err("ext2fs_dblist_dir_iterate", retval,
++ "dir iterating dblist\n");
++ exit(1);
++ }
++ if (chunk_size)
++ free(chunks);
++
++ switch (scan_data.mode) {
++ case SM_DATABASE:
++ {
++ int status;
++
++ fprintf(stderr,
++ "done\n\t%d blocks, %ld seconds, "
++ "%d records sent to database\n",
++ scan_data.nr, time(NULL) - t, scan_data.db.nr_commands);
++ close(scan_data.db.fd);
++ waitpid(pid, &status, 0);
++ if (WIFEXITED(status))
++ fprintf(stderr, "database creation exited with %d\n",
++ WEXITSTATUS(status));
++ break;
++ }
++
++ case SM_FILELIST:
++ fprintf(stderr,
++ "done\n\t%d blocks, %ld seconds, %d files reported\n",
++ scan_data.nr, time(NULL) - t, scan_data.fl.nr_reported);
++ break;
++
++ default:
++ break;
++ }
++
++ ext2fs_close_inode_scan(scan);
++ ext2fs_close(fs);
++ free(block_buf);
++
++ return 0;
++}
+Index: e2fsprogs/e2scan/Makefile.in
+===================================================================
+--- /dev/null
++++ e2fsprogs/e2scan/Makefile.in
+@@ -0,0 +1,104 @@
++#
++# Standard e2fsprogs prologue....
++#
++
++srcdir = @srcdir@
++top_srcdir = @top_srcdir@
++VPATH = @srcdir@
++top_builddir = ..
++my_dir = e2scan
++INSTALL = @INSTALL@
++SQLITE3_LIB = @SQLITE3_LIB@
++
++@MCONFIG@
++
++PROGS= e2scan
++MANPAGES= e2scan.8
++
++MK_CMDS= _SS_DIR_OVERRIDE=../lib/ss ../lib/ss/mk_cmds
++
++E2SCAN_OBJS=e2scan.o db.o filelist.o
++
++SRCS=$(srcdir)/e2scan.c $(srcdir)/filelist.c $(srcdir)/db.c
++
++LIBS=$(LIBEXT2FS) $(LIBE2P) $(LIBSS) $(LIBCOM_ERR) $(LIBBLKID) \
++ $(LIBUUID) $(SQLITE3_LIB)
++DEPLIBS=$(LIBEXT2FS) $(LIBE2P) $(LIBSS) $(LIBCOM_ERR) $(DEPLIBBLKID) $(DEPLIBUUID)
++
++.c.o:
++ @echo " CC $<"
++ @$(CC) -c $(ALL_CFLAGS) $< -o $@
++
++all:: $(PROGS) $(MANPAGES)
++
++e2scan: $(E2SCAN_OBJS) $(DEPLIBS)
++ @$(CC) $(ALL_LDFLAGS) -o e2scan $(E2SCAN_OBJS) $(LIBS)
++
++e2scan.8: $(DEP_SUBSTITUTE) $(srcdir)/e2scan.8.in
++ @echo " SUBST $@"
++ @$(SUBSTITUTE_UPTIME) $(srcdir)/e2scan.8.in e2scan.8
++
++installdirs:
++ @echo " MKINSTALLDIRS $(sbindir) $(man8dir)"
++ @$(MKINSTALLDIRS) $(DESTDIR)$(sbindir) \
++ $(DESTDIR)$(man8dir)
++
++install: $(PROGS) $(MANPAGES) installdirs
++ @for i in $(PROGS); do \
++ echo " INSTALL $(sbindir)/$$i"; \
++ $(INSTALL_PROGRAM) $$i $(DESTDIR)$(sbindir)/$$i; \
++ done
++ @for i in $(MANPAGES); do \
++ for j in $(COMPRESS_EXT); do \
++ $(RM) -f $(DESTDIR)$(man8dir)/$$i.$$j; \
++ done; \
++ echo " INSTALL_DATA $(man8dir)/$$i"; \
++ $(INSTALL_DATA) $$i $(DESTDIR)$(man8dir)/$$i; \
++ done
++
++install-strip: install
++ @for i in $(PROGS); do \
++ echo " STRIP $(sbindir)/$$i"; \
++ $(STRIP) $(DESTDIR)$(sbindir)/$$i; \
++ done
++
++uninstall:
++ for i in $(PROGS); do \
++ $(RM) -f $(DESTDIR)$(sbindir)/$$i; \
++ done
++ for i in $(MANPAGES); do \
++ $(RM) -f $(DESTDIR)$(man8dir)/$$i; \
++ done
++
++#check::
++# ./correct_test1 Makefile out
++# ./correct_test2
++
++clean:
++ $(RM) -f e2scan correct_test1 correct_test2 e2scan.8 \#* *.s *.o *.a *~ core out
++
++mostlyclean: clean
++distclean: clean
++ $(RM) -f debug_cmds.c .depend Makefile $(srcdir)/TAGS \
++ $(srcdir)/Makefile.in.old
++
++# +++ Dependency line eater +++
++#
++# Makefile dependencies follow. This must be the last section in
++# the Makefile.in file
++#
++filelist.o: $(srcdir)/filelist.c $(top_srcdir)/lib/ext2fs/ext2_fs.h \
++ $(top_builddir)/lib/ext2fs/ext2_types.h $(top_srcdir)/lib/ext2fs/ext2fs.h \
++ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_srcdir)/lib/et/com_err.h \
++ $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
++ $(top_srcdir)/lib/ext2fs/bitops.h
++db.o: $(srcdir)/db.c $(top_srcdir)/lib/ext2fs/ext2_fs.h \
++ $(top_builddir)/lib/ext2fs/ext2_types.h $(top_srcdir)/lib/ext2fs/ext2fs.h \
++ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_srcdir)/lib/et/com_err.h \
++ $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
++ $(top_srcdir)/lib/ext2fs/bitops.h
++e2scan.o: $(srcdir)/e2scan.c \
++ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
++ $(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext2_fs.h \
++ $(top_srcdir)/lib/et/com_err.h $(top_srcdir)/lib/ext2fs/ext2_io.h \
++ $(top_builddir)/lib/ext2fs/ext2_err.h $(top_srcdir)/lib/ext2fs/bitops.h
+Index: e2fsprogs/Makefile.in
+===================================================================
+--- e2fsprogs.orig/Makefile.in
++++ e2fsprogs/Makefile.in
+@@ -13,9 +13,10 @@ INSTALL = @INSTALL@
+ @DEBUGFS_CMT@DEBUGFS_DIR= debugfs
+ @UUID_CMT@UUID_LIB_SUBDIR= lib/uuid
+ @BLKID_CMT@BLKID_LIB_SUBDIR= lib/blkid
++@E2SCAN_CMT@E2SCAN_DIR= e2scan
+
+ LIB_SUBDIRS=lib/et lib/ss lib/e2p $(UUID_LIB_SUBDIR) lib/ext2fs $(BLKID_LIB_SUBDIR) intl
+-PROG_SUBDIRS=e2fsck $(DEBUGFS_DIR) misc $(RESIZE_DIR) tests/progs po
++PROG_SUBDIRS=e2fsck $(DEBUGFS_DIR) misc $(RESIZE_DIR) tests/progs po $(E2SCAN_DIR)
+ SUBDIRS=util $(LIB_SUBDIRS) $(PROG_SUBDIRS) tests
+
+ SUBS= lib/ext2fs/ext2_types.h lib/blkid/blkid_types.h lib/uuid/uuid_types.h
+@@ -60,7 +61,7 @@ distclean-doc:
+
+ install: subs all-libs-recursive install-progs-recursive \
+ install-shlibs-libs-recursive install-doc-libs
+- if test ! -d e2fsck && test ! -d debugfs && test ! -d misc && test ! -d ext2ed ; then $(MAKE) install-libs ; fi
++ if test ! -d e2fsck && test ! -d debugfs && test ! -d e2scan && test ! -d misc && test ! -d ext2ed ; then $(MAKE) install-libs ; fi
+
+ install-strip: subs all-libs-recursive install-strip-progs-recursive \
+ install-shlibs-strip-libs-recursive install-doc-libs
+Index: e2fsprogs/lib/ext2fs/dblist.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/dblist.c
++++ e2fsprogs/lib/ext2fs/dblist.c
+@@ -152,7 +152,6 @@ errcode_t ext2fs_copy_dblist(ext2_dblist
+ * (moved to closefs.c)
+ */
+
+-
+ /*
+ * Add a directory block to the directory block list
+ */
+Index: e2fsprogs/e2scan/filelist.c
+===================================================================
+--- /dev/null
++++ e2fsprogs/e2scan/filelist.c
+@@ -0,0 +1,455 @@
++#define _GNU_SOURCE
++#define _FILE_OFFSET_BITS 64
++
++#include <stdio.h>
++#include <assert.h>
++#include <sys/stat.h>
++#include <time.h>
++#include <unistd.h>
++#include <sys/errno.h>
++#include <search.h>
++#include <ext2fs/ext2fs.h>
++
++/* e2scan.c */
++extern ext2_filsys fs;
++extern FILE *outfile;
++extern struct {
++ int mode;
++ int nr;
++ union {
++ struct {
++ int fd;
++ int nr_commands;
++ } db;
++ struct {
++ /* number of files newer than specified time */
++ ext2_ino_t nr_files;
++ ext2_ino_t nr_dirs;
++ /* number of files reported */
++ ext2_ino_t nr_reported;
++ time_t mtimestamp;
++ time_t ctimestamp;
++ int with_dirs;
++ } fl;
++ };
++} scan_data;
++
++ext2_ino_t visible_root_ino;
++
++int block_iterate_cb(ext2_filsys fs, blk_t *block_nr,
++ e2_blkcnt_t blockcnt,
++ blk_t ref_block EXT2FS_ATTR((unused)),
++ int ref_offset EXT2FS_ATTR((unused)),
++ void *priv_data);
++
++
++/*
++create root dentry
++ root->connected_to_root = 1
++ root->d_path = "/"
++for each directory block:
++ if (directory is not in memory)
++ create new directory dentry
++ set directory->connected_to_root = 0
++ for each entry found in directory block:
++ if (entry is a subdirectory)
++ if (subdir is in memory)
++ subdir->d_parent = directory
++ if (directory->connected_to_root)
++ recurse for each subsubdir
++ subsubdir->connected_to_root = 1
++ subsubdir->d_parent = subdir
++ subsubdir->d_path = subdir->d_path + name
++ for each non-directory entry on subdir
++ generate full pathname and output
++ drop filename entry from RAM
++ else
++ create new subdir dentry
++ subdir->connected_to_root = directory->connected_to_root
++ subdir->d_parent = directory
++ if (directory->connected_to_root)
++ subdir->d_path = directory->d_path + name
++ else if (file is interesting)
++ if (directory->connected_to_root)
++ generate full pathname and output
++ else
++ create filename entry
++ attach filename to directory
++*/
++
++struct e2scan_dentry {
++ ext2_ino_t ino;
++ struct e2scan_dentry *d_parent;
++ char *name;
++ struct e2scan_dentry *d_child; /* pointer to first of subdirs */
++ struct e2scan_dentry *d_next; /* pointer to next directory */
++ unsigned connected_to_root:1;
++ unsigned is_file:1;
++ unsigned is_dir:1;
++ unsigned not_in_root:1;
++ unsigned is_printed:1;
++};
++
++static void *dentry_tree = NULL;
++
++static int compare_ino(const void *a, const void *b)
++{
++ const struct e2scan_dentry *d1;
++ const struct e2scan_dentry *d2;
++
++ d1 = a;
++ d2 = b;
++ if (d1->ino > d2->ino)
++ return 1;
++ if (d1->ino < d2->ino)
++ return -1;
++ return 0;
++}
++
++static struct e2scan_dentry *find_dentry(ext2_ino_t ino)
++{
++ struct e2scan_dentry tmp, **pdentry;
++
++ tmp.ino = ino;
++ pdentry = tfind(&tmp, &dentry_tree, compare_ino);
++ return (pdentry == NULL) ? NULL : *pdentry;
++}
++
++static struct e2scan_dentry *find_or_create_dentry(ext2_ino_t ino, int *created)
++{
++ struct e2scan_dentry **dentry, *new;
++
++ new = calloc(1, sizeof(struct e2scan_dentry));
++ if (new == NULL) {
++ fprintf(stderr, "malloc failed");
++ exit(1);
++ }
++ new->ino = ino;
++
++ dentry = tsearch(new, &dentry_tree, compare_ino);
++ if (dentry == NULL) {
++ fprintf(stderr, "tsearch failed");
++ exit(1);
++ }
++ if (*dentry != new) {
++ *created = 0;
++ free(new);
++ } else {
++ *created = 1;
++ }
++
++ return *dentry;
++}
++
++static int is_file_interesting(ext2_ino_t ino)
++{
++ return ext2fs_fast_test_inode_bitmap2(fs->inode_map, ino);
++}
++
++static void link_to_parent(struct e2scan_dentry *parent,
++ struct e2scan_dentry *child)
++{
++ child->d_next = parent->d_child;
++ parent->d_child = child;
++ child->d_parent = parent;
++}
++
++static void dentry_attach_name(struct e2scan_dentry *dentry, int namelen,
++ const char *name)
++{
++ if (dentry->name) {
++ if (namelen == 1 && (!strcmp(name, ".") || !strcmp(name, "/")))
++ return;
++ fprintf(stderr, "dentry name: %s, name %.*s\n",
++ dentry->name, namelen, name);
++ exit(1);
++ }
++ asprintf(&dentry->name, "%.*s", namelen, name);
++}
++
++/*
++ - look up $ROOT in the filesystem
++ - build dentry for each component of the path, starting at /
++ - for each component of the path except the last, mark dentry "not_in_root"
++*/
++int create_root_dentries(char *root)
++{
++ int created;
++ char *name;
++ ext2_ino_t ino;
++ struct e2scan_dentry *child, *parent;
++ struct ext2_inode inode;
++ char *copy, *p;
++
++ copy = p = strdup(root);
++
++ ino = EXT2_ROOT_INO;
++ name = "/";
++ parent = NULL;
++ do {
++ child = find_or_create_dentry(ino, &created);
++ dentry_attach_name(child, strlen(name), name);
++ child->connected_to_root = 1;
++ child->not_in_root = 1;
++ if (parent != NULL)
++ link_to_parent(parent, child);
++ parent = child;
++
++ name = strtok(copy, "/");
++ if (name == NULL)
++ break;
++ copy = NULL;
++
++ if (ext2fs_lookup(fs, ino, name, strlen(name), NULL, &ino))
++ return ENOENT;
++ } while (1);
++
++ if (ext2fs_read_inode(fs, ino, &inode))
++ return EIO;
++
++ if (!LINUX_S_ISDIR(inode.i_mode)) {
++ return ENOTDIR;
++ }
++ child->not_in_root = 0;
++ visible_root_ino = ino;
++ fprintf(stderr, "visible root: \"%s\"\n", root);
++
++ free(p);
++
++ return 0;
++}
++
++static inline void output_dot(void)
++{
++ fprintf(outfile, ".");
++}
++
++static inline void output_dot_newline(void)
++{
++ fprintf(outfile, ".\n");
++}
++
++static inline void output_dir_name(const char *dirname)
++{
++ fprintf(outfile, "/%s", dirname);
++}
++
++static inline void output_file_name(const char *filename, int len)
++{
++ fprintf(outfile, "/%.*s\n", len, filename);
++}
++
++static int up_path(struct e2scan_dentry *dentry)
++{
++ int len;
++
++ len = 0;
++ while (dentry->ino != visible_root_ino) {
++ if (dentry->ino == EXT2_ROOT_INO)
++ return -1;
++ dentry = dentry->d_parent;
++ len ++;
++ }
++ return len;
++}
++
++static void revert_dir_name(int path_length, struct e2scan_dentry *dentry)
++{
++ if (path_length > 0) {
++ path_length --;
++ revert_dir_name(path_length, dentry->d_parent);
++ output_dir_name(dentry->name);
++ }
++ return;
++}
++
++static void report_file_name(struct e2scan_dentry *dentry, ext2_ino_t ino,
++ const char *name, int namelen)
++{
++ int path_up_length;
++
++ ext2fs_fast_unmark_inode_bitmap2(fs->inode_map, ino);
++
++ if (ino == visible_root_ino) {
++ /* visible root is to be reported */
++ output_dot_newline();
++ scan_data.fl.nr_reported ++;
++ return;
++ }
++
++ path_up_length = up_path(dentry);
++ if (path_up_length == -1)
++ /* file is not in visible root */
++ return;
++
++ output_dot();
++ revert_dir_name(path_up_length, dentry);
++ /* the file is under visible root */
++ scan_data.fl.nr_reported ++;
++ output_file_name(name, namelen);
++}
++
++void report_root(void)
++{
++ if (EXT2_ROOT_INO == visible_root_ino &&
++ is_file_interesting(EXT2_ROOT_INO)) {
++ output_dot_newline();
++ scan_data.fl.nr_reported ++;
++ }
++}
++
++static struct e2scan_dentry *connect_subtree_to_root(struct e2scan_dentry *dir,
++ int not_in_root)
++{
++ struct e2scan_dentry *subdir, *prev, *p;
++
++ assert(!dir->is_file);
++ dir->connected_to_root = 1;
++ dir->not_in_root = not_in_root;
++
++ subdir = dir->d_child;
++ prev = NULL;
++ while (subdir) {
++ if (subdir->is_file) {
++ /* report filename and release dentry */
++ report_file_name(dir, subdir->ino, subdir->name,
++ strlen(subdir->name));
++
++ if (prev == NULL)
++ dir->d_child = subdir->d_next;
++ else
++ prev->d_next = subdir->d_next;
++
++ p = tdelete(subdir, &dentry_tree, compare_ino);
++ assert(p != NULL);
++
++ free(subdir->name);
++ p = subdir->d_next;
++ free(subdir);
++ subdir = p;
++ continue;
++ }
++ if (subdir->is_dir && subdir->is_printed == 0) {
++ /* report directory name */
++ report_file_name(dir, subdir->ino, subdir->name,
++ strlen(subdir->name));
++ subdir->is_printed = 1;
++ }
++ connect_subtree_to_root(subdir, not_in_root);
++ prev = subdir;
++ subdir = subdir->d_next;
++ }
++ return NULL;
++}
++
++void filelist_iscan_action(ext2_ino_t ino,
++ struct ext2_inode *inode, char *buf)
++{
++ int created;
++ struct e2scan_dentry *dentry;
++ int to_be_listed;
++
++ if (!LINUX_S_ISDIR(inode->i_mode) &&
++ (inode->i_flags & EXT2_NODUMP_FL)) {
++ /* skip files which are not to be backuped */
++ ext2fs_fast_unmark_inode_bitmap2(fs->inode_map, ino);
++ return;
++ }
++
++ to_be_listed = (inode->i_ctime < scan_data.fl.ctimestamp &&
++ inode->i_mtime < scan_data.fl.mtimestamp) ? 0 : 1;
++ if (LINUX_S_ISDIR(inode->i_mode)) {
++ dentry = find_or_create_dentry(ino, &created);
++
++ if (ext2fs_block_iterate2(fs, ino, 0, buf,
++ block_iterate_cb, &ino)) {
++ fprintf(stderr, "ext2fs_block_iterate2 failed\n");
++ exit(1);
++ }
++ dentry->is_dir = to_be_listed;
++ }
++ if (!to_be_listed)
++ /* too old files are not interesting */
++ ext2fs_fast_unmark_inode_bitmap2(fs->inode_map, ino);
++ else {
++ /* files and directories to find names of */
++ if (LINUX_S_ISDIR(inode->i_mode)) {
++ if (scan_data.fl.with_dirs)
++ scan_data.fl.nr_dirs++;
++ else
++ ext2fs_fast_unmark_inode_bitmap2(fs->inode_map,
++ ino);
++ } else
++ scan_data.fl.nr_files++;
++ }
++}
++
++int filelist_dblist_iterate_cb(ext2_ino_t dirino,
++ struct ext2_dir_entry *dirent,
++ int namelen)
++{
++ struct e2scan_dentry *dir, *subdir;
++ int created;
++ int ret;
++ struct ext2_dir_entry_2 *dirent2;
++ int is_dirname;
++
++ dir = find_dentry(dirino);
++ assert(dir != NULL);
++
++ dirent2 = (struct ext2_dir_entry_2 *)dirent;
++ is_dirname = (dirent2->file_type == EXT2_FT_DIR) ? 1 : 0;
++ if (is_dirname) {
++ subdir = find_dentry(dirent->inode);
++ if (subdir == NULL)
++ /* new name is encountered, skip it */
++ return 0;
++
++ if (subdir->d_parent == NULL) {
++ dentry_attach_name(subdir, namelen, dirent->name);
++ link_to_parent(dir, subdir);
++
++ if (dir->connected_to_root)
++ /*
++ * go down and connect all subdirs to
++ * root recursively
++ */
++ connect_subtree_to_root(subdir,
++ dir->not_in_root);
++ }
++ }
++ if (is_file_interesting(dirent->inode)) {
++ if (dir->connected_to_root) {
++ if (is_dirname && subdir->is_printed == 0) {
++ report_file_name(dir, dirent->inode,
++ dirent->name, namelen);
++ subdir->is_printed = 1;
++ } else
++ report_file_name(dir, dirent->inode,
++ dirent->name, namelen);
++ } else {
++ subdir = find_or_create_dentry(dirent->inode, &created);
++ if (created) {
++ dentry_attach_name(subdir,namelen,dirent->name);
++
++ link_to_parent(dir, subdir);
++ subdir->is_file = 1;
++ } else {
++ /*
++ * dentry exists already, hard link
++ * encountered, nothing to do about it
++ */
++ ;
++ }
++ }
++ }
++ ret = 0;
++ if (scan_data.fl.nr_reported ==
++ (scan_data.fl.nr_files + scan_data.fl.nr_dirs))
++ /*
++ * names of all recently modified files are
++ * generated, break dblist iteration
++ */
++ ret |= DIRENT_ABORT;
++ return ret;
++}
+Index: e2fsprogs/util/subst.conf.in
+===================================================================
+--- e2fsprogs.orig/util/subst.conf.in
++++ e2fsprogs/util/subst.conf.in
+@@ -5,6 +5,8 @@ SS_DIR @SS_DIR@
+ E2FSPROGS_MONTH @E2FSPROGS_MONTH@
+ E2FSPROGS_YEAR @E2FSPROGS_YEAR@
+ E2FSPROGS_VERSION @E2FSPROGS_VERSION@
++E2SCAN_CMT @E2SCAN_CMT@
++E2SCAN_MAN @E2SCAN_MAN@
+ LFSCK_CMT @LFSCK_CMT@
+ LFSCK_MAN @LFSCK_MAN@
+ SIZEOF_LONG_LONG @SIZEOF_LONG_LONG@
--- /dev/null
+This patch adds a "-E expand_extra_isize" feature which makes sure that
+_every_ used inode has i_extra_isize >= s_min_extra_isize if
+s_min_extra_isize is set. Else it makes sure that i_extra_isize of every
+inode is equal to sizeof(ext2_inode_large) - 128.
+
+This is useful for the case where nanosecond timestamps or 64-bit inode
+version fields are required for all inodes in the filesystem.
+
+Signed-off-by: Kalpak Shah <kalpak@clusterfs.com>
+Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
+
+Index: e2fsprogs/lib/ext2fs/ext_attr.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/ext_attr.c
++++ e2fsprogs/lib/ext2fs/ext_attr.c
+@@ -17,6 +17,7 @@
+ #endif
+ #include <string.h>
+ #include <time.h>
++#include <errno.h>
+
+ #include "ext2_fs.h"
+ #include "ext2_ext_attr.h"
+@@ -60,6 +61,34 @@ __u32 ext2fs_ext_attr_hash_entry(struct
+ #undef NAME_HASH_SHIFT
+ #undef VALUE_HASH_SHIFT
+
++#define BLOCK_HASH_SHIFT 16
++/*
++ * Re-compute the extended attribute hash value after an entry has changed.
++ */
++static void ext2fs_attr_rehash(struct ext2_ext_attr_header *header,
++ struct ext2_ext_attr_entry *entry)
++{
++ struct ext2_ext_attr_entry *here;
++ __u32 hash = 0;
++
++ entry->e_hash = ext2fs_ext_attr_hash_entry(entry, (char *)header +
++ entry->e_value_offs);
++
++ here = ENTRY(header+1);
++ while (!EXT2_EXT_IS_LAST_ENTRY(here)) {
++ if (!here->e_hash) {
++ /* Block is not shared if an entry's hash value == 0 */
++ hash = 0;
++ break;
++ }
++ hash = (hash << BLOCK_HASH_SHIFT) ^
++ (hash >> (8*sizeof(hash) - BLOCK_HASH_SHIFT)) ^
++ here->e_hash;
++ here = EXT2_EXT_ATTR_NEXT(here);
++ }
++ header->h_hash = hash;
++}
++
+ errcode_t ext2fs_read_ext_attr2(ext2_filsys fs, blk64_t block, void *buf)
+ {
+ errcode_t retval;
+@@ -132,7 +161,10 @@ errcode_t ext2fs_adjust_ea_refcount2(ext
+ if (retval)
+ goto errout;
+
+- header = (struct ext2_ext_attr_header *) block_buf;
++ header = BHDR(block_buf);
++ if (header->h_magic != EXT2_EXT_ATTR_MAGIC)
++ return EXT2_ET_EA_BAD_MAGIC;
++
+ header->h_refcount += adjust;
+ if (newcount)
+ *newcount = header->h_refcount;
+@@ -151,5 +183,903 @@ errcode_t ext2fs_adjust_ea_refcount(ext2
+ char *block_buf, int adjust,
+ __u32 *newcount)
+ {
+- return ext2fs_adjust_ea_refcount(fs, blk, block_buf, adjust, newcount);
++ return ext2fs_adjust_ea_refcount2(fs, blk, block_buf, adjust, newcount);
++}
++
++struct ext2_attr_info {
++ int name_index;
++ const char *name;
++ const char *value;
++ int value_len;
++};
++
++struct ext2_attr_search {
++ struct ext2_ext_attr_entry *first;
++ char *base;
++ char *end;
++ struct ext2_ext_attr_entry *here;
++ int not_found;
++};
++
++struct ext2_attr_ibody_find {
++ ext2_ino_t ino;
++ struct ext2_attr_search s;
++};
++
++struct ext2_attr_block_find {
++ struct ext2_attr_search s;
++ char *block;
++};
++
++void ext2fs_attr_shift_entries(struct ext2_ext_attr_entry *entry,
++ int value_offs_shift, char *to,
++ char *from, int n)
++{
++ struct ext2_ext_attr_entry *last = entry;
++
++ /* Adjust the value offsets of the entries */
++ for (; !EXT2_EXT_IS_LAST_ENTRY(last); last = EXT2_EXT_ATTR_NEXT(last)) {
++ if (!last->e_value_block && last->e_value_size) {
++ last->e_value_offs = last->e_value_offs +
++ value_offs_shift;
++ }
++ }
++ /* Shift the entries by n bytes and zero freed space in inode */
++ memmove(to, from, n);
++ if (to > from)
++ memset(from, 0, to - from);
++}
++
++/*
++ * This function returns the free space present in the inode or the EA block.
++ * total is number of bytes taken up by the EA entries and is used to shift
++ * the EAs in ext2fs_expand_extra_isize().
++ */
++int ext2fs_attr_free_space(struct ext2_ext_attr_entry *last,
++ int *min_offs, char *base, int *total)
++{
++ for (; !EXT2_EXT_IS_LAST_ENTRY(last); last = EXT2_EXT_ATTR_NEXT(last)) {
++ *total += EXT2_EXT_ATTR_LEN(last->e_name_len);
++ if (!last->e_value_block && last->e_value_size) {
++ int offs = last->e_value_offs;
++ if (offs < *min_offs)
++ *min_offs = offs;
++ }
++ }
++
++ return (*min_offs - ((char *)last - base) - sizeof(__u32));
++}
++
++static errcode_t ext2fs_attr_check_names(struct ext2_ext_attr_entry *entry,
++ char *end)
++{
++ while (!EXT2_EXT_IS_LAST_ENTRY(entry)) {
++ struct ext2_ext_attr_entry *next = EXT2_EXT_ATTR_NEXT(entry);
++ if ((char *)next >= end)
++ return EXT2_ET_EA_BAD_ENTRIES;
++ entry = next;
++ }
++ return 0;
++}
++
++static errcode_t ext2fs_attr_find_entry(struct ext2_ext_attr_entry **pentry,
++ int name_index, const char *name,
++ int size, int sorted)
++{
++ struct ext2_ext_attr_entry *entry;
++ int name_len;
++ int cmp = 1;
++
++ if (name == NULL)
++ return EXT2_ET_EA_BAD_NAME;
++
++ name_len = strlen(name);
++ entry = *pentry;
++ for (; !EXT2_EXT_IS_LAST_ENTRY(entry);
++ entry = EXT2_EXT_ATTR_NEXT(entry)) {
++ cmp = name_index - entry->e_name_index;
++ if (!cmp)
++ cmp = name_len - entry->e_name_len;
++ if (!cmp)
++ cmp = memcmp(name, entry->e_name, name_len);
++ if (cmp <= 0 && (sorted || cmp == 0))
++ break;
++ }
++ *pentry = entry;
++
++ return cmp ? EXT2_ET_EA_NAME_NOT_FOUND : 0;
++}
++
++static errcode_t ext2fs_attr_block_find(ext2_filsys fs,struct ext2_inode *inode,
++ struct ext2_attr_info *i,
++ struct ext2_attr_block_find *bs)
++{
++ struct ext2_ext_attr_header *header;
++ errcode_t error;
++
++ if (inode->i_file_acl) {
++ /* The inode already has an extended attribute block. */
++ error = ext2fs_get_mem(fs->blocksize, &bs->block);
++ if (error)
++ return error;
++ error = ext2fs_read_ext_attr(fs, inode->i_file_acl, bs->block);
++ if (error)
++ goto cleanup;
++
++ header = BHDR(bs->block);
++ if (header->h_magic != EXT2_EXT_ATTR_MAGIC) {
++ error = EXT2_ET_EA_BAD_MAGIC;
++ goto cleanup;
++ }
++
++ /* Find the named attribute. */
++ bs->s.base = bs->block;
++ bs->s.first = (struct ext2_ext_attr_entry *)(header + 1);
++ bs->s.end = bs->block + fs->blocksize;
++ bs->s.here = bs->s.first;
++ error = ext2fs_attr_find_entry(&bs->s.here, i->name_index,
++ i->name, fs->blocksize, 1);
++ if (error && error != EXT2_ET_EA_NAME_NOT_FOUND)
++ goto cleanup;
++ bs->s.not_found = error;
++ }
++ error = 0;
++
++cleanup:
++ if (error && bs->block)
++ ext2fs_free_mem(&bs->block);
++ return error;
++}
++
++static errcode_t ext2fs_attr_ibody_find(ext2_filsys fs,
++ struct ext2_inode_large *inode,
++ struct ext2_attr_info *i,
++ struct ext2_attr_ibody_find *is)
++{
++ __u32 *eamagic;
++ char *start;
++ errcode_t error;
++
++ if (EXT2_INODE_SIZE(fs->super) == EXT2_GOOD_OLD_INODE_SIZE)
++ return 0;
++
++ if (inode->i_extra_isize == 0)
++ return 0;
++ eamagic = IHDR(inode);
++
++ start = (char *)inode + EXT2_GOOD_OLD_INODE_SIZE +
++ inode->i_extra_isize + sizeof(__u32);
++ is->s.first = (struct ext2_ext_attr_entry *)start;
++ is->s.base = start;
++ is->s.here = is->s.first;
++ is->s.end = (char *)inode + EXT2_INODE_SIZE(fs->super);
++ if (*eamagic == EXT2_EXT_ATTR_MAGIC) {
++ error = ext2fs_attr_check_names((struct ext2_ext_attr_entry *)
++ start, is->s.end);
++ if (error)
++ return error;
++ /* Find the named attribute. */
++ error = ext2fs_attr_find_entry(&is->s.here, i->name_index,
++ i->name, is->s.end -
++ (char *)is->s.base, 0);
++ if (error && error != EXT2_ET_EA_NAME_NOT_FOUND)
++ return error;
++ is->s.not_found = error;
++ }
++
++ return 0;
++}
++
++static errcode_t ext2fs_attr_set_entry(ext2_filsys fs, struct ext2_attr_info *i,
++ struct ext2_attr_search *s)
++{
++ struct ext2_ext_attr_entry *last;
++ int free, min_offs = s->end - s->base, name_len = strlen(i->name);
++
++ /* Compute min_offs and last. */
++ for (last = s->first; !EXT2_EXT_IS_LAST_ENTRY(last);
++ last = EXT2_EXT_ATTR_NEXT(last)) {
++ if (!last->e_value_block && last->e_value_size) {
++ int offs = last->e_value_offs;
++
++ if (offs < min_offs)
++ min_offs = offs;
++ }
++ }
++ free = min_offs - ((char *)last - s->base) - sizeof(__u32);
++
++ if (!s->not_found) {
++ if (!s->here->e_value_block && s->here->e_value_size) {
++ int size = s->here->e_value_size;
++ free += EXT2_EXT_ATTR_SIZE(size);
++ }
++ free += EXT2_EXT_ATTR_LEN(name_len);
++ }
++ if (i->value) {
++ if (free < EXT2_EXT_ATTR_LEN(name_len) +
++ EXT2_EXT_ATTR_SIZE(i->value_len))
++ return EXT2_ET_EA_NO_SPACE;
++ }
++
++ if (i->value && s->not_found) {
++ /* Insert the new name. */
++ int size = EXT2_EXT_ATTR_LEN(name_len);
++ int rest = (char *)last - (char *)s->here + sizeof(__u32);
++
++ memmove((char *)s->here + size, s->here, rest);
++ memset(s->here, 0, size);
++ s->here->e_name_index = i->name_index;
++ s->here->e_name_len = name_len;
++ memcpy(s->here->e_name, i->name, name_len);
++ } else {
++ if (!s->here->e_value_block && s->here->e_value_size) {
++ char *first_val = s->base + min_offs;
++ int offs = s->here->e_value_offs;
++ char *val = s->base + offs;
++ int size = EXT2_EXT_ATTR_SIZE(s->here->e_value_size);
++
++ if (i->value &&
++ size == EXT2_EXT_ATTR_SIZE(i->value_len)) {
++ /* The old and the new value have the same
++ size. Just replace. */
++ s->here->e_value_size = i->value_len;
++ memset(val + size - EXT2_EXT_ATTR_PAD, 0,
++ EXT2_EXT_ATTR_PAD); /* Clear pad bytes */
++ memcpy(val, i->value, i->value_len);
++ return 0;
++ }
++
++ /* Remove the old value. */
++ memmove(first_val + size, first_val, val - first_val);
++ memset(first_val, 0, size);
++ s->here->e_value_size = 0;
++ s->here->e_value_offs = 0;
++ min_offs += size;
++
++ /* Adjust all value offsets. */
++ last = s->first;
++ while (!EXT2_EXT_IS_LAST_ENTRY(last)) {
++ int o = last->e_value_offs;
++
++ if (!last->e_value_block &&
++ last->e_value_size && o < offs)
++ last->e_value_offs = o + size;
++ last = EXT2_EXT_ATTR_NEXT(last);
++ }
++ }
++ if (!i->value) {
++ /* Remove the old name. */
++ int size = EXT2_EXT_ATTR_LEN(name_len);
++
++ last = ENTRY((char *)last - size);
++ memmove((char *)s->here, (char *)s->here + size,
++ (char *)last - (char *)s->here + sizeof(__u32));
++ memset(last, 0, size);
++ }
++ }
++
++ if (i->value) {
++ /* Insert the new value. */
++ s->here->e_value_size = i->value_len;
++ if (i->value_len) {
++ int size = EXT2_EXT_ATTR_SIZE(i->value_len);
++ char *val = s->base + min_offs - size;
++
++ s->here->e_value_offs = min_offs - size;
++ memset(val + size - EXT2_EXT_ATTR_PAD, 0,
++ EXT2_EXT_ATTR_PAD); /* Clear the pad bytes. */
++ memcpy(val, i->value, i->value_len);
++ }
++ }
++
++ return 0;
++}
++
++static errcode_t ext2fs_attr_block_set(ext2_filsys fs, struct ext2_inode *inode,
++ struct ext2_attr_info *i,
++ struct ext2_attr_block_find *bs)
++{
++ struct ext2_attr_search *s = &bs->s;
++ char *new_buf = NULL, *old_block = NULL;
++ blk_t blk;
++ int clear_flag = 0;
++ errcode_t error;
++
++ if (i->value && i->value_len > fs->blocksize)
++ return EXT2_ET_EA_NO_SPACE;
++
++ if (s->base) {
++ if (BHDR(s->base)->h_refcount != 1) {
++ int offset = (char *)s->here - bs->block;
++
++ /* Decrement the refcount of the shared block */
++ old_block = s->base;
++ BHDR(s->base)->h_refcount -= 1;
++
++ error = ext2fs_get_mem(fs->blocksize, &s->base);
++ if (error)
++ goto cleanup;
++ clear_flag = 1;
++ memcpy(s->base, bs->block, fs->blocksize);
++ s->first = ENTRY(BHDR(s->base)+1);
++ BHDR(s->base)->h_refcount = 1;
++ s->here = ENTRY(s->base + offset);
++ s->end = s->base + fs->blocksize;
++ }
++ } else {
++ error = ext2fs_get_mem(fs->blocksize, &s->base);
++ if (error)
++ goto cleanup;
++ clear_flag = 1;
++ memset(s->base, 0, fs->blocksize);
++ BHDR(s->base)->h_magic = EXT2_EXT_ATTR_MAGIC;
++ BHDR(s->base)->h_blocks = 1;
++ BHDR(s->base)->h_refcount = 1;
++ s->first = ENTRY(BHDR(s->base)+1);
++ s->here = ENTRY(BHDR(s->base)+1);
++ s->end = s->base + fs->blocksize;
++ }
++
++ error = ext2fs_attr_set_entry(fs, i, s);
++ if (error)
++ goto cleanup;
++
++ if (!EXT2_EXT_IS_LAST_ENTRY(s->first))
++ ext2fs_attr_rehash(BHDR(s->base), s->here);
++
++ if (!EXT2_EXT_IS_LAST_ENTRY(s->first)) {
++ if (bs->block && bs->block == s->base) {
++ /* We are modifying this block in-place */
++ new_buf = bs->block;
++ blk = inode->i_file_acl;
++ error = ext2fs_write_ext_attr(fs, blk, s->base);
++ if (error)
++ goto cleanup;
++ } else {
++ /* We need to allocate a new block */
++ error = ext2fs_new_block(fs, 0, 0, &blk);
++ if (error)
++ goto cleanup;
++ ext2fs_block_alloc_stats(fs, blk, +1);
++ error = ext2fs_write_ext_attr(fs, blk, s->base);
++ if (error)
++ goto cleanup;
++ new_buf = s->base;
++ if (old_block) {
++ BHDR(s->base)->h_refcount -= 1;
++ error = ext2fs_write_ext_attr(fs,
++ inode->i_file_acl,
++ s->base);
++ if (error)
++ goto cleanup;
++ }
++ }
++ }
++
++ /* Update the i_blocks if we added a new EA block */
++ if (!inode->i_file_acl && new_buf)
++ inode->i_blocks += fs->blocksize / 512;
++ /* Update the inode. */
++ inode->i_file_acl = new_buf ? blk : 0;
++
++cleanup:
++ if (clear_flag)
++ ext2fs_free_mem(&s->base);
++ return 0;
++}
++
++static errcode_t ext2fs_attr_ibody_set(ext2_filsys fs,
++ struct ext2_inode_large *inode,
++ struct ext2_attr_info *i,
++ struct ext2_attr_ibody_find *is)
++{
++ __u32 *eamagic;
++ struct ext2_attr_search *s = &is->s;
++ errcode_t error;
++
++ if (EXT2_INODE_SIZE(fs->super) == EXT2_GOOD_OLD_INODE_SIZE)
++ return EXT2_ET_EA_NO_SPACE;
++
++ error = ext2fs_attr_set_entry(fs, i, s);
++ if (error)
++ return error;
++
++ eamagic = IHDR(inode);
++ if (!EXT2_EXT_IS_LAST_ENTRY(s->first))
++ *eamagic = EXT2_EXT_ATTR_MAGIC;
++ else
++ *eamagic = 0;
++
++ return ext2fs_write_inode_full(fs, is->ino, (struct ext2_inode *)inode,
++ EXT2_INODE_SIZE(fs->super));
++}
++
++static struct {
++ char str[28];
++ int len;
++} ext2_attr_index_prefix[] = {
++ [EXT2_ATTR_INDEX_USER] = { EXT2_ATTR_INDEX_USER_PREFIX,
++ sizeof(EXT2_ATTR_INDEX_USER_PREFIX) },
++ [EXT2_ATTR_INDEX_POSIX_ACL_ACCESS] =
++ { EXT2_ATTR_INDEX_POSIX_ACL_ACCESS_PREFIX,
++ sizeof(EXT2_ATTR_INDEX_POSIX_ACL_ACCESS_PREFIX) },
++ [EXT2_ATTR_INDEX_POSIX_ACL_DEFAULT] =
++ { EXT2_ATTR_INDEX_POSIX_ACL_DEFAULT_PREFIX,
++ sizeof(EXT2_ATTR_INDEX_POSIX_ACL_DEFAULT_PREFIX) },
++ [EXT2_ATTR_INDEX_TRUSTED] = { EXT2_ATTR_INDEX_TRUSTED_PREFIX,
++ sizeof(EXT2_ATTR_INDEX_TRUSTED_PREFIX) },
++ [EXT2_ATTR_INDEX_LUSTRE] = { EXT2_ATTR_INDEX_LUSTRE_PREFIX,
++ sizeof(EXT2_ATTR_INDEX_LUSTRE_PREFIX) },
++ [EXT2_ATTR_INDEX_SECURITY] = { EXT2_ATTR_INDEX_SECURITY_PREFIX,
++ sizeof(EXT2_ATTR_INDEX_SECURITY_PREFIX)},
++ { "", 0 }
++};
++
++errcode_t ext2fs_attr_set(ext2_filsys fs, ext2_ino_t ino,
++ struct ext2_inode *inode,
++ int name_index, const char *name, const char *value,
++ int value_len, int flags)
++{
++ struct ext2_inode_large *inode_large = NULL;
++ struct ext2_attr_info i = {
++ .name_index = name_index,
++ .name = name,
++ .value = value,
++ .value_len = value_len,
++ };
++ struct ext2_attr_ibody_find is = {
++ .ino = ino,
++ .s = { .not_found = -ENODATA, },
++ };
++ struct ext2_attr_block_find bs = {
++ .s = { .not_found = -ENODATA, },
++ };
++ errcode_t error;
++
++ if (!name)
++ return EXT2_ET_EA_BAD_NAME;
++ if (strlen(name) > 255)
++ return EXT2_ET_EA_NAME_TOO_BIG;
++
++ /* If the prefix is still present, skip it */
++ if (strncmp(name, ext2_attr_index_prefix[name_index].str,
++ ext2_attr_index_prefix[name_index].len) == 0)
++ i.name += ext2_attr_index_prefix[name_index].len;
++
++ if (EXT2_INODE_SIZE(fs->super) > EXT2_GOOD_OLD_INODE_SIZE) {
++ inode_large = (struct ext2_inode_large *)inode;
++
++ error = ext2fs_attr_ibody_find(fs, inode_large, &i, &is);
++ if (error)
++ goto cleanup;
++ }
++ if (is.s.not_found) {
++ error = ext2fs_attr_block_find(fs, inode, &i, &bs);
++ if (error)
++ goto cleanup;
++ }
++
++ if (is.s.not_found && bs.s.not_found) {
++ error = EXT2_ET_EA_NAME_NOT_FOUND;
++ if (flags & XATTR_REPLACE)
++ goto cleanup;
++ error = 0;
++ if (!value)
++ goto cleanup;
++ } else {
++ error = EXT2_ET_EA_NAME_EXISTS;
++ if (flags & XATTR_CREATE)
++ goto cleanup;
++ }
++
++ if (!value) {
++ if (!is.s.not_found &&
++ (EXT2_INODE_SIZE(fs->super) > EXT2_GOOD_OLD_INODE_SIZE))
++ error = ext2fs_attr_ibody_set(fs, inode_large, &i, &is);
++ else if (!bs.s.not_found)
++ error = ext2fs_attr_block_set(fs, inode, &i, &bs);
++ } else {
++ if (EXT2_INODE_SIZE(fs->super) > EXT2_GOOD_OLD_INODE_SIZE)
++ error = ext2fs_attr_ibody_set(fs, inode_large, &i, &is);
++ if (!error && !bs.s.not_found) {
++ i.value = NULL;
++ error = ext2fs_attr_block_set(fs, inode, &i, &bs);
++ } else if (error == EXT2_ET_EA_NO_SPACE) {
++ error = ext2fs_attr_block_set(fs, inode, &i, &bs);
++ if (error)
++ goto cleanup;
++ if (!is.s.not_found) {
++ i.value = NULL;
++ if (EXT2_INODE_SIZE(fs->super) >
++ EXT2_GOOD_OLD_INODE_SIZE)
++ error = ext2fs_attr_ibody_set(fs,
++ inode_large, &i, &is);
++ }
++ }
++ }
++
++cleanup:
++ return error;
++}
++
++static errcode_t ext2fs_attr_check_block(ext2_filsys fs, char *buffer)
++{
++ if (BHDR(buffer)->h_magic != (EXT2_EXT_ATTR_MAGIC) ||
++ BHDR(buffer)->h_blocks != 1)
++ return EXT2_ET_EA_BAD_MAGIC;
++
++ return ext2fs_attr_check_names((struct ext2_ext_attr_entry *)
++ (BHDR(buffer) + 1),
++ buffer + fs->blocksize);
++}
++
++static errcode_t ext2fs_attr_block_get(ext2_filsys fs, struct ext2_inode *inode,
++ int name_index, const char *name,
++ void *buffer, size_t buffer_size,
++ int *easize)
++{
++ struct ext2_ext_attr_header *header = NULL;
++ struct ext2_ext_attr_entry *entry;
++ char *block_buf = NULL;
++ errcode_t error;
++
++ error = EXT2_ET_EA_NAME_NOT_FOUND;
++ if (!inode->i_file_acl)
++ goto cleanup;
++
++ error = ext2fs_get_mem(fs->blocksize, &block_buf);
++ if (error)
++ return error;
++ error = ext2fs_read_ext_attr(fs, inode->i_file_acl, block_buf);
++ if (error)
++ goto cleanup;
++
++ error = ext2fs_attr_check_block(fs, block_buf);
++ if (error)
++ goto cleanup;
++
++ header = BHDR(block_buf);
++ entry = (struct ext2_ext_attr_entry *)(header+1);
++ error = ext2fs_attr_find_entry(&entry, name_index, name,
++ fs->blocksize, 1);
++ if (error)
++ goto cleanup;
++ if (easize)
++ *easize = entry->e_value_size;
++ if (buffer) {
++ error = EXT2_ET_EA_TOO_BIG;
++ if (entry->e_value_size > buffer_size)
++ goto cleanup;
++ memcpy(buffer, block_buf + entry->e_value_offs,
++ entry->e_value_size);
++ }
++
++cleanup:
++ if (block_buf)
++ ext2fs_free_mem (&block_buf);
++ return error;
++}
++
++static errcode_t ext2fs_attr_ibody_get(ext2_filsys fs,
++ struct ext2_inode_large *inode,
++ int name_index, const char *name,
++ void *buffer, size_t buffer_size,
++ int *easize)
++{
++ struct ext2_ext_attr_entry *entry;
++ int error;
++ char *end, *start;
++ __u32 *eamagic;
++
++ if (EXT2_INODE_SIZE(fs->super) == EXT2_GOOD_OLD_INODE_SIZE)
++ return EXT2_ET_EA_NAME_NOT_FOUND;
++
++ eamagic = IHDR(inode);
++ error = ext2fs_attr_check_block(fs, buffer);
++ if (error)
++ return error;
++
++ start = (char *)inode + EXT2_GOOD_OLD_INODE_SIZE +
++ inode->i_extra_isize + sizeof(__u32);
++ entry = (struct ext2_ext_attr_entry *)start;
++ end = (char *)inode + EXT2_INODE_SIZE(fs->super);
++ error = ext2fs_attr_check_names(entry, end);
++ if (error)
++ goto cleanup;
++ error = ext2fs_attr_find_entry(&entry, name_index, name,
++ end - (char *)entry, 0);
++ if (error)
++ goto cleanup;
++ if (easize)
++ *easize = entry->e_value_size;
++ if (buffer) {
++ error = EXT2_ET_EA_TOO_BIG;
++ if (entry->e_value_size > buffer_size)
++ goto cleanup;
++ memcpy(buffer, start + entry->e_value_offs,entry->e_value_size);
++ }
++
++cleanup:
++ return error;
++}
++
++
++errcode_t ext2fs_attr_get(ext2_filsys fs, struct ext2_inode *inode,
++ int name_index, const char *name, char *buffer,
++ size_t buffer_size, int *easize)
++{
++ errcode_t error;
++
++ error = ext2fs_attr_ibody_get(fs, (struct ext2_inode_large *)inode,
++ name_index, name, buffer, buffer_size,
++ easize);
++ if (error == EXT2_ET_EA_NAME_NOT_FOUND)
++ error = ext2fs_attr_block_get(fs, inode, name_index, name,
++ buffer, buffer_size, easize);
++
++ return error;
++}
++
++int ext2fs_attr_get_next_attr(struct ext2_ext_attr_entry *entry, int name_index,
++ char *buffer, int buffer_size, int start)
++{
++ const int prefix_len = ext2_attr_index_prefix[name_index].len;
++ int total_len;
++
++ if (!start && !EXT2_EXT_IS_LAST_ENTRY(entry))
++ entry = EXT2_EXT_ATTR_NEXT(entry);
++
++ for (; !EXT2_EXT_IS_LAST_ENTRY(entry);
++ entry = EXT2_EXT_ATTR_NEXT(entry)) {
++ if (!name_index)
++ break;
++ if (name_index == entry->e_name_index)
++ break;
++ }
++ if (EXT2_EXT_IS_LAST_ENTRY(entry))
++ return 0;
++
++ total_len = prefix_len + entry->e_name_len + 1;
++ if (buffer && total_len <= buffer_size) {
++ memcpy(buffer, ext2_attr_index_prefix[name_index].str,
++ prefix_len);
++ memcpy(buffer + prefix_len, entry->e_name, entry->e_name_len);
++ buffer[prefix_len + entry->e_name_len] = '\0';
++ }
++
++ return total_len;
++}
++
++errcode_t ext2fs_expand_extra_isize(ext2_filsys fs, ext2_ino_t ino,
++ struct ext2_inode_large *inode,
++ int new_extra_isize, int *ret,
++ int *needed_size)
++{
++ struct ext2_inode *inode_buf = NULL;
++ __u32 *eamagic = NULL;
++ struct ext2_ext_attr_header *header = NULL;
++ struct ext2_ext_attr_entry *entry = NULL, *last = NULL;
++ struct ext2_attr_ibody_find is = {
++ .ino = ino,
++ .s = { .not_found = EXT2_ET_EA_NO_SPACE, },
++ };
++ struct ext2_attr_block_find bs = {
++ .s = { .not_found = EXT2_ET_EA_NO_SPACE, },
++ };
++ char *start, *end, *block_buf = NULL, *buffer =NULL, *b_entry_name=NULL;
++ int total_ino = 0, total_blk, free, offs, tried_min_extra_isize = 0;
++ int s_min_extra_isize = fs->super->s_min_extra_isize;
++ errcode_t error = 0;
++
++ if (needed_size)
++ *needed_size = new_extra_isize;
++ error = ext2fs_get_mem(fs->blocksize, &block_buf);
++ if (error)
++ return error;
++
++ if (inode == NULL) {
++ error = ext2fs_get_mem(EXT2_INODE_SIZE(fs->super), &inode_buf);
++ if (error)
++ goto cleanup;
++
++ error = ext2fs_read_inode_full(fs, ino, inode_buf,
++ EXT2_INODE_SIZE(fs->super));
++ if (error)
++ goto cleanup;
++
++ inode = (struct ext2_inode_large *)inode_buf;
++ }
++
++retry:
++ if (inode->i_extra_isize >= new_extra_isize)
++ goto cleanup;
++
++ eamagic = IHDR(inode);
++ start = (char *)inode + EXT2_GOOD_OLD_INODE_SIZE + inode->i_extra_isize;
++ /* No extended attributes present */
++ if (*eamagic != EXT2_EXT_ATTR_MAGIC) {
++ memset(start, 0,
++ EXT2_INODE_SIZE(fs->super) - EXT2_GOOD_OLD_INODE_SIZE -
++ inode->i_extra_isize);
++ inode->i_extra_isize = new_extra_isize;
++ if (needed_size)
++ *needed_size = 0;
++ goto write_inode;
++ }
++
++ start += sizeof(__u32);
++ end = (char *)inode + EXT2_INODE_SIZE(fs->super);
++ last = entry = (struct ext2_ext_attr_entry *)start;
++ offs = end - start;
++ /* Consider space takenup by magic number */
++ total_ino = sizeof(__u32);
++ free = ext2fs_attr_free_space(last, &offs, start, &total_ino);
++
++ /* Enough free space available in the inode for expansion */
++ if (free >= new_extra_isize) {
++ ext2fs_attr_shift_entries(entry,
++ inode->i_extra_isize - new_extra_isize,
++ (char *)inode +EXT2_GOOD_OLD_INODE_SIZE+
++ new_extra_isize,
++ start - sizeof(__u32), total_ino);
++ inode->i_extra_isize = new_extra_isize;
++ if (needed_size)
++ *needed_size = 0;
++ goto write_inode;
++ }
++
++ if (inode->i_file_acl) {
++ error = ext2fs_read_ext_attr(fs, inode->i_file_acl, block_buf);
++ if (error)
++ goto cleanup;
++
++ header = BHDR(block_buf);
++ if (header->h_magic != EXT2_EXT_ATTR_MAGIC) {
++ error = EXT2_ET_EA_BAD_MAGIC;
++ goto cleanup;
++ }
++ end = block_buf + fs->blocksize;
++ last = entry = (struct ext2_ext_attr_entry *)(header+1);
++ start = (char *)entry;
++ offs = end - start;
++ free = ext2fs_attr_free_space(last, &offs, start, &total_blk);
++ if (free < new_extra_isize) {
++ if (!tried_min_extra_isize && s_min_extra_isize) {
++ tried_min_extra_isize++;
++ new_extra_isize = s_min_extra_isize;
++ goto retry;
++ }
++ if (ret)
++ *ret = EXT2_EXPAND_EISIZE_NOSPC;
++ error = EXT2_ET_EA_NO_SPACE;
++ goto cleanup;
++ }
++ } else {
++ if (ret && *ret == EXT2_EXPAND_EISIZE_UNSAFE) {
++ *ret = EXT2_EXPAND_EISIZE_NEW_BLOCK;
++ error = 0;
++ goto cleanup;
++ }
++ free = fs->blocksize;
++ }
++
++ while (new_extra_isize > 0) {
++ int offs, size, entry_size;
++ struct ext2_ext_attr_entry *small_entry = NULL;
++ struct ext2_attr_info i = {
++ .value = NULL,
++ .value_len = 0,
++ };
++ unsigned int total_size, shift_bytes, temp = ~0U, extra_isize=0;
++
++ start = (char *)inode + EXT2_GOOD_OLD_INODE_SIZE +
++ inode->i_extra_isize + sizeof(__u32);
++ end = (char *)inode + EXT2_INODE_SIZE(fs->super);
++ last = (struct ext2_ext_attr_entry *)start;
++
++ /* Find the entry best suited to be pushed into EA block */
++ entry = NULL;
++ for (; !EXT2_EXT_IS_LAST_ENTRY(last);
++ last = EXT2_EXT_ATTR_NEXT(last)) {
++ total_size = EXT2_EXT_ATTR_SIZE(last->e_value_size) +
++ EXT2_EXT_ATTR_LEN(last->e_name_len);
++ if (total_size <= free && total_size < temp) {
++ if (total_size < new_extra_isize) {
++ small_entry = last;
++ } else {
++ entry = last;
++ temp = total_size;
++ }
++ }
++ }
++
++ if (entry == NULL) {
++ if (small_entry) {
++ entry = small_entry;
++ } else {
++ if (!tried_min_extra_isize &&
++ s_min_extra_isize) {
++ tried_min_extra_isize++;
++ new_extra_isize = s_min_extra_isize;
++ goto retry;
++ }
++ if (ret)
++ *ret = EXT2_EXPAND_EISIZE_NOSPC;
++ error = EXT2_ET_EA_NO_SPACE;
++ goto cleanup;
++ }
++ }
++ offs = entry->e_value_offs;
++ size = entry->e_value_size;
++ entry_size = EXT2_EXT_ATTR_LEN(entry->e_name_len);
++ i.name_index = entry->e_name_index;
++ error = ext2fs_get_mem(size, &buffer);
++ if (error)
++ goto cleanup;
++ error = ext2fs_get_mem(entry->e_name_len + 1, &b_entry_name);
++ if (error)
++ goto cleanup;
++ /* Save the entry name and the entry value */
++ memcpy((char *)buffer, (char *)start + offs,
++ EXT2_EXT_ATTR_SIZE(size));
++ memcpy((char *)b_entry_name, (char *)entry->e_name,
++ entry->e_name_len);
++ b_entry_name[entry->e_name_len] = '\0';
++ i.name = b_entry_name;
++
++ error = ext2fs_attr_ibody_find(fs, inode, &i, &is);
++ if (error)
++ goto cleanup;
++
++ error = ext2fs_attr_set_entry(fs, &i, &is.s);
++ if (error)
++ goto cleanup;
++
++ entry = (struct ext2_ext_attr_entry *)start;
++ if (entry_size + EXT2_EXT_ATTR_SIZE(size) >= new_extra_isize)
++ shift_bytes = new_extra_isize;
++ else
++ shift_bytes = entry_size + EXT2_EXT_ATTR_SIZE(size);
++ ext2fs_attr_shift_entries(entry,
++ inode->i_extra_isize - shift_bytes,
++ (char *)inode +EXT2_GOOD_OLD_INODE_SIZE+
++ extra_isize + shift_bytes,
++ start - sizeof(__u32),
++ total_ino - entry_size);
++
++ extra_isize += shift_bytes;
++ new_extra_isize -= shift_bytes;
++ if (needed_size)
++ *needed_size = new_extra_isize;
++ inode->i_extra_isize = extra_isize;
++
++ i.name = b_entry_name;
++ i.value = buffer;
++ i.value_len = size;
++ error = ext2fs_attr_block_find(fs, (struct ext2_inode *)inode,
++ &i, &bs);
++ if (error)
++ goto cleanup;
++
++ /* Add entry which was removed from the inode into the block */
++ error = ext2fs_attr_block_set(fs, (struct ext2_inode *)inode,
++ &i, &bs);
++ if (error)
++ goto cleanup;
++ }
++
++write_inode:
++ error = ext2fs_write_inode_full(fs, ino, (struct ext2_inode *)inode,
++ EXT2_INODE_SIZE(fs->super));
++cleanup:
++ if (inode_buf)
++ ext2fs_free_mem(&inode_buf);
++ if (block_buf)
++ ext2fs_free_mem(&block_buf);
++ if (buffer)
++ ext2fs_free_mem(&buffer);
++ if (b_entry_name)
++ ext2fs_free_mem(&b_entry_name);
++
++ return error;
+ }
+Index: e2fsprogs/e2fsck/unix.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/unix.c
++++ e2fsprogs/e2fsck/unix.c
+@@ -670,6 +670,12 @@ static void parse_extended_opts(e2fsck_t
+ extended_usage++;
+ continue;
+ }
++ } else if (strcmp(token, "expand_extra_isize") == 0) {
++ ctx->flags |= E2F_FLAG_EXPAND_EISIZE;
++ if (arg) {
++ extended_usage++;
++ continue;
++ }
+ } else if (strcmp(token, "journal_only") == 0) {
+ if (arg) {
+ extended_usage++;
+@@ -702,6 +708,7 @@ static void parse_extended_opts(e2fsck_t
+ fputs(("\tnodiscard\n"), stderr);
+ fputs(("\tshared=<preserve|lost+found|delete>\n"), stderr);
+ fputs(("\tclone=<dup|zero>\n"), stderr);
++ fputs(("\texpand_extra_isize\n"), stderr);
+ fputc('\n', stderr);
+ exit(1);
+ }
+@@ -1420,6 +1427,54 @@ print_unsupp_features:
+ if (ctx->flags & E2F_FLAG_SIGNAL_MASK)
+ fatal_error(ctx, 0);
+ check_if_skip(ctx);
++
++ if (EXT2_GOOD_OLD_INODE_SIZE + sb->s_want_extra_isize >
++ EXT2_INODE_SIZE(sb)) {
++ if (fix_problem(ctx, PR_0_WANT_EXTRA_ISIZE_INVALID, &pctx))
++ sb->s_want_extra_isize = sizeof(struct ext2_inode_large) -
++ EXT2_GOOD_OLD_INODE_SIZE;
++ }
++ if (EXT2_GOOD_OLD_INODE_SIZE + sb->s_min_extra_isize >
++ EXT2_INODE_SIZE(sb)) {
++ if (fix_problem(ctx, PR_0_MIN_EXTRA_ISIZE_INVALID, &pctx))
++ sb->s_min_extra_isize = 0;
++ }
++ if (EXT2_INODE_SIZE(sb) > EXT2_GOOD_OLD_INODE_SIZE) {
++ ctx->want_extra_isize = sizeof(struct ext2_inode_large) -
++ EXT2_GOOD_OLD_INODE_SIZE;
++ ctx->min_extra_isize = ~0L;
++ if (EXT2_HAS_RO_COMPAT_FEATURE(sb,
++ EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE)) {
++ if (ctx->want_extra_isize < sb->s_want_extra_isize)
++ ctx->want_extra_isize = sb->s_want_extra_isize;
++ if (ctx->want_extra_isize < sb->s_min_extra_isize)
++ ctx->want_extra_isize = sb->s_min_extra_isize;
++ }
++ }
++ else {
++ if (sb->s_feature_ro_compat &
++ EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE) {
++ fix_problem(ctx, PR_0_CLEAR_EXTRA_ISIZE, &pctx);
++ sb->s_feature_ro_compat &=
++ ~EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE;
++ }
++ sb->s_want_extra_isize = 0;
++ sb->s_min_extra_isize = 0;
++ ctx->flags &= ~E2F_FLAG_EXPAND_EISIZE;
++ }
++
++ if (ctx->options & E2F_OPT_READONLY) {
++ if (ctx->flags & (E2F_FLAG_EXPAND_EISIZE)) {
++ fprintf(stderr, _("Cannot enable EXTRA_ISIZE feature "
++ "on read-only filesystem\n"));
++ exit(1);
++ }
++ } else {
++ if (sb->s_want_extra_isize > sb->s_min_extra_isize &&
++ (sb->s_feature_ro_compat & EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE))
++ ctx->flags |= E2F_FLAG_EXPAND_EISIZE;
++ }
++
+ check_resize_inode(ctx);
+ if (bad_blocks_file)
+ read_bad_blocks_file(ctx, bad_blocks_file, replace_bad_blocks);
+Index: e2fsprogs/lib/ext2fs/ext2_ext_attr.h
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/ext2_ext_attr.h
++++ e2fsprogs/lib/ext2fs/ext2_ext_attr.h
+@@ -15,6 +15,9 @@
+ /* Maximum number of references to one attribute block */
+ #define EXT2_EXT_ATTR_REFCOUNT_MAX 1024
+
++#define XATTR_CREATE 0x1 /* set value, fail if attr already exists */
++#define XATTR_REPLACE 0x2 /* set value, fail if attr does not exist */
++
+ struct ext2_ext_attr_header {
+ __u32 h_magic; /* magic number for identification */
+ __u32 h_refcount; /* reference count */
+@@ -30,11 +33,35 @@ struct ext2_ext_attr_entry {
+ __u32 e_value_block; /* disk block attribute is stored on (n/i) */
+ __u32 e_value_size; /* size of attribute value */
+ __u32 e_hash; /* hash value of name and value */
+-#if 0
++#if 1
+ char e_name[0]; /* attribute name */
+ #endif
+ };
+
++#define BHDR(block) ((struct ext2_ext_attr_header *)block)
++#define IHDR(inode) ((__u32 *)((char *)inode + EXT2_GOOD_OLD_INODE_SIZE + \
++ (inode)->i_extra_isize))
++#define ENTRY(ptr) ((struct ext2_ext_attr_entry *)(ptr))
++
++/* Name indexes */
++#define EXT2_ATTR_INDEX_USER 1
++#define EXT2_ATTR_INDEX_POSIX_ACL_ACCESS 2
++#define EXT2_ATTR_INDEX_POSIX_ACL_DEFAULT 3
++#define EXT2_ATTR_INDEX_TRUSTED 4
++#define EXT2_ATTR_INDEX_LUSTRE 5
++#define EXT2_ATTR_INDEX_SECURITY 6
++#define EXT2_ATTR_INDEX_MAX 7
++
++#define EXT2_ATTR_INDEX_USER_PREFIX "user."
++#define EXT2_ATTR_INDEX_POSIX_ACL_ACCESS_PREFIX "system.posix_acl_access"
++#define EXT2_ATTR_INDEX_POSIX_ACL_DEFAULT_PREFIX "system.posix_acl_default"
++#define EXT2_ATTR_INDEX_TRUSTED_PREFIX "trusted."
++#define EXT2_ATTR_INDEX_LUSTRE_PREFIX "lustre."
++#define EXT2_ATTR_INDEX_SECURITY_PREFIX "security."
++
++#define EXT2_ATTR_PREFIX(index) (index ## _PREFIX)
++#define EXT2_ATTR_PREFIX_LEN(index) (index ## _PRE_LEN)
++
+ #define EXT2_EXT_ATTR_PAD_BITS 2
+ #define EXT2_EXT_ATTR_PAD ((unsigned) 1<<EXT2_EXT_ATTR_PAD_BITS)
+ #define EXT2_EXT_ATTR_ROUND (EXT2_EXT_ATTR_PAD-1)
+Index: e2fsprogs/e2fsck/e2fsck.h
+===================================================================
+--- e2fsprogs.orig/e2fsck/e2fsck.h
++++ e2fsprogs/e2fsck/e2fsck.h
+@@ -179,6 +179,7 @@ struct resource_track {
+ #define E2F_FLAG_GOT_DEVSIZE 0x0800 /* Device size has been fetched */
+ #define E2F_FLAG_EXITING 0x1000 /* E2fsck exiting due to errors */
+ #define E2F_FLAG_TIME_INSANE 0x2000 /* Time is insane */
++#define E2F_FLAG_EXPAND_EISIZE 0x4000 /* Expand the inodes (i_extra_isize) */
+
+ #define E2F_RESET_FLAGS (E2F_FLAG_TIME_INSANE)
+
+@@ -362,6 +363,15 @@ struct e2fsck_struct {
+ profile_t profile;
+ int blocks_per_page;
+
++ /* Expand large inodes to atleast these many bytes */
++ int want_extra_isize;
++ /* minimum i_extra_isize found in used inodes. Should not be lesser
++ * than s_min_extra_isize.
++ */
++ __u32 min_extra_isize;
++ int fs_unexpanded_inodes;
++ ext2fs_inode_bitmap expand_eisize_map;
++
+ /*
+ * For the use of callers of the e2fsck functions; not used by
+ * e2fsck functions themselves.
+Index: e2fsprogs/lib/ext2fs/ext2_fs.h
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/ext2_fs.h
++++ e2fsprogs/lib/ext2fs/ext2_fs.h
+@@ -430,6 +430,12 @@ struct ext2_inode_large {
+
+ #define i_dir_acl i_size_high
+
++#define EXT2_FITS_IN_INODE(inode, field) \
++ ((offsetof(struct ext2_inode_large, field) + \
++ sizeof((inode)->field)) <= \
++ (EXT2_GOOD_OLD_INODE_SIZE + \
++ (inode)->i_extra_isize)) \
++
+ #if defined(__KERNEL__) || defined(__linux__)
+ #define i_reserved1 osd1.linux1.l_i_reserved1
+ #define i_frag osd2.linux2.l_i_frag
+@@ -694,6 +700,7 @@ struct ext2_super_block {
+ #define EXT2_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \
+ EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \
+ EXT4_FEATURE_RO_COMPAT_DIR_NLINK| \
++ EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE| \
+ EXT2_FEATURE_RO_COMPAT_BTREE_DIR)
+
+ /*
+Index: e2fsprogs/e2fsck/pass1.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/pass1.c
++++ e2fsprogs/e2fsck/pass1.c
+@@ -23,6 +23,7 @@
+ * - A bitmap of which inodes have bad fields. (inode_bad_map)
+ * - A bitmap of which inodes are in bad blocks. (inode_bb_map)
+ * - A bitmap of which inodes are imagic inodes. (inode_imagic_map)
++ * - A bitmap of which inodes need to be expanded (expand_eisize_map)
+ * - A bitmap of which blocks are in use. (block_found_map)
+ * - A bitmap of which blocks are in use by two inodes (block_dup_map)
+ * - The data blocks of the directory inodes. (dir_map)
+@@ -382,18 +383,30 @@ static void check_inode_extra_space(e2fs
+ (inode->i_extra_isize < min || inode->i_extra_isize > max)) {
+ if (!fix_problem(ctx, PR_1_EXTRA_ISIZE, pctx))
+ return;
+- inode->i_extra_isize = min;
++ inode->i_extra_isize = ctx->want_extra_isize;
+ e2fsck_write_inode_full(ctx, pctx->ino, pctx->inode,
+ EXT2_INODE_SIZE(sb), "pass1");
+ return;
+ }
+
+- eamagic = (__u32 *) (((char *) inode) + EXT2_GOOD_OLD_INODE_SIZE +
+- inode->i_extra_isize);
+- if (*eamagic == EXT2_EXT_ATTR_MAGIC) {
+- /* it seems inode has an extended attribute(s) in body */
+- check_ea_in_inode(ctx, pctx);
++ eamagic = IHDR(inode);
++ if (*eamagic != EXT2_EXT_ATTR_MAGIC &&
++ (ctx->flags & E2F_FLAG_EXPAND_EISIZE) &&
++ (inode->i_extra_isize < ctx->want_extra_isize)) {
++ fix_problem(ctx, PR_1_EXPAND_EISIZE, pctx);
++ memset((char *)inode + EXT2_GOOD_OLD_INODE_SIZE, 0,
++ EXT2_INODE_SIZE(sb) - EXT2_GOOD_OLD_INODE_SIZE);
++ inode->i_extra_isize = ctx->want_extra_isize;
++ e2fsck_write_inode_full(ctx, pctx->ino,
++ (struct ext2_inode *)inode,
++ EXT2_INODE_SIZE(sb),
++ "check_inode_extra_space");
++ if (inode->i_extra_isize < ctx->min_extra_isize)
++ ctx->min_extra_isize = inode->i_extra_isize;
+ }
++
++ if (*eamagic == EXT2_EXT_ATTR_MAGIC)
++ check_ea_in_inode(ctx, pctx);
+ }
+
+ /*
+@@ -547,6 +560,151 @@ extern void e2fsck_setup_tdb_icount(e2fs
+ *ret = 0;
+ }
+
++int e2fsck_pass1_delete_attr(e2fsck_t ctx, struct ext2_inode_large *inode,
++ struct problem_context *pctx, int needed_size)
++{
++ struct ext2_ext_attr_header *header;
++ struct ext2_ext_attr_entry *entry_ino, *entry_blk = NULL, *entry;
++ char *start, name[4096], block_buf[4096];
++ int len, index = EXT2_ATTR_INDEX_USER, entry_size, ea_size;
++ int in_inode = 1, error;
++ unsigned int freed_bytes = inode->i_extra_isize;
++
++ start = (char *)inode + EXT2_GOOD_OLD_INODE_SIZE +
++ inode->i_extra_isize + sizeof(__u32);
++ entry_ino = (struct ext2_ext_attr_entry *)start;
++
++ if (inode->i_file_acl) {
++ error = ext2fs_read_ext_attr(ctx->fs, inode->i_file_acl,
++ block_buf);
++ /* We have already checked this block, shouldn't happen */
++ if (error) {
++ fix_problem(ctx, PR_1_EXTATTR_READ_ABORT, pctx);
++ return 0;
++ }
++ header = BHDR(block_buf);
++ if (header->h_magic != EXT2_EXT_ATTR_MAGIC) {
++ fix_problem(ctx, PR_1_EXTATTR_READ_ABORT, pctx);
++ return 0;
++ }
++
++ entry_blk = (struct ext2_ext_attr_entry *)(header+1);
++ }
++ entry = entry_ino;
++ len = sizeof(entry->e_name);
++ entry_size = ext2fs_attr_get_next_attr(entry, index, name, len, 1);
++
++ while (freed_bytes < needed_size) {
++ if (entry_size && name[0] != '\0') {
++ pctx->str = name;
++ if (fix_problem(ctx, PR_1_EISIZE_DELETE_EA, pctx)) {
++ ea_size = EXT2_EXT_ATTR_LEN(entry->e_name_len) +
++ EXT2_EXT_ATTR_SIZE(entry->e_value_size);
++ error = ext2fs_attr_set(ctx->fs, pctx->ino,
++ (struct ext2_inode *)inode,
++ index, name, 0,0,0);
++ if (!error)
++ freed_bytes += ea_size;
++ }
++ }
++ len = sizeof(entry->e_name);
++ entry_size = ext2fs_attr_get_next_attr(entry, index,name,len,0);
++ entry = EXT2_EXT_ATTR_NEXT(entry);
++ if (EXT2_EXT_IS_LAST_ENTRY(entry)) {
++ if (in_inode) {
++ entry = entry_blk;
++ len = sizeof(entry->e_name);
++ entry_size = ext2fs_attr_get_next_attr(entry,
++ index, name, len, 1);
++ in_inode = 0;
++ } else {
++ index += 1;
++ in_inode = 1;
++ if (!entry && index < EXT2_ATTR_INDEX_MAX)
++ entry = (struct ext2_ext_attr_entry *)start;
++ else
++ return freed_bytes;
++ }
++ }
++ }
++
++ return freed_bytes;
++}
++
++int e2fsck_pass1_expand_eisize(e2fsck_t ctx, struct ext2_inode_large *inode,
++ struct problem_context *pctx)
++{
++ int needed_size = 0, retval, ret = EXT2_EXPAND_EISIZE_UNSAFE;
++ static int message;
++
++retry:
++ retval = ext2fs_expand_extra_isize(ctx->fs, pctx->ino, inode,
++ ctx->want_extra_isize, &ret,
++ &needed_size);
++ if (ret & EXT2_EXPAND_EISIZE_NEW_BLOCK)
++ goto mark_expand_eisize_map;
++ if (!retval) {
++ e2fsck_write_inode_full(ctx, pctx->ino,
++ (struct ext2_inode *)inode,
++ EXT2_INODE_SIZE(ctx->fs->super),
++ "pass1");
++ return 0;
++ }
++
++ if (ret & EXT2_EXPAND_EISIZE_NOSPC) {
++ if (ctx->options & (E2F_OPT_PREEN | E2F_OPT_YES)) {
++ fix_problem(ctx, PR_1_EA_BLK_NOSPC, pctx);
++ ctx->flags |= E2F_FLAG_ABORT;
++ return -1;
++ }
++
++ if (!message) {
++ pctx->num = ctx->fs->super->s_min_extra_isize;
++ fix_problem(ctx, PR_1_EXPAND_EISIZE_WARNING, pctx);
++ message = 1;
++ }
++delete_EA:
++ retval = e2fsck_pass1_delete_attr(ctx, inode, pctx,
++ needed_size);
++ if (retval >= ctx->want_extra_isize)
++ goto retry;
++
++ needed_size -= retval;
++
++ /*
++ * We loop here until either the user deletes EA(s) or
++ * EXTRA_ISIZE feature is disabled.
++ */
++ if (fix_problem(ctx, PR_1_CLEAR_EXTRA_ISIZE, pctx)) {
++ ctx->fs->super->s_feature_ro_compat &=
++ ~EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE;
++ ext2fs_mark_super_dirty(ctx->fs);
++ } else {
++ goto delete_EA;
++ }
++ ctx->fs_unexpanded_inodes++;
++
++ /* No EA was deleted, inode cannot be expanded */
++ return -1;
++ }
++
++mark_expand_eisize_map:
++ if (!ctx->expand_eisize_map) {
++ pctx->errcode = ext2fs_allocate_inode_bitmap(ctx->fs,
++ _("expand extrz isize map"),
++ &ctx->expand_eisize_map);
++ if (pctx->errcode) {
++ fix_problem(ctx, PR_1_ALLOCATE_IBITMAP_ERROR,
++ pctx);
++ exit(1);
++ }
++ }
++
++ /* Add this inode to the expand_eisize_map */
++ ext2fs_mark_inode_bitmap2(ctx->expand_eisize_map, pctx->ino);
++ return 0;
++}
++
+ void e2fsck_pass1(e2fsck_t ctx)
+ {
+ int i;
+@@ -567,6 +725,8 @@ void e2fsck_pass1(e2fsck_t ctx)
+ int imagic_fs, extent_fs;
+ int busted_fs_time = 0;
+ int inode_size;
++ int inode_exp = 0;
++
+
+ init_resource_track(&rtrack, ctx->fs->io);
+ clear_problem_context(&pctx);
+@@ -1085,6 +1245,22 @@ void e2fsck_pass1(e2fsck_t ctx)
+ } else
+ check_blocks(ctx, &pctx, block_buf);
+
++ if (ctx->flags & E2F_FLAG_EXPAND_EISIZE) {
++ struct ext2_inode_large *inode_l;
++
++ inode_l = (struct ext2_inode_large *)inode;
++
++ if (inode_l->i_extra_isize < ctx->want_extra_isize) {
++ fix_problem(ctx, PR_1_EXPAND_EISIZE, &pctx);
++ inode_exp = e2fsck_pass1_expand_eisize(ctx,
++ inode_l,
++ &pctx);
++ }
++ if ((inode_l->i_extra_isize < ctx->min_extra_isize) &&
++ inode_exp == 0)
++ ctx->min_extra_isize = inode_l->i_extra_isize;
++ }
++
+ if (ctx->flags & E2F_FLAG_SIGNAL_MASK)
+ return;
+
+@@ -1389,11 +1565,17 @@ static void adjust_extattr_refcount(e2fs
+ break;
+ pctx.blk = blk;
+ pctx.errcode = ext2fs_read_ext_attr2(fs, blk, block_buf);
++ /* We already checked this block, shouldn't happen */
+ if (pctx.errcode) {
+ fix_problem(ctx, PR_1_EXTATTR_READ_ABORT, &pctx);
+ return;
+ }
+- header = (struct ext2_ext_attr_header *) block_buf;
++ header = BHDR(block_buf);
++ if (header->h_magic != EXT2_EXT_ATTR_MAGIC) {
++ fix_problem(ctx, PR_1_EXTATTR_READ_ABORT, &pctx);
++ return;
++ }
++
+ pctx.blkcount = header->h_refcount;
+ should_be = header->h_refcount + adjust_sign * count;
+ pctx.num = should_be;
+@@ -1500,7 +1682,7 @@ static int check_ext_attr(e2fsck_t ctx,
+ pctx->errcode = ext2fs_read_ext_attr2(fs, blk, block_buf);
+ if (pctx->errcode && fix_problem(ctx, PR_1_READ_EA_BLOCK, pctx))
+ goto clear_extattr;
+- header = (struct ext2_ext_attr_header *) block_buf;
++ header = BHDR(block_buf);
+ pctx->blk = ext2fs_file_acl_block(inode);
+ if (((ctx->ext_attr_ver == 1) &&
+ (header->h_magic != EXT2_EXT_ATTR_MAGIC_v1)) ||
+Index: e2fsprogs/lib/ext2fs/ext2fs.h
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/ext2fs.h
++++ e2fsprogs/lib/ext2fs/ext2fs.h
+@@ -509,6 +509,12 @@ typedef struct ext2_icount *ext2_icount_
+ #define EXT2_CHECK_MAGIC(struct, code) \
+ if ((struct)->magic != (code)) return (code)
+
++/*
++ * Flags for returning status of ext2fs_expand_extra_isize()
++ */
++#define EXT2_EXPAND_EISIZE_UNSAFE 0x0001
++#define EXT2_EXPAND_EISIZE_NEW_BLOCK 0x0002
++#define EXT2_EXPAND_EISIZE_NOSPC 0x0004
+
+ /*
+ * For ext2 compression support
+@@ -975,6 +981,16 @@ extern errcode_t ext2fs_expand_dir(ext2_
+ /* ext_attr.c */
+ extern __u32 ext2fs_ext_attr_hash_entry(struct ext2_ext_attr_entry *entry,
+ void *data);
++int ext2fs_attr_get_next_attr(struct ext2_ext_attr_entry *entry, int name_index,
++ char *buffer, int buffer_size, int start);
++errcode_t ext2fs_attr_set(ext2_filsys fs, ext2_ino_t ino,
++ struct ext2_inode *inode,
++ int name_index, const char *name, const char *value,
++ int value_len, int flags);
++extern errcode_t ext2fs_expand_extra_isize(ext2_filsys fs, ext2_ino_t ino,
++ struct ext2_inode_large *inode,
++ int new_extra_isize, int *ret,
++ int *needed_size);
+ extern errcode_t ext2fs_read_ext_attr(ext2_filsys fs, blk_t block, void *buf);
+ extern errcode_t ext2fs_read_ext_attr2(ext2_filsys fs, blk64_t block,
+ void *buf);
+Index: e2fsprogs/e2fsck/problem.h
+===================================================================
+--- e2fsprogs.orig/e2fsck/problem.h
++++ e2fsprogs/e2fsck/problem.h
+@@ -229,6 +229,16 @@ struct problem_context {
+ #define PR_0_GDT_CSUM_LATCH 0x00003E
+
+
++/* Invalid s_min_extra_isize */
++#define PR_0_MIN_EXTRA_ISIZE_INVALID 0x000040
++
++/* Invalid s_want_extra_isize */
++#define PR_0_WANT_EXTRA_ISIZE_INVALID 0x000041
++
++/* Clear EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE flag */
++#define PR_0_CLEAR_EXTRA_ISIZE 0x000042
++
++
+ /*
+ * Pass 1 errors
+ */
+@@ -533,6 +543,25 @@ struct problem_context {
+ /* eh_depth for in-inode header is bad */
+ #define PR_1_EXTENT_EH_DEPTH_BAD 0x010064
+
++/* Warning for user that all inodes need to be expanded atleast by
++ * s_min_extra_isize
++ */
++#define PR_1_EXPAND_EISIZE_WARNING 0x010068
++
++/* Expand the inode */
++#define PR_1_EXPAND_EISIZE 0x010069
++
++/* Delete an EA so that EXTRA_ISIZE may be enabled */
++#define PR_1_EISIZE_DELETE_EA 0x01006A
++
++/* An EA needs to be deleted by e2fsck is being run with -p or -y */
++#define PR_1_EA_BLK_NOSPC 0x01006B
++
++/* Disable EXTRA_ISIZE feature as inode cannot be expanded
++ * without deletion of an EA
++ */
++#define PR_1_CLEAR_EXTRA_ISIZE 0x01006C
++
+ /*
+ * Pass 1b errors
+ */
+@@ -1003,6 +1032,9 @@ struct problem_context {
+ /* Inode in use but group is marked INODE_UNINIT */
+ #define PR_5_INODE_UNINIT 0x050019
+
++/* Expand the inodes which need a new EA block */
++#define PR_5_EXPAND_EISIZE 0x05001a
++
+ /*
+ * Post-Pass 5 errors
+ */
+Index: e2fsprogs/e2fsck/problem.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/problem.c
++++ e2fsprogs/e2fsck/problem.c
+@@ -402,6 +402,19 @@ static struct e2fsck_problem problem_tab
+ N_("One or more @b @g descriptor checksums are invalid. "),
+ PROMPT_FIX, PR_PREEN_OK },
+
++ { PR_0_MIN_EXTRA_ISIZE_INVALID,
++ N_("@S has invalid s_min_extra_isize. "),
++ PROMPT_FIX, PR_PREEN_OK },
++
++ { PR_0_WANT_EXTRA_ISIZE_INVALID,
++ N_("@S has invalid s_want_extra_isize. "),
++ PROMPT_FIX, PR_PREEN_OK },
++
++ { PR_0_CLEAR_EXTRA_ISIZE,
++ N_("Disable extra_isize feature since @f has 128 byte inodes.\n"),
++ PROMPT_NONE, 0 },
++
++
+ /* Pass 1 errors */
+
+ /* Pass 1: Checking inodes, blocks, and sizes */
+@@ -910,6 +923,38 @@ static struct e2fsck_problem problem_tab
+ N_("@i %i has extent header with incorrect eh_depth\n"),
+ PROMPT_FIX, 0 },
+
++ /* expand inode */
++ { PR_1_EXPAND_EISIZE_WARNING,
++ N_("\ne2fsck is being run with \"expand_extra_isize\" option or\n"
++ "s_min_extra_isize of %d bytes has been set in the superblock.\n"
++ "Inode %i does not have enough free space. Either some EAs\n"
++ "need to be deleted from this inode or the RO_COMPAT_EXTRA_ISIZE\n"
++ "flag must be cleared.\n\n"), PROMPT_NONE, PR_PREEN_OK | PR_NO_OK |
++ PR_PREEN_NOMSG },
++
++ /* expand inode */
++ { PR_1_EXPAND_EISIZE,
++ N_("Expanding @i %i.\n"),
++ PROMPT_NONE, PR_PREEN_OK | PR_NO_OK | PR_PREEN_NOMSG },
++
++ /* delete an EA so that EXTRA_ISIZE feature may be enabled */
++ { PR_1_EISIZE_DELETE_EA,
++ N_("Delete EA %s of @i %i so that EXTRA_ISIZE feature may be "
++ "enabled?\n"), PROMPT_FIX, PR_NO_OK | PR_PREEN_NO },
++
++ /* an EA needs to be deleted by e2fsck is being run with -p or -y */
++ { PR_1_EA_BLK_NOSPC,
++ N_("An EA needs to be deleted for @i %i but e2fsck is being run\n"
++ "with -p or -y mode.\n"),
++ PROMPT_ABORT, 0 },
++
++ /* disable EXTRA_ISIZE feature since inode cannot be expanded */
++ { PR_1_CLEAR_EXTRA_ISIZE,
++ N_("Disable EXTRA_ISIZE feature since @i %i cannot be expanded\n"
++ "without deletion of an EA.\n"),
++ PROMPT_FIX, 0 },
++
++
+ /* Pass 1b errors */
+
+ /* Pass 1B: Rescan for duplicate/bad blocks */
+@@ -1657,6 +1702,11 @@ static struct e2fsck_problem problem_tab
+ N_("@g %g @i(s) in use but @g is marked INODE_UNINIT\n"),
+ PROMPT_FIX, PR_PREEN_OK },
+
++ /* Expand inode */
++ { PR_5_EXPAND_EISIZE,
++ N_("Expanding @i %i.\n"),
++ PROMPT_NONE, PR_PREEN_OK | PR_NO_OK | PR_PREEN_NOMSG },
++
+ /* Post-Pass 5 errors */
+
+ /* Recreate journal if E2F_FLAG_JOURNAL_INODE flag is set */
+Index: e2fsprogs/e2fsck/e2fsck.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/e2fsck.c
++++ e2fsprogs/e2fsck/e2fsck.c
+@@ -158,6 +158,7 @@ errcode_t e2fsck_reset_context(e2fsck_t
+ ctx->fs_fragmented = 0;
+ ctx->fs_fragmented_dir = 0;
+ ctx->large_files = 0;
++ ctx->fs_unexpanded_inodes = 0;
+
+ for (i=0; i < MAX_EXTENT_DEPTH_COUNT; i++)
+ ctx->extent_depth_count[i] = 0;
+Index: e2fsprogs/e2fsck/pass5.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/pass5.c
++++ e2fsprogs/e2fsck/pass5.c
+@@ -70,6 +70,42 @@ void e2fsck_pass5(e2fsck_t ctx)
+ ext2fs_free_block_bitmap(ctx->block_found_map);
+ ctx->block_found_map = 0;
+
++ if (ctx->flags & E2F_FLAG_EXPAND_EISIZE) {
++ int min_extra_isize;
++
++ if (!ctx->expand_eisize_map)
++ goto set_min_extra_isize;
++
++ for (pctx.ino = 1; pctx.ino < ctx->fs->super->s_inodes_count;
++ pctx.ino++) {
++ if (ext2fs_test_inode_bitmap2(ctx->expand_eisize_map,
++ pctx.ino)) {
++ fix_problem(ctx, PR_5_EXPAND_EISIZE, &pctx);
++ ext2fs_expand_extra_isize(ctx->fs, pctx.ino, 0,
++ ctx->want_extra_isize,
++ NULL, NULL);
++ }
++ }
++ ext2fs_free_inode_bitmap(ctx->expand_eisize_map);
++
++set_min_extra_isize:
++ if (ctx->fs->super->s_min_extra_isize)
++ min_extra_isize = ctx->fs->super->s_min_extra_isize;
++ else
++ min_extra_isize = ctx->want_extra_isize;
++ if (ctx->min_extra_isize >= min_extra_isize &&
++ !ctx->fs_unexpanded_inodes) {
++ ctx->fs->super->s_min_extra_isize =ctx->min_extra_isize;
++ ctx->fs->super->s_feature_ro_compat |=
++ EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE;
++ } else {
++ ctx->fs->super->s_min_extra_isize = 0;
++ ctx->fs->super->s_feature_ro_compat &=
++ ~EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE;
++ }
++ ext2fs_mark_super_dirty(ctx->fs);
++ }
++
+ print_resource_track(ctx, _("Pass 5"), &rtrack, ctx->fs->io);
+ }
+
+@@ -707,10 +743,10 @@ static void check_inode_end(e2fsck_t ctx
+
+ /* protect loop from wrap-around if end is maxed */
+ for (i = save_inodes_count + 1; i <= end && i > save_inodes_count; i++) {
+- if (!ext2fs_test_inode_bitmap(fs->inode_map, i)) {
++ if (!ext2fs_test_inode_bitmap2(fs->inode_map, i)) {
+ if (fix_problem(ctx, PR_5_INODE_BMAP_PADDING, &pctx)) {
+ for (; i <= end; i++)
+- ext2fs_mark_inode_bitmap(fs->inode_map,
++ ext2fs_mark_inode_bitmap2(fs->inode_map,
+ i);
+ ext2fs_mark_ib_dirty(fs);
+ } else
+Index: e2fsprogs/lib/ext2fs/ext2_err.et.in
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/ext2_err.et.in
++++ e2fsprogs/lib/ext2fs/ext2_err.et.in
+@@ -422,4 +422,28 @@ ec EXT2_NO_MTAB_FILE,
+ ec EXT2_ET_CANT_USE_LEGACY_BITMAPS,
+ "Filesystem too large to use legacy bitmaps"
+
++ec EXT2_ET_EA_BAD_MAGIC,
++ "Extended attribute block has bad magic value"
++
++ec EXT2_ET_EA_BAD_ENTRIES,
++ "Extended attribute block has bad entries"
++
++ec EXT2_ET_EA_NO_SPACE,
++ "No free space for extended attribute"
++
++ec EXT2_ET_EA_TOO_BIG,
++ "Extended attribute too big for buffer"
++
++ec EXT2_ET_EA_NAME_TOO_BIG,
++ "Extended attribute name too big for header"
++
++ec EXT2_ET_EA_BAD_NAME,
++ "Extended attribute name is bad"
++
++ec EXT2_ET_EA_NAME_NOT_FOUND,
++ "Extended attribute name not found"
++
++ec EXT2_ET_EA_NAME_EXISTS,
++ "Extended attribute name already exists"
++
+ end
+Index: e2fsprogs/tests/f_illitable_flexbg/expect.1
+===================================================================
+--- e2fsprogs.orig/tests/f_illitable_flexbg/expect.1
++++ e2fsprogs/tests/f_illitable_flexbg/expect.1
+@@ -9,6 +9,7 @@ Relocate? yes
+ Group descriptor 1 checksum is invalid. FIXED.
+ Group descriptor 2 checksum is invalid. FIXED.
+ Group descriptor 3 checksum is invalid. FIXED.
++Disable extra_isize feature since filesystem has 128 byte inodes.
+ Pass 1: Checking inodes, blocks, and sizes
+ Relocating group 1's inode table to 142...
+ Restarting e2fsck from the beginning...
+Index: e2fsprogs/tests/f_unused_itable/expect.1
+===================================================================
+--- e2fsprogs.orig/tests/f_unused_itable/expect.1
++++ e2fsprogs/tests/f_unused_itable/expect.1
+@@ -1,3 +1,4 @@
++Disable extra_isize feature since filesystem has 128 byte inodes.
+ Pass 1: Checking inodes, blocks, and sizes
+ Pass 2: Checking directory structure
+ Entry 'foo' in / (2) references inode 65 found in group 1's unused inodes area.
+Index: e2fsprogs/e2fsck/emptydir.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/emptydir.c
++++ e2fsprogs/e2fsck/emptydir.c
+@@ -98,9 +98,9 @@ void add_empty_dirblock(empty_dir_info e
+ db->blk, db->blockcnt, db->ino);
+
+ ext2fs_mark_block_bitmap2(edi->empty_dir_blocks, db->blk);
+- if (ext2fs_test_inode_bitmap(edi->dir_map, db->ino))
++ if (ext2fs_test_inode_bitmap2(edi->dir_map, db->ino))
+ return;
+- ext2fs_mark_inode_bitmap(edi->dir_map, db->ino);
++ ext2fs_mark_inode_bitmap2(edi->dir_map, db->ino);
+
+ ext2fs_add_dir_block2(edi->empty_dblist, db->ino,
+ db->blk, db->blockcnt);
--- /dev/null
+Minor reformatting patch to make applying later patches easier.
+
+Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
+
+Index: e2fsprogs/e2fsck/unix.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/unix.c
++++ e2fsprogs/e2fsck/unix.c
+@@ -587,14 +587,13 @@ static void parse_extended_opts(e2fsck_t
+ continue;
+ }
+ ea_ver = strtoul(arg, &p, 0);
+- if (*p ||
+- ((ea_ver != 1) && (ea_ver != 2))) {
+- fprintf(stderr,
+- _("Invalid EA version.\n"));
++ if (*p == '\0' && (ea_ver == 1 || ea_ver == 2)) {
++ ctx->ext_attr_ver = ea_ver;
++ } else {
++ fprintf(stderr, _("Invalid EA version.\n"));
+ extended_usage++;
+ continue;
+ }
+- ctx->ext_attr_ver = ea_ver;
+ } else if (strcmp(token, "fragcheck") == 0) {
+ ctx->options |= E2F_OPT_FRAGCHECK;
+ continue;
--- /dev/null
+The e2fsck_ext2fs_extent_get() part of this patch is a workaround to
+handle problems with old Lustre extents patches that didn't clear
+the ee_start_hi or ei_leaf_hi fields.
+
+That has been fixed for long time and could be removed as soon as the
+f_extent_* tests are fixed to clear these _hi fields. Otherwise the
+extents are all marked as corrupt and it ruins those tests value.
+
+Index: e2fsprogs/e2fsck/pass1.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/pass1.c
++++ e2fsprogs/e2fsck/pass1.c
+@@ -138,7 +138,7 @@ int e2fsck_pass1_check_device_inode(ext2
+ * If the index flag is set, then this is a bogus
+ * device/fifo/socket
+ */
+- if (inode->i_flags & EXT2_INDEX_FL)
++ if (inode->i_flags & (EXT2_INDEX_FL | EXT4_EXTENTS_FL))
+ return 0;
+
+ /*
+@@ -175,7 +175,7 @@ int e2fsck_pass1_check_symlink(ext2_fils
+ struct ext2fs_extent extent;
+
+ if ((inode->i_size_high || inode->i_size == 0) ||
+- (inode->i_flags & EXT2_INDEX_FL))
++ (inode->i_flags & (EXT2_INDEX_FL | EXT4_EXTENTS_FL)))
+ return 0;
+
+ if (inode->i_flags & EXT4_EXTENTS_FL) {
+@@ -1054,8 +1054,7 @@ void e2fsck_pass1(e2fsck_t ctx)
+ check_blocks(ctx, &pctx, block_buf);
+ continue;
+ }
+- }
+- else if (LINUX_S_ISFIFO (inode->i_mode) &&
++ } else if (LINUX_S_ISFIFO (inode->i_mode) &&
+ e2fsck_pass1_check_device_inode(fs, inode)) {
+ check_immutable(ctx, &pctx);
+ check_size(ctx, &pctx);
+@@ -1678,6 +1677,34 @@ void e2fsck_clear_inode(e2fsck_t ctx, ex
+ e2fsck_write_inode(ctx, ino, inode, source);
+ }
+
++/* Workaround to handle problems with old Lustre extents patches that didn't
++ * clear the ee_start_hi or ei_leaf_hi fields. Could be removed as soon as
++ * the f_extent tests are fixed to clear these _hi fields. */
++static errcode_t e2fsck_ext2fs_extent_get(e2fsck_t ctx, struct problem_context *pctx,
++ ext2_extent_handle_t ehandle, int flags,
++ struct ext2fs_extent *extent)
++{
++ __u16 blk_hi;
++ int high_bits_ok = ext2fs_blocks_count(ctx->fs->super) > 0xffffffffULL;
++ int rc = 0;
++
++ rc = ext2fs_extent_get(ehandle, flags, extent);
++ if (rc)
++ return rc;
++
++ blk_hi = extent->e_pblk >> 32;
++
++ if (blk_hi && !high_bits_ok &&
++ fix_problem(ctx, PR_1_EXTENT_HI, pctx)) {
++ extent->e_pblk &= 0xFFFFFFFFULL;
++ rc = ext2fs_extent_replace(ehandle, 0, extent);
++ if (rc)
++ return rc;
++ }
++
++ return rc;
++}
++
+ static void scan_extent_node(e2fsck_t ctx, struct problem_context *pctx,
+ struct process_block_struct *pb,
+ blk64_t start_block,
+@@ -1695,8 +1722,8 @@ static void scan_extent_node(e2fsck_t ct
+ if (pctx->errcode)
+ return;
+
+- pctx->errcode = ext2fs_extent_get(ehandle, EXT2_EXTENT_FIRST_SIB,
+- &extent);
++ pctx->errcode = e2fsck_ext2fs_extent_get(ctx, pctx, ehandle,
++ EXT2_EXTENT_FIRST_SIB, &extent);
+ while (!pctx->errcode && info.num_entries-- > 0) {
+ is_leaf = extent.e_flags & EXT2_EXTENT_FLAGS_LEAF;
+ is_dir = LINUX_S_ISDIR(pctx->inode->i_mode);
+@@ -1726,9 +1753,9 @@ static void scan_extent_node(e2fsck_t ct
+ pctx->str = "ext2fs_extent_delete";
+ return;
+ }
+- pctx->errcode = ext2fs_extent_get(ehandle,
+- EXT2_EXTENT_CURRENT,
+- &extent);
++ pctx->errcode = e2fsck_ext2fs_extent_get(ctx,
++ pctx, ehandle,
++ EXT2_EXTENT_CURRENT, &extent);
+ if (pctx->errcode == EXT2_ET_NO_CURRENT_NODE) {
+ pctx->errcode = 0;
+ break;
+@@ -1740,8 +1767,8 @@ static void scan_extent_node(e2fsck_t ct
+
+ if (!is_leaf) {
+ blk = extent.e_pblk;
+- pctx->errcode = ext2fs_extent_get(ehandle,
+- EXT2_EXTENT_DOWN, &extent);
++ pctx->errcode = e2fsck_ext2fs_extent_get(ctx, pctx,
++ ehandle, EXT2_EXTENT_DOWN, &extent);
+ if (pctx->errcode) {
+ pctx->str = "EXT2_EXTENT_DOWN";
+ problem = PR_1_EXTENT_HEADER_INVALID;
+@@ -1752,8 +1779,8 @@ static void scan_extent_node(e2fsck_t ct
+ scan_extent_node(ctx, pctx, pb, extent.e_lblk, ehandle);
+ if (pctx->errcode)
+ return;
+- pctx->errcode = ext2fs_extent_get(ehandle,
+- EXT2_EXTENT_UP, &extent);
++ pctx->errcode = e2fsck_ext2fs_extent_get(ctx, pctx,
++ ehandle, EXT2_EXTENT_UP, &extent);
+ if (pctx->errcode) {
+ pctx->str = "EXT2_EXTENT_UP";
+ return;
+@@ -1818,9 +1845,9 @@ static void scan_extent_node(e2fsck_t ct
+ pb->previous_block = extent.e_pblk + extent.e_len - 1;
+ start_block = pb->last_block = extent.e_lblk + extent.e_len - 1;
+ next:
+- pctx->errcode = ext2fs_extent_get(ehandle,
+- EXT2_EXTENT_NEXT_SIB,
+- &extent);
++ pctx->errcode = e2fsck_ext2fs_extent_get(ctx, pctx, ehandle,
++ EXT2_EXTENT_NEXT_SIB,
++ &extent);
+ }
+ if (pctx->errcode == EXT2_ET_EXTENT_NO_NEXT)
+ pctx->errcode = 0;
+Index: e2fsprogs/e2fsck/problem.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/problem.c
++++ e2fsprogs/e2fsck/problem.c
+@@ -895,6 +895,21 @@ static struct e2fsck_problem problem_tab
+ N_("@a in @i %i is corrupt (@n value)."),
+ PROMPT_CLEAR, 0},
+
++ /* extent has high 16 bits set */
++ { PR_1_EXTENT_HI,
++ N_("High 16 bits of extent/index @b set\n"),
++ PROMPT_CLEAR, PR_LATCH_EXTENT_HI|PR_PREEN_OK|PR_NO_OK|PR_PREEN_NOMSG},
++
++ /* extent has high 16 bits set header */
++ { PR_1_EXTENT_HI_LATCH,
++ N_("@i %i has high 16 bits of extent/index @b set\n"),
++ PROMPT_CLEAR, PR_PREEN_OK | PR_NO_OK | PR_PREEN_NOMSG },
++
++ /* eh_depth should be 0 */
++ { PR_1_EXTENT_EH_DEPTH_BAD,
++ N_("@i %i has extent header with incorrect eh_depth\n"),
++ PROMPT_FIX, 0 },
++
+ /* Pass 1b errors */
+
+ /* Pass 1B: Rescan for duplicate/bad blocks */
+@@ -1661,6 +1676,7 @@ static struct latch_descr pr_latch_info[
+ { PR_LATCH_TOOBIG, PR_1_INODE_TOOBIG, 0 },
+ { PR_LATCH_OPTIMIZE_DIR, PR_3A_OPTIMIZE_DIR_HEADER, PR_3A_OPTIMIZE_DIR_END },
+ { PR_LATCH_BG_CHECKSUM, PR_0_GDT_CSUM_LATCH, 0 },
++ { PR_LATCH_EXTENT_HI, PR_1_EXTENT_HI_LATCH, 0 },
+ { -1, 0, 0 },
+ };
+
+Index: e2fsprogs/e2fsck/problem.h
+===================================================================
+--- e2fsprogs.orig/e2fsck/problem.h
++++ e2fsprogs/e2fsck/problem.h
+@@ -39,6 +39,7 @@ struct problem_context {
+ #define PR_LATCH_TOOBIG 0x0080 /* Latch for file to big errors */
+ #define PR_LATCH_OPTIMIZE_DIR 0x0090 /* Latch for optimize directories */
+ #define PR_LATCH_BG_CHECKSUM 0x00A0 /* Latch for block group checksums */
++#define PR_LATCH_EXTENT_HI 0x00B0 /* Latch for extent high bits set */
+
+ #define PR_LATCH(x) ((((x) & PR_LATCH_MASK) >> 4) - 1)
+
+@@ -523,6 +524,15 @@ struct problem_context {
+ /* Bad extended attribute value in inode */
+ #define PR_1_INODE_EA_BAD_VALUE 0x010061
+
++/* extent/index has high 16 bits set - header */
++#define PR_1_EXTENT_HI 0x010062
++
++/* extent/index has high 16 bits set */
++#define PR_1_EXTENT_HI_LATCH 0x010063
++
++/* eh_depth for in-inode header is bad */
++#define PR_1_EXTENT_EH_DEPTH_BAD 0x010064
++
+ /*
+ * Pass 1b errors
+ */
+Index: e2fsprogs/lib/ext2fs/swapfs.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/swapfs.c
++++ e2fsprogs/lib/ext2fs/swapfs.c
+@@ -266,11 +266,13 @@ void ext2fs_swap_inode_full(ext2_filsys
+ if (bufsize < (int) (sizeof(struct ext2_inode) + sizeof(__u16)))
+ return; /* no i_extra_isize field */
+
+- if (hostorder)
++ if (hostorder) {
+ extra_isize = f->i_extra_isize;
+- t->i_extra_isize = ext2fs_swab16(f->i_extra_isize);
+- if (!hostorder)
++ t->i_extra_isize = ext2fs_swab16(f->i_extra_isize);
++ } else {
++ t->i_extra_isize = ext2fs_swab16(f->i_extra_isize);
+ extra_isize = t->i_extra_isize;
++ }
+ if (extra_isize > EXT2_INODE_SIZE(fs->super) -
+ sizeof(struct ext2_inode)) {
+ /* this is error case: i_extra_size is too large */
+Index: e2fsprogs/lib/ext2fs/valid_blk.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/valid_blk.c
++++ e2fsprogs/lib/ext2fs/valid_blk.c
+@@ -18,6 +18,7 @@
+
+ #include "ext2_fs.h"
+ #include "ext2fs.h"
++#include "ext3_extents.h"
+
+ /*
+ * This function returns 1 if the inode's block entries actually
+@@ -40,12 +41,23 @@ int ext2fs_inode_has_valid_blocks(struct
+ if (LINUX_S_ISLNK (inode->i_mode)) {
+ if (ext2fs_file_acl_block(inode) == 0) {
+ /* With no EA block, we can rely on i_blocks */
+- if (inode->i_blocks == 0)
+- return 0;
++ if (inode->i_flags & EXT4_EXTENTS_FL) {
++ struct ext3_extent_header *eh;
++ eh = (struct ext3_extent_header *)inode->i_block;
++ if (eh->eh_entries == 0)
++ return 0;
++ } else {
++ if (inode->i_blocks == 0)
++ return 0;
++ }
+ } else {
+ /* With an EA block, life gets more tricky */
+ if (inode->i_size >= EXT2_N_BLOCKS*4)
+ return 1; /* definitely using i_block[] */
++ /*
++ * we cannot have EA + extents, so assume we are not
++ * using extents
++ */
+ if (inode->i_size > 4 && inode->i_block[1] == 0)
+ return 1; /* definitely using i_block[] */
+ return 0; /* Probably a fast symlink */
+Index: e2fsprogs/tests/f_extents/expect.1
+===================================================================
+--- e2fsprogs.orig/tests/f_extents/expect.1
++++ e2fsprogs/tests/f_extents/expect.1
+@@ -2,51 +2,68 @@ Pass 1: Checking inodes, blocks, and siz
+ Inode 12 is in extent format, but superblock is missing EXTENTS feature
+ Fix? yes
+
+-Inode 12 has an invalid extent
+- (logical block 0, invalid physical block 21994527527949, len 17)
++Inode 12 has high 16 bits of extent/index block set
+ Clear? yes
+
+-Inode 12, i_blocks is 34, should be 0. Fix? yes
+-
++High 16 bits of extent/index block set
++CLEARED.
+ Inode 13 missing EXTENT_FL, but is in extents format
+ Fix? yes
+
+-Inode 17 has an invalid extent
+- (logical block 0, invalid physical block 22011707397135, len 15)
+-Clear? yes
+-
+-Inode 17, i_blocks is 32, should be 0. Fix? yes
+-
++High 16 bits of extent/index block set
++CLEARED.
+ Error while reading over extent tree in inode 18: Corrupt extent header
+ Clear inode? yes
+
+ Inode 18, i_blocks is 2, should be 0. Fix? yes
+
++
++Running additional passes to resolve blocks claimed by more than one inode...
++Pass 1B: Rescanning for multiply-claimed blocks
++Multiply-claimed block(s) in inode 12: 5133 5124 5125 5129 5132 5133 5142 5143 5144 5145
++Multiply-claimed block(s) in inode 17: 5124 5125 5129 5132 5142 5143 5144 5145
++Pass 1C: Scanning directories for inodes with multiply-claimed blocks
++Pass 1D: Reconciling multiply-claimed blocks
++(There are 2 inodes containing multiply-claimed blocks.)
++
++File /fdup1 (inode #12, mod time Wed Jul 5 21:55:26 2006)
++ has 10 multiply-claimed block(s), shared with 1 file(s):
++ /fdup2 (inode #17, mod time Wed Jul 5 21:55:27 2006)
++Clone multiply-claimed blocks? yes
++
++File /fdup2 (inode #17, mod time Wed Jul 5 21:55:27 2006)
++ has 8 multiply-claimed block(s), shared with 1 file(s):
++ /fdup1 (inode #12, mod time Wed Jul 5 21:55:26 2006)
++Multiply-claimed blocks already reassigned or cloned.
++
+ Pass 2: Checking directory structure
+ Entry 'fbad-flag' in / (2) has deleted/unused inode 18. Clear? yes
+
++Inode 19 (/fbad-sock) is an illegal FIFO.
++Clear? yes
++
+ Pass 3: Checking directory connectivity
+ Pass 4: Checking reference counts
+ Pass 5: Checking group summary information
+-Block bitmap differences: -1081 +4611 -(5121--5142)
++Block bitmap differences: +4611 -(5121--5122) +(5143--5146)
+ Fix? yes
+
+-Free blocks count wrong for group #0 (7081, counted=7098).
++Free blocks count wrong for group #0 (7081, counted=7065).
+ Fix? yes
+
+-Free blocks count wrong (7081, counted=7098).
++Free blocks count wrong (7081, counted=7065).
+ Fix? yes
+
+ Inode bitmap differences: -18
+ Fix? yes
+
+-Free inodes count wrong for group #0 (237, counted=238).
++Free inodes count wrong for group #0 (238, counted=239).
+ Fix? yes
+
+-Free inodes count wrong (237, counted=238).
++Free inodes count wrong (238, counted=239).
+ Fix? yes
+
+
+ test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
+-test_filesys: 18/256 files (0.0% non-contiguous), 1094/8192 blocks
++test_filesys: 17/256 files (11.8% non-contiguous), 1127/8192 blocks
+ Exit status is 1
+Index: e2fsprogs/tests/f_extents/expect.2
+===================================================================
+--- e2fsprogs.orig/tests/f_extents/expect.2
++++ e2fsprogs/tests/f_extents/expect.2
+@@ -3,5 +3,5 @@ Pass 2: Checking directory structure
+ Pass 3: Checking directory connectivity
+ Pass 4: Checking reference counts
+ Pass 5: Checking group summary information
+-test_filesys: 18/256 files (0.0% non-contiguous), 1094/8192 blocks
++test_filesys: 17/256 files (11.8% non-contiguous), 1127/8192 blocks
+ Exit status is 0
+Index: e2fsprogs/tests/f_fast_symlink_extents/expect.1
+===================================================================
+--- e2fsprogs.orig/tests/f_fast_symlink_extents/expect.1
++++ e2fsprogs/tests/f_fast_symlink_extents/expect.1
+@@ -1,11 +1,23 @@
+ Pass 1: Checking inodes, blocks, and sizes
+-Fast symlink 13 has EXTENT_FL set. Clear? yes
++Error while reading over extent tree in inode 13: Corrupt extent header
++Clear inode? yes
+
+ Pass 2: Checking directory structure
++Entry 'bar' in / (2) has deleted/unused inode 13. Clear? yes
++
+ Pass 3: Checking directory connectivity
+ Pass 4: Checking reference counts
+ Pass 5: Checking group summary information
++Inode bitmap differences: -13
++Fix? yes
++
++Free inodes count wrong for group #0 (3, counted=4).
++Fix? yes
++
++Free inodes count wrong (3, counted=4).
++Fix? yes
++
+
+ test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
+-test_filesys: 13/16 files (0.0% non-contiguous), 21/100 blocks
++test_filesys: 12/16 files (0.0% non-contiguous), 21/100 blocks
+ Exit status is 1
+Index: e2fsprogs/tests/f_fast_symlink_extents/expect.2
+===================================================================
+--- e2fsprogs.orig/tests/f_fast_symlink_extents/expect.2
++++ e2fsprogs/tests/f_fast_symlink_extents/expect.2
+@@ -3,5 +3,5 @@ Pass 2: Checking directory structure
+ Pass 3: Checking directory connectivity
+ Pass 4: Checking reference counts
+ Pass 5: Checking group summary information
+-test_filesys: 13/16 files (0.0% non-contiguous), 21/100 blocks
++test_filesys: 12/16 files (0.0% non-contiguous), 21/100 blocks
+ Exit status is 0
--- /dev/null
+Incremental improvements to filefrag FIEMAP handling:
+* add support for multiple-device filesystems
+* add -k option to print extents in kB-sized units (like df -k)
+* add -b {blocksize} to print extents in blocksize units
+* add -e option to use in extent format, even for non-extent files.
+* add -X option to print extents in hexadecimal format
+
+Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
+
+Index: e2fsprogs/lib/ext2fs/fiemap.h
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/fiemap.h
++++ e2fsprogs/lib/ext2fs/fiemap.h
+@@ -19,7 +19,8 @@ struct fiemap_extent {
+ __u64 fe_length; /* length in bytes for this extent */
+ __u64 fe_reserved64[2];
+ __u32 fe_flags; /* FIEMAP_EXTENT_* flags for this extent */
+- __u32 fe_reserved[3];
++ __u32 fe_device; /* device number (fs-specific if FIEMAP_EXTENT_NET)*/
++ __u32 fe_reserved[2];
+ };
+
+ struct fiemap {
+@@ -42,6 +43,7 @@ struct fiemap {
+
+ #define FIEMAP_FLAG_SYNC 0x00000001 /* sync file data before map */
+ #define FIEMAP_FLAG_XATTR 0x00000002 /* map extended attribute tree */
++#define FIEMAP_FLAG_DEVICE_ORDER 0x40000000 /* return device ordered mapping */
+
+ #define FIEMAP_FLAGS_COMPAT (FIEMAP_FLAG_SYNC | FIEMAP_FLAG_XATTR)
+
+@@ -65,4 +67,9 @@ struct fiemap {
+ * support extents. Result
+ * merged for efficiency. */
+
++/* Network filesystem flags - use a high bit, don't conflict with upstream */
++#define FIEMAP_EXTENT_NO_DIRECT 0x40000000 /* Data mapping undefined */
++#define FIEMAP_EXTENT_NET 0x80000000 /* Data stored remotely.
++ * Sets NO_DIRECT flag */
++
+ #endif /* _LINUX_FIEMAP_H */
+Index: e2fsprogs/misc/filefrag.8.in
+===================================================================
+--- e2fsprogs.orig/misc/filefrag.8.in
++++ e2fsprogs/misc/filefrag.8.in
+@@ -5,7 +5,10 @@ filefrag \- report on file fragmentation
+ .SH SYNOPSIS
+ .B filefrag
+ [
+-.B \-Bbsvx
++.BI \-b blocksize
++]
++[
++.B \-BeklsvxX
+ ]
+ [
+ .I files...
+@@ -27,8 +30,15 @@ If FIEMAP is not supported then filefrag
+ Force the use of the older FIBMAP ioctl instead of the FIEMAP ioctl for
+ testing purposes.
+ .TP
+-.B \-b
+-Use 1024 byte blocksize for the output.
++.BI \-b blocksize
++Use specified blocksize in bytes for the output instead of the filesystem
++.TP
++.B \-e
++Print output in extent format, even for non-extent files.
++.BI \-k
++Use 1024-byte blocksize for output.
++.B \-l
++Extents are displayed in device-logical offset order.
+ .TP
+ .B \-s
+ Sync the file before requesting the mapping.
+@@ -38,6 +48,9 @@ Be verbose when checking for file fragme
+ .TP
+ .B \-x
+ Display mapping of extended attributes.
++.TP
++.B \-X
++Display extent block numbers in hexadecimal format.
+ .SH AUTHOR
+ .B filefrag
+ was written by Theodore Ts'o <tytso@mit.edu>.
+Index: e2fsprogs/misc/filefrag.c
+===================================================================
+--- e2fsprogs.orig/misc/filefrag.c
++++ e2fsprogs/misc/filefrag.c
+@@ -15,8 +15,8 @@
+ #include <unistd.h>
+
+ int main(void) {
+- fputs("This program is only supported on Linux!\n", stderr);
+- exit(EXIT_FAILURE);
++ fputs("This program is only supported on Linux!\n", stderr);
++ exit(EXIT_FAILURE);
+ }
+ #else
+ #define _LARGEFILE64_SOURCE
+@@ -43,22 +43,34 @@ extern int optind;
+ #include <ext2fs/fiemap.h>
+
+ int verbose = 0;
+-int no_bs = 0; /* Don't use the files blocksize, use 1K blocksize */
++int blocksize = 0; /* Use specified blocksize (default 1kB) */
+ int sync_file = 0; /* fsync file before getting the mapping */
+ int xattr_map = 0; /* get xattr mapping */
+-int force_bmap = 0;
+-int logical_width = 12;
+-int physical_width = 14;
+-unsigned long long filesize;
++int force_bmap = 0; /* force use of FIBMAP instead of FIEMAP */
++int force_extent = 0; /* print output in extent format always */
++int device_offset = 0; /* extents report device-relative offsets */
++int logical_width = 8;
++int physical_width = 10;
++char *ext_fmt = "%4d: %*llu..%*llu: %*llu..%*llu: %6llu: %s\n";
++char *hex_fmt = "%4d: %*llx..%*llx: %*llx..%*llx: %6llx: %s\n";
+
+-#define FILEFRAG_FIEMAP_FLAGS_COMPAT (FIEMAP_FLAG_SYNC | FIEMAP_FLAG_XATTR)
++#define FILEFRAG_FIEMAP_FLAGS_COMPAT (FIEMAP_FLAG_SYNC | FIEMAP_FLAG_XATTR |\
++ FIEMAP_FLAG_DEVICE_ORDER)
+
+ #define FIBMAP _IO(0x00, 1) /* bmap access */
+ #define FIGETBSZ _IO(0x00, 2) /* get the block size used for bmap */
+
++#define LUSTRE_SUPER_MAGIC 0x0BD00BD0
++
+ #define EXT4_EXTENTS_FL 0x00080000 /* Inode uses extents */
+ #define EXT3_IOC_GETFLAGS _IOR('f', 1, long)
+
++#ifdef HAVE_FSTAT64
++#define mystat stat64
++#else
++#define mystat stat
++#endif
++
+ static int int_log2(int arg)
+ {
+ int l = 0;
+@@ -101,30 +113,41 @@ static int get_bmap(int fd, unsigned lon
+ if (errno == EPERM) {
+ fprintf(stderr, "No permission to use FIBMAP ioctl; "
+ "must have root privileges\n");
+- exit(1);
+ }
+- perror("FIBMAP");
+ }
+ *phy_blk = b;
+
+ return ret;
+ }
+
++static void print_extent_header(void)
++{
++ printf(" ext: %*s %*s length: %sflags:\n",
++ logical_width * 2 + 3,
++ device_offset ? "device_logical:" : "logical_offset:",
++ physical_width * 2 + 3, "physical_offset:",
++ device_offset ? " dev: " : "");
++}
++
+ static void print_extent_info(struct fiemap_extent *fm_extent, int cur_ex,
+- unsigned long long expected, int blk_shift)
++ int blk_shift, struct mystat *fileinfo)
+ {
+- __u64 phy_blk;
++ unsigned long long physical_blk;
+ unsigned long long logical_blk;
+- unsigned long ext_len;
++ unsigned long long ext_blks, ext_len;
+ char flags[256] = "";
+
+- /* For inline data all offsets should be in terms of bytes, not blocks */
++ /* For inline data all offsets should be in bytes, not blocks */
+ if (fm_extent->fe_flags & FIEMAP_EXTENT_DATA_INLINE)
+ blk_shift = 0;
+
+ ext_len = fm_extent->fe_length >> blk_shift;
++ ext_blks = (fm_extent->fe_length - 1) >> blk_shift;
+ logical_blk = fm_extent->fe_logical >> blk_shift;
+- phy_blk = fm_extent->fe_physical >> blk_shift;
++ physical_blk = fm_extent->fe_physical >> blk_shift;
++
++ if (device_offset)
++ sprintf(flags, "%04x: ", fm_extent->fe_device);
+
+ if (fm_extent->fe_flags & FIEMAP_EXTENT_UNKNOWN)
+ strcat(flags, "unknown,");
+@@ -142,45 +165,50 @@ static void print_extent_info(struct fie
+ strcat(flags, "unwritten,");
+ if (fm_extent->fe_flags & FIEMAP_EXTENT_MERGED)
+ strcat(flags, "merged,");
++ if (fm_extent->fe_flags & FIEMAP_EXTENT_NET)
++ strcat(flags, "network,");
++ if (fm_extent->fe_flags & FIEMAP_EXTENT_NO_DIRECT)
++ strcat(flags, "no_direct,");
+
+- if (fm_extent->fe_logical + fm_extent->fe_length >= filesize)
++ if (fm_extent->fe_logical + fm_extent->fe_length >= fileinfo->st_size)
+ strcat(flags, "eof,");
+
+ /* Remove trailing comma, if any */
+ if (flags[0])
+ flags[strlen(flags) - 1] = '\0';
+
+- if (expected)
+- printf("%4d %*llu %*llu %*llu %6lu %s\n",
+- cur_ex, logical_width, logical_blk,
+- physical_width, phy_blk, physical_width, expected,
+- ext_len, flags);
+- else
+- printf("%4d %*llu %*llu %*s %6lu %s\n",
+- cur_ex, logical_width, logical_blk,
+- physical_width, phy_blk, physical_width, "",
+- ext_len, flags);
++ printf(ext_fmt, cur_ex, logical_width, logical_blk,
++ logical_width, logical_blk + ext_blks,
++ physical_width, physical_blk,
++ physical_width, physical_blk + ext_blks,
++ ext_len, flags);
+ }
+
+-static int filefrag_fiemap(int fd, int blk_shift, int *num_extents)
++static int filefrag_fiemap(int fd, int blk_shift, int *num_extents,
++ struct mystat *fileinfo)
+ {
+ char buf[4096] = "";
+ struct fiemap *fiemap = (struct fiemap *)buf;
+ struct fiemap_extent *fm_ext = &fiemap->fm_extents[0];
+ int count = (sizeof(buf) - sizeof(*fiemap)) /
+ sizeof(struct fiemap_extent);
+- unsigned long long last_blk = 0;
++ unsigned long long next_physical = 0;
+ unsigned long flags = 0;
+ unsigned int i;
+ static int fiemap_incompat_printed;
+ int fiemap_header_printed = 0;
+ int tot_extents = 1, n = 0;
++ int previous_device = 0;
+ int last = 0;
+ int rc;
+
+- memset(fiemap, 0, sizeof(struct fiemap));
++ fiemap->fm_length = ~0ULL;
+
+- if (!verbose)
++ /* If extents are going to be device ordered, then we may need to use
++ * the first extent to pass the next starting offset and the device. */
++ memset(fiemap, 0, sizeof(struct fiemap) + sizeof(struct fiemap_extent));
++
++ if (!verbose && !force_extent)
+ count = 0;
+
+ if (sync_file)
+@@ -189,6 +217,10 @@ static int filefrag_fiemap(int fd, int b
+ if (xattr_map)
+ flags |= FIEMAP_FLAG_XATTR;
+
++ if (device_offset)
++ flags |= FIEMAP_FLAG_DEVICE_ORDER;
++
++retry_wo_device_offset:
+ do {
+ fiemap->fm_length = ~0ULL;
+ fiemap->fm_flags = flags;
+@@ -199,14 +231,16 @@ static int filefrag_fiemap(int fd, int b
+ printf("FIEMAP failed with unsupported "
+ "flags %x\n", fiemap->fm_flags);
+ fiemap_incompat_printed = 1;
++ } else if (rc == EBADR && (fiemap->fm_flags &
++ FIEMAP_FLAG_DEVICE_ORDER)) {
++ flags &= ~FIEMAP_FLAG_DEVICE_ORDER;
++ goto retry_wo_device_offset;
+ }
+ return rc;
+ }
+
+ if (verbose && !fiemap_header_printed) {
+- printf(" ext %*s %*s %*s length flags\n", logical_width,
+- "logical", physical_width, "physical",
+- physical_width, "expected");
++ print_extent_header();
+ fiemap_header_printed = 1;
+ }
+
+@@ -220,27 +254,40 @@ static int filefrag_fiemap(int fd, int b
+ break;
+
+ for (i = 0; i < fiemap->fm_mapped_extents; i++) {
+- __u64 phy_blk, logical_blk;
+- unsigned long ext_len;
++ unsigned long long physical, logical;
++
++ physical = fm_ext[i].fe_physical;
++ logical = fm_ext[i].fe_logical;
+
+- phy_blk = fm_ext[i].fe_physical >> blk_shift;
+- ext_len = fm_ext[i].fe_length >> blk_shift;
+- logical_blk = fm_ext[i].fe_logical >> blk_shift;
++ if (previous_device != fm_ext[i].fe_device)
++ previous_device = fm_ext[i].fe_device;
+
+- if (logical_blk && phy_blk != last_blk + 1)
++ if (logical && physical != next_physical)
+ tot_extents++;
+ else
+- last_blk = 0;
+- print_extent_info(&fm_ext[i], n, last_blk, blk_shift);
++ last = 0;
++ print_extent_info(&fm_ext[i], n, blk_shift, fileinfo);
+
+- last_blk = phy_blk + ext_len - 1;
++ next_physical = physical + fm_ext[i].fe_length;
+ if (fm_ext[i].fe_flags & FIEMAP_EXTENT_LAST)
+ last = 1;
+ n++;
+ }
+
+- fiemap->fm_start = (fm_ext[i-1].fe_logical +
+- fm_ext[i-1].fe_length);
++ /* For DEVICE_ORDER mappings, if EXTENT_LAST not yet found then
++ * fm_start needs to be the same as it was for earlier ioctl.
++ * The first extent is used to pass the end offset and device
++ * of the last FIEMAP call. Otherwise, we ask for extents
++ * starting from where the last mapping ended. */
++ if (flags & FIEMAP_FLAG_DEVICE_ORDER) {
++ fm_ext[0].fe_logical = fm_ext[i - 1].fe_logical +
++ fm_ext[i - 1].fe_length;
++ fm_ext[0].fe_device = fm_ext[i - 1].fe_device;
++ fiemap->fm_start = 0;
++ } else {
++ fiemap->fm_start = fm_ext[i - 1].fe_logical +
++ fm_ext[i - 1].fe_length;
++ }
+ } while (last == 0);
+
+ *num_extents = tot_extents;
+@@ -250,24 +297,88 @@ out:
+
+ #define EXT2_DIRECT 12
+
++static int filefrag_fibmap(int fd, int blk_shift, int *num_extents,
++ struct mystat *fileinfo,
++ unsigned long numblocks, int is_ext2)
++{
++ struct fiemap_extent fm_ext;
++ unsigned long i, last_block;
++ unsigned long long logical;
++ /* Blocks per indirect block */
++ const long bpib = fileinfo->st_blksize / 4;
++ int count;
++
++ if (force_extent) {
++ memset(&fm_ext, 0, sizeof(fm_ext));
++ fm_ext.fe_device = fileinfo->st_dev;
++ }
++
++ for (i = 0, logical = 0, *num_extents = 0, count = last_block = 0;
++ i < numblocks;
++ i++, logical += fileinfo->st_blksize) {
++ unsigned long block = 0;
++ int rc;
++
++ if (is_ext2 && last_block) {
++ if (((i - EXT2_DIRECT) % bpib) == 0)
++ last_block++;
++ if (((i - EXT2_DIRECT - bpib) % (bpib * bpib)) == 0)
++ last_block++;
++ if (((i - EXT2_DIRECT - bpib - bpib * bpib) %
++ (((unsigned long long)bpib )* bpib * bpib)) == 0)
++ last_block++;
++ }
++ rc = get_bmap(fd, i, &block);
++ if (rc < 0)
++ return rc;
++ if (block == 0)
++ continue;
++ if (!*num_extents) {
++ (*num_extents)++;
++ if (force_extent) {
++ print_extent_header();
++ fm_ext.fe_physical = block*fileinfo->st_blksize;
++ }
++ }
++ count++;
++ if (force_extent &&
++ (last_block && (block != last_block + 1) ||
++ fm_ext.fe_logical + fm_ext.fe_length != logical)) {
++ print_extent_info(&fm_ext, *num_extents - 1,
++ blk_shift, fileinfo);
++ fm_ext.fe_logical = logical;
++ fm_ext.fe_physical = block*fileinfo->st_blksize;
++ fm_ext.fe_length = 0;
++ (*num_extents)++;
++ } else if (verbose && last_block && (block != last_block + 1)) {
++ printf("Discontinuity: Block %ld is at %lu (was %lu)\n",
++ i, block, last_block + 1);
++ (*num_extents)++;
++ }
++ fm_ext.fe_length += fileinfo->st_blksize;
++ last_block = block;
++ }
++
++ if (force_extent)
++ print_extent_info(&fm_ext, *num_extents - 1,
++ blk_shift, fileinfo);
++
++ return count;
++}
++
+ static void frag_report(const char *filename)
+ {
+ struct statfs fsinfo;
+-#ifdef HAVE_FSTAT64
+- struct stat64 fileinfo;
+-#else
+- struct stat fileinfo;
+-#endif
+- int bs;
++ struct mystat fileinfo;
++ int blk_shift;
+ long fd;
+- unsigned long block, last_block = 0, numblocks, i, count;
+- long bpib; /* Blocks per indirect block */
+- long cylgroups;
+- int num_extents = 0, expected;
++ unsigned long numblocks;
++ int data_blocks_per_cyl = 1;
++ int num_extents = 1, expected;
+ int is_ext2 = 0;
+- static int once = 1;
++ static int last_device;
+ unsigned int flags;
+- int rc;
++ int width;
+
+ #ifdef HAVE_OPEN64
+ fd = open64(filename, O_RDONLY);
+@@ -291,89 +402,91 @@ static void frag_report(const char *file
+ perror("stat");
+ return;
+ }
++ fileinfo.st_blksize = fsinfo.f_bsize;
+ if (ioctl(fd, EXT3_IOC_GETFLAGS, &flags) < 0)
+ flags = 0;
+ if (!(flags & EXT4_EXTENTS_FL) &&
+ ((fsinfo.f_type == 0xef51) || (fsinfo.f_type == 0xef52) ||
+ (fsinfo.f_type == 0xef53)))
+ is_ext2++;
+- if (verbose && once)
++ if (verbose && last_device != fileinfo.st_dev)
+ printf("Filesystem type is: %lx\n",
+ (unsigned long) fsinfo.f_type);
+
+- cylgroups = div_ceil(fsinfo.f_blocks, fsinfo.f_bsize*8);
+- if (verbose && is_ext2 && once)
+- printf("Filesystem cylinder groups is approximately %ld\n",
+- cylgroups);
+-
+- physical_width = int_log10(fsinfo.f_blocks);
+- if (physical_width < 8)
+- physical_width = 8;
+-
+- if (ioctl(fd, FIGETBSZ, &bs) < 0) { /* FIGETBSZ takes an int */
+- perror("FIGETBSZ");
+- close(fd);
+- return;
++ /* Check if filesystem is Lustre. Always print in extent format
++ * with 1kB blocks, using the device-relative logical offsets. */
++ if (fsinfo.f_type == LUSTRE_SUPER_MAGIC) {
++ is_ext2 = 0;
++ force_extent = 1;
++ device_offset = 1;
++ blocksize = blocksize ?: 1024;
++ }
++
++ if (is_ext2) {
++ long cylgroups = div_ceil(fsinfo.f_blocks, fsinfo.f_bsize * 8);
++
++ if (verbose && last_device != fileinfo.st_dev)
++ printf("Filesystem cylinder groups is approximately %ld\n",
++ cylgroups);
++
++ data_blocks_per_cyl = fsinfo.f_bsize * 8 -
++ (fsinfo.f_files / 8 / cylgroups) - 3;
+ }
++ last_device = fileinfo.st_dev;
+
+- if (no_bs)
+- bs = 1024;
++ width = int_log10(fsinfo.f_blocks);
++ if (width > physical_width)
++ physical_width = width;
++
++ numblocks = (fileinfo.st_size + fsinfo.f_bsize - 1) / fsinfo.f_bsize;
++ if (blocksize != 0)
++ blk_shift = int_log2(blocksize);
++ else
++ blk_shift = int_log2(fsinfo.f_bsize);
+
+- bpib = bs / 4;
+- numblocks = (fileinfo.st_size + (bs-1)) / bs;
+- logical_width = int_log10(numblocks);
+- if (logical_width < 7)
+- logical_width = 7;
+- filesize = (long long)fileinfo.st_size;
++ width = int_log10(numblocks);
++ if (width > logical_width)
++ logical_width = width;
+ if (verbose)
+- printf("File size of %s is %lld (%ld block%s, blocksize %d)\n",
+- filename, (long long) fileinfo.st_size, numblocks,
+- numblocks == 1 ? "" : "s", bs);
++ printf("File size of %s is %llu (%lu block%s of %d bytes)\n",
++ filename, (unsigned long long)fileinfo.st_size,
++ numblocks * fsinfo.f_bsize >> blk_shift,
++ numblocks == 1 ? "" : "s", 1 << blk_shift);
++
+ if (force_bmap ||
+- filefrag_fiemap(fd, int_log2(bs), &num_extents) != 0) {
+- for (i = 0, count = 0; i < numblocks; i++) {
+- if (is_ext2 && last_block) {
+- if (((i-EXT2_DIRECT) % bpib) == 0)
+- last_block++;
+- if (((i-EXT2_DIRECT-bpib) % (bpib*bpib)) == 0)
+- last_block++;
+- if (((i-EXT2_DIRECT-bpib-bpib*bpib) %
+- (((__u64) bpib)*bpib*bpib)) == 0)
+- last_block++;
+- }
+- rc = get_bmap(fd, i, &block);
+- if (block == 0)
+- continue;
+- if (!num_extents)
+- num_extents++;
+- count++;
+- if (last_block && (block != last_block+1) ) {
+- if (verbose)
+- printf("Discontinuity: Block %ld is at "
+- "%lu (was %lu)\n",
+- i, block, last_block+1);
+- num_extents++;
++ filefrag_fiemap(fd, blk_shift, &num_extents, &fileinfo) != 0) {
++ expected = filefrag_fibmap(fd, blk_shift, &num_extents,
++ &fileinfo, numblocks, is_ext2);
++ if (expected < 0) {
++ if (errno == EINVAL || errno == ENOTTY) {
++ fprintf(stderr, "%s: FIBMAP unsupported\n",
++ filename);
++ } else if (errno != EPERM) {
++ fprintf(stderr, "%s: FIBMAP error: %s",
++ filename, strerror(errno));
+ }
+- last_block = block;
++ goto out_close;
+ }
++ expected = expected / data_blocks_per_cyl + 1;
+ }
++
+ if (num_extents == 1)
+ printf("%s: 1 extent found", filename);
+ else
+ printf("%s: %d extents found", filename, num_extents);
+- expected = (count/((bs*8)-(fsinfo.f_files/8/cylgroups)-3))+1;
+ if (is_ext2 && expected < num_extents)
+ printf(", perfection would be %d extent%s\n", expected,
+- (expected>1) ? "s" : "");
++ (expected > 1) ? "s" : "");
+ else
+ fputc('\n', stdout);
++out_close:
+ close(fd);
+- once = 0;
+ }
+
+ static void usage(const char *progname)
+ {
+- fprintf(stderr, "Usage: %s [-Bbvsx] file ...\n", progname);
++ fprintf(stderr, "Usage: %s [-b{blocksize}] [-BeklsvxX] file ...\n",
++ progname);
+ exit(1);
+ }
+
+@@ -382,23 +495,61 @@ int main(int argc, char**argv)
+ char **cpp;
+ int c;
+
+- while ((c = getopt(argc, argv, "Bbsvx")) != EOF)
++ while ((c = getopt(argc, argv, "Bb::eklsvxX")) != EOF)
+ switch (c) {
+ case 'B':
+ force_bmap++;
++ force_extent = 0;
+ break;
+ case 'b':
+- no_bs++;
++ if (optarg) {
++ char *end;
++ blocksize = strtoul(optarg, &end, 0);
++ if (end) {
++ switch (end[0]) {
++ case 'g':
++ case 'G': blocksize *= 1024;
++ /* no break */
++ case 'm':
++ case 'M': blocksize *= 1024;
++ /* no break */
++ case 'k':
++ case 'K': blocksize *= 1024;
++ break;
++ default: break;
++ }
++ }
++ } else { /* allow -b without argument, for compat */
++ fprintf(stderr, "%s: -b needs a blocksize "
++ "option, assuming 1024-byte blocks.\n",
++ argv[0]);
++ blocksize = 1024;
++ }
+ break;
+- case 'v':
+- verbose++;
++ case 'e':
++ force_extent++;
++ if (!verbose)
++ verbose++;
++ force_bmap = 0;
++ break;
++ case 'k':
++ blocksize = 1024;
++ break;
++ case 'l':
++ device_offset++;
+ break;
+ case 's':
+ sync_file++;
+ break;
++ case 'v':
++ verbose++;
++ break;
+ case 'x':
+ xattr_map++;
+ break;
++ case 'X':
++ ext_fmt = hex_fmt;
++ break;
+ default:
+ usage(argv[0]);
+ break;
--- /dev/null
+Fix handling of block preallocation support in cases where the kernel
+PAGE_SIZE is larger than the filesystem blocksize.
+
+Signed-off-by: Kalpak Shah <kalpak@clusterfs.com>
+Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
+
+Index: e2fsprogs/e2fsck/pass1.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/pass1.c
++++ e2fsprogs/e2fsck/pass1.c
+@@ -2273,8 +2273,8 @@ static void check_blocks(e2fsck_t ctx, s
+ if ((pb.last_block >= 0) &&
+ /* allow allocated blocks to end of PAGE_SIZE */
+ (size < (__u64)pb.last_block * fs->blocksize) &&
+- (pb.last_block / blkpg * blkpg != pb.last_block ||
+- size < (__u64)(pb.last_block & ~(blkpg-1)) *fs->blocksize) &&
++ ((pb.last_block + 1) / blkpg * blkpg != (pb.last_block+1) ||
++ size < (__u64)(pb.last_block & ~(blkpg-1))*fs->blocksize)&&
+ !(inode->i_flags & EXT4_EOFBLOCKS_FL))
+ bad_size = 3;
+ else if (!(extent_fs && (inode->i_flags & EXT4_EXTENTS_FL)) &&
--- /dev/null
+The present e2fsck code checks the inode, per field basis. It doesn't
+take into consideration to total sanity of the inode. This may cause
+e2fsck turning a garbage inode into an apparently sane inode ("It is a
+vessel of fertilizer, and none may abide its strength.").
+
+The following patch adds a heuristics to detect the degree of badness of
+an inode. icount mechanism is used to keep track of the badness of every
+inode. The badness is increased as various fields in inode are found to
+be corrupt. Badness above a certain threshold value results in deletion
+of the inode. The default threshold value is 7, it can be specified to
+e2fsck using "-E inode_badness_threshold=<value>"
+
+This can avoid lengthy pass1b shared block processing, where a corrupt
+chunk of the inode table has resulted in a bunch of garbage inodes
+suddenly having shared blocks with a lot of good inodes (or each other).
+
+Signed-off-by: Girish Shilamkar <girish@clusterfs.com>
+Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
+
+Index: e2fsprogs/e2fsck/e2fsck.h
+===================================================================
+--- e2fsprogs.orig/e2fsck/e2fsck.h
++++ e2fsprogs/e2fsck/e2fsck.h
+@@ -11,6 +11,7 @@
+
+ #include <stdio.h>
+ #include <string.h>
++#include <stddef.h>
+ #ifdef HAVE_UNISTD_H
+ #include <unistd.h>
+ #endif
+@@ -204,6 +205,24 @@ typedef enum {
+ E2F_CLONE_ZERO
+ } clone_opt_t;
+
++#define EXT4_FITS_IN_INODE(ext4_inode, einode, field) \
++ ((offsetof(typeof(*ext4_inode), field) + \
++ sizeof(ext4_inode->field)) <= \
++ (EXT2_GOOD_OLD_INODE_SIZE + \
++ (einode)->i_extra_isize)) \
++
++#define EXT4_XTIME_FUTURE(ctx, sb, xtime, margin) \
++ (!((ctx)->flags & E2F_FLAG_TIME_INSANE) && \
++ (xtime) > (ctx)->now + (margin))
++#define EXT4_XTIME_ANCIENT(ctx, sb, xtime, margin) \
++ ((xtime) < (sb)->s_mkfs_time - (margin))
++
++#define BADNESS_NORMAL 1
++#define BADNESS_HIGH 2
++#define BADNESS_THRESHOLD 8
++#define BADNESS_BAD_MODE 100
++#define BADNESS_LARGE_FILE 2199023255552ULL
++
+ /*
+ * Define the extended attribute refcount structure
+ */
+@@ -240,7 +259,6 @@ struct e2fsck_struct {
+ unsigned long max);
+
+ ext2fs_inode_bitmap inode_used_map; /* Inodes which are in use */
+- ext2fs_inode_bitmap inode_bad_map; /* Inodes which are bad somehow */
+ ext2fs_inode_bitmap inode_dir_map; /* Inodes which are directories */
+ ext2fs_inode_bitmap inode_bb_map; /* Inodes which are in bad blocks */
+ ext2fs_inode_bitmap inode_imagic_map; /* AFS inodes */
+@@ -255,6 +273,8 @@ struct e2fsck_struct {
+ */
+ ext2_icount_t inode_count;
+ ext2_icount_t inode_link_info;
++ ext2_icount_t inode_badness;
++ int inode_badness_threshold;
+
+ ext2_refcount_t refcount;
+ ext2_refcount_t refcount_extra;
+@@ -473,6 +493,11 @@ extern int e2fsck_pass1_check_symlink(ex
+ extern void e2fsck_clear_inode(e2fsck_t ctx, ext2_ino_t ino,
+ struct ext2_inode *inode, int restart_flag,
+ const char *source);
++#define e2fsck_mark_inode_bad(ctx,ino,count) \
++ e2fsck_mark_inode_bad_loc(ctx, ino, count, __func__, __LINE__)
++extern void e2fsck_mark_inode_bad_loc(e2fsck_t ctx, ino_t ino, int count,
++ const char *func, const int line);
++extern int is_inode_bad(e2fsck_t ctx, ino_t ino);
+
+ /* pass2.c */
+ extern int e2fsck_process_bad_inode(e2fsck_t ctx, ext2_ino_t dir,
+Index: e2fsprogs/e2fsck/pass1.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/pass1.c
++++ e2fsprogs/e2fsck/pass1.c
+@@ -20,7 +20,8 @@
+ * - A bitmap of which inodes are in use. (inode_used_map)
+ * - A bitmap of which inodes are directories. (inode_dir_map)
+ * - A bitmap of which inodes are regular files. (inode_reg_map)
+- * - A bitmap of which inodes have bad fields. (inode_bad_map)
++ * - An icount mechanism is used to keep track of
++ * inodes with bad fields and its badness (ctx->inode_badness)
+ * - A bitmap of which inodes are in bad blocks. (inode_bb_map)
+ * - A bitmap of which inodes are imagic inodes. (inode_imagic_map)
+ * - A bitmap of which inodes need to be expanded (expand_eisize_map)
+@@ -67,7 +68,6 @@ static void check_blocks(e2fsck_t ctx, s
+ static void mark_table_blocks(e2fsck_t ctx);
+ static void alloc_bb_map(e2fsck_t ctx);
+ static void alloc_imagic_map(e2fsck_t ctx);
+-static void mark_inode_bad(e2fsck_t ctx, ino_t ino);
+ static void handle_fs_bad_blocks(e2fsck_t ctx);
+ static void process_inodes(e2fsck_t ctx, char *block_buf);
+ static EXT2_QSORT_TYPE process_inode_cmp(const void *a, const void *b);
+@@ -242,6 +242,7 @@ static void check_immutable(e2fsck_t ctx
+ if (!(pctx->inode->i_flags & BAD_SPECIAL_FLAGS))
+ return;
+
++ e2fsck_mark_inode_bad(ctx, pctx->ino, BADNESS_NORMAL);
+ if (!fix_problem(ctx, PR_1_SET_IMMUTABLE, pctx))
+ return;
+
+@@ -260,6 +261,7 @@ static void check_size(e2fsck_t ctx, str
+ if ((inode->i_size == 0) && (inode->i_size_high == 0))
+ return;
+
++ e2fsck_mark_inode_bad(ctx, pctx->ino, BADNESS_NORMAL);
+ if (!fix_problem(ctx, PR_1_SET_NONZSIZE, pctx))
+ return;
+
+@@ -360,7 +362,7 @@ static void check_inode_extra_space(e2fs
+ struct ext2_super_block *sb = ctx->fs->super;
+ struct ext2_inode_large *inode;
+ __u32 *eamagic;
+- int min, max;
++ int min, max, dirty = 0;
+
+ inode = (struct ext2_inode_large *) pctx->inode;
+ if (EXT2_INODE_SIZE(sb) == EXT2_GOOD_OLD_INODE_SIZE) {
+@@ -381,12 +383,24 @@ static void check_inode_extra_space(e2fs
+ */
+ if (inode->i_extra_isize &&
+ (inode->i_extra_isize < min || inode->i_extra_isize > max)) {
++ e2fsck_mark_inode_bad(ctx, pctx->ino, BADNESS_NORMAL);
+ if (!fix_problem(ctx, PR_1_EXTRA_ISIZE, pctx))
+ return;
+ inode->i_extra_isize = ctx->want_extra_isize;
+- e2fsck_write_inode_full(ctx, pctx->ino, pctx->inode,
+- EXT2_INODE_SIZE(sb), "pass1");
+- return;
++ dirty = 1;
++
++ goto out;
++ }
++
++ if (EXT4_FITS_IN_INODE(inode, inode,i_crtime) && inode->i_crtime != 0 &&
++ (EXT4_XTIME_FUTURE(ctx, sb, inode->i_crtime, 2 * ctx->time_fudge) ||
++ EXT4_XTIME_ANCIENT(ctx, sb, inode->i_crtime, 2*ctx->time_fudge))) {
++ pctx->num = inode->i_crtime;
++ if (fix_problem(ctx, PR_1_CRTIME_BAD, pctx)) {
++ inode->i_crtime = 0;
++ dirty = 1;
++ }
++ e2fsck_mark_inode_bad(ctx, pctx->ino, BADNESS_HIGH);
+ }
+
+ eamagic = IHDR(inode);
+@@ -397,16 +411,17 @@ static void check_inode_extra_space(e2fs
+ memset((char *)inode + EXT2_GOOD_OLD_INODE_SIZE, 0,
+ EXT2_INODE_SIZE(sb) - EXT2_GOOD_OLD_INODE_SIZE);
+ inode->i_extra_isize = ctx->want_extra_isize;
+- e2fsck_write_inode_full(ctx, pctx->ino,
+- (struct ext2_inode *)inode,
+- EXT2_INODE_SIZE(sb),
+- "check_inode_extra_space");
++ dirty = 1;
+ if (inode->i_extra_isize < ctx->min_extra_isize)
+ ctx->min_extra_isize = inode->i_extra_isize;
+ }
+
+ if (*eamagic == EXT2_EXT_ATTR_MAGIC)
+ check_ea_in_inode(ctx, pctx);
++out:
++ if (dirty)
++ e2fsck_write_inode_full(ctx, pctx->ino, pctx->inode,
++ EXT2_INODE_SIZE(sb), "pass1");
+ }
+
+ /*
+@@ -521,6 +536,7 @@ static void check_is_really_dir(e2fsck_t
+ (rec_len % 4))
+ return;
+
++ e2fsck_mark_inode_bad(ctx, pctx->ino, BADNESS_NORMAL);
+ if (fix_problem(ctx, PR_1_TREAT_AS_DIRECTORY, pctx)) {
+ inode->i_mode = (inode->i_mode & 07777) | LINUX_S_IFDIR;
+ e2fsck_write_inode_full(ctx, pctx->ino, inode,
+@@ -955,14 +971,16 @@ void e2fsck_pass1(e2fsck_t ctx)
+ ehp = inode->i_block;
+ #endif
+ if ((ext2fs_extent_header_verify(ehp,
+- sizeof(inode->i_block)) == 0) &&
+- (fix_problem(ctx, PR_1_UNSET_EXTENT_FL, &pctx))) {
+- inode->i_flags |= EXT4_EXTENTS_FL;
++ sizeof(inode->i_block)) == 0)) {
++ e2fsck_mark_inode_bad(ctx, ino, BADNESS_NORMAL);
++ if (fix_problem(ctx, PR_1_UNSET_EXTENT_FL, &pctx)) {
++ inode->i_flags |= EXT4_EXTENTS_FL;
+ #ifdef WORDS_BIGENDIAN
+- memcpy(inode->i_block, tmp_block,
+- sizeof(inode->i_block));
++ memcpy(inode->i_block, tmp_block,
++ sizeof(inode->i_block));
+ #endif
+- e2fsck_write_inode(ctx, ino, inode, "pass1");
++ e2fsck_write_inode(ctx, ino, inode, "pass1");
++ }
+ }
+ }
+
+@@ -1022,6 +1040,7 @@ void e2fsck_pass1(e2fsck_t ctx)
+ * as a special case.
+ */
+ if (inode->i_dtime && inode->i_links_count) {
++ e2fsck_mark_inode_bad(ctx, ino, BADNESS_NORMAL);
+ if (fix_problem(ctx, PR_1_ROOT_DTIME, &pctx)) {
+ inode->i_dtime = 0;
+ e2fsck_write_inode(ctx, ino, inode,
+@@ -1129,6 +1148,7 @@ void e2fsck_pass1(e2fsck_t ctx)
+ *
+ */
+ if (inode->i_dtime) {
++ e2fsck_mark_inode_bad(ctx, ino, BADNESS_NORMAL);
+ if (fix_problem(ctx, PR_1_SET_DTIME, &pctx)) {
+ inode->i_dtime = 0;
+ e2fsck_write_inode(ctx, ino, inode, "pass1");
+@@ -1145,18 +1165,19 @@ void e2fsck_pass1(e2fsck_t ctx)
+ frag = fsize = 0;
+ }
+
++ /* Fixed in pass2, e2fsck_process_bad_inode(). */
+ if (inode->i_faddr || frag || fsize ||
+ (LINUX_S_ISDIR(inode->i_mode) && inode->i_dir_acl))
+- mark_inode_bad(ctx, ino);
+- if (!(fs->super->s_feature_incompat &
++ e2fsck_mark_inode_bad(ctx, ino, BADNESS_NORMAL);
++ if (!(fs->super->s_feature_incompat &
+ EXT4_FEATURE_INCOMPAT_64BIT) &&
+ inode->osd2.linux2.l_i_file_acl_high != 0)
+- mark_inode_bad(ctx, ino);
++ e2fsck_mark_inode_bad(ctx, ino, BADNESS_NORMAL);
+ if ((fs->super->s_creator_os == EXT2_OS_LINUX) &&
+ !(fs->super->s_feature_ro_compat &
+ EXT4_FEATURE_RO_COMPAT_HUGE_FILE) &&
+ (inode->osd2.linux2.l_i_blocks_hi != 0))
+- mark_inode_bad(ctx, ino);
++ e2fsck_mark_inode_bad(ctx, ino, BADNESS_NORMAL);
+ if (inode->i_flags & EXT2_IMAGIC_FL) {
+ if (imagic_fs) {
+ if (!ctx->inode_imagic_map)
+@@ -1164,6 +1185,7 @@ void e2fsck_pass1(e2fsck_t ctx)
+ ext2fs_mark_inode_bitmap2(ctx->inode_imagic_map,
+ ino);
+ } else {
++ e2fsck_mark_inode_bad(ctx, ino, BADNESS_NORMAL);
+ if (fix_problem(ctx, PR_1_SET_IMAGIC, &pctx)) {
+ inode->i_flags &= ~EXT2_IMAGIC_FL;
+ e2fsck_write_inode(ctx, ino,
+@@ -1224,8 +1246,20 @@ void e2fsck_pass1(e2fsck_t ctx)
+ check_immutable(ctx, &pctx);
+ check_size(ctx, &pctx);
+ ctx->fs_sockets_count++;
+- } else
+- mark_inode_bad(ctx, ino);
++ } else {
++ e2fsck_mark_inode_bad(ctx, ino, BADNESS_NORMAL);
++ }
++
++ if (EXT4_XTIME_FUTURE(ctx, sb, inode->i_atime,ctx->time_fudge)||
++ EXT4_XTIME_FUTURE(ctx, sb, inode->i_mtime,ctx->time_fudge))
++ e2fsck_mark_inode_bad(ctx, ino, BADNESS_NORMAL);
++
++ if (EXT4_XTIME_FUTURE(ctx, sb, inode->i_ctime,ctx->time_fudge)||
++ EXT4_XTIME_ANCIENT(ctx, sb, inode->i_ctime,ctx->time_fudge))
++ e2fsck_mark_inode_bad(ctx, ino, BADNESS_HIGH);
++
++ /* i_crtime is checked in check_inode_extra_space() */
++
+ if (!(inode->i_flags & EXT4_EXTENTS_FL)) {
+ if (inode->i_block[EXT2_IND_BLOCK])
+ ctx->fs_ind_count++;
+@@ -1444,26 +1478,31 @@ static EXT2_QSORT_TYPE process_inode_cmp
+ }
+
+ /*
+- * Mark an inode as being bad in some what
++ * Mark an inode as being bad and increment its badness counter.
+ */
+-static void mark_inode_bad(e2fsck_t ctx, ino_t ino)
++void e2fsck_mark_inode_bad_loc(e2fsck_t ctx, ino_t ino, int count,
++ const char *func, const int line)
+ {
+ struct problem_context pctx;
++ __u16 result;
+
+- if (!ctx->inode_bad_map) {
++ if (!ctx->inode_badness) {
+ clear_problem_context(&pctx);
+
+- pctx.errcode = ext2fs_allocate_inode_bitmap(ctx->fs,
+- _("bad inode map"), &ctx->inode_bad_map);
++ pctx.errcode = ext2fs_create_icount2(ctx->fs, 0, 0, NULL,
++ &ctx->inode_badness);
+ if (pctx.errcode) {
+- pctx.num = 3;
+- fix_problem(ctx, PR_1_ALLOCATE_IBITMAP_ERROR, &pctx);
+- /* Should never get here */
++ fix_problem(ctx, PR_1_ALLOCATE_ICOUNT, &pctx);
+ ctx->flags |= E2F_FLAG_ABORT;
+ return;
+ }
+ }
+- ext2fs_mark_inode_bitmap2(ctx->inode_bad_map, ino);
++ ext2fs_icount_fetch(ctx->inode_badness, ino, &result);
++ ext2fs_icount_store(ctx->inode_badness, ino, count + result);
++
++ if (ctx->options & E2F_OPT_DEBUG)
++ fprintf(stderr, "%s:%d: increase inode %lu badness %u to %u\n",
++ func, line, (unsigned long)ino, result, count + result);
+ }
+
+
+@@ -1622,7 +1661,8 @@ static int check_ext_attr(e2fsck_t ctx,
+ if (!(fs->super->s_feature_compat & EXT2_FEATURE_COMPAT_EXT_ATTR) ||
+ (blk < fs->super->s_first_data_block) ||
+ (blk >= ext2fs_blocks_count(fs->super))) {
+- mark_inode_bad(ctx, ino);
++ /* Fixed in pass2, e2fsck_process_bad_inode(). */
++ e2fsck_mark_inode_bad(ctx, ino, BADNESS_NORMAL);
+ return 0;
+ }
+
+@@ -1788,9 +1828,11 @@ static int handle_htree(e2fsck_t ctx, st
+
+ if ((!LINUX_S_ISDIR(inode->i_mode) &&
+ fix_problem(ctx, PR_1_HTREE_NODIR, pctx)) ||
+- (!(fs->super->s_feature_compat & EXT2_FEATURE_COMPAT_DIR_INDEX) &&
+- fix_problem(ctx, PR_1_HTREE_SET, pctx)))
+- return 1;
++ (!(fs->super->s_feature_compat & EXT2_FEATURE_COMPAT_DIR_INDEX))) {
++ e2fsck_mark_inode_bad(ctx, ino, BADNESS_NORMAL);
++ if (fix_problem(ctx, PR_1_HTREE_SET, pctx))
++ return 1;
++ }
+
+ pctx->errcode = ext2fs_bmap2(fs, ino, inode, 0, 0, 0, 0, &blk);
+
+@@ -1798,6 +1840,7 @@ static int handle_htree(e2fsck_t ctx, st
+ (blk == 0) ||
+ (blk < fs->super->s_first_data_block) ||
+ (blk >= ext2fs_blocks_count(fs->super))) {
++ e2fsck_mark_inode_bad(ctx, ino, BADNESS_NORMAL);
+ if (fix_problem(ctx, PR_1_HTREE_BADROOT, pctx))
+ return 1;
+ else
+@@ -1805,8 +1848,11 @@ static int handle_htree(e2fsck_t ctx, st
+ }
+
+ retval = io_channel_read_blk64(fs->io, blk, 1, block_buf);
+- if (retval && fix_problem(ctx, PR_1_HTREE_BADROOT, pctx))
+- return 1;
++ if (retval) {
++ e2fsck_mark_inode_bad(ctx, ino, BADNESS_NORMAL);
++ if (fix_problem(ctx, PR_1_HTREE_BADROOT, pctx))
++ return 1;
++ }
+
+ /* XXX should check that beginning matches a directory */
+ root = (struct ext2_dx_root_info *) (block_buf + 24);
+@@ -1847,8 +1893,8 @@ void e2fsck_clear_inode(e2fsck_t ctx, ex
+ ext2fs_unmark_inode_bitmap2(ctx->inode_used_map, ino);
+ if (ctx->inode_reg_map)
+ ext2fs_unmark_inode_bitmap2(ctx->inode_reg_map, ino);
+- if (ctx->inode_bad_map)
+- ext2fs_unmark_inode_bitmap2(ctx->inode_bad_map, ino);
++ if (ctx->inode_badness)
++ ext2fs_icount_store(ctx->inode_badness, ino, 0);
+
+ /*
+ * If the inode was partially accounted for before processing
+@@ -1923,6 +1969,11 @@ static void scan_extent_node(e2fsck_t ct
+ problem = PR_1_EXTENT_ENDS_BEYOND;
+
+ if (problem) {
++ /* To ensure that extent is in inode */
++ if (info.curr_level == 0)
++ e2fsck_mark_inode_bad(ctx, pctx->ino,
++ BADNESS_HIGH);
++
+ report_problem:
+ pctx->blk = extent.e_pblk;
+ pctx->blk2 = extent.e_lblk;
+@@ -2115,6 +2166,7 @@ static void check_blocks(e2fsck_t ctx, s
+ EXT2_FEATURE_INCOMPAT_COMPRESSION)
+ pb.compressed = 1;
+ else {
++ e2fsck_mark_inode_bad(ctx, ino, BADNESS_NORMAL);
+ if (fix_problem(ctx, PR_1_COMPR_SET, pctx)) {
+ inode->i_flags &= ~EXT2_COMPRBLK_FL;
+ dirty_inode++;
+@@ -2169,6 +2221,11 @@ static void check_blocks(e2fsck_t ctx, s
+ }
+
+ if (!pb.num_blocks && pb.is_dir) {
++ /*
++ * The mode might be in-correct. Increasing the badness by
++ * small amount won't hurt much.
++ */
++ e2fsck_mark_inode_bad(ctx, ino, BADNESS_NORMAL);
+ if (fix_problem(ctx, PR_1_ZERO_LENGTH_DIR, pctx)) {
+ e2fsck_clear_inode(ctx, ino, inode, 0, "check_blocks");
+ ctx->fs_directory_count--;
+@@ -2234,6 +2291,7 @@ static void check_blocks(e2fsck_t ctx, s
+ if (bad_size && !LINUX_S_ISLNK(inode->i_mode)) {
+ pctx->num = (pb.last_block+1) * fs->blocksize;
+ pctx->group = bad_size;
++ e2fsck_mark_inode_bad(ctx, ino, BADNESS_NORMAL);
+ if (fix_problem(ctx, PR_1_BAD_I_SIZE, pctx)) {
+ inode->i_size = pctx->num;
+ if (!LINUX_S_ISDIR(inode->i_mode))
+@@ -2250,6 +2308,7 @@ static void check_blocks(e2fsck_t ctx, s
+ (inode->i_flags & EXT4_HUGE_FILE_FL) &&
+ (inode->osd2.linux2.l_i_blocks_hi != 0))) {
+ pctx->num = pb.num_blocks;
++ e2fsck_mark_inode_bad(ctx, ino, BADNESS_NORMAL);
+ if (fix_problem(ctx, PR_1_BAD_I_BLOCKS, pctx)) {
+ inode->i_blocks = pb.num_blocks;
+ inode->osd2.linux2.l_i_blocks_hi = pb.num_blocks >> 32;
+@@ -2406,8 +2465,10 @@ static int process_block(ext2_filsys fs,
+ problem = PR_1_TOOBIG_SYMLINK;
+
+ if (blk < fs->super->s_first_data_block ||
+- blk >= ext2fs_blocks_count(fs->super))
++ blk >= ext2fs_blocks_count(fs->super)) {
+ problem = PR_1_ILLEGAL_BLOCK_NUM;
++ e2fsck_mark_inode_bad(ctx, pctx->ino, BADNESS_NORMAL);
++ }
+
+ if (problem) {
+ p->num_illegal_blocks++;
+Index: e2fsprogs/e2fsck/pass1b.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/pass1b.c
++++ e2fsprogs/e2fsck/pass1b.c
+@@ -629,8 +629,8 @@ static void delete_file(e2fsck_t ctx, ex
+ block_buf, delete_file_block, &pb);
+ if (pctx.errcode)
+ fix_problem(ctx, PR_1B_BLOCK_ITERATE, &pctx);
+- if (ctx->inode_bad_map)
+- ext2fs_unmark_inode_bitmap2(ctx->inode_bad_map, ino);
++ if (ctx->inode_badness)
++ e2fsck_mark_inode_bad(ctx, ino, 0);
+ ext2fs_inode_alloc_stats2(fs, ino, -1, LINUX_S_ISDIR(inode.i_mode));
+
+ /* Inode may have changed by block_iterate, so reread it */
+Index: e2fsprogs/e2fsck/pass2.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/pass2.c
++++ e2fsprogs/e2fsck/pass2.c
+@@ -33,11 +33,10 @@
+ * Pass 2 relies on the following information from previous passes:
+ * - The directory information collected in pass 1.
+ * - The inode_used_map bitmap
+- * - The inode_bad_map bitmap
++ * - The inode_badness bitmap
+ * - The inode_dir_map bitmap
+ *
+ * Pass 2 frees the following data structures
+- * - The inode_bad_map bitmap
+ * - The inode_reg_map bitmap
+ */
+
+@@ -248,10 +247,6 @@ void e2fsck_pass2(e2fsck_t ctx)
+ ext2fs_free_mem(&buf);
+ ext2fs_free_dblist(fs->dblist);
+
+- if (ctx->inode_bad_map) {
+- ext2fs_free_inode_bitmap(ctx->inode_bad_map);
+- ctx->inode_bad_map = 0;
+- }
+ if (ctx->inode_reg_map) {
+ ext2fs_free_inode_bitmap(ctx->inode_reg_map);
+ ctx->inode_reg_map = 0;
+@@ -479,6 +474,7 @@ static _INLINE_ int check_filetype(e2fsc
+ {
+ int filetype = dirent->name_len >> 8;
+ int should_be = EXT2_FT_UNKNOWN;
++ __u16 result;
+ struct ext2_inode inode;
+
+ if (!(ctx->fs->super->s_feature_incompat &
+@@ -490,16 +486,18 @@ static _INLINE_ int check_filetype(e2fsc
+ return 1;
+ }
+
++ if (ctx->inode_badness)
++ ext2fs_icount_fetch(ctx->inode_badness, dirent->inode,
++ &result);
++
+ if (ext2fs_test_inode_bitmap2(ctx->inode_dir_map, dirent->inode)) {
+ should_be = EXT2_FT_DIR;
+ } else if (ext2fs_test_inode_bitmap2(ctx->inode_reg_map,
+ dirent->inode)) {
+ should_be = EXT2_FT_REG_FILE;
+- } else if (ctx->inode_bad_map &&
+- ext2fs_test_inode_bitmap2(ctx->inode_bad_map,
+- dirent->inode))
++ } else if (ctx->inode_badness && result >= BADNESS_BAD_MODE) {
+ should_be = 0;
+- else {
++ } else {
+ e2fsck_read_inode(ctx, dirent->inode, &inode,
+ "check_filetype");
+ should_be = ext2_file_type(inode.i_mode);
+@@ -954,12 +952,10 @@ out_htree:
+ * (We wait until now so that we can display the
+ * pathname to the user.)
+ */
+- if (ctx->inode_bad_map &&
+- ext2fs_test_inode_bitmap2(ctx->inode_bad_map,
+- dirent->inode)) {
+- if (e2fsck_process_bad_inode(ctx, ino,
+- dirent->inode,
+- buf + fs->blocksize)) {
++ if (ctx->inode_badness &&
++ ext2fs_icount_is_set(ctx->inode_badness, dirent->inode)) {
++ if (e2fsck_process_bad_inode(ctx, ino, dirent->inode,
++ buf + fs->blocksize)) {
+ dirent->inode = 0;
+ dir_modified++;
+ goto next;
+@@ -1181,9 +1177,17 @@ static void deallocate_inode(e2fsck_t ct
+ struct ext2_inode inode;
+ struct problem_context pctx;
+ __u32 count;
++ int extent_fs = 0;
+
+ e2fsck_read_inode(ctx, ino, &inode, "deallocate_inode");
++ /* ext2fs_block_iterate2() depends on the extents flags */
++ if (inode.i_flags & EXT4_EXTENTS_FL)
++ extent_fs = 1;
+ e2fsck_clear_inode(ctx, ino, &inode, 0, "deallocate_inode");
++ if (extent_fs) {
++ inode.i_flags |= EXT4_EXTENTS_FL;
++ e2fsck_write_inode(ctx, ino, &inode, "deallocate_inode");
++ }
+ clear_problem_context(&pctx);
+ pctx.ino = ino;
+
+@@ -1210,6 +1214,8 @@ static void deallocate_inode(e2fsck_t ct
+ if (count == 0) {
+ ext2fs_unmark_block_bitmap2(ctx->block_found_map,
+ ext2fs_file_acl_block(&inode));
++ if (ctx->inode_badness)
++ ext2fs_icount_store(ctx->inode_badness, ino, 0);
+ ext2fs_block_alloc_stats2(fs,
+ ext2fs_file_acl_block(&inode),
+ -1);
+@@ -1256,8 +1262,11 @@ extern int e2fsck_process_bad_inode(e2fs
+ int not_fixed = 0;
+ unsigned char *frag, *fsize;
+ struct problem_context pctx;
+- int problem = 0;
++ int problem = 0;
++ __u16 badness;
+
++ if (ctx->inode_badness)
++ ext2fs_icount_fetch(ctx->inode_badness, ino, &badness);
+ e2fsck_read_inode(ctx, ino, &inode, "process_bad_inode");
+
+ clear_problem_context(&pctx);
+@@ -1272,6 +1281,7 @@ extern int e2fsck_process_bad_inode(e2fs
+ inode_modified++;
+ } else
+ not_fixed++;
++ badness += BADNESS_NORMAL;
+ }
+
+ if (!LINUX_S_ISDIR(inode.i_mode) && !LINUX_S_ISREG(inode.i_mode) &&
+@@ -1305,6 +1315,11 @@ extern int e2fsck_process_bad_inode(e2fs
+ } else
+ not_fixed++;
+ problem = 0;
++ /*
++ * A high value is associated with bad mode in order to detect
++ * that mode was corrupt in check_filetype()
++ */
++ badness += BADNESS_BAD_MODE;
+ }
+
+ if (inode.i_faddr) {
+@@ -1313,6 +1328,7 @@ extern int e2fsck_process_bad_inode(e2fs
+ inode_modified++;
+ } else
+ not_fixed++;
++ badness += BADNESS_NORMAL;
+ }
+
+ switch (fs->super->s_creator_os) {
+@@ -1330,6 +1346,7 @@ extern int e2fsck_process_bad_inode(e2fs
+ inode_modified++;
+ } else
+ not_fixed++;
++ badness += BADNESS_NORMAL;
+ pctx.num = 0;
+ }
+ if (fsize && *fsize) {
+@@ -1339,9 +1356,26 @@ extern int e2fsck_process_bad_inode(e2fs
+ inode_modified++;
+ } else
+ not_fixed++;
++ badness += BADNESS_NORMAL;
+ pctx.num = 0;
+ }
+
++ /* In pass1 these conditions were used to mark inode bad so that
++ * it calls e2fsck_process_bad_inode and make an extensive check
++ * plus prompt for action to be taken. To compensate for badness
++ * incremented in pass1 by this condition, decrease it.
++ */
++ if ((inode.i_faddr || frag || fsize ||
++ (LINUX_S_ISDIR(inode.i_mode) && inode.i_dir_acl)) ||
++ (inode.i_file_acl &&
++ (!(fs->super->s_feature_compat & EXT2_FEATURE_COMPAT_EXT_ATTR) ||
++ (inode.i_file_acl < fs->super->s_first_data_block) ||
++ (inode.i_file_acl >= fs->super->s_blocks_count)))) {
++ /* badness can be 0 if called from pass4. */
++ if (badness)
++ badness -= BADNESS_NORMAL;
++ }
++
+ if ((fs->super->s_creator_os == EXT2_OS_LINUX) &&
+ !(fs->super->s_feature_ro_compat &
+ EXT4_FEATURE_RO_COMPAT_HUGE_FILE) &&
+@@ -1351,6 +1385,8 @@ extern int e2fsck_process_bad_inode(e2fs
+ inode.osd2.linux2.l_i_blocks_hi = 0;
+ inode_modified++;
+ }
++ /* Badness was increased in pass1 for this condition */
++ /* badness += BADNESS_NORMAL; */
+ }
+
+ if (!(fs->super->s_feature_incompat &
+@@ -1362,6 +1398,7 @@ extern int e2fsck_process_bad_inode(e2fs
+ inode_modified++;
+ } else
+ not_fixed++;
++ badness += BADNESS_NORMAL;
+ }
+
+ if (ext2fs_file_acl_block(&inode) &&
+@@ -1372,6 +1409,7 @@ extern int e2fsck_process_bad_inode(e2fs
+ inode_modified++;
+ } else
+ not_fixed++;
++ badness += BADNESS_NORMAL;
+ }
+ if (inode.i_dir_acl &&
+ LINUX_S_ISDIR(inode.i_mode)) {
+@@ -1380,12 +1418,29 @@ extern int e2fsck_process_bad_inode(e2fs
+ inode_modified++;
+ } else
+ not_fixed++;
++ badness += BADNESS_NORMAL;
++ }
++
++ /*
++ * The high value due to BADNESS_BAD_MODE should not delete the inode.
++ */
++ if (ctx->inode_badness &&
++ (badness - ((badness >= BADNESS_BAD_MODE) ? BADNESS_BAD_MODE : 0))>=
++ ctx->inode_badness_threshold) {
++ pctx.num = badness;
++ if (fix_problem(ctx, PR_2_INODE_TOOBAD, &pctx)) {
++ deallocate_inode(ctx, ino, 0);
++ if (ctx->flags & E2F_FLAG_SIGNAL_MASK)
++ return 0;
++ return 1;
++ }
++ not_fixed++;
+ }
+
+ if (inode_modified)
+ e2fsck_write_inode(ctx, ino, &inode, "process_bad_inode");
+- if (!not_fixed && ctx->inode_bad_map)
+- ext2fs_unmark_inode_bitmap2(ctx->inode_bad_map, ino);
++ if (ctx->inode_badness)
++ ext2fs_icount_store(ctx->inode_badness, ino, 0);
+ return 0;
+ }
+
+Index: e2fsprogs/e2fsck/pass4.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/pass4.c
++++ e2fsprogs/e2fsck/pass4.c
+@@ -181,6 +181,7 @@ void e2fsck_pass4(e2fsck_t ctx)
+ }
+ ext2fs_free_icount(ctx->inode_link_info); ctx->inode_link_info = 0;
+ ext2fs_free_icount(ctx->inode_count); ctx->inode_count = 0;
++ ext2fs_free_icount(ctx->inode_badness); ctx->inode_badness = 0;
+ ext2fs_free_inode_bitmap(ctx->inode_bb_map);
+ ctx->inode_bb_map = 0;
+ ext2fs_free_inode_bitmap(ctx->inode_imagic_map);
+Index: e2fsprogs/e2fsck/problem.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/problem.c
++++ e2fsprogs/e2fsck/problem.c
+@@ -923,6 +923,11 @@ static struct e2fsck_problem problem_tab
+ N_("@i %i has extent header with incorrect eh_depth\n"),
+ PROMPT_FIX, 0 },
+
++ /* invalid inode creation time */
++ { PR_1_CRTIME_BAD,
++ N_("@i %i creation time (%t) invalid.\n"),
++ PROMPT_CLEAR, PR_PREEN_OK | PR_NO_OK },
++
+ /* expand inode */
+ { PR_1_EXPAND_EISIZE_WARNING,
+ N_("\ne2fsck is being run with \"expand_extra_isize\" option or\n"
+@@ -1386,6 +1391,11 @@ static struct e2fsck_problem problem_tab
+ N_("i_file_acl_hi @F %N, @s zero.\n"),
+ PROMPT_CLEAR, PR_PREEN_OK },
+
++ /* Inode too bad */
++ { PR_2_INODE_TOOBAD,
++ N_("@i %i is badly corrupt (badness value = %N). "),
++ PROMPT_CLEAR, PR_PREEN_OK },
++
+ /* Pass 3 errors */
+
+ /* Pass 3: Checking directory connectivity */
+Index: e2fsprogs/e2fsck/problem.h
+===================================================================
+--- e2fsprogs.orig/e2fsck/problem.h
++++ e2fsprogs/e2fsck/problem.h
+@@ -543,6 +543,9 @@ struct problem_context {
+ /* eh_depth for in-inode header is bad */
+ #define PR_1_EXTENT_EH_DEPTH_BAD 0x010064
+
++/* invalid inode creation time */
++#define PR_1_CRTIME_BAD 0x010067
++
+ /* Warning for user that all inodes need to be expanded atleast by
+ * s_min_extra_isize
+ */
+@@ -834,6 +837,9 @@ struct problem_context {
+ /* i_file_acl_hi should be zero */
+ #define PR_2_I_FILE_ACL_HI_ZERO 0x020048
+
++/* Inode completely corrupt */
++#define PR_2_INODE_TOOBAD 0x020049
++
+ /*
+ * Pass 3 errors
+ */
+Index: e2fsprogs/e2fsck/super.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/super.c
++++ e2fsprogs/e2fsck/super.c
+@@ -834,8 +834,7 @@ void check_super_block(e2fsck_t ctx)
+ * write time is in the future.
+ */
+ if (!broken_system_clock &&
+- !(ctx->flags & E2F_FLAG_TIME_INSANE) &&
+- fs->super->s_mtime > (__u32) ctx->now) {
++ EXT4_XTIME_FUTURE(ctx, fs->super, fs->super->s_mtime, 0)) {
+ pctx.num = fs->super->s_mtime;
+ problem = PR_0_FUTURE_SB_LAST_MOUNT;
+ if (fs->super->s_mtime <= (__u32) ctx->now + ctx->time_fudge)
+@@ -846,8 +845,7 @@ void check_super_block(e2fsck_t ctx)
+ }
+ }
+ if (!broken_system_clock &&
+- !(ctx->flags & E2F_FLAG_TIME_INSANE) &&
+- fs->super->s_wtime > (__u32) ctx->now) {
++ EXT4_XTIME_FUTURE(ctx, fs->super, fs->super->s_wtime, 0)) {
+ pctx.num = fs->super->s_wtime;
+ problem = PR_0_FUTURE_SB_LAST_WRITE;
+ if (fs->super->s_wtime <= (__u32) ctx->now + ctx->time_fudge)
+Index: e2fsprogs/lib/ext2fs/icount.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/icount.c
++++ e2fsprogs/lib/ext2fs/icount.c
+@@ -467,6 +467,23 @@ static errcode_t get_inode_count(ext2_ic
+ return 0;
+ }
+
++int ext2fs_icount_is_set(ext2_icount_t icount, ext2_ino_t ino)
++{
++ __u16 result;
++
++ if (ext2fs_test_inode_bitmap2(icount->single, ino))
++ return 1;
++ else if (icount->multiple) {
++ if (ext2fs_test_inode_bitmap2(icount->multiple, ino))
++ return 1;
++ return 0;
++ }
++ ext2fs_icount_fetch(icount, ino, &result);
++ if (result)
++ return 1;
++ return 0;
++}
++
+ errcode_t ext2fs_icount_validate(ext2_icount_t icount, FILE *out)
+ {
+ errcode_t ret = 0;
+Index: e2fsprogs/e2fsck/unix.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/unix.c
++++ e2fsprogs/e2fsck/unix.c
+@@ -676,6 +676,18 @@ static void parse_extended_opts(e2fsck_t
+ extended_usage++;
+ continue;
+ }
++ /* -E inode_badness_threshold=<value> */
++ } else if (strcmp(token, "inode_badness_threshold") == 0) {
++ if (!arg) {
++ extended_usage++;
++ continue;
++ }
++ ctx->inode_badness_threshold = strtoul(arg, &p, 0);
++ if (*p != '\0' || (ctx->inode_badness_threshold > 200)){
++ fprintf(stderr, _("Invalid badness value.\n"));
++ extended_usage++;
++ continue;
++ }
+ } else if (strcmp(token, "journal_only") == 0) {
+ if (arg) {
+ extended_usage++;
+@@ -709,6 +721,7 @@ static void parse_extended_opts(e2fsck_t
+ fputs(("\tshared=<preserve|lost+found|delete>\n"), stderr);
+ fputs(("\tclone=<dup|zero>\n"), stderr);
+ fputs(("\texpand_extra_isize\n"), stderr);
++ fputs(("\tinode_badness_threhold=(value)\n"), stderr);
+ fputc('\n', stderr);
+ exit(1);
+ }
+@@ -774,6 +787,8 @@ static errcode_t PRS(int argc, char *arg
+
+ initialize_profile_options(ctx);
+
++ ctx->inode_badness_threshold = BADNESS_THRESHOLD;
++
+ while ((c = getopt (argc, argv, "panyrcC:B:dE:fvtFVM:b:I:j:P:l:L:N:SsDk")) != EOF)
+ switch (c) {
+ case 'C':
+Index: e2fsprogs/e2fsck/e2fsck.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/e2fsck.c
++++ e2fsprogs/e2fsck/e2fsck.c
+@@ -111,10 +111,6 @@ errcode_t e2fsck_reset_context(e2fsck_t
+ ext2fs_free_inode_bitmap(ctx->inode_bb_map);
+ ctx->inode_bb_map = 0;
+ }
+- if (ctx->inode_bad_map) {
+- ext2fs_free_inode_bitmap(ctx->inode_bad_map);
+- ctx->inode_bad_map = 0;
+- }
+ if (ctx->inode_imagic_map) {
+ ext2fs_free_inode_bitmap(ctx->inode_imagic_map);
+ ctx->inode_imagic_map = 0;
+Index: e2fsprogs/e2fsck/e2fsck.8.in
+===================================================================
+--- e2fsprogs.orig/e2fsck/e2fsck.8.in
++++ e2fsprogs/e2fsck/e2fsck.8.in
+@@ -203,6 +203,15 @@ be 1 or 2. The default extended attribu
+ Only replay the journal if required, but do not perform any further checks
+ or repairs.
+ .TP
++.BI inode_badness_threshold= threshold_value
++A badness counter is associated with every inode, which determines the degree
++of inode corruption. Each error found in the inode will increase the badness by
++1 or 2, and inodes with a badness at or above
++.I threshold_value
++will be prompted for deletion. The default
++.I threshold_value
++is 7.
++.TP
+ .BI fragcheck
+ During pass 1, print a detailed report of any discontiguous blocks for
+ files in the filesystem.
+Index: e2fsprogs/lib/ext2fs/ext2fs.h
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/ext2fs.h
++++ e2fsprogs/lib/ext2fs/ext2fs.h
+@@ -1163,6 +1163,7 @@ extern errcode_t ext2fs_initialize(const
+
+ /* icount.c */
+ extern void ext2fs_free_icount(ext2_icount_t icount);
++extern int ext2fs_icount_is_set(ext2_icount_t icount, ext2_ino_t ino);
+ extern errcode_t ext2fs_create_icount_tdb(ext2_filsys fs, char *tdb_dir,
+ int flags, ext2_icount_t *ret);
+ extern errcode_t ext2fs_create_icount2(ext2_filsys fs, int flags,
+Index: e2fsprogs/tests/f_messy_inode/expect.1
+===================================================================
+--- e2fsprogs.orig/tests/f_messy_inode/expect.1
++++ e2fsprogs/tests/f_messy_inode/expect.1
+@@ -20,19 +20,21 @@ Pass 2: Checking directory structure
+ i_file_acl for inode 14 (/MAKEDEV) is 4294901760, should be zero.
+ Clear? yes
+
++Inode 14 is badly corrupt (badness value = 13). Clear? yes
++
+ Pass 3: Checking directory connectivity
+ Pass 4: Checking reference counts
+ Pass 5: Checking group summary information
+ Block bitmap differences: -(43--49)
+ Fix? yes
+
+-Free blocks count wrong for group #0 (68, counted=75).
++Free blocks count wrong for group #0 (70, counted=77).
+ Fix? yes
+
+-Free blocks count wrong (68, counted=75).
++Free blocks count wrong (70, counted=77).
+ Fix? yes
+
+
+ test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
+-test_filesys: 29/32 files (3.4% non-contiguous), 25/100 blocks
++test_filesys: 28/32 files (3.6% non-contiguous), 23/100 blocks
+ Exit status is 1
+Index: e2fsprogs/tests/f_messy_inode/expect.2
+===================================================================
+--- e2fsprogs.orig/tests/f_messy_inode/expect.2
++++ e2fsprogs/tests/f_messy_inode/expect.2
+@@ -3,5 +3,5 @@ Pass 2: Checking directory structure
+ Pass 3: Checking directory connectivity
+ Pass 4: Checking reference counts
+ Pass 5: Checking group summary information
+-test_filesys: 29/32 files (0.0% non-contiguous), 25/100 blocks
++test_filesys: 28/32 files (0.0% non-contiguous), 23/100 blocks
+ Exit status is 0
--- /dev/null
+Index: e2fsprogs/e2fsck/e2fsck.h
+===================================================================
+--- e2fsprogs.orig/e2fsck/e2fsck.h
++++ e2fsprogs/e2fsck/e2fsck.h
+@@ -263,6 +263,7 @@ struct e2fsck_struct {
+ ext2fs_inode_bitmap inode_bb_map; /* Inodes which are in bad blocks */
+ ext2fs_inode_bitmap inode_imagic_map; /* AFS inodes */
+ ext2fs_inode_bitmap inode_reg_map; /* Inodes which are regular files*/
++ ext2fs_inode_bitmap inode_ea_map; /* EA inodes which are non-orphan */
+
+ ext2fs_block_bitmap block_found_map; /* Blocks which are in use */
+ ext2fs_block_bitmap block_dup_map; /* Blks referenced more than once */
+Index: e2fsprogs/e2fsck/pass1.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/pass1.c
++++ e2fsprogs/e2fsck/pass1.c
+@@ -28,6 +28,7 @@
+ * - A bitmap of which blocks are in use. (block_found_map)
+ * - A bitmap of which blocks are in use by two inodes (block_dup_map)
+ * - The data blocks of the directory inodes. (dir_map)
++ * - A bitmap of EA inodes. (inode_ea_map)
+ *
+ * Pass 1 is designed to stash away enough information so that the
+ * other passes should not need to read in the inode information
+@@ -270,6 +271,118 @@ static void check_size(e2fsck_t ctx, str
+ e2fsck_write_inode(ctx, pctx->ino, pctx->inode, "pass1");
+ }
+
++static void e2fsck_block_alloc_stats(ext2_filsys fs, blk64_t blk, int inuse)
++{
++ e2fsck_t ctx = (e2fsck_t) fs->priv_data;
++
++ if (ctx->block_found_map) {
++ if (inuse > 0)
++ ext2fs_mark_block_bitmap2(ctx->block_found_map, blk);
++ else
++ ext2fs_unmark_block_bitmap2(ctx->block_found_map, blk);
++ }
++}
++
++static void mark_inode_ea_map(e2fsck_t ctx, struct problem_context *pctx,
++ ext2_ino_t ino)
++{
++ if (!ctx->inode_ea_map) {
++ pctx->errcode = ext2fs_allocate_inode_bitmap(ctx->fs,
++ _("EA inode map"),
++ &ctx->inode_ea_map);
++ if (pctx->errcode) {
++ fix_problem(ctx, PR_1_ALLOCATE_IBITMAP_ERROR,
++ pctx);
++ exit(1);
++ }
++ }
++
++ ext2fs_mark_inode_bitmap2(ctx->inode_ea_map, ino);
++}
++
++/*
++ * Delete an EA entry. If this is the last entry to be deleted, then i_file_acl
++ * must have been freed, so we must update e2fsck block statistics and set
++ * i_file_acl_deleted.
++ * When we delete the entry successfully, this function returns 0, else
++ * non-zero value.
++ */
++
++static int e2fsck_ea_entry_delete(e2fsck_t ctx, struct ext2_ext_attr_entry *entry,
++ struct problem_context *pctx,
++ int *i_file_acl_deleted, problem_t prob)
++{
++ blk_t i_file_acl = pctx->inode->i_file_acl;
++ int err = 1;
++
++ pctx->num = entry->e_value_inum;
++
++ if (fix_problem(ctx, prob, pctx)) {
++ /* Delete corrupt EA entry */
++ err = ext2fs_attr_set(ctx->fs, pctx->ino, pctx->inode,
++ entry->e_name_index, entry->e_name,
++ 0, 0, 0);
++ if (err == 0) {
++ if (i_file_acl && pctx->inode->i_file_acl == 0) {
++ e2fsck_block_alloc_stats(ctx->fs, i_file_acl, -1);
++ *i_file_acl_deleted = 1;
++ }
++ return 0;
++ }
++ }
++
++ return err;
++}
++
++/*
++ * Check validity of EA inode. Return 0 if EA inode is valid, nonzero otherwise.
++ */
++static int check_large_ea_inode(e2fsck_t ctx, struct ext2_ext_attr_entry *entry,
++ struct problem_context *pctx,
++ int *i_file_acl_deleted)
++{
++ struct ext2_inode inode;
++ int ret = 0;
++
++ /* Check if inode is within valid range */
++ if ((entry->e_value_inum < EXT2_FIRST_INODE(ctx->fs->super)) ||
++ (entry->e_value_inum > ctx->fs->super->s_inodes_count)) {
++ ret = e2fsck_ea_entry_delete(ctx, entry, pctx,
++ i_file_acl_deleted,
++ PR_1_ATTR_VALUE_EA_INODE);
++ /* If user refuses to delete this entry, caller may try to set
++ * the bit for this out-of-bound inode in inode_ea_map, so
++ * always return failure */
++ return 1;
++ }
++
++ e2fsck_read_inode(ctx, entry->e_value_inum, &inode, "pass1");
++ if (!(inode.i_flags & EXT4_EA_INODE_FL)) {
++ /* If EXT4_EA_INODE_FL flag is not present but back-pointer
++ * matches then we should set this flag */
++ if (inode.i_mtime == pctx->ino &&
++ inode.i_generation == pctx->inode->i_generation &&
++ fix_problem(ctx, PR_1_ATTR_SET_EA_INODE_FL, pctx)) {
++ inode.i_flags |= EXT4_EA_INODE_FL;
++ ext2fs_write_inode(ctx->fs, entry->e_value_inum, &inode);
++ } else {
++ ret = e2fsck_ea_entry_delete(ctx, entry, pctx,
++ i_file_acl_deleted,
++ PR_1_ATTR_NO_EA_INODE_FL);
++ goto out;
++ }
++ } else if (inode.i_mtime != pctx->ino ||
++ inode.i_generation != pctx->inode->i_generation) {
++ ret = e2fsck_ea_entry_delete(ctx, entry, pctx,
++ i_file_acl_deleted,
++ PR_1_ATTR_INVAL_EA_INODE);
++ goto out;
++ }
++
++out:
++ return ret;
++}
++
+ static void check_ea_in_inode(e2fsck_t ctx, struct problem_context *pctx)
+ {
+ struct ext2_super_block *sb = ctx->fs->super;
+@@ -307,18 +420,25 @@ static void check_ea_in_inode(e2fsck_t c
+ /* attribute len eats this space */
+ remain -= EXT2_EXT_ATTR_SIZE(entry->e_name_len);
+
+- /* check value size */
+- if (entry->e_value_size == 0 || entry->e_value_size > remain) {
++ if (entry->e_value_size == 0) {
+ pctx->num = entry->e_value_size;
+ problem = PR_1_ATTR_VALUE_SIZE;
+ goto fix;
+ }
+
+- /* e_value_block must be 0 in inode's ea */
+- if (entry->e_value_block != 0) {
+- pctx->num = entry->e_value_block;
+- problem = PR_1_ATTR_VALUE_BLOCK;
+- goto fix;
++ if (entry->e_value_inum == 0) {
++ /* check value size */
++ if (entry->e_value_size > remain) {
++ pctx->num = entry->e_value_size;
++ problem = PR_1_ATTR_VALUE_SIZE;
++ goto fix;
++ }
++ } else {
++ int ret, tmp;
++
++ ret = check_large_ea_inode(ctx, entry, pctx, &tmp);
++ if (ret == 0)
++ mark_inode_ea_map(ctx, pctx, entry->e_value_inum);
+ }
+
+ /* Value size cannot be larger than EA space in inode */
+@@ -338,7 +458,10 @@ static void check_ea_in_inode(e2fsck_t c
+ goto fix;
+ }
+
+- remain -= entry->e_value_size;
++ /* If EA value is stored in external inode then it does not
++ * consume space here */
++ if (entry->e_value_inum == 0)
++ remain -= entry->e_value_size;
+
+ entry = EXT2_EXT_ATTR_NEXT(entry);
+ }
+@@ -627,7 +750,7 @@ int e2fsck_pass1_delete_attr(e2fsck_t ct
+ if (EXT2_EXT_IS_LAST_ENTRY(entry)) {
+ if (in_inode) {
+ entry = entry_blk;
+- len = sizeof(entry->e_name);
++ len = sizeof(entry->e_name);
+ entry_size = ext2fs_attr_get_next_attr(entry,
+ index, name, len, 1);
+ in_inode = 0;
+@@ -1657,6 +1780,7 @@ static int check_ext_attr(e2fsck_t ctx,
+ struct ext2_ext_attr_entry *entry;
+ int count;
+ region_t region = 0;
++ int ret;
+
+ blk = ext2fs_file_acl_block(inode);
+ if (blk == 0)
+@@ -1778,19 +1902,27 @@ static int check_ext_attr(e2fsck_t ctx,
+ goto clear_extattr;
+ break;
+ }
+- if (entry->e_value_block != 0) {
+- if (fix_problem(ctx, PR_1_EA_BAD_VALUE, pctx))
+- goto clear_extattr;
+- }
+- if (entry->e_value_offs + entry->e_value_size > fs->blocksize) {
+- if (fix_problem(ctx, PR_1_EA_BAD_VALUE, pctx))
+- goto clear_extattr;
+- break;
+- }
+- if (entry->e_value_size &&
+- region_allocate(region, entry->e_value_offs,
+- EXT2_EXT_ATTR_SIZE(entry->e_value_size))) {
+- if (fix_problem(ctx, PR_1_EA_ALLOC_COLLISION, pctx))
++ if (entry->e_value_inum == 0) {
++ if (entry->e_value_offs + entry->e_value_size > fs->blocksize) {
++ if (fix_problem(ctx, PR_1_EA_BAD_VALUE, pctx))
++ goto clear_extattr;
++ break;
++ }
++ if (entry->e_value_size &&
++ region_allocate(region, entry->e_value_offs,
++ EXT2_EXT_ATTR_SIZE(entry->e_value_size))) {
++ if (fix_problem(ctx, PR_1_EA_ALLOC_COLLISION, pctx))
++ goto clear_extattr;
++ }
++ } else {
++ int i_file_acl_deleted = 0;
++
++ ret = check_large_ea_inode(ctx, entry, pctx,
++ &i_file_acl_deleted);
++ if (ret == 0)
++ mark_inode_ea_map(ctx, pctx, entry->e_value_inum);
++
++ if (i_file_acl_deleted)
+ goto clear_extattr;
+ }
+
+@@ -2998,18 +3130,6 @@ static errcode_t e2fsck_get_alloc_block(
+ return (0);
+ }
+
+-static void e2fsck_block_alloc_stats(ext2_filsys fs, blk64_t blk, int inuse)
+-{
+- e2fsck_t ctx = (e2fsck_t) fs->priv_data;
+-
+- if (ctx->block_found_map) {
+- if (inuse > 0)
+- ext2fs_mark_block_bitmap2(ctx->block_found_map, blk);
+- else
+- ext2fs_unmark_block_bitmap2(ctx->block_found_map, blk);
+- }
+-}
+-
+ void e2fsck_use_inode_shortcuts(e2fsck_t ctx, int bool)
+ {
+ ext2_filsys fs = ctx->fs;
+Index: e2fsprogs/e2fsck/pass4.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/pass4.c
++++ e2fsprogs/e2fsck/pass4.c
+@@ -11,6 +11,7 @@
+ * Pass 4 frees the following data structures:
+ * - A bitmap of which inodes are in bad blocks. (inode_bb_map)
+ * - A bitmap of which inodes are imagic inodes. (inode_imagic_map)
++ * - A bitmap of EA inodes. (inode_ea_map)
+ */
+
+ #include "e2fsck.h"
+@@ -39,6 +40,20 @@ static int disconnect_inode(e2fsck_t ctx
+ } else {
+ e2fsck_read_inode(ctx, i, inode, "pass4: disconnect_inode");
+ }
++
++ if (inode->i_flags & EXT4_EA_INODE_FL) {
++ if (ext2fs_test_inode_bitmap2(ctx->inode_ea_map, i)) {
++ ext2fs_icount_store(ctx->inode_count, i, 1);
++ return 0;
++ } else {
++ /* Zero the link count so that when inode is linked to
++ * lost+found it has correct link count */
++ inode->i_links_count = 0;
++ e2fsck_write_inode(ctx, i, inode, "disconnect_inode");
++ ext2fs_icount_store(ctx->inode_link_info, i, 0);
++ }
++ }
++
+ clear_problem_context(&pctx);
+ pctx.ino = i;
+ pctx.inode = inode;
+@@ -182,6 +197,8 @@ void e2fsck_pass4(e2fsck_t ctx)
+ ext2fs_free_icount(ctx->inode_link_info); ctx->inode_link_info = 0;
+ ext2fs_free_icount(ctx->inode_count); ctx->inode_count = 0;
+ ext2fs_free_icount(ctx->inode_badness); ctx->inode_badness = 0;
++ ext2fs_free_inode_bitmap(ctx->inode_ea_map);
++ ctx->inode_ea_map = 0;
+ ext2fs_free_inode_bitmap(ctx->inode_bb_map);
+ ctx->inode_bb_map = 0;
+ ext2fs_free_inode_bitmap(ctx->inode_imagic_map);
+Index: e2fsprogs/e2fsck/problem.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/problem.c
++++ e2fsprogs/e2fsck/problem.c
+@@ -969,6 +969,27 @@ static struct e2fsck_problem problem_tab
+ "without deletion of an EA.\n"),
+ PROMPT_FIX, 0 },
+
++ /* Inode has illegal extended attribute value inode */
++ { PR_1_ATTR_VALUE_EA_INODE,
++ N_("@i %i has @I @a value @i %N.\n"),
++ PROMPT_FIX, PR_PREEN_OK },
++
++ /* Invalid backpointer from extended attribute inode to parent inode */
++ { PR_1_ATTR_INVAL_EA_INODE,
++ N_("@n backpointer from @a @i %N to parent @i %i.\n"),
++ PROMPT_CLEAR, PR_PREEN_OK },
++
++ /* Inode has invalid extended attribute. EA inode missing
++ * EA_INODE flag. */
++ { PR_1_ATTR_NO_EA_INODE_FL,
++ N_("@i %i has @n @a. EA @i %N missing EA_INODE flag.\n"),
++ PROMPT_CLEAR, PR_PREEN_OK },
++
++ /* EA inode for parent inode missing EA_INODE flag. */
++ { PR_1_ATTR_SET_EA_INODE_FL,
++ N_("EA @i %N for parent @i %i missing EA_INODE flag.\n "),
++ PROMPT_FIX, PR_PREEN_OK },
++
+
+ /* Pass 1b errors */
+
+Index: e2fsprogs/e2fsck/problem.h
+===================================================================
+--- e2fsprogs.orig/e2fsck/problem.h
++++ e2fsprogs/e2fsck/problem.h
+@@ -570,6 +570,19 @@ struct problem_context {
+ */
+ #define PR_1_CLEAR_EXTRA_ISIZE 0x01006C
+
++/* Inode has illegal EA value inode */
++#define PR_1_ATTR_VALUE_EA_INODE 0x01006D
++
++/* Invalid backpointer from EA inode to parent inode */
++#define PR_1_ATTR_INVAL_EA_INODE 0x01006E
++
++/* Parent inode has invalid EA entry. EA inode does not have
++ * EXT4_EA_INODE_FL flag. Delete EA entry? */
++#define PR_1_ATTR_NO_EA_INODE_FL 0x01006F
++
++/* EA inode for parent inode does not have EXT4_EA_INODE_FL flag */
++#define PR_1_ATTR_SET_EA_INODE_FL 0x010070
++
+ /*
+ * Pass 1b errors
+ */
+Index: e2fsprogs/lib/blkid/probe.h
+===================================================================
+--- e2fsprogs.orig/lib/blkid/probe.h
++++ e2fsprogs/lib/blkid/probe.h
+@@ -119,6 +119,7 @@ struct ext2_super_block {
+ #define EXT4_FEATURE_INCOMPAT_64BIT 0x0080
+ #define EXT4_FEATURE_INCOMPAT_MMP 0x0100
+ #define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200
++#define EXT4_FEATURE_INCOMPAT_EA_INODE 0x0400
+
+ #define EXT2_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \
+ EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \
+Index: e2fsprogs/lib/e2p/feature.c
+===================================================================
+--- e2fsprogs.orig/lib/e2p/feature.c
++++ e2fsprogs/lib/e2p/feature.c
+@@ -76,6 +76,8 @@ static struct feature feature_list[] = {
+ "flex_bg"},
+ { E2P_FEATURE_INCOMPAT, EXT4_FEATURE_INCOMPAT_MMP,
+ "mmp" },
++ { E2P_FEATURE_INCOMPAT, EXT4_FEATURE_INCOMPAT_EA_INODE,
++ "large_xattr" },
+ { 0, 0, 0 },
+ };
+
+Index: e2fsprogs/lib/ext2fs/ext2_ext_attr.h
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/ext2_ext_attr.h
++++ e2fsprogs/lib/ext2fs/ext2_ext_attr.h
+@@ -30,7 +30,7 @@ struct ext2_ext_attr_entry {
+ __u8 e_name_len; /* length of name */
+ __u8 e_name_index; /* attribute name index */
+ __u16 e_value_offs; /* offset in disk block of value */
+- __u32 e_value_block; /* disk block attribute is stored on (n/i) */
++ __u32 e_value_inum; /* inode in which the value is stored */
+ __u32 e_value_size; /* size of attribute value */
+ __u32 e_hash; /* hash value of name and value */
+ #if 1
+@@ -48,6 +48,9 @@ struct ext2_xattr_ibody_header {
+ EXT2_GOOD_OLD_INODE_SIZE + (inode)->i_extra_isize))
+ #define ENTRY(ptr) ((struct ext2_ext_attr_entry *)(ptr))
+
++#define EXT4_XATTR_MIN_LARGE_EA_SIZE(b) ((b) >> 1)
++#define EXT4_XATTR_MAX_LARGE_EA_SIZE (1024 * 1024)
++
+ /* Name indexes */
+ #define EXT2_ATTR_INDEX_USER 1
+ #define EXT2_ATTR_INDEX_POSIX_ACL_ACCESS 2
+Index: e2fsprogs/lib/ext2fs/ext2_fs.h
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/ext2_fs.h
++++ e2fsprogs/lib/ext2fs/ext2_fs.h
+@@ -697,7 +697,8 @@ struct ext2_super_block {
+
+ #define EXT2_FEATURE_COMPAT_SUPP 0
+ #define EXT2_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE| \
+- EXT4_FEATURE_INCOMPAT_MMP)
++ EXT4_FEATURE_INCOMPAT_MMP|\
++ EXT4_FEATURE_INCOMPAT_EA_INODE)
+ #define EXT2_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \
+ EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \
+ EXT4_FEATURE_RO_COMPAT_DIR_NLINK| \
+Index: e2fsprogs/lib/ext2fs/ext2fs.h
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/ext2fs.h
++++ e2fsprogs/lib/ext2fs/ext2fs.h
+@@ -571,6 +571,7 @@ typedef struct ext2_icount *ext2_icount_
+ EXT3_FEATURE_INCOMPAT_EXTENTS|\
+ EXT4_FEATURE_INCOMPAT_FLEX_BG|\
+ EXT4_FEATURE_INCOMPAT_MMP|\
++ EXT4_FEATURE_INCOMPAT_EA_INODE|\
+ EXT4_FEATURE_INCOMPAT_64BIT)
+ #else
+ #define EXT2_LIB_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE|\
+@@ -580,6 +581,7 @@ typedef struct ext2_icount *ext2_icount_
+ EXT3_FEATURE_INCOMPAT_EXTENTS|\
+ EXT4_FEATURE_INCOMPAT_FLEX_BG|\
+ EXT4_FEATURE_INCOMPAT_MMP|\
++ EXT4_FEATURE_INCOMPAT_EA_INODE|\
+ EXT4_FEATURE_INCOMPAT_64BIT)
+ #endif
+ #define EXT2_LIB_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER|\
+Index: e2fsprogs/lib/ext2fs/ext_attr.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/ext_attr.c
++++ e2fsprogs/lib/ext2fs/ext_attr.c
+@@ -45,7 +45,7 @@ __u32 ext2fs_ext_attr_hash_entry(struct
+ }
+
+ /* The hash needs to be calculated on the data in little-endian. */
+- if (entry->e_value_block == 0 && entry->e_value_size != 0) {
++ if (entry->e_value_inum == 0 && entry->e_value_size != 0) {
+ __u32 *value = (__u32 *)data;
+ for (n = (entry->e_value_size + EXT2_EXT_ATTR_ROUND) >>
+ EXT2_EXT_ATTR_PAD_BITS; n; n--) {
+@@ -207,6 +207,7 @@ struct ext2_attr_ibody_find {
+ };
+
+ struct ext2_attr_block_find {
++ ext2_ino_t ino;
+ struct ext2_attr_search s;
+ char *block;
+ };
+@@ -219,7 +220,7 @@ void ext2fs_attr_shift_entries(struct ex
+
+ /* Adjust the value offsets of the entries */
+ for (; !EXT2_EXT_IS_LAST_ENTRY(last); last = EXT2_EXT_ATTR_NEXT(last)) {
+- if (!last->e_value_block && last->e_value_size) {
++ if (last->e_value_inum == 0 && last->e_value_size) {
+ last->e_value_offs = last->e_value_offs +
+ value_offs_shift;
+ }
+@@ -240,7 +241,7 @@ int ext2fs_attr_free_space(struct ext2_e
+ {
+ for (; !EXT2_EXT_IS_LAST_ENTRY(last); last = EXT2_EXT_ATTR_NEXT(last)) {
+ *total += EXT2_EXT_ATTR_LEN(last->e_name_len);
+- if (!last->e_value_block && last->e_value_size) {
++ if (last->e_value_inum == 0 && last->e_value_size) {
+ int offs = last->e_value_offs;
+ if (offs < *min_offs)
+ *min_offs = offs;
+@@ -376,7 +377,7 @@ static errcode_t ext2fs_attr_set_entry(e
+ /* Compute min_offs and last. */
+ for (last = s->first; !EXT2_EXT_IS_LAST_ENTRY(last);
+ last = EXT2_EXT_ATTR_NEXT(last)) {
+- if (!last->e_value_block && last->e_value_size) {
++ if (last->e_value_inum == 0 && last->e_value_size) {
+ int offs = last->e_value_offs;
+
+ if (offs < min_offs)
+@@ -386,7 +387,7 @@ static errcode_t ext2fs_attr_set_entry(e
+ free = min_offs - ((char *)last - s->base) - sizeof(__u32);
+
+ if (!s->not_found) {
+- if (!s->here->e_value_block && s->here->e_value_size) {
++ if (s->here->e_value_inum == 0 && s->here->e_value_size) {
+ int size = s->here->e_value_size;
+ free += EXT2_EXT_ATTR_SIZE(size);
+ }
+@@ -409,7 +410,7 @@ static errcode_t ext2fs_attr_set_entry(e
+ s->here->e_name_len = name_len;
+ memcpy(s->here->e_name, i->name, name_len);
+ } else {
+- if (!s->here->e_value_block && s->here->e_value_size) {
++ if (s->here->e_value_inum == 0 && s->here->e_value_size) {
+ char *first_val = s->base + min_offs;
+ int offs = s->here->e_value_offs;
+ char *val = s->base + offs;
+@@ -438,7 +439,7 @@ static errcode_t ext2fs_attr_set_entry(e
+ while (!EXT2_EXT_IS_LAST_ENTRY(last)) {
+ int o = last->e_value_offs;
+
+- if (!last->e_value_block &&
++ if (last->e_value_inum == 0 &&
+ last->e_value_size && o < offs)
+ last->e_value_offs = o + size;
+ last = EXT2_EXT_ATTR_NEXT(last);
+@@ -556,9 +557,20 @@ static errcode_t ext2fs_attr_block_set(e
+ /* Update the i_blocks if we added a new EA block */
+ if (!inode->i_file_acl && new_buf)
+ inode->i_blocks += fs->blocksize / 512;
++
++ /* Drop the previous xattr block. */
++ if (!new_buf) {
++ if (!fs->block_map)
++ ext2fs_read_block_bitmap(fs);
++ ext2fs_block_alloc_stats(fs, inode->i_file_acl, -1);
++ inode->i_blocks -= fs->blocksize / 512;
++ }
++
+ /* Update the inode. */
+ inode->i_file_acl = new_buf ? blk : 0;
+
++ ext2fs_write_inode(fs, bs->ino, inode);
++
+ cleanup:
+ if (clear_flag)
+ ext2fs_free_mem(&s->base);
+@@ -866,6 +878,7 @@ errcode_t ext2fs_expand_extra_isize(ext2
+ .s = { .not_found = EXT2_ET_EA_NO_SPACE, },
+ };
+ struct ext2_attr_block_find bs = {
++ .ino = ino,
+ .s = { .not_found = EXT2_ET_EA_NO_SPACE, },
+ };
+ char *start, *end, *block_buf = NULL, *buffer =NULL, *b_entry_name=NULL;
+Index: e2fsprogs/lib/ext2fs/swapfs.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/swapfs.c
++++ e2fsprogs/lib/ext2fs/swapfs.c
+@@ -151,7 +151,7 @@ void ext2fs_swap_ext_attr_entry(struct e
+ struct ext2_ext_attr_entry *from_entry)
+ {
+ to_entry->e_value_offs = ext2fs_swab16(from_entry->e_value_offs);
+- to_entry->e_value_block = ext2fs_swab32(from_entry->e_value_block);
++ to_entry->e_value_inum = ext2fs_swab32(from_entry->e_value_inum);
+ to_entry->e_value_size = ext2fs_swab32(from_entry->e_value_size);
+ to_entry->e_hash = ext2fs_swab32(from_entry->e_hash);
+ }
+Index: e2fsprogs/misc/mke2fs.c
+===================================================================
+--- e2fsprogs.orig/misc/mke2fs.c
++++ e2fsprogs/misc/mke2fs.c
+@@ -813,6 +813,7 @@ static __u32 ok_features[3] = {
+ EXT3_FEATURE_INCOMPAT_JOURNAL_DEV|
+ EXT2_FEATURE_INCOMPAT_META_BG|
+ EXT4_FEATURE_INCOMPAT_FLEX_BG|
++ EXT4_FEATURE_INCOMPAT_EA_INODE|
+ EXT4_FEATURE_INCOMPAT_MMP |
+ EXT4_FEATURE_INCOMPAT_64BIT,
+ /* R/O compat */
+Index: e2fsprogs/misc/tune2fs.c
+===================================================================
+--- e2fsprogs.orig/misc/tune2fs.c
++++ e2fsprogs/misc/tune2fs.c
+@@ -126,6 +126,7 @@ static __u32 ok_features[3] = {
+ EXT2_FEATURE_INCOMPAT_FILETYPE |
+ EXT3_FEATURE_INCOMPAT_EXTENTS |
+ EXT4_FEATURE_INCOMPAT_FLEX_BG |
++ EXT4_FEATURE_INCOMPAT_EA_INODE|
+ EXT4_FEATURE_INCOMPAT_MMP,
+ /* R/O compat */
+ EXT2_FEATURE_RO_COMPAT_LARGE_FILE |
+@@ -144,6 +145,7 @@ static __u32 clear_ok_features[3] = {
+ /* Incompat */
+ EXT2_FEATURE_INCOMPAT_FILETYPE |
+ EXT4_FEATURE_INCOMPAT_FLEX_BG |
++ EXT4_FEATURE_INCOMPAT_EA_INODE|
+ EXT4_FEATURE_INCOMPAT_MMP,
+ /* R/O compat */
+ EXT2_FEATURE_RO_COMPAT_LARGE_FILE |
+@@ -484,6 +486,9 @@ mmp_error:
+ sb->s_mmp_update_interval = 0;
+ }
+
++ if (FEATURE_ON(E2P_FEATURE_INCOMPAT, EXT4_FEATURE_INCOMPAT_EA_INODE))
++ sb->s_feature_incompat |= EXT4_FEATURE_INCOMPAT_EA_INODE;
++
+ if (FEATURE_ON(E2P_FEATURE_COMPAT, EXT3_FEATURE_COMPAT_HAS_JOURNAL)) {
+ /*
+ * If adding a journal flag, let the create journal
--- /dev/null
+This patch adds the ability to skip zeroing the journal on disk. This can
+significantly speed up mke2fs with large journals. At worst the uninitialized
+journal is only a very short-term risk (if at all), because the journal will
+be overwritten on any new filesystem as soon as any significant amount of data
+is written to disk, unlike lazy_itable_init which can leave uninitialized
+itable blocks indefinitely (in the absence of the kernel init thread).
+
+Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
+
+Index: e2fsprogs/lib/ext2fs/ext2fs.h
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/ext2fs.h
++++ e2fsprogs/lib/ext2fs/ext2fs.h
+@@ -197,10 +197,9 @@ typedef struct ext2_file *ext2_file_t;
+
+ /*
+ * Flags for mkjournal
+- *
+- * EXT2_MKJOURNAL_V1_SUPER Make a (deprecated) V1 journal superblock
+ */
+-#define EXT2_MKJOURNAL_V1_SUPER 0x0000001
++#define EXT2_MKJOURNAL_V1_SUPER 0x0000001 /* create V1 superblock (deprecated) */
++#define EXT2_MKJOURNAL_LAZYINIT 0x0000002 /* don't zero journal inode before use*/
+
+ struct opaque_ext2_group_desc;
+
+Index: e2fsprogs/lib/ext2fs/mkjournal.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/mkjournal.c
++++ e2fsprogs/lib/ext2fs/mkjournal.c
+@@ -103,7 +103,7 @@ static errcode_t write_journal_file(ext2
+ /* Open the device or journal file */
+ if ((fd = open(filename, O_WRONLY)) < 0) {
+ retval = errno;
+- goto errout;
++ goto errfree;
+ }
+
+ /* Write the superblock out */
+@@ -117,6 +117,9 @@ static errcode_t write_journal_file(ext2
+ goto errout;
+ memset(buf, 0, fs->blocksize);
+
++ if (flags & EXT2_MKJOURNAL_LAZYINIT)
++ goto success;
++
+ for (i = 1; i < blocks; i++) {
+ ret_size = write(fd, buf, fs->blocksize);
+ if (ret_size < 0) {
+@@ -126,10 +129,12 @@ static errcode_t write_journal_file(ext2
+ if (ret_size != (int) fs->blocksize)
+ goto errout;
+ }
+- close(fd);
+
++success:
+ retval = 0;
+ errout:
++ close(fd);
++errfree:
+ ext2fs_free_mem(&buf);
+ return retval;
+ }
+@@ -213,6 +218,7 @@ struct mkjournal_struct {
+ blk64_t goal;
+ blk64_t blk_to_zero;
+ int zero_count;
++ int flags;
+ char *buf;
+ errcode_t err;
+ };
+@@ -244,7 +250,7 @@ static int mkjournal_proc(ext2_filsys fs
+ retval = 0;
+ if (blockcnt <= 0)
+ retval = io_channel_write_blk64(fs->io, new_blk, 1, es->buf);
+- else {
++ else if (!(es->flags & EXT2_MKJOURNAL_LAZYINIT)) {
+ if (es->zero_count) {
+ if ((es->blk_to_zero + es->zero_count == new_blk) &&
+ (es->zero_count < 1024))
+@@ -309,6 +315,7 @@ static errcode_t write_journal_inode(ext
+ es.newblocks = 0;
+ es.buf = buf;
+ es.err = 0;
++ es.flags = flags;
+ es.zero_count = 0;
+
+ if (fs->super->s_feature_incompat & EXT3_FEATURE_INCOMPAT_EXTENTS) {
+@@ -511,6 +518,13 @@ errcode_t ext2fs_add_journal_inode(ext2_
+ if ((fd = open(jfile, O_CREAT|O_WRONLY, 0600)) < 0)
+ return errno;
+
++ /* Note that we can't do lazy journal initialization for mounted
++ * filesystems, since the zero writing is also allocating the
++ * journal blocks. We could use fallocate, but not all kernels
++ * support that, and creating a journal on a mounted ext2
++ * filesystems is extremely rare these days... Skip it. */
++ flags &= ~EXT2_MKJOURNAL_LAZYINIT;
++
+ if ((retval = write_journal_file(fs, jfile, blocks, flags)))
+ goto errout;
+
+Index: e2fsprogs/misc/mke2fs.8.in
+===================================================================
+--- e2fsprogs.orig/misc/mke2fs.8.in
++++ e2fsprogs/misc/mke2fs.8.in
+@@ -232,7 +232,15 @@ This speeds up filesystem
+ initialization noticeably, but it requires the kernel to finish
+ initializing the filesystem in the background when the filesystem is
+ first mounted. If the option value is omitted, it defaults to 1 to
+-enable lazy inode table initialization.
++enable lazy inode table zeroing.
++.TP
++.B lazy_journal_init\fR[\fB= \fI<0 to disable, 1 to enable>\fR]
++If enabled, the journal inode will not be fully zeroed out by
++.BR mke2fs .
++This speeds up filesystem initialization noticeably, but carries some
++small risk if the system crashes before the journal has been overwritten
++entirely one time. If the option value is omitted, it defaults to 1 to
++enable lazy journal inode zeroing.
+ .TP
+ .B test_fs
+ Set a flag in the filesystem superblock indicating that it may be
+Index: e2fsprogs/misc/mke2fs.c
+===================================================================
+--- e2fsprogs.orig/misc/mke2fs.c
++++ e2fsprogs/misc/mke2fs.c
+@@ -503,6 +503,10 @@ static void create_journal_dev(ext2_fils
+ _("while initializing journal superblock"));
+ exit(1);
+ }
++
++ if (journal_flags & EXT2_MKJOURNAL_LAZYINIT)
++ goto write_superblock;
++
+ ext2fs_numeric_progress_init(fs, &progress,
+ _("Zeroing journal device: "),
+ ext2fs_blocks_count(fs->super));
+@@ -527,6 +531,8 @@ static void create_journal_dev(ext2_fils
+ }
+ ext2fs_zero_blocks2(0, 0, 0, 0, 0);
+
++ ext2fs_numeric_progress_close(fs, &progress, NULL);
++write_superblock:
+ retval = io_channel_write_blk64(fs->io,
+ fs->super->s_first_data_block+1,
+ 1, buf);
+@@ -535,7 +541,6 @@ static void create_journal_dev(ext2_fils
+ _("while writing journal superblock"));
+ exit(1);
+ }
+- ext2fs_numeric_progress_close(fs, &progress, NULL);
+ }
+
+ static void show_stats(ext2_filsys fs)
+@@ -746,6 +751,12 @@ static void parse_extended_opts(struct e
+ }
+ } else if (!strcmp(token, "test_fs")) {
+ param->s_flags |= EXT2_FLAGS_TEST_FILESYS;
++ } else if (!strcmp(token, "lazy_journal_init")) {
++ if (arg)
++ journal_flags |= strtoul(arg, &p, 0) ?
++ EXT2_MKJOURNAL_LAZYINIT : 0;
++ else
++ journal_flags |= EXT2_MKJOURNAL_LAZYINIT;
+ } else if (!strcmp(token, "lazy_itable_init")) {
+ if (arg)
+ lazy_itable_init = strtoul(arg, &p, 0);
+@@ -770,6 +781,7 @@ static void parse_extended_opts(struct e
+ "\tstripe-width=<RAID stride * data disks in blocks>\n"
+ "\tresize=<resize maximum size in blocks>\n"
+ "\tlazy_itable_init=<0 to disable, 1 to enable>\n"
++ "\tlazy_journal_init=<0 to disable, 1 to enable>\n"
+ "\ttest_fs\n"
+ "\tdiscard\n"
+ "\tnodiscard\n\n"),
+@@ -1778,6 +1790,9 @@ profile_error:
+ "lazy_itable_init",
+ lazy_itable_init);
+ discard = get_bool_from_profile(fs_types, "discard" , discard);
++ journal_flags |= get_bool_from_profile(fs_types,
++ "lazy_journal_init", 0) ?
++ EXT2_MKJOURNAL_LAZYINIT : 0;
+
+ /* Get options from profile */
+ for (cpp = fs_types; *cpp; cpp++) {
--- /dev/null
+add support for lustre lfsck tool
+
+Index: e2fsprogs/MCONFIG.in
+===================================================================
+--- e2fsprogs.orig/MCONFIG.in
++++ e2fsprogs/MCONFIG.in
+@@ -97,6 +97,9 @@ DEPLIBSS = $(LIB)/libss@LIB_EXT@
+ DEPLIBCOM_ERR = $(LIB)/libcom_err@LIB_EXT@
+ DEPLIBUUID = @DEPLIBUUID@
+ DEPLIBBLKID = @DEPLIBBLKID@ @PRIVATE_LIBS_CMT@ $(DEPLIBUUID)
++#Version of libdb lib found by configure
++LIBDB = @libdb@
++
+
+ STATIC_LIBSS = $(LIB)/libss@STATIC_LIB_EXT@ @DLOPEN_LIB@
+ STATIC_LIBCOM_ERR = $(LIB)/libcom_err@STATIC_LIB_EXT@ @SEM_INIT_LIB@
+@@ -202,8 +205,8 @@ Makefile: $(srcdir)/Makefile.in $(top_bu
+ $(DEP_MAKEFILE) $(top_builddir)/config.status
+ cd $(top_builddir); CONFIG_FILES=$(my_dir)/Makefile ./config.status
+
+-@MAINTAINER_CMT@$(top_srcdir)/configure: $(top_srcdir)/configure.in
+-@MAINTAINER_CMT@ cd $(top_srcdir) && autoconf
++$(top_srcdir)/configure: $(top_srcdir)/configure.in
++ cd $(top_srcdir) && autoconf
+
+ #
+ # Make depend magic...
+Index: e2fsprogs/configure.in
+===================================================================
+--- e2fsprogs.orig/configure.in
++++ e2fsprogs/configure.in
+@@ -212,6 +212,54 @@ Q=@
+ AC_SUBST(E)
+ AC_SUBST(Q)
+ dnl
++dnl handle --enable-lfsck
++dnl
++AC_ARG_ENABLE([lfsck],
++[ --disable-lfsck disable EXPERIMENTAL Lustre lfsck support],
++if test "$enableval" = "no"
++then
++ LFSCK_CMT=#
++ LFSCK_MAN=.\"
++ echo "Disabling Lustre lfsck support"
++else
++ LFSCK_CMT=
++ LFSCK_MAN=
++ AC_DEFINE(ENABLE_LFSCK)
++ echo "Enabling Lustre lfsck support"
++fi
++,
++LFSCK_CMT=
++LFSCK_MAN=
++AC_DEFINE(ENABLE_LFSCK)
++echo "Enabling Lustre lfsck support by default"
++)
++AC_SUBST(LFSCK_CMT)
++AC_SUBST(LFSCK_MAN)
++dnl
++dnl set lustre include path and build lfsck
++dnl
++AC_ARG_WITH([lustre],
++[ --with-lustre=LUSTRE path to Lustre sources for lfsck (default=/usr for RPM)],
++AC_MSG_RESULT(LUSTRE is $withval)
++LUSTRE="$withval",
++LUSTRE="/usr")dnl
++AC_SUBST(LUSTRE)
++dnl
++AS_IF([test "x$enable_lfsck" != "xno"],
++[
++ AC_CHECK_FILE($LUSTRE/include/lustre/liblustreapi.h,,
++ AC_CHECK_FILE($LUSTRE/lustre/include/lustre/liblustreapi.h,,
++ AC_MSG_ERROR([No lustre includes found.]))
++ )
++dnl # Disable for old autoconf that doesn't check header usability.
++dnl # Supposed to check if lustre_idl.h is usable from userspace.
++dnl AC_CHECK_HEADER($LUSTRE/lustre/include/lustre/lustre_idl.h,
++dnl AC_DEFINE(HAVE_LUSTRE_LUSTRE_IDL_H),
++dnl AC_CHECK_HEADER($LUSTRE/include/lustre/lustre_idl.h,
++dnl AC_DEFINE(HAVE_LUSTRE_LUSTRE_IDL_H),)
++dnl )
++])
++dnl
+ dnl handle --enable-compression
+ dnl
+ AC_ARG_ENABLE([compression],
+@@ -763,6 +811,7 @@ AC_CHECK_HEADERS(net/if.h,,,
+ #include <sys/socket.h>
+ #endif
+ ]])
++AC_CHECK_HEADERS(db.h)
+ AC_FUNC_VPRINTF
+ dnl Check to see if dirent has member d_reclen. On cygwin those d_reclen
+ dnl is not decleared.
+@@ -880,6 +929,31 @@ SOCKET_LIB=''
+ AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket])
+ AC_SUBST(SOCKET_LIB)
+ dnl
++dnl Check to see if libdb exists for the sake of lfsck
++dnl
++AC_CHECK_LIB(db-4.1, db_env_create,
++[DB4VERSION=4.1
++AC_DEFINE(HAVE_DB4)])
++AC_CHECK_LIB(db-4.2, db_env_create,
++[DB4VERSION=4.2
++AC_DEFINE(HAVE_DB4)])
++AC_CHECK_LIB(db-4.3, db_env_create,
++[DB4VERSION=4.3
++AC_DEFINE(HAVE_DB4)])
++AC_CHECK_LIB(db-4.5, db_env_create,
++[DB4VERSION=4.5
++AC_DEFINE(HAVE_DB4)])
++AC_CHECK_LIB(db-4.6, db_env_create,
++[DB4VERSION=4.6
++AC_DEFINE(HAVE_DB4)])
++AC_CHECK_LIB(db-4.7, db_env_create,
++[DB4VERSION=4.7
++AC_DEFINE(HAVE_DB4)])
++AC_CHECK_LIB(db-4.8, db_env_create,
++[DB4VERSION=4.8
++AC_DEFINE(HAVE_DB4)])
++AC_SUBST(DB4VERSION)
++dnl
+ dnl See if optreset exists
+ dnl
+ AC_MSG_CHECKING(for optreset)
+Index: e2fsprogs/e2fsck/Makefile.in
+===================================================================
+--- e2fsprogs.orig/e2fsck/Makefile.in
++++ e2fsprogs/e2fsck/Makefile.in
+@@ -12,30 +12,35 @@ INSTALL = @INSTALL@
+ @MCONFIG@
+
+ PROGS= e2fsck
++@LFSCK_CMT@USPROGS= lfsck
+ MANPAGES= e2fsck.8
+ FMANPAGES= e2fsck.conf.5
++@LFSCK_CMT@MANPAGES += lfsck.8
+ XTRA_CFLAGS= -DRESOURCE_TRACK -I.
+
+-LIBS= $(LIBEXT2FS) $(LIBCOM_ERR) $(LIBBLKID) $(LIBUUID) $(LIBINTL) $(LIBE2P)
++@LFSCK_CMT@LFSCK_LIBS=-ldb-@DB4VERSION@
++@LFSCK_CMT@LUSTRE_INC=-I @LUSTRE@/lustre/include -I @LUSTRE@/include -Wall
++@LFSCK_CMT@LUSTRE_LIB=-L @LUSTRE@/lustre/utils -L @LUSTRE@/lib64 -L @LUSTRE@/lib
++LIBS= $(LIBEXT2FS) $(LIBCOM_ERR) $(LIBBLKID) $(LIBUUID) $(LIBINTL) $(LIBE2P) $(LFSCK_LIBS)
+ DEPLIBS= $(LIBEXT2FS) $(DEPLIBCOM_ERR) $(DEPLIBBLKID) $(DEPLIBUUID) \
+- $(DEPLIBE2P)
++ $(DEPLIBE2P) $(LFSCK_LIBS)
+
+ STATIC_LIBS= $(STATIC_LIBEXT2FS) $(STATIC_LIBCOM_ERR) $(STATIC_LIBBLKID) \
+- $(STATIC_LIBUUID) $(LIBINTL) $(STATIC_LIBE2P)
++ $(STATIC_LIBUUID) $(LIBINTL) $(STATIC_LIBE2P) $(LFSCK_LIBS)
+ STATIC_DEPLIBS= $(STATIC_LIBEXT2FS) $(DEPSTATIC_LIBCOM_ERR) \
+- $(DEPSTATIC_LIBBLKID) $(DEPSTATIC_LIBUUID) $(DEPSTATIC_LIBE2P)
++ $(DEPSTATIC_LIBBLKID) $(DEPSTATIC_LIBUUID) $(DEPSTATIC_LIBE2P) $(LFSCK_LIBS)
+
+ PROFILED_LIBS= $(PROFILED_LIBEXT2FS) $(PROFILED_LIBCOM_ERR) \
+- $(PROFILED_LIBBLKID) $(PROFILED_LIBUUID) $(PROFILED_LIBE2P) $(LIBINTL)
++ $(PROFILED_LIBBLKID) $(PROFILED_LIBUUID) $(PROFILED_LIBE2P) $(LIBINTL) $(LFSCK_LIBS)
+ PROFILED_DEPLIBS= $(PROFILED_LIBEXT2FS) $(DEPPROFILED_LIBCOM_ERR) \
+- $(DEPPROFILED_LIBBLKID) $(DEPPROFILED_LIBUUID) $(DEPPROFILED_LIBE2P)
++ $(DEPPROFILED_LIBBLKID) $(DEPPROFILED_LIBUUID) $(DEPPROFILED_LIBE2P) $(LFSCK_LIBS)
+
+ COMPILE_ET=$(top_builddir)/lib/et/compile_et --build-tree
+
+ .c.o:
+ $(E) " CC $<"
+- $(Q) $(CC) -c $(ALL_CFLAGS) $< -o $@
+-@PROFILE_CMT@ $(Q) $(CC) $(ALL_CFLAGS) -g -pg -o profiled/$*.o -c $<
++ $(Q) $(CC) -c $(ALL_CFLAGS) $(LUSTRE_INC) $< -o $@
++@PROFILE_CMT@ $(Q) $(CC) $(ALL_CFLAGS) $(LUSTRE_INC) -g -pg -o profiled/$*.o -c $<
+
+ #
+ # Flags for using Checker
+@@ -64,7 +69,10 @@ COMPILE_ET=$(top_builddir)/lib/et/compil
+ OBJS= crc32.o dict.o unix.o e2fsck.o super.o pass1.o pass1b.o pass2.o \
+ pass3.o pass4.o pass5.o journal.o badblocks.o util.o dirinfo.o \
+ dx_dirinfo.o ehandler.o problem.o message.o recovery.o region.o \
+- revoke.o ea_refcount.o rehash.o profile.o prof_err.o $(MTRACE_OBJ)
++ revoke.o ea_refcount.o rehash.o profile.o prof_err.o pass6.o $(MTRACE_OBJ)
++@LFSCK_CMT@OBJS += lfsck_common.o
++
++@LFSCK_CMT@LFSCK_OBJS = lfsck_common.o lfsck.o
+
+ PROFILED_OBJS= profiled/dict.o profiled/unix.o profiled/e2fsck.o \
+ profiled/super.o profiled/pass1.o profiled/pass1b.o \
+@@ -74,7 +82,8 @@ PROFILED_OBJS= profiled/dict.o profiled/
+ profiled/message.o profiled/problem.o \
+ profiled/recovery.o profiled/region.o profiled/revoke.o \
+ profiled/ea_refcount.o profiled/rehash.o profiled/profile.o \
+- profiled/crc32.o profiled/prof_err.o
++ profiled/crc32.o profiled/prof_err.o profiled/pass6.o
++@LFSCK_CMT@PROFILED_OBJS += profiled/lfsck_common.o
+
+ SRCS= $(srcdir)/e2fsck.c \
+ $(srcdir)/crc32.c \
+@@ -87,6 +96,7 @@ SRCS= $(srcdir)/e2fsck.c \
+ $(srcdir)/pass3.c \
+ $(srcdir)/pass4.c \
+ $(srcdir)/pass5.c \
++ $(srcdir)/pass6.c \
+ $(srcdir)/journal.c \
+ $(srcdir)/recovery.c \
+ $(srcdir)/revoke.c \
+@@ -105,7 +115,10 @@ SRCS= $(srcdir)/e2fsck.c \
+ prof_err.c \
+ $(MTRACE_SRC)
+
+-all:: profiled $(PROGS) e2fsck $(MANPAGES) $(FMANPAGES)
++@LFSCK_CMT@SRCS += $(srcdir)/lfsck_common.c
++
++@LFSCK_CMT@LFSCK_SRCS = $(srcdir)/lfsck_common.c $(srcdir)/lfsck.c
++all:: profiled $(PROGS) $(USPROGS) e2fsck $(MANPAGES) $(FMANPAGES)
+
+ @PROFILE_CMT@all:: e2fsck.profiled
+
+@@ -161,6 +174,10 @@ check:: tst_refcount tst_region tst_crc3
+ LD_LIBRARY_PATH=$(LIB) DYLD_LIBRARY_PATH=$(LIB) ./tst_crc32
+ LD_LIBRARY_PATH=$(LIB) DYLD_LIBRARY_PATH=$(LIB) ./tst_problem
+
++@LFSCK_CMT@lfsck: $(LFSCK_OBJS)
++@LFSCK_CMT@ @echo " LD $@"
++@LFSCK_CMT@ $(LD) -pthread $(ALL_LDFLAGS) $(LUSTRE_INC) $(LFSCK_OBJS) -o lfsck $(LUSTRE_LIB) -llustreapi $(DEPLIBS)
++
+ extend: extend.o
+ $(E) " LD $@"
+ $(Q) $(LD) $(ALL_LDFLAGS) -o extend extend.o $(CHECKLIB)
+@@ -184,6 +201,9 @@ profiled:
+ @PROFILE_CMT@ $(E) " MKDIR $@"
+ @PROFILE_CMT@ $(Q) mkdir profiled
+
++lfsck.8: $(DEP_SUBSTITUTE) $(srcdir)/lfsck.8.in
++ $(SUBSTITUTE_UPTIME) $(srcdir)/lfsck.8.in lfsck.8
++
+ e2fsck.8: $(DEP_SUBSTITUTE) $(srcdir)/e2fsck.8.in
+ $(E) " SUBST $@"
+ $(Q) $(SUBSTITUTE_UPTIME) $(srcdir)/e2fsck.8.in e2fsck.8
+@@ -193,15 +213,19 @@ e2fsck.conf.5: $(DEP_SUBSTITUTE) $(srcdi
+ $(Q) $(SUBSTITUTE_UPTIME) $(srcdir)/e2fsck.conf.5.in e2fsck.conf.5
+
+ installdirs:
+- $(E) " MKINSTALLDIRS $(root_sbindir) $(man8dir)"
++ $(E) " MKINSTALLDIRS $(root_sbindir) $(sbindir) $(man8dir)"
+ $(Q) $(MKINSTALLDIRS) $(DESTDIR)$(root_sbindir) \
+- $(DESTDIR)$(man8dir) $(DESTDIR)$(man5dir)
++ $(DESTDIR)$(man8dir) $(DESTDIR)$(man5dir) $(DESTDIR)$(sbindir)
+
+-install: $(PROGS) $(MANPAGES) $(FMANPAGES) installdirs
++install: $(PROGS) $(USPROGS) $(MANPAGES) $(FMANPAGES) installdirs
+ $(Q) for i in $(PROGS); do \
+ echo " INSTALL $(root_sbindir)/$$i"; \
+ $(INSTALL_PROGRAM) $$i $(DESTDIR)$(root_sbindir)/$$i; \
+ done
++ @for i in $(USPROGS); do \
++ echo " INSTALL $(sbindir)/$$i"; \
++ $(INSTALL_PROGRAM) $$i $(DESTDIR)$(sbindir)/$$i; \
++ done
+ $(Q) for i in ext2 ext3 ext4 ext4dev; do \
+ echo " LINK $(root_sbindir)/fsck.$$i"; \
+ (cd $(DESTDIR)$(root_sbindir); \
+@@ -237,6 +261,9 @@ uninstall:
+ for i in $(PROGS); do \
+ $(RM) -f $(DESTDIR)$(root_sbindir)/$$i; \
+ done
++ for i in $(USPROGS); do \
++ $(RM) -f $(DESTDIR)$(sbindir)/$$i; \
++ done
+ $(RM) -f $(DESTDIR)$(root_sbindir)/fsck.ext2 \
+ $(DESTDIR)$(root_sbindir)/fsck.ext3 \
+ $(DESTDIR)$(root_sbindir)/fsck.ext4 \
+@@ -253,7 +280,7 @@ uninstall:
+ $(DESTDIR)$(root_sbindir)/fsck.ext4dev
+
+ clean:
+- $(RM) -f $(PROGS) \#* *\# *.s *.o *.a *~ core e2fsck.static \
++ $(RM) -f $(PROGS) $(USPROGS) \#* *\# *.s *.o *.a *~ core e2fsck.static \
+ e2fsck.shared e2fsck.profiled flushb e2fsck.8 \
+ tst_problem tst_crc32 tst_region tst_refcount gen_crc32table \
+ crc32table.h e2fsck.conf.5 prof_err.c prof_err.h \
+@@ -334,6 +361,12 @@ pass5.o: $(srcdir)/pass5.c $(srcdir)/e2f
+ $(top_builddir)/lib/ext2fs/ext2_err.h \
+ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/bitops.h \
+ $(srcdir)/profile.h prof_err.h $(srcdir)/problem.h
++pass6.o: $(srcdir)/pass6.c $(srcdir)/e2fsck.h \
++ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
++ $(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext2_fs.h \
++ $(top_srcdir)/lib/et/com_err.h $(top_srcdir)/lib/ext2fs/ext2_io.h \
++ $(top_builddir)/lib/ext2fs/ext2_err.h $(top_srcdir)/lib/ext2fs/bitops.h \
++ $(srcdir)/problem.h $(top_srcdir)/lib/ext2fs/lfsck.h
+ journal.o: $(srcdir)/journal.c $(srcdir)/jfs_user.h $(srcdir)/e2fsck.h \
+ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
+ $(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext3_extents.h \
+@@ -436,6 +469,9 @@ region.o: $(srcdir)/region.c $(srcdir)/e
+ $(top_builddir)/lib/ext2fs/ext2_err.h \
+ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/bitops.h \
+ $(srcdir)/profile.h prof_err.h
++lfsck.o: $(srcdir)/lfsck.c $(top_srcdir)/lib/ext2fs/lfsck.h $(srcdir)/lfsck_common.c \
++ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
++ $(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext2_fs.h
+ profile.o: $(srcdir)/profile.c $(top_srcdir)/lib/et/com_err.h \
+ $(srcdir)/profile.h prof_err.h
+ prof_err.o: prof_err.c
+Index: e2fsprogs/e2fsck/e2fsck.8.in
+===================================================================
+--- e2fsprogs.orig/e2fsck/e2fsck.8.in
++++ e2fsprogs/e2fsck/e2fsck.8.in
+@@ -333,6 +333,20 @@ may not be specified at the same time as
+ or
+ .B \-p
+ options.
++@LFSCK_MAN@.TP
++@LFSCK_MAN@.BI \-\-mdsdb " mds_database_filename"
++@LFSCK_MAN@Specify which file to use for an MDS database on a Lustre filesystem.
++@LFSCK_MAN@The mdsdb also needs to be specified when creating an OST database with
++@LFSCK_MAN@.B \-\-ostdb
++@LFSCK_MAN@but the mdsdb file used in a read-only manner.
++@LFSCK_MAN@.TP
++@LFSCK_MAN@.BI \-\-ostdb " ostN_database_filename"
++@LFSCK_MAN@Specify which file to use for an OST database on a Lustre filesystem.
++@LFSCK_MAN@A separate database file should be specified for each OST device in
++@LFSCK_MAN@the filesystem. For convenience a stub
++@LFSCK_MAN@.BR mdsdb .hdr
++@LFSCK_MAN@file is generated for use by the OST e2fsck to avoid the need to
++@LFSCK_MAN@wait for the MDS e2fsck to finish or copy the full mdsdb to the OSTs.
+ .SH EXIT CODE
+ The exit code returned by
+ .B e2fsck
+Index: e2fsprogs/e2fsck/e2fsck.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/e2fsck.c
++++ e2fsprogs/e2fsck/e2fsck.c
+@@ -193,8 +193,11 @@ void e2fsck_free_context(e2fsck_t ctx)
+ typedef void (*pass_t)(e2fsck_t ctx);
+
+ pass_t e2fsck_passes[] = {
+- e2fsck_pass1, e2fsck_pass2, e2fsck_pass3, e2fsck_pass4,
+- e2fsck_pass5, 0 };
++ e2fsck_pass1, e2fsck_pass2, e2fsck_pass3, e2fsck_pass4, e2fsck_pass5,
++#ifdef ENABLE_LFSCK
++ e2fsck_pass6,
++#endif
++ 0 };
+
+ #define E2F_FLAG_RUN_RETURN (E2F_FLAG_SIGNAL_MASK|E2F_FLAG_RESTART)
+
+Index: e2fsprogs/e2fsck/e2fsck.h
+===================================================================
+--- e2fsprogs.orig/e2fsck/e2fsck.h
++++ e2fsprogs/e2fsck/e2fsck.h
+@@ -158,6 +158,7 @@ struct resource_track {
+ #define E2F_OPT_FRAGCHECK 0x0800
+ #define E2F_OPT_JOURNAL_ONLY 0x1000 /* only replay the journal */
+ #define E2F_OPT_DISCARD 0x2000
++#define E2F_OPT_VERBOSE 0x4000
+
+ /*
+ * E2fsck flags
+@@ -184,6 +185,13 @@ struct resource_track {
+
+ #define E2F_RESET_FLAGS (E2F_FLAG_TIME_INSANE)
+
++/* Defines for Lustre */
++#define LUSTRE_NULL 0x0000
++#define LUSTRE_MDS 0x0001
++#define LUSTRE_OST 0x0002
++#define LUSTRE_TYPE 0x000f
++#define LUSTRE_ONLY 0x1000
++
+ /*
+ * Defines for indicating the e2fsck pass number
+ */
+@@ -336,6 +344,12 @@ struct e2fsck_struct {
+ io_channel journal_io;
+ char *journal_name;
+
++ /* lustre support */
++ int lustre_devtype;
++ char *lustre_mdsdb;
++ char *lustre_ostdb;
++ struct lfsck_outdb_info *lfsck_oinfo;
++
+ #ifdef RESOURCE_TRACK
+ /*
+ * For timing purposes
+@@ -419,6 +433,7 @@ extern void e2fsck_pass2(e2fsck_t ctx);
+ extern void e2fsck_pass3(e2fsck_t ctx);
+ extern void e2fsck_pass4(e2fsck_t ctx);
+ extern void e2fsck_pass5(e2fsck_t ctx);
++extern void e2fsck_pass6(e2fsck_t ctx);
+
+ /* e2fsck.c */
+ extern errcode_t e2fsck_allocate_context(e2fsck_t *ret);
+Index: e2fsprogs/e2fsck/pass1.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/pass1.c
++++ e2fsprogs/e2fsck/pass1.c
+@@ -49,6 +49,7 @@
+
+ #include "e2fsck.h"
+ #include <ext2fs/ext2_ext_attr.h>
++#include "ext2fs/lfsck.h"
+
+ #include "problem.h"
+
+@@ -390,6 +391,8 @@ static void check_ea_in_inode(e2fsck_t c
+ struct ext2_ext_attr_entry *entry;
+ char *start, *end;
+ unsigned int storage_size, remain;
++ struct lov_user_md_v1 *lmm = NULL;
++ struct lustre_mdt_attrs *lma = NULL;
+ int problem = 0;
+
+ inode = (struct ext2_inode_large *) pctx->inode;
+@@ -458,6 +461,9 @@ static void check_ea_in_inode(e2fsck_t c
+ goto fix;
+ }
+
++ e2fsck_lfsck_find_ea(ctx, inode, entry,
++ start + entry->e_value_offs, &lmm, &lma);
++
+ /* If EA value is stored in external inode then it does not
+ * consume space here */
+ if (entry->e_value_inum == 0)
+@@ -465,6 +471,10 @@ static void check_ea_in_inode(e2fsck_t c
+
+ entry = EXT2_EXT_ATTR_NEXT(entry);
+ }
++
++ if (lmm)
++ e2fsck_lfsck_save_ea(ctx, pctx->ino, inode->i_generation,
++ lmm, lma);
+ fix:
+ /*
+ * it seems like a corruption. it's very unlikely we could repair
+@@ -1005,6 +1015,12 @@ void e2fsck_pass1(e2fsck_t ctx)
+ ext2fs_mark_block_bitmap2(ctx->block_found_map,
+ fs->super->s_mmp_block);
+
++ if (!(ctx->options & E2F_OPT_READONLY) &&
++ (ctx->lustre_devtype & LUSTRE_TYPE) == LUSTRE_MDS) {
++ if (e2fsck_lfsck_remove_pending(ctx, NULL))
++ return;
++ }
++
+ while (1) {
+ if (ino % EXT2_MMP_INODE_INTERVAL == 0) {
+ errcode_t error;
+@@ -1513,6 +1529,9 @@ void e2fsck_pass1(e2fsck_t ctx)
+ }
+ e2fsck_pass1_dupblocks(ctx, block_buf);
+ }
++
++ e2fsck_lfsck_flush_ea(ctx);
++
+ ext2fs_free_mem(&inodes_to_process);
+ endit:
+ e2fsck_use_inode_shortcuts(ctx, 0);
+@@ -1780,6 +1799,8 @@ static int check_ext_attr(e2fsck_t ctx,
+ struct ext2_ext_attr_entry *entry;
+ int count;
+ region_t region = 0;
++ struct lov_user_md_v1 *lmm = NULL;
++ struct lustre_mdt_attrs *lma = NULL;
+ int ret;
+
+ blk = ext2fs_file_acl_block(inode);
+@@ -1936,8 +1957,19 @@ static int check_ext_attr(e2fsck_t ctx,
+ entry->e_hash = hash;
+ }
+
++ if (e2fsck_lfsck_find_ea(ctx, (struct ext2_inode_large *)inode,
++ entry, block_buf +entry->e_value_offs,
++ &lmm, &lma) != 0) {
++ if (ctx->flags & E2F_FLAG_SIGNAL_MASK)
++ return 0;
++ }
++
+ entry = EXT2_EXT_ATTR_NEXT(entry);
+ }
++
++ if (lmm)
++ e2fsck_lfsck_save_ea(ctx, ino, inode->i_generation, lmm, lma);
++
+ if (region_allocate(region, (char *)entry - (char *)header, 4)) {
+ if (fix_problem(ctx, PR_1_EA_ALLOC_COLLISION, pctx))
+ goto clear_extattr;
+Index: e2fsprogs/e2fsck/unix.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/unix.c
++++ e2fsprogs/e2fsck/unix.c
+@@ -10,6 +10,7 @@
+ */
+
+ #define _XOPEN_SOURCE 600 /* for inclusion of sa_handler in Solaris */
++#define _GNU_SOURCE
+
+ #include <stdio.h>
+ #ifdef HAVE_STDLIB_H
+@@ -47,6 +48,9 @@ extern int optind;
+ #ifdef HAVE_DIRENT_H
+ #include <dirent.h>
+ #endif
++#ifdef HAVE_LIMITS_H
++#include <limits.h>
++#endif
+
+ #include "e2p/e2p.h"
+ #include "et/com_err.h"
+@@ -55,6 +59,17 @@ extern int optind;
+ #include "problem.h"
+ #include "../version.h"
+
++#include "ext2fs/lfsck.h"
++
++static struct option long_options[] = {
++#ifdef ENABLE_LFSCK
++ { "mdsdb", 1, NULL, 1 },
++ { "mdtdb", 1, NULL, 1 },
++ { "ostdb", 1, NULL, 2 },
++#endif
++ { 0, 0, 0, 0 }
++};
++
+ /* Command line options */
+ static int cflag; /* check disk */
+ static int show_version_only;
+@@ -343,6 +358,15 @@ static void check_if_skip(e2fsck_t ctx)
+ fs->super->s_checkinterval*2))
+ reason = 0;
+ }
++#ifdef ENABLE_LFSCK
++ if (ctx->lustre_devtype & LUSTRE_TYPE) {
++ if (!reason || ctx->options & E2F_OPT_READONLY)
++ ctx->lustre_devtype |= LUSTRE_ONLY;
++ if (!reason)
++ reason = _(" lustre database creation");
++ }
++#endif
++
+ if (reason) {
+ fputs(ctx->device_name, stdout);
+ printf(reason, reason_arg);
+@@ -378,6 +402,15 @@ static void check_if_skip(e2fsck_t ctx)
+ skip:
+ ext2fs_close(fs);
+ ctx->fs = NULL;
++#ifdef ENABLE_LFSCK
++ if (ctx->lustre_mdsdb)
++ free(ctx->lustre_mdsdb);
++ if (ctx->lustre_ostdb)
++ free(ctx->lustre_ostdb);
++ if (ctx->lfsck_oinfo)
++ e2fsck_lfsck_cleanupdb(ctx);
++#endif /* ENABLE_LFSCK */
++
+ e2fsck_free_context(ctx);
+ exit(FSCK_OK);
+ }
+@@ -741,6 +774,7 @@ static errcode_t PRS(int argc, char *arg
+ {
+ int flush = 0;
+ int c, fd;
++ int option_index;
+ #ifdef MTRACE
+ extern void *mallwatch;
+ #endif
+@@ -789,8 +823,75 @@ static errcode_t PRS(int argc, char *arg
+
+ ctx->inode_badness_threshold = BADNESS_THRESHOLD;
+
+- while ((c = getopt (argc, argv, "panyrcC:B:dE:fvtFVM:b:I:j:P:l:L:N:SsDk")) != EOF)
++ ctx->lustre_devtype = LUSTRE_NULL;
++
++ while ((c = getopt_long(argc, argv,
++ "panyrcC:B:dE:fvtFVM:b:I:j:P:l:L:N:SsDk",
++ long_options, &option_index)) != EOF)
+ switch (c) {
++#ifdef ENABLE_LFSCK
++ case 1: {
++ char *dbpath, *tmp;
++
++ if (!optarg)
++ usage(ctx);
++
++ dbpath = malloc(PATH_MAX);
++ if (dbpath == NULL) {
++ fprintf(stderr, "Out of memory\n");
++ exit(1);
++ }
++ tmp = malloc(PATH_MAX);
++ if (tmp == NULL) {
++ fprintf(stderr, "Out of memory\n");
++ exit(1);
++ }
++
++ strcpy(tmp, optarg);
++ if (realpath(my_dirname(tmp), dbpath) == NULL) {
++ fprintf(stderr, "Failure to resolve path %s\n",
++ optarg);
++ exit(1);
++ }
++
++ strcpy(tmp, optarg);
++ sprintf(dbpath+strlen(dbpath), "/%s", my_basename(tmp));
++ ctx->lustre_mdsdb = dbpath;
++ ctx->lustre_devtype |= LUSTRE_MDS;
++
++ free(tmp);
++ break;
++ }
++ case 2: {
++ char *dbpath, *tmp;
++
++ dbpath = malloc(PATH_MAX);
++ if (dbpath == NULL) {
++ fprintf(stderr, "Out of memory\n");
++ exit(1);
++ }
++ tmp = malloc(PATH_MAX);
++ if (tmp == NULL) {
++ fprintf(stderr, "Out of memory\n");
++ exit(1);
++ }
++
++ strcpy(tmp, optarg);
++ if (realpath(my_dirname(tmp), dbpath) == NULL) {
++ fprintf(stderr, "Failure to resolve path %s\n",
++ optarg);
++ exit(1);
++ }
++
++ strcpy(tmp, optarg);
++ sprintf(dbpath+strlen(dbpath), "/%s", my_basename(tmp));
++ ctx->lustre_ostdb = dbpath;
++ ctx->lustre_devtype |= LUSTRE_OST;
++
++ free(tmp);
++ break;
++ }
++#endif /* ENABLE_LFSCK */
+ case 'C':
+ ctx->progress = e2fsck_update_progress;
+ res = sscanf(optarg, "%d", &ctx->progress_fd);
+@@ -904,6 +1005,7 @@ static errcode_t PRS(int argc, char *arg
+ break;
+ case 'v':
+ verbose = 1;
++ ctx->options |= E2F_OPT_VERBOSE;
+ break;
+ case 'V':
+ show_version_only = 1;
+@@ -922,6 +1024,16 @@ static errcode_t PRS(int argc, char *arg
+ default:
+ usage(ctx);
+ }
++#ifdef ENABLE_LFSCK
++ if (ctx->lustre_devtype) {
++ if ((ctx->lustre_devtype != LUSTRE_MDS) &&
++ ctx->lustre_devtype != (LUSTRE_MDS | LUSTRE_OST)) {
++ com_err(ctx->program_name, 0,
++ _("must specify --mdsdb with --ostdb"));
++ usage(ctx);
++ }
++ }
++#endif /* ENABLE_LFSCK */
+ if (show_version_only)
+ return 0;
+ if (optind != argc - 1)
+@@ -1728,6 +1840,14 @@ no_journal:
+ ext2fs_close(fs);
+ ctx->fs = NULL;
+ free(ctx->journal_name);
++#ifdef ENABLE_LFSCK
++ if (ctx->lfsck_oinfo)
++ e2fsck_lfsck_cleanupdb(ctx);
++ if (ctx->lustre_mdsdb)
++ free(ctx->lustre_mdsdb);
++ if (ctx->lustre_ostdb)
++ free(ctx->lustre_ostdb);
++#endif /* ENABLE_LFSCK */
+
+ e2fsck_free_context(ctx);
+ remove_error_table(&et_ext2_error_table);
+Index: e2fsprogs/misc/mke2fs.c
+===================================================================
+--- e2fsprogs.orig/misc/mke2fs.c
++++ e2fsprogs/misc/mke2fs.c
+@@ -1398,7 +1398,7 @@ profile_error:
+ }
+ break;
+ case 'v':
+- verbose = 1;
++ verbose++;
+ break;
+ case 'F':
+ force++;
+Index: e2fsprogs/util/subst.conf.in
+===================================================================
+--- e2fsprogs.orig/util/subst.conf.in
++++ e2fsprogs/util/subst.conf.in
+@@ -5,6 +5,8 @@ SS_DIR @SS_DIR@
+ E2FSPROGS_MONTH @E2FSPROGS_MONTH@
+ E2FSPROGS_YEAR @E2FSPROGS_YEAR@
+ E2FSPROGS_VERSION @E2FSPROGS_VERSION@
++LFSCK_CMT @LFSCK_CMT@
++LFSCK_MAN @LFSCK_MAN@
+ SIZEOF_LONG_LONG @SIZEOF_LONG_LONG@
+ SIZEOF_LONG @SIZEOF_LONG@
+ SIZEOF_INT @SIZEOF_INT@
+Index: e2fsprogs/e2fsprogs.spec.in
+===================================================================
+--- e2fsprogs.orig/e2fsprogs.spec.in
++++ e2fsprogs/e2fsprogs.spec.in
+@@ -15,10 +15,14 @@ Prereq: /sbin/ldconfig
+ BuildRoot: %{_tmppath}/%{name}-root
+ %if %{_vendor} == "suse"
+ Group: System/Filesystems
++@LFSCK_CMT@Requires: db >= @DB4VERSION@
++@LFSCK_CMT@BuildRequires: db-devel >= 4.1 texinfo
+ Provides: e2fsbn ext2fs libcom_err = %{version} ldiskfsprogs = %{version}
+ Obsoletes: ext2fs libcom_err < %{version}
+ %else
+ Group: System Environment/Base
++@LFSCK_CMT@Requires: db4 >= @DB4VERSION@
++@LFSCK_CMT@BuildRequires: db4-devel >= 4.1 texinfo
+ Provides: e2fsprogs-libs = %{version} ldiskfsprogs = %{version}
+ Obsoletes: e4fsprogs e2fsprogs-libs < %{version}
+ %endif
+@@ -71,8 +75,8 @@ SMP systems.
+ %setup
+
+ %build
+-%configure --enable-elf-shlibs --enable-nls \
+- %{?extra_config_flags:%extra_config_flags}
++%configure --enable-elf-shlibs --enable-nls --with-lustre=@LUSTRE@ \
++ %{?extra_config_flags:%extra_config_flags} @LFSCK_CMT@ --enable-lfsck
+ make
+ make check
+
+@@ -145,6 +149,7 @@ exit 0
+ %{_sbindir}/mklost+found
+ %{_sbindir}/e2freefrag
+ %{_sbindir}/e4defrag
++@LFSCK_CMT@%{_sbindir}/lfsck
+
+ %{_root_libdir}/libblkid.so.*
+ %{_root_libdir}/libcom_err.so.*
+@@ -170,6 +175,7 @@ exit 0
+ %{_mandir}/man8/debugfs.8*
+ %{_mandir}/man8/dumpe2fs.8*
+ %{_mandir}/man8/e2fsck.8*
++@LFSCK_CMT@%{_mandir}/man8/lfsck.8*
+ %{_mandir}/man8/findfs.8*
+ %{_mandir}/man8/fsck.ext2.8*
+ %{_mandir}/man8/fsck.ext3.8*
+Index: e2fsprogs/e2fsck/lfsck.8.in
+===================================================================
+--- /dev/null
++++ e2fsprogs/e2fsck/lfsck.8.in
+@@ -0,0 +1,78 @@
++.\" -*- nroff -*-
++.\" Copyright 2004 by Andreas Dilger. All Rights Reserved.
++.\" This file may be copied under the terms of the GNU Public License.
++.\"
++.TH LFSCK 8 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@"
++.SH NAME
++lfsck \- check a Lustre distributed filesystem
++.SH SYNOPSIS
++.B lfsck
++[
++.B \-cdfhlnv
++]
++.B \--mdsdb
++.I mds_database_file
++.B \--ostdb
++.IR "ost1_database_file " [ "ost2_database_file " ...]
++.I filesystem
++.SH DESCRIPTION
++.B lfsck
++is used to check and repair the distributed coherency of a Lustre filesystem.
++.PP
++.I filesystem
++is the mountpoint of the Lustre filesystem to be checked. e.g.
++.IR /mnt/lustre ).
++.SH DESCRIPTION
++Lfsck is used to do the distributed coherency checking of a Lustre filesystem
++after
++.B e2fsck
++has been run on each of the local MDS and OST device filesystems.
++.B Lfsck
++will ensure that objects are not referenced by multiple MDS files, that there
++are no orphan objects on the OSTs (objects that do not have any file on the
++MDS which references them), and that all of the objects referenced by the
++MDS exist. Under normal circumstances Lustre will maintain such coherency
++by distributed logging mechanisms, but under exceptional circumstances that
++may fail (e.g. disk failure, filesystem corruption leading to e2fsck repair).
++.SH OPTIONS
++.TP
++.B \-c
++Create (empty) missing OST objects referenced by MDS inodes.
++.TP
++.B \-d
++Delete orphaned objects from the filesystem. Since objects on the OST are
++often only one of several stripes of a file it can be difficult to put
++multiple objects back together into a single usable file.
++.TP
++.B \-h
++Print a brief help message.
++.TP
++.B \-l
++Put orphaned objects into a lost+found directory in the root of the filesystem.
++.TP
++.B \-n
++Do not repair the filesystem, just perform a read-only check (default).
++.TP
++.B \-v
++Verbose operation - more verbosity by specifing option multiple times.
++.TP
++.BI \-\-mdsdb " mds_database_file"
++The MDS database file created by running
++.B e2fsck --mdsdb mds_database_file device
++on the MDS backing device. This is required.
++.TP
++.BI \-\-ostdb " ost1_database_file " [ "ost2_database_file " ...]
++The OST database files created by running
++.B e2fsck --ostdb ost_database_file device
++on each of the OST backing devices. These are required, unless an OST is
++unavailable, in which case all objects thereon will be considered missing.
++.SH REPORTING BUGS
++Bugs should be reported to Sun Microsystems, Inc. via Bugzilla:
++http://bugzilla.lustre.org/
++.SH AUTHOR
++This version of
++.B lfsck
++was originally written by Liam Kelleher <liam.kelleher@hp.com>
++and maintained by Andreas Dilger <adilger@whamcloud.com>
++.SH SEE ALSO
++.BR e2fsck (8)
+Index: e2fsprogs/e2fsck/lfsck.c
+===================================================================
+--- /dev/null
++++ e2fsprogs/e2fsck/lfsck.c
+@@ -0,0 +1,2088 @@
++/* -*- mode: c; c-basic-offset: 8; -*-
++ * vim:shiftwidth=8:tabstop=8:
++ *
++ * GPL HEADER START
++ *
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 only,
++ * as published by the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * General Public License version 2 for more details (a copy is included
++ * in the LICENSE file that accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License
++ * version 2 along with this program; If not, see
++ * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
++ *
++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
++ * CA 95054 USA or visit www.sun.com if you need additional information or
++ * have any questions.
++ *
++ * GPL HEADER END
++ */
++/*
++ * Copyright (c) 2004 Hewlett-Packard Co.
++ * Copyright 2004, 2010, Oracle and/or its affiliates. All rights reserved.
++ * Use is subject to license terms.
++ */
++/***********************************************************************
++ * This program takes as input files generated by running e2fsck on
++ * the mds and ost filesystems. The file generated for each ost
++ * contains a table including the object id and size for each object
++ * extant on the ost in each entry.
++ * The file generated from scanning the mds filesystem with e2fsck
++ * contains multiple tables one for each ost. In each table an entry
++ * contains the mds fid as well as the object id on the appropriate
++ * ost. In addition there is an additional table that holds the mds_fid
++ * and the containing directory fid for each entry. This is used for
++ * name lookup.
++ * There are three basic checks
++ * 1) Make sure that multiple mds entries do not reference the same object
++ * 2) Cross reference each object on each ost to make sure a "containing"
++ * file for this exists on the mds
++ * 3) For each file on the mds make sure that the associated objects exist
++ * on the osts
++ * These checks and potential correction for errors found are run from
++ * run_pass*
++ * Each of these checks is just iterate through the appropriate table and
++ * cross check against another table and if errors are found repair.
++ ***************************************************************************/
++#define _GNU_SOURCE
++#include <pthread.h>
++#include <stdio.h>
++#include <stdarg.h>
++#include <string.h>
++#include <time.h>
++#include <errno.h>
++#include <limits.h>
++#include <stdlib.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <fcntl.h>
++#include <utime.h>
++#include <unistd.h>
++#include <sys/mman.h>
++#include <getopt.h>
++#include <mntent.h>
++#include <dirent.h>
++#ifdef HAVE_SYS_IOCTL_H
++#include <sys/ioctl.h>
++#endif
++#include "../version.h"
++#include "e2fsck.h"
++#include "ext2fs/lfsck.h"
++#include "ext2fs/ext2fs.h"
++
++struct lfsck_fids {
++ int depth;
++ struct lu_fid *fids;
++};
++
++struct lfsck_thread_info {
++ struct lfsck_mds_hdr *mds_hdr;
++ DB *mds_direntdb;
++ DB *mds_sizeinfodb;
++ __u32 start_ost_idx;
++ __u32 end_ost_idx;
++ int status;
++};
++
++struct lfsck_saved_duplicates {
++ struct lu_fid ld_mds_fid;
++ struct ost_id ld_oi;
++ __u32 ld_ost_idx;
++ char *ld_link;
++};
++
++#ifndef O_LARGEFILE
++#define O_LARGEFILE 0
++#endif
++
++#define LOG_PATH "/var/log/lfsck.log"
++#define RLIMIT 1024
++
++/* Procedure declarations */
++
++char *progname = "lfsck";
++FILE *logfile;
++
++int lfsck_help;
++int lfsck_save;
++int lfsck_delete;
++int lfsck_create;
++int lfsck_force;
++int lfsck_verbose;
++int lfsck_yes;
++
++int num_threads = 1;
++
++char mnt_path[PATH_MAX];
++char *mds_file;
++char lostandfounddir[PATH_MAX];
++char dupedir[PATH_MAX];
++char *ost_files[LOV_MAX_OSTS];
++int num_ost_files;
++
++struct obd_uuid lfsck_uuid[LOV_MAX_OSTS];
++int lov_tgt_count = LOV_MAX_OSTS;
++
++struct lfsck_saved_duplicates *lfsck_duplicates;
++int lfsck_dup_saved;
++int fixed;
++int fix_failed;
++
++pthread_cond_t init_cond = PTHREAD_COND_INITIALIZER;
++pthread_mutex_t init_mutex = PTHREAD_MUTEX_INITIALIZER;
++pthread_mutex_t phase_lock = PTHREAD_MUTEX_INITIALIZER;
++pthread_mutex_t size_lock = PTHREAD_MUTEX_INITIALIZER;
++int all_started;
++
++int lfsck_path2fid(const char *path, struct lu_fid *fid)
++{
++ struct stat st;
++ long generation;
++ int fd;
++ int rc = 0;
++
++#ifdef LL_IOC_PATH2FID
++ rc = llapi_path2fid(path, fid);
++ if (rc == 0 || rc != -ENOTTY)
++ return rc;
++#endif
++ /* LL_IOC_PATH2FID was landed in 1.8.2. If it doesn't exist at compile
++ * time, or it fails at runtime with a return ENOTTY indicating that
++ * the ioctl is unimplemented, emulate it here for the older clients.
++ * Assume the server is running Lustre 1.x and create an IGIF FID,
++ * since < 1.8.4 will not work properly with 2.x servers anyway. */
++ fd = open(path, O_RDONLY);
++ if (fd < 0)
++ return -errno;
++
++ rc = fstat(fd, &st);
++ if (rc < 0) {
++ rc = -errno;
++ goto out;
++ }
++ fid->f_seq = st.st_ino;
++
++ rc = ioctl(fd, FSFILT_IOC_GETVERSION, &generation);
++ if (rc < 0) {
++ rc = -errno;
++ goto out;
++ }
++ fid->f_oid = generation;
++ fid->f_ver = 0;
++
++out:
++ close(fd);
++ return rc;
++}
++
++#define VERBOSE(lvl, fmt, args...) \
++do { if (lfsck_verbose >= lvl) printf(fmt, ## args); } while (0)
++
++int log_open()
++{
++ time_t tm;
++
++ if ((logfile = fopen(LOG_PATH, "a")) == NULL) {
++ fprintf(stderr, "%s: Failed to open log file %s\n",
++ progname, LOG_PATH);
++ return (-EPERM);
++ }
++
++ time(&tm);
++ fprintf(logfile, "===============================================\n\n");
++ fprintf(logfile, "Starting lfsck %s\n", ctime(&tm));
++ return(0);
++}
++
++int log_close(int status)
++{
++ time_t tm;
++
++ if (logfile == NULL)
++ return(0);
++
++ time(&tm);
++ if (status < 0) {
++ fprintf(logfile, "ERROR: lfsck aborted\n");
++ } else {
++ fprintf(logfile, "lfsck run completed: %s\n",ctime(&tm));
++ }
++ fprintf(logfile, "===============================================\n\n");
++
++ fclose(logfile);
++ return(0);
++}
++
++void log_write(char *fmt, ...)
++{
++ va_list args;
++
++ if (logfile) {
++ va_start(args, fmt);
++ vfprintf(logfile, fmt, args);
++ va_end(args);
++ }
++ va_start(args, fmt);
++ vfprintf(stderr, fmt, args);
++ va_end(args);
++}
++
++void usage()
++{
++ printf("\n");
++ printf("usage: lfsck [-cdfhlnv] --mdsdb mdsdb "
++ "--ostdb ostdb1 [ostdb2 ...] filesystem\n\n");
++ printf("\t-m|--mdsdb mdsdb MDS database from e2fsck --mdsdb\n");
++ printf("\t-o|--ostdb ostdb OST databases from e2fsck --ostdb\n");
++ printf("\tfilesytem full path of lustre mountpoint\n");
++ printf("\t[-c|--create] create missing objects\n");
++ printf("\t[-d|--delete] delete orphan objects\n");
++ printf("\t[-f|--force] force running if fs appears unmounted\n");
++ printf("\t[-h|--help] print this message\n");
++ printf("\t[-l|--lostfound] save orphans objects to lost+found\n");
++ printf("\t[-n|--nofix] do not fix filesystem errors (default)\n");
++ printf("\t[-v|--verbose] print verbose runtime messages\n");
++ //printf("\t[-y|--yes] do all cleanup automatically\n");
++ printf("\n");
++}
++
++/*
++ * Get the lov config for the filesystem - this is primarily used to correlate
++ * each ost db file with its index in the lov configuration. Obviously this is
++ * critical.
++ */
++int get_lov_config()
++{
++ int fd, rc;
++
++ fd = open(mnt_path, O_RDONLY);
++ if (fd < 0) {
++ log_write("Error: opening %s\n", mnt_path);
++ return (-errno);
++ }
++
++ rc = llapi_lov_get_uuids(fd, lfsck_uuid, &lov_tgt_count);
++
++ close(fd);
++ return rc;
++}
++
++int parse_args(int argc, char *argv[])
++{
++ int option_index = 0;
++ char *path_name = NULL;
++ struct option long_options[] = {
++ { "create", 1, NULL, 'c' },
++ { "delete", 0, NULL, 'd' },
++ { "force", 0, NULL, 'f' },
++ { "help", 0, NULL, 'h' },
++ { "lostfound", 0, NULL, 'l' },
++ { "mdsdb", 1, NULL, 'm' },
++ { "mdtdb", 1, NULL, 'm' },
++ { "nofix", 0, NULL, 'n' },
++ { "ostdb", 1, NULL, 'o' },
++ { "threads", 1, NULL, 't' },
++ { "verbose", 0, NULL, 'v' },
++ //{ "yes", 0, NULL, 'y' },
++ { 0, 0, 0, 0 }
++ };
++ struct mntent *mnt_info;
++ char tmp[PATH_MAX];
++ char *dbpath;
++ int c, found;
++ char *p1;
++ FILE *fp;
++
++ if (argc < 6 ) {
++ return(-EINVAL);
++ }
++
++ while ((c = getopt_long(argc, argv, "-cdfhlm:no:t:vy",
++ long_options, &option_index)) != -1) {
++ switch (c) {
++ case 'c':
++ lfsck_create++;
++ break;
++ case 'd':
++ lfsck_delete++;
++ break;
++ case 'f':
++ lfsck_force++;
++ break;
++ case 'h':
++ lfsck_help++;
++ break;
++ case 'l':
++ lfsck_save++;
++ break;
++ case 'm':
++ VERBOSE(1, "MDSDB: %s\n", optarg);
++ dbpath = malloc(PATH_MAX);
++ if (dbpath == NULL) {
++ fprintf(stderr, "error allocating dbpath\n");
++ return -ENOMEM;
++ }
++ strcpy(tmp, optarg);
++ if (realpath(my_dirname(tmp), dbpath) == NULL) {
++ fprintf(stderr, "Failure to resolve path %s\n",
++ optarg);
++ free(dbpath);
++ exit(1);
++ }
++
++ strcpy(tmp, optarg);
++ sprintf(dbpath+strlen(dbpath), "/%s", my_basename(tmp));
++ mds_file = dbpath;
++ break;
++ case 'n':
++ lfsck_create = 0;
++ lfsck_delete = 0;
++ lfsck_save = 0;
++ break;
++ case 1:
++ if (optind == argc) { /* last one is mountpoint */
++ VERBOSE(1, "MOUNTPOINT: %s\n", optarg);
++ path_name = optarg;
++ break;
++ }
++ /* Otherwise it is another ostdb file */
++ case 'o':
++ {
++ char *ost_path;
++
++ VERBOSE(1, "OSTDB[%u]: %s\n", num_ost_files, optarg);
++ p1 = optarg;
++ do {
++ dbpath = malloc(PATH_MAX);
++ if (dbpath == NULL) {
++ fprintf(stderr,
++ "error allocate ost_files[%d]\n",
++ num_ost_files);
++ return -ENOMEM;
++ }
++
++ /* Old-style arguments are comma separated */
++ ost_path = strsep(&p1, ",");
++ strcpy(tmp, ost_path);
++ if (realpath(my_dirname(tmp), dbpath) == NULL) {
++ fprintf(stderr, "Failure to resolve "
++ "path %s\n", optarg);
++ for (c = 0; c < num_ost_files; c++)
++ free(ost_files[c]);
++ free(dbpath);
++ exit(1);
++ }
++
++ strcpy(tmp, ost_path);
++ sprintf(dbpath+strlen(dbpath), "/%s",
++ my_basename(tmp));
++ ost_files[num_ost_files] = dbpath;
++ num_ost_files++;
++ } while (p1 != NULL);
++ break;
++ }
++ case 't':
++ num_threads = strtol(optarg, NULL, 0);
++ if (num_threads == ULONG_MAX)
++ return (-EINVAL);
++
++ if (num_threads > 128)
++ num_threads = 128;
++ if (num_threads == 0)
++ num_threads = 1;
++ break;
++ case 'v':
++ lfsck_verbose++;
++ break;
++ case 'y':
++ lfsck_yes++;
++ break;
++ default:
++ fprintf(stderr, "unknown option %c\n", c);
++ return(-EINVAL);
++ }
++ }
++
++ if (path_name == NULL)
++ path_name = argv[optind];
++
++ if (lfsck_yes && !lfsck_save && !lfsck_delete && !lfsck_create) {
++ fprintf(stderr, "--yes requires either --save or --delete, or"
++ "--create\n");
++ return(-EINVAL);
++ }
++
++ if (realpath(path_name, mnt_path) == NULL) {
++ fprintf(stderr, "error getting real mount path_name\n");
++ return (-EINVAL);
++ }
++ fp = setmntent(MOUNTED, "r");
++ if (fp == NULL) {
++ fprintf(stderr, "error opening /etc/mtab\n");
++ return (-EINVAL);
++ }
++
++ found = 0;
++ while ((mnt_info = getmntent(fp)) != NULL) {
++ if (strcmp(mnt_info->mnt_dir, mnt_path) == 0 &&
++ llapi_is_lustre_mnttype(mnt_info->mnt_type)) {
++ found = 1;
++ break;
++ }
++ }
++ endmntent(fp);
++
++ if (!found) {
++ if (lfsck_force) {
++ fprintf(stderr, "lfsck: %s unmounted? forcing\n",
++ mnt_path);
++ } else {
++ fprintf(stderr, "lfsck: %s not mounted\n", mnt_path);
++ return(-EINVAL);
++ }
++ }
++
++ if (mds_file == NULL || ost_files[0] == NULL) {
++ fprintf(stderr, "--mdsdb or --ostdb unspecified\n");
++ return(-EINVAL);
++ }
++
++ return(0);
++}
++
++/*
++ * This is called from lfsck_get_path and also recursively.
++ * This function is used on error paths when the name of an mds fid has
++ * to be determined. It relies on the order of directory search that was
++ * run in e2fsck when generating the mds_fid + containing dir table.
++ * It searches through the table for the correct mds_fid. When this
++ * is found a list of fids which are the fids of the directory tree up
++ * to the containing directory of the sought for fid is returned.
++ * When called recursively it continues search from the current point and
++ * when the recursive call returns the search is continued from the
++ * current search point as well. Basically is just traverses the list once.
++ * For a file like <mntpt>/aaa/ccc/ddd the fids of aaa ccc and the fid
++ * for ddd would also be returned.
++ */
++static int lfsck_get_fids(struct lu_fid *mds_fid, DB *mds_direntdb,
++ int depth, struct lfsck_fids *lfidp)
++{
++ struct lfsck_mds_dirent mds_dirent;
++ int rc = 0;
++ DBT key, data;
++
++ memset(&key, 0, sizeof(key));
++ memset(&data, 0, sizeof(data));
++ key.data = mds_fid;
++ key.size = sizeof(*mds_fid);
++ data.data = &mds_dirent;
++ data.size = data.ulen = sizeof(mds_dirent);
++ data.flags = DB_DBT_USERMEM;
++
++ rc = mds_direntdb->get(mds_direntdb, NULL, &key, &data, 0);
++ if (rc && !lfsck_is_dirfid_root(mds_fid)) {
++ log_write("Failed to find fid "DFID": %s\n", PFID(mds_fid),
++ db_strerror(rc));
++ return (-ENOENT);
++ }
++ letocpu_mds_dirent(&mds_dirent);
++ if (lfsck_is_dirfid_root(&mds_dirent.mds_dirfid)) {
++ lfidp->fids = malloc(sizeof(*lfidp->fids) * (depth + 1));
++ if (lfidp->fids == NULL) {
++ return (-ENOMEM);
++ }
++ lfidp->depth = depth;
++ lfidp->fids[depth] = mds_dirent.mds_fid;
++ return (0);
++ }
++ rc = lfsck_get_fids(&mds_dirent.mds_dirfid, mds_direntdb,
++ depth + 1, lfidp);
++ if (rc) {
++ return(rc);
++ }
++
++ lfidp->fids[depth] = mds_dirent.mds_fid;
++ return(0);
++}
++
++/* This function determines a path to a file given an mds fid.
++ * The workhorse function is lfsck_get_fids which once given a
++ * fid return a list of directory fids from the "root" directory to
++ * the fid in question. Using these fids we can construct the path to
++ * the file by using readir()
++ */
++static int lfsck_get_path(struct lu_fid *mds_fid, DB *mds_direntdb,
++ char *path, int path_len)
++{
++ struct lfsck_fids lfids;
++ DIR *dir;
++ struct dirent *dent;
++ int rc, i;
++ int cur_len = 0;
++
++ VERBOSE(2, "lookup path for FID "DFID"\n", PFID(mds_fid));
++
++ lfids.fids = NULL;
++ lfids.depth = 0;
++
++ rc = lfsck_get_fids(mds_fid, mds_direntdb, 0, &lfids);
++ if (rc != 0) {
++ rc = -ENOENT;
++ goto out;
++ }
++
++ if (strlen(mnt_path) + 1 > path_len) {
++ rc = -ENOMEM;
++ goto out;
++ }
++ cur_len = strlen(mnt_path);
++ path[strlen(mnt_path)] = 0;
++ memcpy(path, mnt_path, strlen(mnt_path));
++ /* Skip the first dir since this would be "ROOT" */
++ rc = 0;
++ for (i = lfids.depth - 1; i >= 0; i--) {
++ dir = opendir(path);
++ if (dir == NULL) {
++ rc = -errno;
++ goto out;
++ }
++ while (1) {
++ char path_tmp[PATH_MAX];
++ struct lu_fid fid;
++
++ dent = readdir(dir);
++ if (dent == NULL) {
++ closedir(dir);
++ rc = -ENOENT;
++ goto out;
++ }
++
++ if (strlen(path) + strlen(dent->d_name) +2 >= PATH_MAX){
++ closedir(dir);
++ rc = -ENAMETOOLONG;
++ goto out;
++ }
++
++ sprintf(path_tmp, "%s/%s", path, dent->d_name);
++ rc = lfsck_path2fid(path_tmp, &fid);
++ if (rc)
++ continue;
++
++ rc = 0;
++ if (lfsck_fidcmp(&fid, &lfids.fids[i]) == 0) {
++ if (cur_len + 1 + strlen(dent->d_name) >
++ path_len) {
++ rc = -ENOMEM;
++ closedir(dir);
++ goto out;
++ }
++ path[cur_len] = '/';
++ cur_len++;
++ memcpy(&path[cur_len], dent->d_name,
++ strlen(dent->d_name));
++ cur_len += strlen(dent->d_name);
++ path[cur_len] = 0;
++ closedir(dir);
++ break;
++ }
++ }
++ }
++out:
++ if (lfids.fids)
++ free(lfids.fids);
++ return(rc);
++}
++
++/*
++ * Used by pass1 to save the ids of files which reference the same
++ * objects. This is then used by pass4 to repair these files
++ */
++static int lfsck_save_duplicate(const struct lfsck_mds_objent *mds_obj)
++{
++ VERBOSE(2, "save duplicate object %u:"DOIF" FID "DFID"\n",
++ mds_obj->mds_ostidx, POIF(&mds_obj->mds_oi),
++ PFID(&mds_obj->mds_fid));
++
++ pthread_mutex_lock(&phase_lock);
++ if (lfsck_duplicates == NULL) {
++ lfsck_duplicates = malloc(sizeof(*lfsck_duplicates) *
++ RLIMIT);
++ if (lfsck_duplicates == NULL)
++ return (-EINVAL);
++
++ } else if (!((lfsck_dup_saved + 1) % RLIMIT)) {
++ size_t size = (((lfsck_dup_saved + 1) / RLIMIT) + 1 ) *
++ sizeof(*lfsck_duplicates) * RLIMIT;
++ void *tmp = realloc(lfsck_duplicates, size);
++
++ if (tmp == NULL)
++ return (-ENOMEM);
++
++ lfsck_duplicates = tmp;
++ }
++ lfsck_duplicates[lfsck_dup_saved].ld_mds_fid = mds_obj->mds_fid;
++ lfsck_duplicates[lfsck_dup_saved].ld_oi = mds_obj->mds_oi;
++ lfsck_duplicates[lfsck_dup_saved].ld_ost_idx = mds_obj->mds_ostidx;
++ lfsck_duplicates[lfsck_dup_saved].ld_link = NULL;
++ lfsck_dup_saved++;
++ pthread_mutex_unlock(&phase_lock);
++ return(0);
++}
++
++/*
++ * Check for duplicate ost objects on mds. Run through the table of
++ * mds_fid/ost object to make sure that each ost object is only
++ * refrenced by one mds entry. If a duplicate is found save the information
++ * for repair in pass4
++ */
++int lfsck_run_pass1(__u32 ost_idx, DB *mds_ostdb, DB *ost_db, DB *mds_direntdb)
++{
++ int i = 0;
++ int error = 0;
++ int rc = 0;
++ struct lfsck_mds_objent mds_obj, mds_obj2;
++ unsigned long count = 0;
++ DBT key, data;
++ DBC *dbcp = NULL;
++
++ log_write("%s: ost_idx %d: pass1: check for duplicate objects\n",
++ progname, ost_idx);
++
++ if ((rc = mds_ostdb->cursor(mds_ostdb, NULL, &dbcp, 0)) != 0) {
++ log_write("%s: error acquiring cursor for database: %s\n",
++ progname, db_strerror(rc));
++ goto out;
++ }
++ memset(&key, 0, sizeof(key));
++ memset(&data, 0, sizeof(data));
++ data.data = &mds_obj;
++ data.size = data.ulen = sizeof(mds_obj);
++ data.flags = DB_DBT_USERMEM;
++
++ while ((rc = dbcp->c_get(dbcp, &key, &data, DB_NEXT)) == 0) {
++ DBT data_dup;
++ db_recno_t num_dup;
++
++ count++;
++ if ((rc = dbcp->c_count(dbcp, &num_dup, 0)) != 0) {
++ log_write("%s: [%u] getting object refcount: %s\n",
++ progname, ost_idx, db_strerror(rc));
++ rc = -EINVAL;
++ goto out;
++ }
++ if (num_dup <= 1)
++ continue;
++
++ letocpu_mds_objent(&mds_obj);
++
++ if (lfsck_save_duplicate(&mds_obj))
++ fix_failed++;
++
++ for (i = 1; i < num_dup; i++) {
++ memset(&data_dup, 0, sizeof(data_dup));
++ data_dup.data = &mds_obj2;
++ data_dup.size = data_dup.ulen = sizeof(mds_obj2);
++ data_dup.flags = DB_DBT_USERMEM;
++ rc = dbcp->c_get(dbcp, &key,&data_dup,DB_NEXT);
++ if (rc != 0) {
++ log_write("%s: acquiring duplicate info: %s\n",
++ progname, db_strerror(rc));
++ rc = -EINVAL;
++ goto out;
++ }
++ letocpu_mds_objent(&mds_obj2);
++
++ if (!lfsck_fidcmp(&mds_obj.mds_fid,&mds_obj2.mds_fid)) {
++ log_write("%s: [%u] hard link on FID "DFID" is"
++ " not a duplicate object "DOIF"\n",
++ progname, PFID(&mds_obj.mds_fid),
++ ost_idx, POIF(&mds_obj.mds_oi));
++ continue;
++ }
++
++ if (lfsck_save_duplicate(&mds_obj2))
++ fix_failed++;
++ }
++ }
++
++ if (rc != DB_NOTFOUND) {
++ log_write("%s: error reading from inode database: %s\n",
++ progname, db_strerror(rc));
++ rc = -EINVAL;
++ goto out;
++ }
++
++ rc = 0;
++ if (error == 0) {
++ log_write("%s: ost_idx %d: pass1 OK (%lu files total)\n",
++ progname, ost_idx, count);
++ } else {
++ log_write("%s: ost_idx %d: pass1 ERROR: %d duplicate "
++ "entries found (fixed in pass4) (%lu files total)\n",
++ progname, ost_idx, error, count);
++ }
++out:
++ if (dbcp)
++ dbcp->c_close(dbcp);
++
++ return(rc);
++}
++
++#ifndef LL_IOC_RECREATE_OBJ
++#define LL_IOC_RECREATE_OBJ _IOW ('f', 157, long) /* 1.x object IDs */
++#endif
++#ifndef LL_IOC_RECREATE_FID
++#define LL_IOC_RECREATE_FID _IOW ('f', 157, struct lu_fid) /* 2.x FIDs */
++#endif
++
++/* If an MDS file is missing an object recreate object using an ioctl call */
++static int lfsck_recreate_obj(int cmd, void *creat, struct ost_id *oi,
++ __u32 ost_idx, char *path)
++{
++
++ int fd;
++ int rc;
++
++ if (!lfsck_create) {
++ log_write("[%u]: %s object %s "DOIF" not created\n", ost_idx,
++ path,cmd == LL_IOC_RECREATE_FID? "FID":"ID",POIF(oi));
++ return 0;
++ }
++
++ fd = open(path, O_LARGEFILE | O_RDONLY, 0);
++ if (fd < 0) {
++ rc = -errno;
++ log_write("[%u]: FAILED to open %s missing obj "DOIF"\n",
++ ost_idx, path, POIF(oi));
++ fix_failed++;
++ return rc;
++ }
++
++ rc = ioctl(fd, cmd, &creat);
++ if (rc) {
++ rc = -errno;
++ log_write("[%u]: failed to recreate %s missing obj "DOIF"\n",
++ ost_idx, path, POIF(oi));
++ fix_failed++;
++ } else {
++ log_write("[%u]: recreated %s missing obj "DOIF"\n",
++ ost_idx, path, POIF(oi));
++ fixed++;
++ }
++ close(fd);
++
++ return(rc);
++}
++
++/*
++ * If size checking is enabled see if this ost is "adding" to the file size
++ * if it is then just calculate the new size and save.
++ */
++static int lfsck_calc_size(struct lfsck_mds_objent *mds_obj,
++ struct lfsck_ost_objent *ost_obj,
++ DB *mds_sizeinfodb)
++{
++ int rc = 0;
++#ifdef LFSCK_CHECK_SIZE
++ struct lfsck_mds_szinfo mds_szinfo1;
++ __u64 calc_size;
++ DBT key, data;
++ __u64 chunks, rem;
++
++ if (ost_obj->ost_size == 0)
++ return(0);
++
++ pthread_mutex_lock(&size_lock);
++ memset(&key, 0, sizeof(key));
++ memset(&data, 0, sizeof(data));
++ key.data = &mds_obj->mds_fid;
++ key.size = sizeof(mds_obj->mds_fid);
++ data.data = &mds_szinfo1;
++ data.size = data.ulen = sizeof(mds_szinfo1);
++ data.flags = DB_DBT_USERMEM;
++ if ((rc = mds_sizeinfodb->get(mds_sizeinfodb, NULL, &key, &data, 0))) {
++ log_write("Failure to get sizeinfo "LPU64"\n",mds_obj->mds_fid);
++ pthread_mutex_unlock(&size_lock);
++ return (-ENOENT);
++ }
++ letocpu_mds_szinfo(&mds_szinfo1);
++ assert (mds_szinfo1.mds_stripe_pattern == LOV_PATTERN_RAID0);
++ chunks = ost_obj->ost_size / mds_szinfo1.mds_stripe_size;
++ rem = ost_obj->ost_size % mds_szinfo1.mds_stripe_size;
++ if (rem == 0) {
++ calc_size = (((chunks - 1 )* mds_szinfo1.mds_stripe_size)
++ * mds_szinfo1.mds_stripe_count);
++ calc_size += mds_szinfo1.mds_stripe_size *
++ (mds_obj->mds_ostoffset + 1);
++ } else {
++ calc_size = ((chunks * mds_szinfo1.mds_stripe_size)
++ * mds_szinfo1.mds_stripe_count);
++ if (mds_obj->mds_ostoffset == 0) {
++ calc_size += rem;
++ } else {
++ calc_size += mds_szinfo1.mds_stripe_size *
++ mds_obj->mds_ostoffset;
++ calc_size += rem;
++ }
++ }
++ if (calc_size > mds_szinfo1.mds_calc_size) {
++ mds_szinfo1.mds_calc_size = calc_size;
++ memset(&key, 0, sizeof(key));
++ memset(&data, 0, sizeof(data));
++ key.data = &mds_obj->mds_fid;
++ key.size = sizeof(mds_obj->mds_fid);
++ data.data = &mds_szinfo1;
++ data.size = sizeof(mds_szinfo1);
++ cputole_mds_szinfo(&mds_szinfo1);
++ /* Make sure we overwrite */
++ if ((rc = mds_sizeinfodb->put(mds_sizeinfodb,
++ NULL, &key, &data, 0)) != 0) {
++ log_write("Failure to update sizeinfo data\n");
++ pthread_mutex_unlock(&size_lock);
++ return (-EIO);
++ }
++ }
++ pthread_mutex_unlock(&size_lock);
++#endif /* LFSCK_CHECK_SIZE */
++ return(rc);
++}
++
++/*
++ * Check for dangling inode.
++ * pass runs through the mds table for an ost and checks again the ost table
++ * that the object refrenced on the mds exists on the ost
++ */
++int lfsck_run_pass2(__u32 ost_idx, struct lfsck_mds_hdr *mds_hdr,
++ DB *mds_ostdb, DB *ostdb,
++ DB *mds_direntdb, DB *mds_sizeinfodb)
++{
++ struct lfsck_mds_objent mds_obj;
++ struct lfsck_ost_objent ost_obj;
++ int error = 0, rc = 0;
++ unsigned long count = 0;
++ char *path;
++ DBC *dbcp = NULL;
++ DBT key, data;
++ __u64 max_objid = mds_hdr->mds_max_ost_id[ost_idx];
++ __u64 mds_connect_flags = 0;
++
++ rc = llapi_get_connect_flags(mnt_path, &mds_connect_flags);
++ /* Ignore the error here, and assume it is an older 1.8.x without
++ * LL_IOC_GET_CONNECT_FLAGS. We only use this for 2.x detection. */
++
++ log_write("lfsck: ost_idx %d: pass2: check for missing inode objects\n",
++ ost_idx);
++
++ path = malloc(PATH_MAX);
++ if (path == NULL) {
++ log_write("lfsck: [%u]: pass2 ERROR: out of memory\n",
++ ost_idx);
++ return (-ENOMEM);
++ }
++
++ rc = mds_ostdb->cursor(mds_ostdb, NULL, &dbcp, 0);
++ if (rc != 0) {
++ log_write("[%u]: error acquiring cursor for mds table: %s\n",
++ ost_idx, db_strerror(rc));
++ rc = -EINVAL;
++ goto out;
++ }
++
++ memset(&key, 0, sizeof(key));
++ memset(&data, 0, sizeof(data));
++ data.data = &mds_obj;
++ data.size = data.ulen = sizeof(mds_obj);
++ data.flags = DB_DBT_USERMEM;
++ while ((rc = dbcp->c_get(dbcp, &key, &data, DB_NEXT)) == 0) {
++ DBT key_ost, data_ost;
++
++ count++;
++ letocpu_mds_objent(&mds_obj);
++
++ if (mds_hdr->mds_flags & E2F_OPT_READONLY &&
++ mds_obj.mds_oi.oi_id > max_objid) {
++ VERBOSE(2, "[%u] skipping MDS FID "DFID": object "DOIF
++ " > max "LPU64"\n", ost_idx,
++ PFID(&mds_obj.mds_fid), POIF(&mds_obj.mds_oi),
++ max_objid);
++ continue;
++ }
++
++ memset(&key_ost, 0, sizeof(key_ost));
++ memset(&data_ost, 0, sizeof(data_ost));
++ key_ost.data = &mds_obj.mds_oi;
++ key_ost.size = sizeof(mds_obj.mds_oi);
++ data_ost.data = &ost_obj;
++ data_ost.size = data_ost.ulen = sizeof(ost_obj);
++ data_ost.flags = DB_DBT_USERMEM;
++ rc = ostdb->get(ostdb, NULL, &key_ost, &data_ost, 0);
++ if (rc != 0) {
++ letocpu_ost_objent(&ost_obj);
++ if (rc == DB_NOTFOUND) {
++ struct lu_fid fid;
++ struct create18 {
++ __u64 lrc_id;
++ __u32 lrc_ost_idx;
++ } create18;
++ void *create;
++ int cmd;
++
++ if (lfsck_get_path(&mds_obj.mds_fid,
++ mds_direntdb,path,PATH_MAX)){
++ VERBOSE(1,"[%u]: MDS FID "DFID" object "
++ DOIF" deleted?\n", ost_idx,
++ PFID(&mds_obj.mds_fid),
++ POIF(&mds_obj.mds_oi));
++ continue;
++ }
++ error++;
++ if (mds_connect_flags & OBD_CONNECT_FID) {
++ ostid_idif_unpack(&mds_obj.mds_oi,
++ &fid, ost_idx);
++ create = &fid;
++ cmd = LL_IOC_RECREATE_FID;
++ } else {
++ create18.lrc_id = mds_obj.mds_oi.oi_id;
++ create18.lrc_ost_idx = ost_idx;
++ create = &create18;
++ cmd = LL_IOC_RECREATE_OBJ;
++ }
++
++ lfsck_recreate_obj(cmd, create,&mds_obj.mds_oi,
++ ost_idx, path);
++ } else {
++ log_write("[%u]: error looking up object "DOIF
++ ": %s\n", ost_idx,
++ POIF(&mds_obj.mds_oi),
++ db_strerror(rc));
++ rc = -EINVAL;
++ goto out;
++ }
++ }
++ if (lfsck_calc_size(&mds_obj, &ost_obj, mds_sizeinfodb)) {
++ log_write("[%u]: error updating file size for object "
++ DOIF": %s\n", ost_idx, POIF(&mds_obj.mds_oi),
++ strerror(rc));
++ rc = -EINVAL;
++ goto out;
++ }
++ }
++ if (rc != DB_NOTFOUND) {
++ log_write("[%u]: error getting next inode: %s\n",
++ ost_idx, db_strerror(rc));
++ rc = -EINVAL;
++ goto out;
++ }
++ rc = 0;
++ if (error == 0) {
++ log_write("lfsck: ost_idx %d: pass2 OK (%lu objects)\n",
++ ost_idx, count);
++ } else {
++ log_write("lfsck: ost_idx %d: pass2 ERROR: %d dangling inodes "
++ "found (%lu files total)\n", ost_idx, error, count);
++ }
++
++out:
++ dbcp->c_close(dbcp);
++ free(path);
++ return(0);
++}
++
++/*
++ * If an object exists on an ost but is not referenced by an entry on the mds
++ * then create a lost+found entry and set the EA on the file so that the
++ * orphaned object is picked up. If the object is requested to be deleted
++ * an unlink on this lost+found file will now delete same
++ */
++int lfsck_fix_orphan(__u32 ost_idx, struct ost_id *oi,
++ struct obd_uuid *uuid, int delete)
++{
++ struct lov_user_md *lum;
++ char file[PATH_MAX];
++ int fd, lum_size, rc = 0;
++ struct utimbuf utimbuf = { 0, 0 };
++
++ lum_size = LOV_EA_SIZE(lum, 1);
++
++ lum = malloc(lum_size);
++ if (lum == NULL) {
++ log_write("%s: out of memory on EA (%u) orphan %u:"DOIF"\n",
++ progname, lum_size, ost_idx, POIF(oi));
++ return(-ENOMEM);
++ }
++
++ memset(file, 0, PATH_MAX);
++ sprintf(file, "%s/%s-"DOIF, lostandfounddir, uuid->uuid, POIF(oi));
++
++ fd = open(file, O_CREAT|O_EXCL|O_LOV_DELAY_CREATE, 0600);
++ if (fd < 0) {
++ rc = -errno;
++ log_write("%s: unable to open %s for orphan %u:"DOIF": %s\n",
++ progname, file, ost_idx, POIF(oi), strerror(-rc));
++ goto out_free;
++ }
++ lum->lmm_magic = LOV_USER_MAGIC;
++ lum->lmm_pattern = LOV_PATTERN_RAID0;
++ lum->lmm_stripe_size = 1048576;
++ lum->lmm_stripe_offset = 0;
++ lum->lmm_stripe_count = 1;
++ lum->lmm_objects[0].l_object_id = oi->oi_id;
++ lum->lmm_objects[0].l_object_seq = oi->oi_seq;
++ lum->lmm_objects[0].l_ost_gen = 0;
++ lum->lmm_objects[0].l_ost_idx = ost_idx;
++
++ /* reset the MDS timestamps so we can see the OST timestamps */
++ utime(file, &utimbuf);
++
++ if (ioctl(fd, LL_IOC_LOV_SETEA, lum) < 0) {
++ rc = -errno;
++ log_write("%s: unable to open %s for orphan %u:"DOIF": %s\n",
++ progname, file, ost_idx, POIF(oi), strerror(-rc));
++ }
++
++ close(fd);
++ if (rc != 0 || delete) {
++ int err = unlink(file);
++ if (err != 0 && errno != ENOENT) {
++ rc = rc ? rc : -errno;
++ log_write("%s: failed to unlink %s for orphan %u:"DOIF
++ ": %s\n", progname, file, ost_idx,
++ POIF(oi), strerror(-rc));
++ }
++ }
++out_free:
++ free(lum);
++ return(rc);
++}
++
++/*
++ * Check for orphans
++ * Run through each entry in ost table and check the mds ost table for
++ * a corresponding entry. If not found report and repair.
++ */
++int lfsck_run_pass3(__u32 ost_idx, DB *mds_ostdb, DB *ostdb,
++ struct obd_uuid *uuid, __u64 last_id)
++{
++ int error = 0, rc = 0;
++ struct lfsck_mds_objent mds_obj;
++ struct lfsck_ost_objent ost_obj;
++ unsigned long count = 0;
++ DBT key, data;
++ DBC *dbcp = NULL;
++ __u64 bytes = 0;
++
++ log_write("lfsck: ost_idx %d: pass3: check for orphan objects\n",
++ ost_idx);
++
++ VERBOSE(1, "[%u] uuid %s\n", ost_idx, uuid->uuid);
++ VERBOSE(1, "[%u] last_id "LPU64"\n", ost_idx, last_id);
++
++ rc = ostdb->cursor(ostdb, NULL, &dbcp, 0);
++ if (rc != 0) {
++ log_write("[%u]: error acquiring cursor for mds table: %s\n",
++ ost_idx, db_strerror(rc));
++ rc = -EINVAL;
++ goto out;
++ }
++
++ memset(&key, 0, sizeof(key));
++ memset(&data, 0, sizeof(data));
++ data.data = &ost_obj;
++ data.size = data.ulen = sizeof(ost_obj);
++ data.flags = DB_DBT_USERMEM;
++
++ while ((rc = dbcp->c_get(dbcp, &key, &data, DB_NEXT)) == 0) {
++ DBT key_mdt, data_mdt;
++ struct ost_id *oi;
++
++ count++;
++ letocpu_ost_objent(&ost_obj);
++ oi = &ost_obj.ost_oi;
++
++ if (oi->oi_id > last_id) {
++ VERBOSE(2, "[%u] skipping objid "DOIF" > "LPU64"\n",
++ ost_idx, POIF(oi), last_id);
++ continue;
++ }
++ VERBOSE(2, "[%u] processing objid "DOIF"\n", ost_idx, POIF(oi));
++
++ memset(&key_mdt, 0, sizeof(key_mdt));
++ memset(&data_mdt, 0, sizeof(data_mdt));
++ key_mdt.data = oi;
++ key_mdt.size = sizeof(*oi);
++ data_mdt.data = &mds_obj;
++ data_mdt.size = data_mdt.ulen = sizeof(mds_obj);
++ data_mdt.flags = DB_DBT_USERMEM;
++ rc = mds_ostdb->get(mds_ostdb, NULL, &key_mdt, &data_mdt, 0);
++ if (rc == 0) {
++ VERBOSE(2, "[%u] found object "DOIF" reference\n",
++ ost_idx, POIF(oi));
++ continue;
++ }
++
++ letocpu_mds_objent(&mds_obj);
++ if (rc != DB_NOTFOUND) {
++ log_write("Failed to check mds db for entry\n");
++ rc = -EINVAL;
++ goto out;
++ }
++ if (ost_obj.ost_size == 0) {
++ /* don't report errors for normal orphan recovery */
++ VERBOSE(1, "[%u] zero-length orphan objid "DOIF"\n",
++ ost_idx, POIF(oi));
++ if (lfsck_save || lfsck_delete) {
++ /* No reason to save just delete*/
++ rc = lfsck_fix_orphan(ost_idx, oi, uuid, 1);
++ if (rc) {
++ log_write("lfsck: [%u]: pass3 "
++ "error fixing zero-length "
++ "orphan objid "DOIF"\n",
++ ost_idx, POIF(oi));
++ fix_failed++;
++ } else {
++ fixed++;
++ }
++ }
++ continue;
++ }
++
++ error++;
++ bytes += ost_obj.ost_bytes;
++ if (lfsck_save || lfsck_delete) {
++ rc = lfsck_fix_orphan(ost_idx, oi, uuid, lfsck_delete);
++ if (rc) {
++ log_write("lfsck: [%u]: failed to fix orphan "
++ "object "DOIF", "LPU64" bytes\n",
++ ost_idx, POIF(oi),ost_obj.ost_bytes);
++ fix_failed++;
++ } else {
++ log_write("lfsck: [%u]: pass3 %s orphan object "
++ DOIF", "LPU64" bytes\n", ost_idx,
++ lfsck_save ? "saved" : "unlinked",
++ POIF(oi), ost_obj.ost_bytes);
++ fixed++;
++ }
++ } else {
++ error++;
++ log_write("lfsck: [%u]: pass3 orphan found objid "
++ DOIF", "LPU64" bytes\n", ost_idx,
++ POIF(oi), ost_obj.ost_bytes);
++ }
++ }
++ if (rc != DB_NOTFOUND) {
++ log_write("[%u]: error getting next object in db %d\n",
++ ost_idx, db_strerror(rc));
++ rc = -EINVAL;
++ goto out;
++ }
++
++ if (error == 0) {
++ log_write("lfsck: ost_idx %d: pass3 OK (%lu files total)\n",
++ ost_idx, count);
++ } else {
++ log_write("lfsck: ost_idx %d: pass3 %s: %4gMB of orphan "
++ "data (%lu of %lu files total)\n", ost_idx,
++ (lfsck_save | lfsck_delete) ? "FIXED" : "ERROR",
++ (double)bytes / (1024 * 1024), error, count);
++ }
++out:
++ if (dbcp)
++ dbcp->c_close(dbcp);
++ return (0);
++}
++
++/* Missing ost information report affected file names */
++int lfsck_list_affected_files(char *mds_file, struct lfsck_mds_hdr *mds_hdr,
++ DB *mds_direntdb, __u32 ost_idx)
++{
++ struct lfsck_mds_objent mds_obj;
++ char dbname[256];
++ char *path;
++ DB *mds_db = NULL;
++ DBT key,data;
++ DBC *dbcp = NULL;
++ int rc = 0;
++
++ path = malloc(PATH_MAX);
++ if (path == NULL) {
++ return (-ENOMEM);
++ }
++
++ sprintf(dbname, "%s.%d", MDS_OSTDB, ost_idx);
++ if ((rc = lfsck_opendb(mds_file, dbname, &mds_db, 1, 0, 0)) != 0) {
++ log_write("failed to open mds db file %s\n", mds_file);
++ rc = -EINVAL;
++ goto out;
++ }
++
++ if ((rc = mds_db->cursor(mds_db, NULL, &dbcp, 0)) != 0) {
++ log_write("Failed to acquire cursor for mds table\n");
++ rc = -EINVAL;
++ goto out;
++ }
++
++ memset(&key, 0, sizeof(key));
++ memset(&data, 0, sizeof(data));
++ data.data = &mds_obj;
++ data.size = data.ulen = sizeof(mds_obj);
++ data.flags = DB_DBT_USERMEM;
++
++ log_write("Files affected by missing ost info are : -\n");
++ while ((rc = dbcp->c_get(dbcp, &key, &data, DB_NEXT)) == 0) {
++ letocpu_mds_objent(&mds_obj);
++
++ if (lfsck_get_path(&mds_obj.mds_fid, mds_direntdb,
++ path, PATH_MAX)) {
++ log_write("Failed to get path for fid "LPU64"\n",
++ mds_obj.mds_fid);
++ fix_failed++;
++ } else {
++ log_write("%s\n",path);
++ }
++ }
++ if (rc != DB_NOTFOUND) {
++ log_write("Error getting next element in db %d\n", rc);
++ rc = -EINVAL;
++ goto out;
++ }
++ rc = 0;
++
++out:
++ if (dbcp)
++ dbcp->c_close(dbcp);
++ if (mds_db)
++ mds_db->close(mds_db, 0);
++ return(rc);
++}
++
++/*
++ * For each ost index run checks 1 2 and 3.
++ * 1) Check for object referenced by more than one file
++ * 2) Check that objects exist on ost
++ * 3) Check that containg mds entry exists for an object
++ */
++int run_test(__u32 ost_idx, struct lfsck_mds_hdr *mds_hdr,
++ DB *mds_direntdb, DB *mds_sizeinfodb )
++{
++ struct lfsck_ost_hdr *ost_hdr = NULL;
++ char dbname[256];
++ DB *mds_ostdb = NULL;
++ DB *ost_db = NULL;
++ DBT key, data;
++ __u64 last_id;
++ int i, rc;
++
++ sprintf(dbname, "%s.%d", MDS_OSTDB, ost_idx);
++
++ VERBOSE(2, "testing ost_idx %d\n", ost_idx);
++
++ rc = lfsck_opendb(mds_file, dbname, &mds_ostdb, 1, 0, 0);
++ if (rc != 0) {
++ log_write("failed to open mds db file %s: %s\n",
++ mds_file, db_strerror(rc));
++ goto out;
++ }
++
++ ost_hdr = malloc(sizeof(*ost_hdr));
++ if (ost_hdr == NULL) {
++ log_write("Failure to alloc memory\n");
++ rc = -ENOMEM;
++ goto out;
++ }
++
++
++ VERBOSE(2, "looking for index %u UUID %s\n", ost_idx,
++ lfsck_uuid[ost_idx].uuid);
++
++ for (i = 0; i < num_ost_files; i++) {
++ VERBOSE(2, "checking file %s\n", ost_files[i]);
++ rc = lfsck_opendb(ost_files[i], OST_HDR, &ost_db, 0, 0, 0);
++ if (rc != 0) {
++ log_write("Error opening ost_data_file %s: rc %d\n",
++ ost_files[i], rc);
++ goto out;
++ }
++ memset(&key, 0, sizeof(key));
++ memset(&data, 0, sizeof(data));
++ ost_hdr->ost_magic = OST_MAGIC;
++ key.data = &ost_hdr->ost_magic;
++ key.size = sizeof(ost_hdr->ost_magic);
++ data.size = data.ulen = sizeof(*ost_hdr);
++ data.data = ost_hdr;
++ data.flags = DB_DBT_USERMEM;
++
++ rc = ost_db->get(ost_db, NULL, &key, &data, 0);
++ ost_db->close(ost_db, 0);
++ ost_db = NULL;
++ if (rc != 0) {
++ log_write("Invalid ost magic on file %s: rc %s\n",
++ ost_files[i], db_strerror(rc));
++ continue;
++ }
++
++ letocpu_ost_hdr(ost_hdr);
++ VERBOSE(2, "%s has ost UUID %s\n", ost_files[i],
++ ost_hdr->ost_uuid.uuid);
++
++ if (obd_uuid_equals(&lfsck_uuid[ost_idx], &ost_hdr->ost_uuid)) {
++ if (ost_hdr->ost_index != ost_idx) {
++ log_write("Requested ost_idx %u doesn't match "
++ "index %u found in %s\n", ost_idx,
++ ost_hdr->ost_index, ost_files[i]);
++ continue;
++ }
++
++ break;
++ }
++ }
++
++ if (i == num_ost_files) {
++ log_write("lfsck: can't find file for ost_idx %d\n", ost_idx);
++ rc = lfsck_list_affected_files(mds_file, mds_hdr,
++ mds_direntdb, ost_idx);
++ goto out;
++ }
++ rc = lfsck_opendb(ost_files[i], OST_OSTDB, &ost_db, 0, 0, 0);
++ if (rc != 0) {
++ log_write("error opening ost_data_file %s: rc %d\n",
++ ost_files[i], rc);
++ goto out;
++ }
++
++ VERBOSE(1, "MDS: max_id "LPU64" OST: max_id "LPU64"\n",
++ mds_hdr->mds_max_ost_id[ost_idx], ost_hdr->ost_last_id);
++
++ rc = lfsck_run_pass1(ost_idx, mds_ostdb, ost_db, mds_direntdb);
++ if (rc != 0) {
++ log_write("error in running pass1\n");
++ goto out;
++ }
++
++ rc = lfsck_run_pass2(ost_idx, mds_hdr, mds_ostdb, ost_db, mds_direntdb,
++ mds_sizeinfodb);
++ if (rc != 0) {
++ log_write("error in running pass2\n");
++ goto out;
++ }
++
++ last_id = (ost_hdr->ost_flags & E2F_OPT_READONLY ||
++ mds_hdr->mds_flags & E2F_OPT_READONLY) ?
++ mds_hdr->mds_max_ost_id[ost_idx] : ost_hdr->ost_last_id;
++
++ rc = lfsck_run_pass3(ost_idx, mds_ostdb, ost_db, &ost_hdr->ost_uuid,
++ last_id);
++ if (rc != 0) {
++ log_write("error in running pass3\n");
++ goto out;
++ }
++ rc = 0;
++
++out:
++ if (ost_hdr)
++ free(ost_hdr);
++ if (mds_ostdb)
++ mds_ostdb->close(mds_ostdb, 0);
++ if (ost_db)
++ ost_db->close(ost_db, 0);
++
++ return(rc);
++}
++
++static int lfsck_validate_duplicate(struct lfsck_saved_duplicates *dup,
++ const char *path)
++{
++ struct lov_user_md *lum;
++ struct lov_user_ost_data_v1 *loi;
++ struct stat64 st;
++ struct lu_fid fid;
++ int rc, i;
++
++ VERBOSE(2,"[%u] check duplicate FID "DFID" object "DOIF"\n for\t%s\n",
++ dup->ld_ost_idx, PFID(&dup->ld_mds_fid),POIF(&dup->ld_oi),path);
++
++ /* first, validate that the paths are still valid */
++ if (stat64(path, &st) < 0) {
++ rc = -errno;
++ log_write("%s: duplicate file %s error: %s\n",
++ progname, path, strerror(-rc));
++ return rc;
++ }
++
++ rc = lfsck_path2fid(path, &fid);
++ if (rc < 0) {
++ log_write("%s: unable to get LMA EA on %s: %s\n",
++ progname, path, strerror(-rc));
++ return rc;
++ }
++ if (lfsck_fidcmp(&dup->ld_mds_fid, &fid)) {
++ log_write("%s: duplicate file %s is no longer FID "DFID"\n",
++ progname, path, PFID(&dup->ld_mds_fid));
++ return -EBADF;
++ }
++
++ lum = malloc(LOV_EA_MAX(lum));
++ if (lum == NULL) {
++ log_write("%s: out of memory allocating LOV EA (%u)\n",
++ progname, LOV_EA_MAX(lum));
++ return -ENOMEM;
++ }
++
++ rc = llapi_file_get_stripe(path, lum);
++ if (rc < 0) {
++ log_write("%s: unable to get LOV EA on %s: %s\n",
++ progname, path, strerror(-rc));
++ goto out;
++ }
++
++ if (lum->lmm_pattern != LOV_PATTERN_RAID0) {
++ log_write("%s: unknown LOV stripe pattern %#08x\n",
++ progname, lum->lmm_pattern);
++ rc = -EINVAL;
++ goto out;
++ }
++
++ if (lum->lmm_magic == LOV_USER_MAGIC_V1) {
++ loi = lum->lmm_objects;
++ } else if (lum->lmm_magic == LOV_USER_MAGIC_V3) {
++ loi = ((struct lov_user_md_v3 *)lum)->lmm_objects;
++ } else {
++ log_write("%s: unknown LOV magic %#08x\n",
++ progname, lum->lmm_magic);
++ rc = -EINVAL;
++ goto out;
++ }
++
++ /* Verify that the object in question is still in the file */
++ for (i = 0; i < lum->lmm_stripe_count; i++, loi++) {
++ if (loi->l_ost_idx == dup->ld_ost_idx &&
++ loi->l_object_id == dup->ld_oi.oi_id &&
++ loi->l_object_seq == dup->ld_oi.oi_seq)
++ break;
++ }
++
++ if (i == lum->lmm_stripe_count) {
++ log_write("%s: cannot find object %u:"DOIF" in\n\t%s\n",
++ progname, dup->ld_ost_idx, POIF(&dup->ld_oi), path);
++ rc = -EBADF;
++ goto out;
++ }
++
++out:
++ free(lum);
++ return rc;
++}
++
++#ifndef HAVE_LLAPI_CANCEL_OSC_LOCKS
++#define NAMESPACES "/proc/fs/lustre/ldlm/namespaces"
++void llapi_cancel_osc_locks(const char *mnt_path)
++{
++ DIR *namespaces;
++ char path[PATH_MAX];
++ struct dirent *dent;
++ int rc, fd;
++
++ namespaces = opendir(NAMESPACES);
++ if (namespaces == NULL) {
++ rc = -errno;
++ log_write("%s: error opening %s: %s\n",
++ progname, NAMESPACES, strerror(-rc));
++ return;
++ }
++
++ while ((dent = readdir(namespaces)) != NULL) {
++ if (strcmp(dent->d_name, ".") == 0 ||
++ strcmp(dent->d_name, "..") == 0)
++ continue;
++
++ if (strstr(dent->d_name, "osc") == NULL &&
++ strstr(dent->d_name, "OSC") == NULL)
++ continue;
++
++ snprintf(path, sizeof(path) - 1, "%s/%s/lru_size",
++ NAMESPACES, dent->d_name);
++
++ fd = open(path, O_WRONLY);
++ if (fd < 0) {
++ log_write("%s: error opening %s to cancel locks: %s\n",
++ progname, path, strerror(errno));
++ continue;
++ }
++ VERBOSE(3, "clearning locks in %s\n", path);
++ write(fd, "clear", 6);
++ close(fd);
++ }
++
++ closedir(namespaces);
++}
++#endif
++
++/* Remove inodes from the client cache to avoid hitting an LASSERTF() on
++ * the client if it tries to attach two inodes to the same object */
++static void lfsck_drop_caches(void)
++{
++ sync();
++ llapi_cancel_osc_locks(mnt_path);
++ system("echo 3 > /proc/sys/vm/drop_caches");
++}
++
++/* Duplicate an object that is referenced by multiple files and point one
++ * of the files to use the duplicated object */
++static int lfsck_fix_duplicate(struct lfsck_saved_duplicates *dup,
++ DB *mds_direntdb, const char *path)
++{
++ char path_tmp[PATH_MAX] = { 0 };
++ char tmp[PATH_MAX * 2 + 10] = { 0 };
++ const char *base;
++ int rc;
++
++ lfsck_drop_caches();
++
++ if (!lfsck_create) {
++ VERBOSE(1, "%s: [%u]: not duplicating FID "DFID
++ " object "DOIF" by request\n on\t%s\n",
++ progname, dup->ld_ost_idx, PFID(&dup->ld_mds_fid),
++ POIF(&dup->ld_oi), path);
++ return 0;
++ }
++
++ rc = lfsck_validate_duplicate(dup, path);
++ if (rc < 0)
++ goto out;
++
++ snprintf(path_tmp, sizeof(path_tmp) - 1, "%s.lfsck_tmp", path);
++ snprintf(tmp, sizeof(tmp) - 1, "cp -p '%s' '%s'", path, path_tmp);
++ VERBOSE(2, "%s\n", tmp);
++ rc = system(tmp);
++ if (rc) {
++ rc = -errno;
++ log_write("%s: duplicating object for %u:"DOIF" %s: %s\n",
++ progname, dup->ld_ost_idx, POIF(&dup->ld_oi),
++ path, strerror(-rc));
++ goto out;
++ }
++
++ base = strrchr(path, '/');
++ if (base == NULL)
++ base = path;
++ else
++ base++;
++
++ rc = asprintf(&dup->ld_link, "%s/%u-"DOIF"-"DFID":%s", dupedir,
++ dup->ld_ost_idx, POIF(&dup->ld_oi),
++ PFID(&dup->ld_mds_fid), base);
++ if (rc < 0) {
++ rc = -errno;
++ goto out;
++ }
++
++ VERBOSE(2, "ln %s %s\n", path, dup->ld_link);
++ rc = link(path, dup->ld_link);
++ if (rc) {
++ rc = -errno;
++ log_write("%s: error linking %s to %s: %s\n",
++ progname, path, dup->ld_link, strerror(-rc));
++ free(dup->ld_link);
++ dup->ld_link = NULL;
++ goto out;
++ }
++
++ VERBOSE(2, "rename %s %s\n", path_tmp, path);
++ rc = rename(path_tmp, path);
++ if (rc) {
++ rc = -errno;
++ log_write("%s: error renaming %s to %s: %s\n",
++ progname, path_tmp, path, strerror(-rc));
++ free(dup->ld_link);
++ dup->ld_link = NULL;
++ } else {
++ log_write("%s: [%u]: fixed duplicate FID "DFID" object "
++ DOIF":\n\t%s\n", progname, dup->ld_ost_idx,
++ PFID(&dup->ld_mds_fid), POIF(&dup->ld_oi), path);
++ }
++out:
++ if (rc) {
++ VERBOSE(2, "unlink %s\n", path_tmp);
++ if (unlink(path_tmp))
++ log_write("%s: unlink %s failed: %s\n", progname,
++ path_tmp, strerror(errno));
++ }
++
++ return rc;
++}
++
++/*
++ * Check for files found that reference the same ost objects
++ * (found in pass1) and repair now if necessary
++ */
++int lfsck_run_pass4(DB *mds_direntdb)
++{
++ char tmp[PATH_MAX + 512];
++ char path[PATH_MAX];
++ int failed_get_path, fixed_dup;
++ int i, j;
++
++ log_write("lfsck: pass4: check for %u duplicate object references\n",
++ lfsck_dup_saved);
++ if (lfsck_dup_saved == 0) {
++ log_write("lfsck: pass4 OK (no duplicates)\n");
++ return(0);
++ }
++
++ do {
++ struct lu_fid *mds_fid;
++
++ failed_get_path = 0;
++ fixed_dup = 0;
++
++ lfsck_drop_caches();
++
++ for (i = 0; i < lfsck_dup_saved; i++) {
++ mds_fid = &lfsck_duplicates[i].ld_mds_fid;
++ if (mds_fid->f_oid == 0)
++ continue;
++
++ if (lfsck_get_path(mds_fid, mds_direntdb, path,
++ sizeof(path))) {
++ failed_get_path++;
++ continue;
++ }
++ if (lfsck_fix_duplicate(&lfsck_duplicates[i],
++ mds_direntdb, path)) {
++ fix_failed++;
++ continue;
++ }
++
++ fixed++;
++ fixed_dup++;
++
++ /* don't duplicate a file multiple times even if it has
++ * multiple shared objects */
++ for (j = i + 1; j < lfsck_dup_saved; j++) {
++ if (lfsck_fidcmp(&lfsck_duplicates[j].ld_mds_fid,
++ mds_fid) == 0)
++ lfsck_duplicates[j].ld_mds_fid.f_oid =0;
++ }
++ lfsck_duplicates[i].ld_mds_fid.f_oid = 0;
++ }
++ } while (failed_get_path && fixed_dup);
++
++ for (i = 0; i < lfsck_dup_saved; i++) {
++ lfsck_drop_caches();
++
++ if (!lfsck_duplicates[i].ld_link)
++ continue;
++
++ if (unlink(lfsck_duplicates[i].ld_link))
++ log_write("%s: failed to unlink %s: %s\n", progname,
++ lfsck_duplicates[i].ld_link, strerror(errno));
++ else
++ log_write("%s: %s unlinked\n", progname,
++ lfsck_duplicates[i].ld_link);
++ free(lfsck_duplicates[i].ld_link);
++ lfsck_duplicates[i].ld_link = NULL;
++ }
++
++ snprintf(tmp, sizeof(tmp) - 1, "rm -rvf '%s'", dupedir);
++ VERBOSE(1, "%s\n", tmp);
++ system(tmp);
++
++ log_write("lfsck: pass4 finished\n");
++
++ return(0);
++}
++
++/*
++ * This is a placeholder to check for filesize correctness no fixup is in
++ * place right now since file size is still obtained from osts
++ */
++int lfsck_run_pass5(DB *mds_direntdb, DB *mds_sizeinfodb)
++{
++ int rc = 0;
++#ifdef LFSCK_CHECK_SIZE
++ struct lfsck_mds_szinfo mds_szinfo1;
++ char path[PATH_MAX];
++ struct stat64 statbuf;
++ DBT key,data;
++ DBC *dbcp;
++
++ log_write("lfsck: pass5: file size correctness\n");
++
++ if ((rc = mds_sizeinfodb->cursor(mds_sizeinfodb, NULL, &dbcp, 0)) != 0){
++ log_write("%s: error acquiring cursor for database: %s\n",
++ progname, db_strerror(rc));
++ rc = -EINVAL;
++ goto out;
++ }
++ memset(&key, 0, sizeof(key));
++ memset(&data, 0, sizeof(data));
++ data.data = &mds_szinfo1;
++ data.size = data.ulen = sizeof(mds_szinfo1);
++ data.flags = DB_DBT_USERMEM;
++ while ((rc = dbcp->c_get(dbcp, &key, &data, DB_NEXT)) == 0) {
++ letocpu_mds_szinfo(&mds_szinfo1);
++
++ if (mds_szinfo1.mds_size != mds_szinfo1.mds_calc_size) {
++ if (lfsck_get_path(mds_szinfo1.mds_fid, mds_direntdb,
++ path, sizeof(path))) {
++ log_write("%s: failed to get path and update "
++ "size for fid "LPU64"\n",
++ mds_szinfo1.mds_fid);
++ fix_failed++;
++ continue;
++ }
++
++ if (stat64(path, &statbuf)) {
++ log_write("%s: pass5: failed to stat %s\n",
++ progname, path);
++ fix_failed++;
++ continue;
++ }
++ if (statbuf.st_size == mds_szinfo1.mds_calc_size) {
++ VERBOSE(2, "%s: %s really has right size\n",
++ progname, path);
++ } else {
++ log_write("%s: %s size "LPU64" != "LPU64"\n",
++ progname, path, statbuf.st_size,
++ mds_szinfo1.mds_calc_size);
++ fixed++;
++ }
++ }
++ }
++ if (rc != DB_NOTFOUND) {
++ log_write("%s: error getting next element in db: %s\n",
++ progname, db_strerror(rc));
++ rc = -EINVAL;
++ goto out;
++ }
++ rc = 0;
++ log_write("%s: pass5 finished\n", progname);
++out:
++ dbcp->c_close(dbcp);
++#endif /* LFSCK_CHECK_SIZE */
++ return rc;
++}
++
++int get_response()
++{
++ char yes[] = "Yy";
++ char no[] = "Nn";
++ char c;
++ int rc = -1;
++
++ while (1) {
++ c = getchar();
++ if ( c == EOF)
++ break;
++
++ if (strchr(yes, c)) {
++ rc = 1;
++ break;
++ }
++
++ if (strchr(no, c)) {
++ rc = 0;
++ break;
++ }
++ }
++ return(rc);
++}
++
++/* Starting point for each thread */
++void *lfsck_start_thread(void *arg)
++{
++ struct lfsck_thread_info *tinfo = (struct lfsck_thread_info *)arg;
++ int i,rc;
++
++ tinfo->status = 0;
++ pthread_mutex_lock(&init_mutex);
++ if (all_started)
++ pthread_mutex_unlock(&init_mutex);
++ else
++ pthread_cond_wait(&init_cond, &init_mutex);
++
++ if (!all_started)
++ pthread_exit(NULL);
++ for (i = tinfo->start_ost_idx; i < tinfo->end_ost_idx; i++) {
++ rc = run_test(i, tinfo->mds_hdr, tinfo->mds_direntdb,
++ tinfo->mds_sizeinfodb);
++ if (rc) {
++ log_write("lfsck: ost_idx %d: error running check\n",i);
++ tinfo->status = rc;
++ }
++ }
++ pthread_exit(NULL);
++}
++
++/* Start threads and run filesystem checks and repair */
++int lfsck_run_checks()
++{
++ struct lfsck_mds_hdr *mds_hdr = NULL;
++ struct lfsck_thread_info *tinfo = NULL;
++ pthread_t *threads = NULL;
++ int rc, i;
++ DB *mds_direntdb = NULL;
++ DB *mds_hdrdb = NULL;
++ DB *mds_sizeinfodb = NULL;
++ DBT key, data;
++ int num_osts;
++
++ rc = lfsck_opendb(mds_file, MDS_HDR, &mds_hdrdb, 0, 0, 0);
++ if (rc != 0) {
++ log_write("%s: error opening mds_hdr in %s: rc %d\n",
++ mds_file, rc);
++ return(-EINVAL);
++ }
++ mds_hdr = malloc(sizeof(*mds_hdr));
++ if (mds_hdr == NULL) {
++ log_write("%s: out of memory allocating DB header (%u)\n",
++ progname, sizeof(*mds_hdr));
++ rc = -ENOMEM;
++ goto out;
++ }
++ memset(&key, 0, sizeof(key));
++ memset(&data, 0, sizeof(data));
++ mds_hdr->mds_magic = MDS_MAGIC;
++ key.data = &mds_hdr->mds_magic;
++ key.size = sizeof(mds_hdr->mds_magic);
++ data.data = mds_hdr;
++ data.size = sizeof(*mds_hdr);
++ data.ulen = sizeof(*mds_hdr);
++ data.flags = DB_DBT_USERMEM;
++ rc = mds_hdrdb->get(mds_hdrdb, NULL, &key, &data, 0);
++ if (rc != 0) {
++ log_write("%s: error getting mds_hdr info %s: %s\n",
++ progname, mds_file, db_strerror(rc));
++ goto out;
++ }
++ letocpu_mds_hdr(mds_hdr);
++
++ rc = lfsck_opendb(mds_file, MDS_DIRINFO, &mds_direntdb, 0, 0, 0);
++ if (rc != 0) {
++ log_write("%s: error opening dirinfo db %s\n",
++ progname, mds_file);
++ goto out;
++ }
++
++ rc = lfsck_opendb(mds_file, MDS_SIZEINFO, &mds_sizeinfodb, 0, 0, 0);
++ if (rc != 0) {
++ log_write("%s: error opening sizeinfo db %s\n",
++ progname, mds_file);
++ goto out;
++ }
++
++ if (lov_tgt_count > mds_hdr->mds_num_osts) {
++ fprintf(stderr, "%s: number of osts in lov (%u) > "
++ "num referenced in mds (%u) (new ost or "
++ "empty filesystem?)\n", progname,
++ lov_tgt_count, mds_hdr->mds_num_osts);
++ fprintf(stderr, "Do you wish to continue? (y/n)\n");
++ if ((rc = get_response()) != 1) {
++ log_write("%s: exiting \n", progname);
++ goto out;
++ }
++ fprintf(stderr, "\n");
++
++ num_osts = lov_tgt_count;
++ } else {
++ num_osts = mds_hdr->mds_num_osts;
++ }
++ if (num_threads > num_osts)
++ num_threads = num_osts;
++
++ tinfo = calloc(num_threads, sizeof(*tinfo));
++ if (tinfo == NULL) {
++ log_write("%s: out of memory for thread info\n", progname);
++ rc = -ENOMEM;
++ goto out;
++ }
++ threads = calloc(num_threads, sizeof(pthread_t));
++ if (threads == NULL) {
++ log_write("%s: out of memory for threads\n", progname);
++ rc = -ENOMEM;
++ goto out;
++ }
++
++ all_started = 0;
++ for (i = 0; i < num_threads; i++) {
++ __u32 end_ost_idx;
++ __u32 chunk;
++
++ chunk = num_osts / num_threads;
++ if (num_osts % num_threads)
++ chunk++;
++ tinfo[i].mds_hdr = mds_hdr;
++ tinfo[i].mds_direntdb = mds_direntdb;
++ tinfo[i].mds_sizeinfodb = mds_sizeinfodb;
++ tinfo[i].status = 0;
++ tinfo[i].start_ost_idx = (chunk) * i;
++ end_ost_idx = (chunk) * (i + 1);
++ end_ost_idx = end_ost_idx > num_osts ?
++ num_osts : end_ost_idx;
++ tinfo[i].end_ost_idx = end_ost_idx;
++ rc = pthread_create(&threads[i], NULL, lfsck_start_thread,
++ &tinfo[i]);
++ if (rc) {
++ log_write("%s: error starting thread waiting for other"
++ " threads to exit\n", progname);
++ pthread_mutex_lock(&init_mutex);
++ pthread_cond_broadcast(&init_cond);
++ pthread_mutex_unlock(&init_mutex);
++ for (--i; i >= 0; i--) {
++ pthread_cancel(threads[i]);
++ }
++ rc = -ENOMEM;
++ goto out;
++ }
++ }
++ pthread_mutex_lock(&init_mutex);
++ all_started = 1;
++ pthread_cond_broadcast(&init_cond);
++ pthread_mutex_unlock(&init_mutex);
++ for (i = 0; i < num_threads; i++) {
++ rc = pthread_join(threads[i], NULL);
++ if (tinfo[i].status) {
++ log_write("%s: error running thread %u\n", progname, i);
++ rc = -EINVAL;
++ }
++ }
++
++ rc = lfsck_run_pass4(mds_direntdb);
++ if (rc != 0)
++ goto out;
++
++ rc = lfsck_run_pass5(mds_direntdb, mds_sizeinfodb);
++
++out:
++ if (threads)
++ free(threads);
++ if (tinfo)
++ free(tinfo);
++ if (mds_hdr)
++ free(mds_hdr);
++ if (mds_direntdb)
++ mds_direntdb->close(mds_direntdb, 0);
++ if (mds_hdrdb)
++ mds_hdrdb->close(mds_hdrdb, 0);
++ if (mds_sizeinfodb)
++ mds_sizeinfodb->close(mds_sizeinfodb, 0);
++
++ return(rc);
++}
++
++int create_lostandfound()
++{
++ struct stat statbuf;
++
++ snprintf(lostandfounddir, PATH_MAX - 1, "%s/lost+found", mnt_path);
++ lostandfounddir[PATH_MAX - 1] = '\0';
++
++ VERBOSE(2, "%s: creating %s\n", progname, lostandfounddir);
++ if (mkdir(lostandfounddir, 0700)) {
++ if (errno != EEXIST) {
++ fprintf(stderr, "%s: error creating %s: %s\n",
++ progname, lostandfounddir, strerror(errno));
++ return(-errno);
++ }
++
++ if (stat(lostandfounddir, &statbuf)) {
++ fprintf(stderr, "%s: error stat %s: %s\n",
++ progname, lostandfounddir, strerror(errno));
++ return(-errno);
++ }
++
++ if (!S_ISDIR(statbuf.st_mode)) {
++ fprintf(stderr, "%s: error %s is not a directory\n",
++ progname, lostandfounddir);
++ return(-EINVAL);
++ }
++ }
++
++ snprintf(dupedir, sizeof(dupedir), "%s/duplicates", lostandfounddir);
++ dupedir[PATH_MAX - 1] = '\0';
++
++ VERBOSE(2, "%s: creating %s\n", progname, dupedir);
++ if (mkdir(dupedir, 0700)) {
++ if (errno != EEXIST) {
++ fprintf(stderr, "%s: error creating %s: %s\n",
++ progname, dupedir, strerror(errno));
++ return(-errno);
++ }
++
++ if (stat(lostandfounddir, &statbuf)) {
++ fprintf(stderr, "%s: error stat %s: %s\n",
++ progname, dupedir, strerror(errno));
++ return(-errno);
++ }
++
++ if (!S_ISDIR(statbuf.st_mode)) {
++ fprintf(stderr, "%s: error %s is not a directory\n",
++ progname, dupedir);
++ return(-EINVAL);
++ }
++ }
++
++ return(0);
++}
++
++int main(int argc, char *argv[])
++{
++ uid_t myuid;
++ int i;
++
++ fprintf(stderr, "lfsck %s (%s)\n", E2FSPROGS_VERSION, E2FSPROGS_DATE);
++
++ if (parse_args(argc, argv)) {
++ usage();
++ exit(16);
++ }
++
++ myuid = getuid();
++ if (myuid != 0 && !lfsck_force) {
++ fprintf(stderr, "%s: can only be run by root user\n", progname);
++ exit(16);
++ }
++
++ log_open();
++
++ if ((lfsck_save || lfsck_delete) && create_lostandfound() != 0) {
++ log_write("%s: failed to create lost+found directory\n",
++ progname);
++ log_close(-1);
++ exit(8);
++ }
++
++ if (get_lov_config()) {
++ log_close(-1);
++ exit(8);
++ }
++
++ if (lfsck_run_checks())
++ log_close(-1);
++
++ if (mds_file)
++ free(mds_file);
++ for (i = 0; i < LOV_MAX_OSTS; i++) {
++ if (ost_files[i])
++ free(ost_files[i]);
++ }
++ if (lfsck_duplicates)
++ free(lfsck_duplicates);
++
++ log_close(0);
++ if (fix_failed) {
++ fprintf(stderr, "%s: exit with %u unfixed errors\n",
++ progname, fix_failed);
++ return 2;
++ } else {
++ printf("%s: fixed %u errors\n", progname, fixed);
++ return !!fixed;
++ }
++}
+Index: e2fsprogs/lib/ext2fs/lfsck.h
+===================================================================
+--- /dev/null
++++ e2fsprogs/lib/ext2fs/lfsck.h
+@@ -0,0 +1,322 @@
++#undef PACKAGE
++#undef VERSION
++#ifndef LFSCK_H
++#define LFSCK_H
++
++#ifdef ENABLE_LFSCK
++/* These are unfortunately needed for lustre_user.h to be usable */
++#define CLASSERT(cond) ({ switch(42) { case (cond): case 0: break; } })
++#define LASSERT(cond) do { } while (0)
++#define LASSERTF(cond, fmt, a) do { } while (0)
++
++#include "../lib/ext2fs/ext2fsP.h"
++#include <ext2fs/ext2_ext_attr.h>
++#include <lustre/liblustreapi.h>
++
++#ifdef HAVE_LIMITS_H
++#include <limits.h>
++#endif
++
++#include <db.h>
++
++#ifndef LPU64
++#if (__WORDSIZE == 32) || defined(__x86_64__)
++# define LPU64 "%llu"
++# define LPD64 "%lld"
++# define LPX64 "%#llx"
++# define LPSZ "%u"
++# define LPSSZ "%d"
++#elif (__WORDSIZE == 64)
++# define LPU64 "%lu"
++# define LPD64 "%ld"
++# define LPX64 "%#lx"
++# define LPSZ "%lu"
++# define LPSSZ "%ld"
++#endif
++#endif /* !LPU64 */
++
++/* Compatibility to allow 1.x lustre_user.h to be used with 2.x fields.
++ * There are also structures from lustre_idl.h below that are defined in
++ * terms of the 2.x field names that would have to be handled for 1.x if
++ * that lustre_idl.h was ever fixed to allow inclusion from userspace. */
++#ifndef IDENTITY_DOWNCALL_MAGIC
++#define l_object_seq l_object_gr /* for lov_ost_data_v1 */
++#define lmm_object_seq lmm_object_gr /* for lov_mds_md_v1/3 */
++#endif /* IDENTITY_DOWNCALL_MAGIC */
++
++/* Unfortunately, neither the 1.8 or 2.x lustre_idl.h file is suitable
++ * for inclusion by userspace programs because of external dependencies.
++ * Define the minimum set of replacement functions here until that is fixed. */
++#ifndef HAVE_LUSTRE_LUSTRE_IDL_H
++#define fid_seq(fid) ((fid)->f_seq)
++#define fid_oid(fid) ((fid)->f_oid)
++#define fid_ver(fid) ((fid)->f_ver)
++
++#ifndef LL_IOC_PATH2FID
++#define DFID "["LPX64":0x%x:0x%x]"
++#define PFID(fid) \
++ fid_seq(fid), \
++ fid_oid(fid), \
++ fid_ver(fid)
++#define llapi_get_connect_flags(mnt, flags) (0)
++struct lu_fid {
++ __u64 f_seq;
++ __u32 f_oid;
++ __u32 f_ver;
++};
++#endif
++
++#define OBD_CONNECT_FID 0x40000000ULL
++
++struct lustre_mdt_attrs {
++ __u32 lma_compat;
++ __u32 lma_incompat;
++ struct lu_fid lma_self_fid;
++ __u64 lma_flags;
++ __u64 lma_ioepoch;
++ __u64 lma_som_size;
++ __u64 lma_som_blocks;
++ __u64 lma_som_mountid;
++};
++
++struct ost_id {
++ __u64 oi_id;
++ __u64 oi_seq;
++};
++
++enum fid_seq {
++ FID_SEQ_IGIF = 12ULL,
++ FID_SEQ_IGIF_MAX = 0x0ffffffffULL,
++ FID_SEQ_IDIF = 0x100000000ULL,
++};
++
++static inline int fid_seq_is_igif(const __u64 seq)
++{
++ return seq >= FID_SEQ_IGIF && seq <= FID_SEQ_IGIF_MAX;
++}
++
++static inline int fid_is_igif(const struct lu_fid *fid)
++{
++ return fid_seq_is_igif(fid_seq(fid));
++}
++
++/* convert an OST objid + index into an IDIF FID SEQ number */
++static inline __u64 fid_idif_seq(__u64 id, __u32 ost_idx)
++{
++ return FID_SEQ_IDIF | (ost_idx << 16) | ((id >> 32) & 0xffff);
++}
++
++/* convert ost_id from 1.x compatible OST protocol into FID for future usage */
++static inline void ostid_idif_unpack(struct ost_id *oi, struct lu_fid *fid,
++ __u32 idx)
++{
++ fid->f_seq = fid_idif_seq(oi->oi_id, idx);
++ fid->f_oid = oi->oi_id; /* truncate to 32 bits by assignment */
++ fid->f_ver = oi->oi_id >> 48; /* in theory, not currently used */
++}
++#endif /* HAVE_LUSTRE_LUSTRE_IDL_H */
++
++#ifndef DOIF
++#define DOIF LPU64":"LPU64
++#define POIF(oi) (oi)->oi_seq, (oi)->oi_id
++#endif
++
++/* Get O/R or O/0 dir */
++#define OBJECT_DIR "O"
++#define OBJECT_DIR_V1 "R"
++#define OBJECT_DIR_V2 "0"
++#define LOG_DIR "1"
++#define PENDING_DIR "PENDING"
++#define OBJECTS "OBJECTS"
++#define CATLIST "CATALOGS"
++#define LAST_ID "LAST_ID"
++#define LAST_RCVD "last_rcvd"
++#define LOV_OBJID "lov_objid"
++
++#ifndef EXT3_XATTR_INDEX_TRUSTED /* temporary until we hit l28 kernel */
++#define EXT3_XATTR_INDEX_TRUSTED 4
++#endif
++#ifndef EXT3_XATTR_INDEX_LUSTRE
++#define EXT3_XATTR_INDEX_LUSTRE 5
++#endif
++#define XATTR_LUSTRE_MDS_LOV_EA "lov"
++#define XATTR_LUSTRE_MDT_LMA_EA "lma"
++
++/* Database names */
++#define MDS_HDR "mdshdr"
++#define MDS_DIRINFO "mds_dirinfo"
++#define MDS_SIZEINFO "mds_sizeinfo"
++#define MDS_OSTDB "mds_ostdb"
++#define OST_HDR "osthdr"
++#define OST_OSTDB "ost_db"
++
++#define MDS_MAGIC 0xDBABCD01
++#define OST_MAGIC 0xDB123402
++
++#define OBD_COMPAT_OST 0x00000002 /* this is an OST (1.6+) */
++#define OBD_COMPAT_MDT 0x00000004 /* this is an MDT (1.6+) */
++
++#define OBD_INCOMPAT_OST 0x00000002 /* this is an OST (1.8+) */
++#define OBD_INCOMPAT_MDT 0x00000004 /* this is an MDS (1.8+) */
++
++#define LOV_MAX_OSTS 2048 /* Arbitrary limit, can be increased */
++#define LOV_EA_SIZE(lum, num) (sizeof(*lum) + num * sizeof(*lum->lmm_objects))
++#define LOV_EA_MAX(lum) LOV_EA_SIZE(lum, LOV_MAX_OSTS)
++
++/*XXX*/
++#define STRTOUL strtoul
++#define STRTOUL_MAX ULONG_MAX
++
++#define HASH_SIZE 131072
++
++struct lustre_server_data {
++ __u8 lsd_uuid[40]; /* server UUID */
++ __u64 lsd_last_transno; /* last completed transaction ID */
++ __u64 lsd_compat14; /* reserved - compat with old last_rcvd */
++ __u64 lsd_mount_count; /* incarnation number */
++ __u32 lsd_feature_compat; /* compatible feature flags */
++ __u32 lsd_feature_rocompat;/* read-only compatible feature flags */
++ __u32 lsd_feature_incompat;/* incompatible feature flags */
++ __u32 lsd_server_size; /* size of server data area */
++ __u32 lsd_client_start; /* start of per-client data area */
++ __u16 lsd_client_size; /* size of per-client data area */
++ __u16 lsd_subdir_count; /* number of subdirectories for objects */
++ __u64 lsd_catalog_oid; /* recovery catalog object id */
++ __u32 lsd_catalog_ogen; /* recovery catalog inode generation */
++ __u8 lsd_peeruuid[40]; /* UUID of LOV/OSC associated with MDS */
++ __u32 lsd_ost_index; /* index number of OST in LOV */
++ __u32 lsd_mdt_index; /* index number of MDT in LMV */
++};
++
++struct lfsck_mds_hdr {
++ __u64 mds_magic;
++ __u64 mds_flags;
++ __u64 mds_max_files;
++ __u32 mds_num_osts;
++ __u32 mds_unused;
++ __u64 mds_max_ost_id[LOV_MAX_OSTS];
++ struct obd_uuid mds_uuid;
++ struct obd_uuid mds_ost_info[LOV_MAX_OSTS];
++};
++
++struct lfsck_ost_hdr {
++ __u64 ost_magic;
++ __u64 ost_flags;
++ __u64 ost_num_files;
++ __u64 ost_last_id;
++ __u32 ost_index;
++ __u32 ost_unused;
++ struct obd_uuid ost_mds_uuid;
++ struct obd_uuid ost_uuid;
++};
++
++struct lfsck_mds_dirent {
++ struct lu_fid mds_dirfid;
++ struct lu_fid mds_fid;
++};
++
++struct lfsck_mds_szinfo {
++ __u64 mds_fid;
++ __u64 mds_seq;
++ __u64 mds_size;
++ __u64 mds_calc_size;
++ __u32 mds_stripe_size;
++ __u32 mds_stripe_pattern;
++ __u16 mds_stripe_count;
++ __u16 mds_stripe_start;
++};
++
++struct lfsck_mds_objent {
++ struct lu_fid mds_fid;
++ struct ost_id mds_oi;
++ __u32 mds_ostidx;
++ __u32 mds_ostoffset;
++};
++
++struct lfsck_ost_objent {
++ struct ost_id ost_oi;
++ __u64 ost_size;
++ __u64 ost_bytes;
++};
++
++struct lfsck_ofile_ctx {
++ DB *dbp;
++ __u64 max_id;
++ int have_max_id;
++};
++
++struct lfsck_outdb_info {
++ __u32 ost_count;
++ int have_ost_count;
++ DB *mds_sizeinfo_dbp;
++ struct lfsck_ofile_ctx *ofile_ctx;
++};
++
++/* pass6.c */
++#ifdef FSCK_OK /* compiling for e2fsck or lfsck */
++extern int e2fsck_lfsck_find_ea(e2fsck_t ctx, struct ext2_inode_large *inode,
++ struct ext2_ext_attr_entry *entry, void *value,
++ struct lov_user_md_v1 **lmm,
++ struct lustre_mdt_attrs **lma);
++extern int e2fsck_lfsck_save_ea(e2fsck_t ctx, ext2_ino_t ino, __u32 generation,
++ struct lov_user_md_v1 *lmm,
++ struct lustre_mdt_attrs *lma);
++extern int e2fsck_lfsck_flush_ea(e2fsck_t ctx);
++extern int e2fsck_lfsck_cleanupdb(e2fsck_t ctx);
++extern int e2fsck_lfsck_remove_pending(e2fsck_t ctx, char *block_buf);
++
++/* lfsck_common.c */
++extern char *my_dirname(char *path);
++extern const char *my_basename(const char *path);
++extern int lfsck_create_dbenv(const char *progname);
++extern int lfsck_opendb(const char *fname, const char *dbname, DB **dbpp,
++ int allow_dup, int keydata_size, int num_files);
++extern void cputole_mds_hdr(struct lfsck_mds_hdr *mds_hdr);
++extern void letocpu_mds_hdr(struct lfsck_mds_hdr *mds_hdr);
++extern void cputole_ost_hdr(struct lfsck_ost_hdr *ost_hdr);
++extern void letocpu_ost_hdr(struct lfsck_ost_hdr *ost_hdr);
++extern void cputole_fid(struct lu_fid *fid);
++extern void letocpu_fid(struct lu_fid *fid);
++extern void cputole_mds_dirent(struct lfsck_mds_dirent *mds_dirent);
++extern void letocpu_mds_dirent(struct lfsck_mds_dirent *mds_dirent);
++extern void cputole_mds_szinfo(struct lfsck_mds_szinfo *mds_szinfo);
++extern void letocpu_mds_szinfo(struct lfsck_mds_szinfo *mds_szinfo);
++extern void cputole_mds_objent(struct lfsck_mds_objent *mds_objent);
++extern void letocpu_mds_objent(struct lfsck_mds_objent *mds_objent);
++extern void cputole_ost_objent(struct lfsck_ost_objent *ost_objent);
++extern void letocpu_ost_objent(struct lfsck_ost_objent *ost_objent);
++extern void letocpu_lov_user_md(struct lov_user_md *lmm);
++
++int lfsck_get_fid(ext2_filsys fs, ino_t ino, struct lu_fid *fid);
++int lfsck_is_dirfid_root(const struct lu_fid *dirfid);
++int lfsck_fidcmp(const struct lu_fid *fid1, const struct lu_fid *fid2);
++#endif /* FSCK_ON */
++
++#define MDS_START_DIRENT_TABLE sizeof(struct lfsck_mds_hdr)
++
++#define MDS_START_SZINFO_TABLE(numfiles) \
++sizeof(struct lfsck_mds_hdr) + (sizeof(struct lfsck_mds_dirent) * numfiles)
++
++#define MDS_START_OST_TABLE_OFFSET(idx, numfiles) \
++sizeof(struct lfsck_mds_hdr) + (sizeof(struct lfsck_mds_dirent) * numfiles) +\
++(sizeof(struct lfsck_mds_szinfo) * numfiles) +\
++(sizeof(struct lfsck_mds_objent_hdr) + \
++((sizeof(struct lfsck_mds_objent) * numfiles)) * (idx)) + \
++sizeof(struct lfsck_mds_objent_hdr)
++
++#define MDS_START_OST_HDR_OFFSET(idx, numfiles) \
++sizeof(struct lfsck_mds_hdr) + (sizeof(struct lfsck_mds_dirent) * numfiles) +\
++(sizeof(struct lfsck_mds_szinfo) * numfiles) +\
++(sizeof(struct lfsck_mds_objent_hdr) + \
++((sizeof(struct lfsck_mds_objent) * numfiles)) * (idx))
++
++#define OST_START_OFFSET sizeof(struct lfsck_ost_hdr)
++
++#else /* !ENABLE_LFSCK */
++#define e2fsck_lfsck_found_ea(ctx, ino, inode, entry, value) (0)
++#define e2fsck_lfsck_flush_ea(ctx) (0)
++#define e2fsck_lfsck_cleanupdb(ctx) (0)
++#define e2fsck_lfsck_remove_pending(ctx, block_buf) (0)
++#endif /* ENABLE_LFSCK */
++
++#endif /* LFSCK_H */
+Index: e2fsprogs/e2fsck/lfsck_common.c
+===================================================================
+--- /dev/null
++++ e2fsprogs/e2fsck/lfsck_common.c
+@@ -0,0 +1,434 @@
++/*
++ * Copyright (c) 2004 Hewlett-Packard Co.
++ */
++/*****************************************************************************
++ * e2fsck extentions: code for gathering data from the OST & MDT filesystems
++ * when e2fsck is run against them. The best description and knowledge of
++ * the layout and information gathered is in lfsck.h where the structures
++ * defining each entry in the tables are declared. Basically the ost file
++ * contains one table with each entry holding the object id and size.
++ * In addition there is header information at the start of the file.
++ * The MDT file contains multiple tables, one per OST. Each MDT/OST table
++ * contains an entry describing the MDT FID and the OST object associated
++ * with this FID on an OST. In addition the MDT also contains a table
++ * with the mds_fid and the FID of the containg directory. Header information
++ * for each table is also included.
++ * lfsck is run afterwards where the data gathered and stored here is cross
++ * checked to ensure consistency and correctness
++ *
++ *****************************************************************************/
++#include <string.h>
++#include <time.h>
++#include <errno.h>
++#include <limits.h>
++#include <stdlib.h>
++#include <unistd.h>
++
++#include "ext2fs/lfsck.h"
++
++#ifdef ENABLE_LFSCK
++char *my_dirname(char *path)
++{
++
++ if (path != NULL) {
++ char *tmp = strrchr(path, '/');
++ if (tmp != NULL) {
++ *tmp = '\0';
++ return path;
++ }
++ }
++
++ return ".";
++}
++
++const char *my_basename(const char *path)
++{
++ if (path != NULL) {
++ char *tmp = strrchr(path, '/');
++ if (tmp != NULL)
++ return tmp + 1;
++ }
++
++ return path;
++}
++
++DB_ENV *dbenv;
++
++u_int32_t lfsck_hash_raw_fn(const void *p)
++{
++ u_int32_t *c = (u_int32_t *)p;
++ u_int32_t rc = 0;
++
++ rc = (*c >> 7) & (HASH_SIZE - 1) ;
++
++ return rc;
++}
++
++
++u_int32_t lfsck_hash_fn(DB *dbp, const void *p, u_int32_t len)
++{
++ u_int32_t rc = 0 ;
++
++ if (len < sizeof(u_int32_t)) {
++ printf("Hash size error");
++ exit(128);
++ }
++ rc = lfsck_hash_raw_fn(p);
++
++ return (rc);
++}
++
++int lfsck_create_dbenv(const char *progname)
++{
++ int rc;
++ size_t pagesize;
++ long pages;
++ unsigned long cachesize;
++
++ pagesize = getpagesize();
++ pages = sysconf(_SC_AVPHYS_PAGES);
++
++ cachesize = ((pagesize * 3) / 4) * pages;
++ if (cachesize > 500UL * 1024 * 1024) {
++ cachesize = 500UL * 1024 * 1024;
++ } else if (cachesize < 10 * 1024 * 1024) {
++ cachesize = 10 * 1024 * 1024;
++ }
++
++ if ((rc = db_env_create(&dbenv, 0)) != 0) {
++ fprintf(stderr, "%s: error creating dbenv: %s\n",
++ progname, db_strerror(rc));
++ return (-EINVAL);
++ }
++ if ((rc = dbenv->set_cachesize(dbenv, 0, cachesize, 0)) != 0) {
++ dbenv->err(dbenv, rc, "set_cachesize");
++ dbenv->close(dbenv, 0);
++ return (-EINVAL);
++ }
++ if ((rc = dbenv->set_data_dir(dbenv, "/")) != 0) {
++ dbenv->err(dbenv, rc, "set_data_dir");
++ dbenv->close(dbenv, 0);
++ return (-EINVAL);
++ }
++
++ /* Open the environment with full transactional support. */
++ if ((rc = dbenv->open(dbenv, "/tmp", DB_CREATE | DB_PRIVATE |
++ DB_INIT_MPOOL|DB_INIT_LOCK|DB_THREAD, 0)) != 0) {
++ dbenv->err(dbenv, rc, "environment open: ");
++ dbenv->close(dbenv, 0);
++ return (-EINVAL);
++ }
++ return (0);
++}
++
++int lfsck_opendb(const char *fname, const char *dbname, DB **dbpp,
++ int allow_dup, int keydata_size, int num_files)
++{
++ static int dbenv_set = 0;
++ DB *dbp;
++ int rc;
++ int pagesize = 512;
++ int h_ffactor = 0;
++
++ if (!dbenv_set) {
++ if (lfsck_create_dbenv(dbname))
++ return(-EIO);
++ dbenv_set = 1;
++ }
++
++ rc = db_create(&dbp, dbenv, 0);
++ if (rc) {
++ fprintf(stderr, "%s: error db_create: %s\n",
++ dbname, db_strerror(rc));
++ return(EIO);
++ }
++
++ if ((rc = dbp->set_pagesize(dbp, pagesize)) != 0) {
++ dbp->err(dbp, rc, "set_pagesize");
++ dbp->close(dbp, 0);
++ return(EIO);
++ }
++
++ if ((rc = dbp->set_lorder(dbp, 1234)) != 0 ) {
++ dbp->err(dbp, rc, "set_lorder");
++ dbp->close(dbp, 0);
++ return (EIO);
++ }
++
++ if (keydata_size && num_files) {
++ h_ffactor = (pagesize - 32) / (keydata_size + 8);
++ if ((rc = dbp->set_h_ffactor(dbp, h_ffactor)) != 0) {
++ dbp->err(dbp, rc, "set_h_ffactor");
++ }
++ if ((rc = dbp->set_h_nelem(dbp, num_files)) != 0 ) {
++ dbp->err(dbp, rc, "set_h_nelem");
++ }
++ }
++
++ if ((rc = dbp->set_h_hash(dbp, lfsck_hash_fn)) != 0 ) {
++ dbp->err(dbp, rc, "set_h_hash");
++ dbp->close(dbp, 0);
++ return (EIO);
++ }
++
++ if (allow_dup) {
++ if ((rc = dbp->set_flags(dbp, DB_DUPSORT)) != 0) {
++ fprintf(stderr, "Failure to allow duplicates\n");
++ dbp->close(dbp, 0);
++ return (EIO);
++ }
++ }
++
++#if (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1) || (DB_VERSION_MAJOR > 4)
++ if ((rc = dbp->open(dbp, NULL, fname, dbname, DB_HASH,
++ DB_CREATE | DB_INIT_LOCK | DB_THREAD, 0664)) != 0)
++#else
++ if ((rc = dbp->open(dbp, fname, dbname, DB_HASH,
++ DB_CREATE | DB_INIT_LOCK | DB_THREAD, 0664)) != 0)
++#endif
++ {
++ dbp->err(dbp, rc, "%s:%s\n", fname, dbname);
++ dbp->close(dbp, 0);
++ return (EIO);
++ }
++ *dbpp = dbp;
++ return (0);
++}
++
++void cputole_mds_hdr(struct lfsck_mds_hdr *mds_hdr)
++{
++ int i, num_osts = mds_hdr->mds_num_osts;
++ mds_hdr->mds_magic = ext2fs_cpu_to_le64(mds_hdr->mds_magic);
++ mds_hdr->mds_flags = ext2fs_cpu_to_le64(mds_hdr->mds_flags);
++ mds_hdr->mds_max_files = ext2fs_cpu_to_le64(mds_hdr->mds_max_files);
++ mds_hdr->mds_num_osts = ext2fs_cpu_to_le64(mds_hdr->mds_num_osts);
++ for (i = 0; i < num_osts; i++) {
++ mds_hdr->mds_max_ost_id[i] =
++ ext2fs_cpu_to_le64(mds_hdr->mds_max_ost_id[i]);
++ }
++
++}
++
++void letocpu_mds_hdr(struct lfsck_mds_hdr *mds_hdr)
++{
++ int i;
++ mds_hdr->mds_magic = ext2fs_le64_to_cpu(mds_hdr->mds_magic);
++ mds_hdr->mds_flags = ext2fs_le64_to_cpu(mds_hdr->mds_flags);
++ mds_hdr->mds_max_files = ext2fs_le64_to_cpu(mds_hdr->mds_max_files);
++ mds_hdr->mds_num_osts = ext2fs_le64_to_cpu(mds_hdr->mds_num_osts);
++ for (i = 0; i < mds_hdr->mds_num_osts; i ++) {
++ mds_hdr->mds_max_ost_id[i] =
++ ext2fs_le64_to_cpu(mds_hdr->mds_max_ost_id[i]);
++ }
++}
++
++void cputole_ost_hdr(struct lfsck_ost_hdr *ost_hdr)
++{
++ ost_hdr->ost_magic = ext2fs_cpu_to_le64(ost_hdr->ost_magic);
++ ost_hdr->ost_flags = ext2fs_cpu_to_le64(ost_hdr->ost_flags);
++ ost_hdr->ost_num_files = ext2fs_cpu_to_le64(ost_hdr->ost_num_files);
++ ost_hdr->ost_last_id = ext2fs_cpu_to_le64(ost_hdr->ost_last_id);
++}
++
++void letocpu_ost_hdr(struct lfsck_ost_hdr *ost_hdr)
++{
++ ost_hdr->ost_magic = ext2fs_le64_to_cpu(ost_hdr->ost_magic);
++ ost_hdr->ost_flags = ext2fs_le64_to_cpu(ost_hdr->ost_flags);
++ ost_hdr->ost_num_files = ext2fs_le64_to_cpu(ost_hdr->ost_num_files);
++ ost_hdr->ost_last_id = ext2fs_le64_to_cpu(ost_hdr->ost_last_id);
++}
++
++void cputole_fid(struct lu_fid *fid)
++{
++ fid->f_seq = ext2fs_cpu_to_le64(fid->f_seq);
++ fid->f_oid = ext2fs_cpu_to_le32(fid->f_oid);
++ fid->f_ver = ext2fs_cpu_to_le32(fid->f_ver);
++}
++
++void letocpu_fid(struct lu_fid *fid)
++{
++ fid->f_seq = ext2fs_le64_to_cpu(fid->f_seq);
++ fid->f_oid = ext2fs_le32_to_cpu(fid->f_oid);
++ fid->f_ver = ext2fs_le32_to_cpu(fid->f_ver);
++}
++
++void cputole_oi(struct ost_id *oi)
++{
++ oi->oi_id = ext2fs_cpu_to_le64(oi->oi_id);
++ oi->oi_seq = ext2fs_cpu_to_le64(oi->oi_seq);
++}
++
++void letocpu_oi(struct ost_id *oi)
++{
++ oi->oi_id = ext2fs_le64_to_cpu(oi->oi_id);
++ oi->oi_seq = ext2fs_le64_to_cpu(oi->oi_seq);
++}
++
++void cputole_mds_dirent(struct lfsck_mds_dirent *mds_dirent)
++{
++ cputole_fid(&mds_dirent->mds_dirfid);
++ cputole_fid(&mds_dirent->mds_fid);
++}
++
++void letocpu_mds_dirent(struct lfsck_mds_dirent *mds_dirent)
++{
++ letocpu_fid(&mds_dirent->mds_dirfid);
++ letocpu_fid(&mds_dirent->mds_fid);
++}
++
++void cputole_mds_szinfo(struct lfsck_mds_szinfo *mds_szinfo)
++{
++ mds_szinfo->mds_fid = ext2fs_cpu_to_le64(mds_szinfo->mds_fid);
++ mds_szinfo->mds_seq = ext2fs_cpu_to_le64(mds_szinfo->mds_seq);
++ mds_szinfo->mds_size = ext2fs_cpu_to_le64(mds_szinfo->mds_size);
++ mds_szinfo->mds_calc_size =
++ ext2fs_cpu_to_le64(mds_szinfo->mds_calc_size);
++ mds_szinfo->mds_stripe_size =
++ ext2fs_cpu_to_le32(mds_szinfo->mds_stripe_size);
++ mds_szinfo->mds_stripe_pattern =
++ ext2fs_cpu_to_le32(mds_szinfo->mds_stripe_pattern);
++ mds_szinfo->mds_stripe_count =
++ ext2fs_cpu_to_le16(mds_szinfo->mds_stripe_count);
++ mds_szinfo->mds_stripe_start =
++ ext2fs_cpu_to_le16(mds_szinfo->mds_stripe_start);
++}
++
++void letocpu_mds_szinfo(struct lfsck_mds_szinfo *mds_szinfo)
++{
++ mds_szinfo->mds_fid = ext2fs_le64_to_cpu(mds_szinfo->mds_fid);
++ mds_szinfo->mds_seq = ext2fs_le64_to_cpu(mds_szinfo->mds_seq);
++ mds_szinfo->mds_size = ext2fs_le64_to_cpu(mds_szinfo->mds_size);
++ mds_szinfo->mds_calc_size =
++ ext2fs_le64_to_cpu(mds_szinfo->mds_calc_size);
++ mds_szinfo->mds_stripe_size =
++ ext2fs_le32_to_cpu(mds_szinfo->mds_stripe_size);
++ mds_szinfo->mds_stripe_pattern =
++ ext2fs_le32_to_cpu(mds_szinfo->mds_stripe_pattern);
++ mds_szinfo->mds_stripe_count =
++ ext2fs_le16_to_cpu(mds_szinfo->mds_stripe_count);
++ mds_szinfo->mds_stripe_start =
++ ext2fs_le16_to_cpu(mds_szinfo->mds_stripe_start);
++}
++
++void cputole_mds_objent(struct lfsck_mds_objent *mds_objent)
++{
++ cputole_fid(&mds_objent->mds_fid);
++ cputole_oi(&mds_objent->mds_oi);
++ mds_objent->mds_ostidx = ext2fs_cpu_to_le32(mds_objent->mds_ostidx);
++ mds_objent->mds_ostoffset=ext2fs_cpu_to_le32(mds_objent->mds_ostoffset);
++}
++
++void letocpu_mds_objent(struct lfsck_mds_objent *mds_objent)
++{
++ letocpu_fid(&mds_objent->mds_fid);
++ letocpu_oi(&mds_objent->mds_oi);
++ mds_objent->mds_ostidx = ext2fs_le32_to_cpu(mds_objent->mds_ostidx);
++ mds_objent->mds_ostoffset=ext2fs_le32_to_cpu(mds_objent->mds_ostoffset);
++}
++
++void cputole_ost_objent(struct lfsck_ost_objent *ost_objent)
++{
++ cputole_oi(&ost_objent->ost_oi);
++ ost_objent->ost_size = ext2fs_cpu_to_le64(ost_objent->ost_size);
++ ost_objent->ost_bytes = ext2fs_cpu_to_le64(ost_objent->ost_bytes);
++}
++
++void letocpu_ost_objent(struct lfsck_ost_objent *ost_objent)
++{
++ letocpu_oi(&ost_objent->ost_oi);
++ ost_objent->ost_oi.oi_id = ext2fs_le64_to_cpu(ost_objent->ost_oi.oi_id);
++ ost_objent->ost_oi.oi_seq=ext2fs_le64_to_cpu(ost_objent->ost_oi.oi_seq);
++ ost_objent->ost_size = ext2fs_le64_to_cpu(ost_objent->ost_size);
++ ost_objent->ost_bytes = ext2fs_le64_to_cpu(ost_objent->ost_bytes);
++}
++
++void letocpu_lov_user_md(struct lov_user_md *lmm)
++{
++ struct lov_user_ost_data_v1 *loi;
++ int i;
++
++ lmm->lmm_magic = ext2fs_le32_to_cpu(lmm->lmm_magic);
++ lmm->lmm_pattern = ext2fs_le32_to_cpu(lmm->lmm_pattern);
++ letocpu_oi((struct ost_id *)&lmm->lmm_object_id);
++ lmm->lmm_stripe_size = ext2fs_le32_to_cpu(lmm->lmm_stripe_size);
++ lmm->lmm_stripe_count = ext2fs_le16_to_cpu(lmm->lmm_stripe_count);
++ /* No swabbing needed for the lov_user_md_v3 lmm_pool_name */
++
++ if (lmm->lmm_magic == LOV_USER_MAGIC_V3)
++ loi = ((struct lov_user_md_v3 *)lmm)->lmm_objects;
++ else /* if (lmm->lmm_magic == LOV_USER_MAGIC_V1) */
++ loi = lmm->lmm_objects;
++ /* If there is a bad magic, this will be found immediately in the
++ * call to lfsck_check_lov_ea() following this function. */
++
++ for (i = 0; i < lmm->lmm_stripe_count; i++, loi++) {
++ letocpu_oi((struct ost_id *)&loi->l_object_id);
++ loi->l_ost_gen = ext2fs_le32_to_cpu(loi->l_ost_gen);
++ loi->l_ost_idx = ext2fs_le32_to_cpu(loi->l_ost_idx);
++ }
++}
++
++int lfsck_get_fid(ext2_filsys fs, ino_t ino, struct lu_fid *fid)
++{
++ struct ext2_inode *inode;
++ errcode_t rc;
++ int size;
++ struct lustre_mdt_attrs lma;
++
++ rc = ext2fs_get_mem(EXT2_INODE_SIZE(fs->super), &inode);
++ if (rc) {
++ com_err("ext2fs_get_mem", rc, "allocating %d bytes\n",
++ EXT2_INODE_SIZE(fs->super));
++ return rc;
++ }
++ rc = ext2fs_read_inode_full(fs, ino, inode, EXT2_INODE_SIZE(fs->super));
++ if (rc) {
++ com_err("ext2fs_read_inode_full", rc,
++ "reading inode %lu\n", ino);
++ ext2fs_free_mem(&inode);
++ return rc;
++ }
++ rc = ext2fs_attr_get(fs, inode, EXT2_ATTR_INDEX_TRUSTED, "lma",
++ (char *)&lma, sizeof(lma), &size);
++ if (rc) {
++ if (rc != EXT2_ET_EA_NAME_NOT_FOUND &&
++ rc != EXT2_ET_EA_BAD_MAGIC) {
++ ext2fs_free_mem(&inode);
++ return rc;
++ }
++ /* compose igif */
++ fid->f_seq = ino;
++ fid->f_oid = inode->i_generation;
++ fid->f_ver = 0;
++ } else {
++ *fid = lma.lma_self_fid;
++ }
++ ext2fs_free_mem(&inode);
++ return 0;
++}
++
++int lfsck_is_dirfid_root(const struct lu_fid *dirfid)
++{
++ if (dirfid->f_seq == EXT2_ROOT_INO &&
++ dirfid->f_oid == 0 && dirfid->f_ver == 0)
++ return 1;
++ return 0;
++}
++
++int lfsck_fidcmp(const struct lu_fid *fid1, const struct lu_fid *fid2)
++{
++ if (fid_is_igif(fid1) && fid_is_igif(fid2)) {
++ /* do not compare f_ver for comparing igif-s */
++ if (fid1->f_seq == fid2->f_seq && fid1->f_oid == fid2->f_oid)
++ return 0;
++ return 1;
++ }
++ if (!fid_is_igif(fid1) && !fid_is_igif(fid2)) {
++ if (fid1->f_seq == fid2->f_seq && fid1->f_oid == fid2->f_oid &&
++ fid1->f_ver == fid2->f_ver)
++ return 0;
++ return 1;
++ }
++ return 1;
++}
++#endif
+Index: e2fsprogs/e2fsck/pass6.c
+===================================================================
+--- /dev/null
++++ e2fsprogs/e2fsck/pass6.c
+@@ -0,0 +1,1511 @@
++/* -*- mode: c; c-basic-offset: 8; -*-
++ * vim:shiftwidth=8:tabstop=8:
++ *
++ * GPL HEADER START
++ *
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 only,
++ * as published by the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * General Public License version 2 for more details (a copy is included
++ * in the LICENSE file that accompanied this code).
++ *
++ *
++ * Copyright (c) 2004 Hewlett-Packard Co.
++ */
++/*****************************************************************************
++ * e2fsck extentions: code for gathering data from the ost & mds filesystems
++ * when e2fsck is run against them. The best description and knowledge of the
++ * layout and information gathered is in lfsck.h where the structures
++ * defining each entry in the tables are declared. Basically the ost file
++ * contains one table with each entry holding the object id and size.
++ * In addition there is header information at the start of the file.
++ * The mds file contains multiple tables one per ost. Each mds/ost table
++ * contains an entry describing the mds fid and the ost object associated
++ * with this fid on an ost. In addition the mds also contains a table
++ * with the mds_fid and the fid of the containg directory. Header information
++ * for each table is also included.
++ * lfsck is run afterwards where the data gathered and stored here is cross
++ * checked to ensure consistency and correctness
++ *
++ *****************************************************************************/
++#include <string.h>
++#include <time.h>
++#include <errno.h>
++#include <limits.h>
++#include <stdlib.h>
++#include "ext2fs/ext2_fs.h"
++#include "ext2fs/ext2fs.h"
++
++#ifdef ENABLE_LFSCK
++#include "e2fsck.h"
++#include "ext2fs/lfsck.h"
++#include "problem.h"
++//#define LOG_REMOVAL
++
++#define VERBOSE(ctx, fmt, args...) \
++do { if (ctx->options & E2F_OPT_VERBOSE) printf(fmt, ##args); } while (0)
++
++#define DEBUG(ctx, fmt, args...) \
++do { if (ctx->options & E2F_OPT_DEBUG) printf(fmt, ##args); } while (0)
++
++struct lfsck_mds_ctx {
++ e2fsck_t ctx;
++ DB *outdb;
++ ext2_ino_t dot;
++ ext2_ino_t dotdot;
++ struct lu_fid dotfid;
++ int numfiles;
++};
++
++struct lfsck_ost_ctx {
++ e2fsck_t ctx;
++ DB *outdb;
++ ext2_ino_t dirinode;
++ int numfiles;
++ int status;
++ __u64 max_objid;
++};
++
++int e2fsck_lfsck_cleanupdb(e2fsck_t ctx)
++{
++ int i;
++ int rc = 0;
++ DB *dbp;
++
++ if (ctx->lfsck_oinfo == NULL) {
++ return (0);
++ }
++
++ for (i = 0; i < ctx->lfsck_oinfo->ost_count; i++) {
++ if (ctx->lfsck_oinfo->ofile_ctx[i].dbp != NULL) {
++ dbp = ctx->lfsck_oinfo->ofile_ctx[i].dbp;
++ rc += dbp->close(dbp, 0);
++ ctx->lfsck_oinfo->ofile_ctx[i].dbp = NULL;
++ }
++ }
++ if (ctx->lfsck_oinfo->mds_sizeinfo_dbp != NULL) {
++ dbp = ctx->lfsck_oinfo->mds_sizeinfo_dbp;
++ rc += dbp->close(dbp, 0);
++ ctx->lfsck_oinfo->mds_sizeinfo_dbp = NULL;
++ }
++ if (ctx->lfsck_oinfo->ofile_ctx)
++ ext2fs_free_mem(ctx->lfsck_oinfo->ofile_ctx);
++ ext2fs_free_mem(&ctx->lfsck_oinfo);
++
++ return(rc);
++}
++
++/* What is the last object id for the OST on the MDS */
++int e2fsck_get_lov_objids(e2fsck_t ctx, struct lfsck_outdb_info *outdb)
++{
++ ext2_filsys fs = ctx->fs;
++ ext2_ino_t inode;
++ ext2_file_t e2_file;
++ __u64 *lov_objids = NULL;
++ unsigned int got;
++ char *block_buf;
++ int i, rc = 0;
++
++ block_buf = e2fsck_allocate_memory(ctx, fs->blocksize * 3,
++ "block iterate buffer");
++
++ rc = ext2fs_lookup(fs, EXT2_ROOT_INO, LOV_OBJID,
++ strlen(LOV_OBJID), block_buf, &inode);
++ if (rc)
++ goto out;
++
++ lov_objids = e2fsck_allocate_memory(ctx,
++ sizeof(*lov_objids) * LOV_MAX_OSTS,
++ "lov_objids array");
++ if (lov_objids == NULL) {
++ rc = ENOMEM;
++ goto out;
++ }
++
++ rc = ext2fs_file_open(fs, inode, 0, &e2_file);
++ if (rc)
++ goto out;
++
++ rc = ext2fs_file_read(e2_file, lov_objids,
++ sizeof(*lov_objids) * LOV_MAX_OSTS, &got);
++ rc = ext2fs_file_close(e2_file);
++
++ outdb->ost_count = got / sizeof(*lov_objids);
++ for (i = 0; i < outdb->ost_count; i++) {
++ VERBOSE(ctx,"MDS: ost_idx %d max_id "LPU64"\n",i,lov_objids[i]);
++ outdb->ofile_ctx[i].max_id = lov_objids[i];
++ outdb->ofile_ctx[i].have_max_id = 1;
++ outdb->have_ost_count = 1;
++ }
++
++out:
++ ext2fs_free_mem(&block_buf);
++ if (lov_objids)
++ ext2fs_free_mem(&lov_objids);
++ if (rc)
++ VERBOSE(ctx, "MDS: unable to read lov_objids: rc %d\n", rc);
++ else
++ VERBOSE(ctx, "MDS: got %d bytes = %d entries in lov_objids\n",
++ got, outdb->ost_count);
++ return (rc);
++}
++
++static int lfsck_write_mds_hdrinfo(e2fsck_t ctx, struct lfsck_outdb_info *outdb)
++{
++ struct lfsck_mds_hdr mds_hdr;
++ ext2_filsys fs = ctx->fs;
++ char *mds_hdrname;
++ DB *mds_hdrdb = NULL;
++ DBT key, data;
++ int rc = 0;
++ int i;
++
++ mds_hdrname = e2fsck_allocate_memory(ctx, PATH_MAX,
++ "mds_hdr filename");
++ sprintf(mds_hdrname, "%s.mdshdr",ctx->lustre_mdsdb);
++
++ if (unlink(mds_hdrname)) {
++ if (errno != ENOENT) {
++ fprintf(stderr, "Failure to remove old db file %s\n",
++ mds_hdrname);
++ ctx->flags |= E2F_FLAG_ABORT;
++ return -EINVAL;
++ }
++ }
++
++ rc = lfsck_opendb(mds_hdrname, MDS_HDR, &mds_hdrdb, 0, 0, 0);
++ if (rc != 0) {
++ fprintf(stderr, "failure to open database for mdsdhr "
++ "info%s: %s\n", MDS_HDR, db_strerror(rc));
++ ctx->flags |= E2F_FLAG_ABORT;
++ ext2fs_free_mem(&mds_hdrname);
++ return(rc);
++ }
++
++ /* read in e2fsck_lfsck_save_ea() already if we opened read/write */
++ if (ctx->lfsck_oinfo->ost_count == 0)
++ e2fsck_get_lov_objids(ctx, ctx->lfsck_oinfo);
++
++ memset(&mds_hdr, 0, sizeof(mds_hdr));
++ mds_hdr.mds_magic = MDS_MAGIC;
++ mds_hdr.mds_flags = ctx->options & E2F_OPT_READONLY;
++ mds_hdr.mds_max_files = fs->super->s_inodes_count -
++ fs->super->s_free_inodes_count;
++ VERBOSE(ctx, "MDS: max_files = "LPU64"\n", mds_hdr.mds_max_files);
++ mds_hdr.mds_num_osts = ctx->lfsck_oinfo->ost_count;
++ VERBOSE(ctx, "MDS: num_osts = %u\n", mds_hdr.mds_num_osts);
++ for (i = 0; i < mds_hdr.mds_num_osts; i++) {
++ mds_hdr.mds_max_ost_id[i] =
++ ctx->lfsck_oinfo->ofile_ctx[i].max_id;
++ }
++
++ memset(&key, 0, sizeof(key));
++ memset(&data, 0, sizeof(data));
++ key.data = &mds_hdr.mds_magic;
++ key.size = sizeof(mds_hdr.mds_magic);
++ cputole_mds_hdr(&mds_hdr);
++ data.data = &mds_hdr;
++ data.size = sizeof(mds_hdr);
++ rc = mds_hdrdb->put(mds_hdrdb, NULL, &key, &data, 0);
++ if (rc != 0) {
++ fprintf(stderr, "error: db put %s: %s\n", MDS_HDR,
++ db_strerror(rc));
++ ctx->flags |= E2F_FLAG_ABORT;
++ goto out;
++ }
++
++out:
++ mds_hdrdb->close(mds_hdrdb, 0);
++ ext2fs_free_mem(&mds_hdrname);
++ if (rc == 0) {
++ printf("mds info db file written \n");
++ fflush(stdout);
++
++ }
++ return (rc);
++}
++
++int e2fsck_lfsck_save_ea(e2fsck_t ctx, ext2_ino_t ino, __u32 generation,
++ struct lov_user_md *lmm, struct lustre_mdt_attrs *lma)
++{
++ ext2_filsys fs = ctx->fs;
++#ifdef LFSCK_CHECK_SIZE
++ struct lfsck_mds_szinfo szinfo;
++#endif /* LFSCK_CHECK_SIZE */
++ struct lov_user_ost_data_v1 *loi;
++ int rc, i;
++ DBT key, data;
++ DB *dbp;
++ __u32 numfiles = fs->super->s_inodes_count -
++ fs->super->s_free_inodes_count;
++
++ if (!ctx->lfsck_oinfo) {
++ /* remove old db file */
++ if (unlink(ctx->lustre_mdsdb)) {
++ rc = errno;
++ if (rc != ENOENT) {
++ fprintf(stderr,"Error removing old db %s: %s\n",
++ ctx->lustre_mdsdb, strerror(rc));
++ ctx->flags |= E2F_FLAG_ABORT;
++ return rc;
++ }
++ }
++
++ rc = ext2fs_get_mem(sizeof(struct lfsck_outdb_info),
++ &ctx->lfsck_oinfo);
++ if (rc) {
++ ctx->lfsck_oinfo = NULL;
++ ctx->flags |= E2F_FLAG_ABORT;
++ return rc;
++ }
++ memset(ctx->lfsck_oinfo, 0, sizeof(struct lfsck_outdb_info));
++ rc = ext2fs_get_mem(sizeof(struct lfsck_ofile_ctx)*LOV_MAX_OSTS,
++ &ctx->lfsck_oinfo->ofile_ctx);
++ if (rc) {
++ ext2fs_free_mem(&ctx->lfsck_oinfo);
++ ctx->flags |= E2F_FLAG_ABORT;
++ return rc;
++ }
++ memset(ctx->lfsck_oinfo->ofile_ctx, 0,
++ sizeof(struct lfsck_ofile_ctx) * LOV_MAX_OSTS);
++#ifdef LFSCK_CHECK_SIZE
++ if (lfsck_opendb(ctx->lustre_mdsdb, MDS_SIZEINFO,
++ &ctx->lfsck_oinfo->mds_sizeinfo_dbp, 0,
++ sizeof(szinfo.mds_fid) + sizeof(szinfo),
++ numfiles)) {
++ fprintf(stderr, "Failed to open db file %s\n",
++ MDS_SIZEINFO);
++ ctx->flags |= E2F_FLAG_ABORT;
++ return (EIO);
++ }
++#endif /* LFSCK_CHECK_SIZE */
++
++ if (ctx->options & E2F_OPT_READONLY) {
++ e2fsck_get_lov_objids(ctx, ctx->lfsck_oinfo);
++ lfsck_write_mds_hdrinfo(ctx, ctx->lfsck_oinfo);
++ }
++ }
++ if (lmm->lmm_magic == LOV_USER_MAGIC_V3)
++ loi = ((struct lov_user_md_v3 *)lmm)->lmm_objects;
++ else /* if (lmm->lmm_magic == LOV_USER_MAGIC_V1) */
++ loi = lmm->lmm_objects;
++
++#ifdef LFSCK_CHECK_SIZE
++ /* XXX: We don't save the layout type here. This doesn't matter for
++ * now, we don't really need the pool information for lfsck, but
++ * in the future we may need it for RAID-1 and other layouts. */
++ memset(&szinfo, 0, sizeof(szinfo));
++ szinfo.mds_fid = ino;
++ szinfo.mds_seq = lmm->lmm_object_seq;
++ szinfo.mds_stripe_size = lmm->lmm_stripe_size;
++ szinfo.mds_stripe_start = loi->l_ost_idx;
++ szinfo.mds_calc_size = 0;
++ szinfo.mds_stripe_pattern = lmm->lmm_pattern;
++ memset(&key, 0, sizeof(key));
++ memset(&data, 0, sizeof(data));
++ key.data = &szinfo.mds_fid;
++ key.size = sizeof(szinfo.mds_fid);
++ cputole_mds_szinfo(&szinfo);
++ data.data = &szinfo;
++ data.size = sizeof(szinfo);
++ dbp = ctx->lfsck_oinfo->mds_sizeinfo_dbp;
++ if ((rc = dbp->put(dbp, NULL, &key, &data, 0)) != 0) {
++ dbp->err(ctx->lfsck_oinfo->mds_sizeinfo_dbp, rc,
++ "db->put failed\n");
++ e2fsck_lfsck_cleanupdb(ctx);
++ ctx->flags |= E2F_FLAG_ABORT;
++ return (EIO);
++ }
++#endif /* LFSCK_CHECK_SIZE */
++ for (i = 0; i < lmm->lmm_stripe_count; i++, loi++) {
++ int ost_idx = loi->l_ost_idx;
++ struct lfsck_mds_objent mds_ent;
++ struct lfsck_ofile_ctx *ofile_ctx =
++ &ctx->lfsck_oinfo->ofile_ctx[ost_idx];
++
++ if (ost_idx >= LOV_MAX_OSTS) {
++ fprintf(stderr, "invalid OST index %u ino %u[%d]\n",
++ ost_idx, ino, i);
++ continue;
++ }
++
++ if (ost_idx + 1 > ctx->lfsck_oinfo->ost_count) {
++ if (ctx->lfsck_oinfo->have_ost_count) {
++ fprintf(stderr, "bad OST index %u ino %u[%d]\n",
++ ost_idx, ino, i);
++ continue;
++ }
++ ctx->lfsck_oinfo->ost_count = ost_idx + 1;
++ }
++
++ if (ofile_ctx->dbp == NULL) {
++ char dbname[256];
++
++ sprintf(dbname, "%s.%d", MDS_OSTDB, ost_idx);
++ rc = lfsck_opendb(ctx->lustre_mdsdb, dbname,
++ &ofile_ctx->dbp, 1,
++ sizeof(mds_ent), numfiles);
++ if (rc) {
++ e2fsck_lfsck_cleanupdb(ctx);
++ ctx->flags |= E2F_FLAG_ABORT;
++ return (EIO);
++ }
++ }
++
++ memset(&mds_ent, 0, sizeof(mds_ent));
++ if (lma) {
++ mds_ent.mds_fid = lma->lma_self_fid;
++ } else {
++ mds_ent.mds_fid.f_seq = ino;
++ mds_ent.mds_fid.f_oid = generation;
++ mds_ent.mds_fid.f_ver = 0;
++ }
++ mds_ent.mds_oi = *(struct ost_id *)&loi->l_object_id;
++ mds_ent.mds_ostidx = ost_idx;
++ mds_ent.mds_ostoffset = i;
++
++ if (mds_ent.mds_oi.oi_id > ofile_ctx->max_id) {
++ if (ofile_ctx->have_max_id) {
++ DEBUG(ctx,
++ "[%d] skip obj "LPU64" > max "LPU64"\n",
++ ost_idx, mds_ent.mds_oi.oi_id,
++ ofile_ctx->max_id);
++ continue;
++ }
++ ofile_ctx->max_id = mds_ent.mds_oi.oi_id;
++ }
++
++ memset(&key, 0, sizeof(key));
++ memset(&data, 0, sizeof(data));
++ key.data = &mds_ent.mds_oi;
++ key.size = sizeof(mds_ent.mds_oi);
++ cputole_mds_objent(&mds_ent);
++ data.data = &mds_ent;
++ data.size = sizeof(mds_ent);
++ dbp = ofile_ctx->dbp;
++#if 0
++ DEBUG(ctx, "OST[%u]: inode FID "DFID" oi "DOIF"\n", ost_idx,
++ PFID(&mds_ent.mds_fid), POIF(&mds_ent.mds_oi));
++#endif
++ if ((rc = dbp->put(dbp, NULL, &key, &data, 0)) != 0) {
++ dbp->err(dbp, rc, "db->put failed\n");
++ e2fsck_lfsck_cleanupdb(ctx);
++ ctx->flags |= E2F_FLAG_ABORT;
++ /* XXX - Free lctx memory */
++ return (EIO);
++ }
++ }
++ return (0);
++}
++
++static int lfsck_check_lov_ea(e2fsck_t ctx, struct lov_user_md *lmm)
++{
++ if (lmm->lmm_magic != LOV_USER_MAGIC_V1 &&
++ lmm->lmm_magic != LOV_USER_MAGIC_V3) {
++ VERBOSE(ctx, "error: only handle v1/v3 LOV EAs, not %08x\n",
++ lmm->lmm_magic);
++ return(-EINVAL);
++ }
++
++ return 0;
++}
++
++static int lfsck_check_lma_ea(e2fsck_t ctx, struct lustre_mdt_attrs *lma)
++{
++ return 0;
++}
++
++/*
++ * e2fsck pass1 has found a file with an EA let's save the information in
++ * the correct table(s). This is only called for an MDS search.
++ */
++int e2fsck_lfsck_find_ea(e2fsck_t ctx, struct ext2_inode_large *inode,
++ struct ext2_ext_attr_entry *entry, void *value,
++ struct lov_user_md **lmm,
++ struct lustre_mdt_attrs **lma)
++{
++ /* This ensures that we don't open the file here if traversing an OST */
++ if ((ctx->lustre_devtype & LUSTRE_TYPE) != LUSTRE_MDS)
++ return 0;
++
++ if (!LINUX_S_ISREG(inode->i_mode))
++ return 0;
++
++ if (entry->e_name_index == EXT3_XATTR_INDEX_TRUSTED &&
++ entry->e_name_index == EXT3_XATTR_INDEX_LUSTRE)
++ return 0;
++
++ if (strncmp(entry->e_name, XATTR_LUSTRE_MDS_LOV_EA,
++ entry->e_name_len) == 0) {
++ *lmm = value;
++ letocpu_lov_user_md(*lmm);
++
++ if (lfsck_check_lov_ea(ctx, *lmm)) {
++ *lmm = NULL;
++ ctx->flags |= E2F_FLAG_ABORT;
++ return -EINVAL;
++ }
++ } else if (strncmp(entry->e_name, XATTR_LUSTRE_MDT_LMA_EA,
++ entry->e_name_len) == 0) {
++ *lma = value;
++ if (lfsck_check_lma_ea(ctx, *lma)) {
++ *lma = NULL;
++ ctx->flags |= E2F_FLAG_ABORT;
++ return -EINVAL;
++ }
++ }
++
++ return 0;
++}
++
++/* make sure that the mds data is on file */
++int e2fsck_lfsck_flush_ea(e2fsck_t ctx)
++{
++ int i, rc = 0;
++ DB *dbp;
++
++ if ((ctx->lustre_devtype & LUSTRE_TYPE) != LUSTRE_MDS)
++ return (0);
++
++ if (ctx->lfsck_oinfo == 0)
++ return (0);
++
++ for (i = 0; i < ctx->lfsck_oinfo->ost_count; i++) {
++ if (ctx->lfsck_oinfo->ofile_ctx == NULL)
++ break;
++
++ if (ctx->lfsck_oinfo->ofile_ctx[i].dbp != NULL) {
++ dbp = ctx->lfsck_oinfo->ofile_ctx[i].dbp;
++ rc += dbp->close(dbp, 0);
++ ctx->lfsck_oinfo->ofile_ctx[i].dbp = NULL;
++ }
++ }
++ if (ctx->lfsck_oinfo->mds_sizeinfo_dbp != NULL) {
++ dbp = ctx->lfsck_oinfo->mds_sizeinfo_dbp;
++ rc += dbp->close(dbp, 0);
++ ctx->lfsck_oinfo->mds_sizeinfo_dbp = NULL;
++ }
++
++ if (rc)
++ ctx->flags |= E2F_FLAG_ABORT;
++
++ return(rc);
++}
++
++/* From debugfs.c for file removal */
++static int lfsck_release_blocks_proc(ext2_filsys fs, blk_t *blocknr,
++ int blockcnt, void *private)
++{
++ blk_t block;
++
++ block = *blocknr;
++ ext2fs_block_alloc_stats(fs, block, -1);
++ return 0;
++}
++
++static void lfsck_kill_file_by_inode(ext2_filsys fs, ext2_ino_t inode)
++{
++ struct ext2_inode inode_buf;
++
++ if (ext2fs_read_inode(fs, inode, &inode_buf))
++ return;
++
++ inode_buf.i_dtime = time(NULL);
++ if (ext2fs_write_inode(fs, inode, &inode_buf))
++ return;
++
++ ext2fs_block_iterate(fs, inode, 0, NULL,
++ lfsck_release_blocks_proc, NULL);
++ ext2fs_inode_alloc_stats2(fs, inode, -1,
++ LINUX_S_ISDIR(inode_buf.i_mode));
++}
++
++/*
++ * remove a file. Currently this removes the lov_objids file
++ * since otherwise the automatic deletion of precreated objects on
++ * mds/ost connection could potentially remove objects with
++ * data - this would be especially the case if the mds has being
++ * restored from backup
++ */
++static int lfsck_rm_file(e2fsck_t ctx, ext2_ino_t dir, char *name)
++{
++ ext2_filsys fs = ctx->fs;
++ ext2_ino_t ino;
++ struct ext2_inode inode;
++ int rc;
++
++ rc = ext2fs_lookup(fs, dir, name, strlen(name),
++ NULL, &ino);
++ if (rc)
++ return (0);
++
++ if (ext2fs_read_inode(fs, ino, &inode))
++ return(-EINVAL);
++
++ --inode.i_links_count;
++
++ if (ext2fs_write_inode(fs, ino, &inode))
++ return (-EINVAL);
++
++ if (ext2fs_unlink(fs, dir, name, ino, 0))
++ return (-EIO);
++
++ if (inode.i_links_count == 0)
++ lfsck_kill_file_by_inode(fs, ino);
++
++ return(0);
++}
++
++/* called for each ost object - save the object id and size */
++static int lfsck_list_objs(ext2_ino_t dir, int entry,
++ struct ext2_dir_entry *dirent, int offset,
++ int blocksize, char *buf, void *priv_data)
++{
++ struct lfsck_ost_ctx *lctx = priv_data;
++ struct lfsck_ost_objent objent;
++ struct ext2_inode inode;
++ DBT key, data;
++ DB *dbp;
++ char name[32]; /* same as filter_fid2dentry() */
++
++ if (!ext2fs_check_directory(lctx->ctx->fs, dirent->inode))
++ return (0);
++
++ memset(name, 0, sizeof(name));
++ strncpy(name, dirent->name, dirent->name_len & 0xFF);
++ memset(&objent, 0, sizeof(objent));
++ objent.ost_oi.oi_id = STRTOUL(name, NULL, 10);
++ if (objent.ost_oi.oi_id == STRTOUL_MAX) {
++ lctx->status = 1;
++ lctx->ctx->flags |= E2F_FLAG_ABORT;
++ return(DIRENT_ABORT);
++ }
++
++ if (ext2fs_read_inode(lctx->ctx->fs, dirent->inode, &inode)) {
++ lctx->status = 1;
++ lctx->ctx->flags |= E2F_FLAG_ABORT;
++ return(DIRENT_ABORT);
++ }
++
++ if (LINUX_S_ISREG(inode.i_mode))
++ objent.ost_size = EXT2_I_SIZE(&inode);
++ else
++ objent.ost_size = inode.i_size;
++ objent.ost_bytes = (__u64)inode.i_blocks * 512;
++
++ if (objent.ost_oi.oi_id > lctx->max_objid)
++ lctx->max_objid = objent.ost_oi.oi_id;
++
++ memset(&key, 0, sizeof(key));
++ memset(&data, 0, sizeof(data));
++ key.data = &objent.ost_oi;
++ key.size = sizeof(objent.ost_oi);
++ cputole_ost_objent(&objent);
++ data.data = &objent;
++ data.size = sizeof(objent);
++ dbp = lctx->outdb;
++ if (dbp->put(dbp, NULL, &key, &data, 0) != 0) {
++ fprintf(stderr, "Failure to put data into db\n");
++ lctx->ctx->flags |= E2F_FLAG_ABORT;
++ return(DIRENT_ABORT);
++ }
++
++ lctx->numfiles ++;
++ return (0);
++}
++
++/* For each file on the mds save the fid and the containing directory */
++static int lfsck_mds_dirs(ext2_ino_t dir, int entry,
++ struct ext2_dir_entry *de, int offset,
++ int blocksize, char *buf, void *priv_data)
++{
++ struct ext2_dir_entry_2 *dirent = (struct ext2_dir_entry_2 *)de;
++ struct lfsck_mds_ctx *lctx = priv_data;
++ struct lfsck_mds_ctx lctx2;
++ struct lfsck_mds_dirent mds_dirent;
++ DBT key, data;
++ DB *dbp = lctx->outdb;
++ int file_type;
++ int rc = 0;
++
++ DEBUG(lctx->ctx, "MDT: inode %u, file %.*s, type %u\n",
++ dirent->inode, dirent->name_len, dirent->name,
++ dirent->file_type & 0x15);
++ if (dirent->inode == lctx->dot || dirent->inode == lctx->dotdot)
++ return (0);
++
++ /* only the low 4 bits are used to specify file type */
++ file_type = dirent->file_type & 15;
++ if (file_type != EXT2_FT_DIR && file_type != EXT2_FT_REG_FILE)
++ return (0);
++
++ lctx->numfiles++;
++
++ rc = lfsck_get_fid(lctx->ctx->fs, dirent->inode, &mds_dirent.mds_fid);
++ if (rc != 0)
++ return 0;
++
++ DEBUG(lctx->ctx, "MDT: dirfid "DFID" child "DFID" file %.*s\n",
++ PFID(&mds_dirent.mds_dirfid), PFID(&mds_dirent.mds_fid),
++ dirent->name_len, dirent->name);
++
++ mds_dirent.mds_dirfid = lctx->dotfid;
++ cputole_mds_dirent(&mds_dirent);
++
++ memset(&key, 0, sizeof(key));
++ memset(&data, 0, sizeof(data));
++ key.data = &mds_dirent.mds_fid;
++ key.size = sizeof(mds_dirent.mds_fid);
++ data.data = &mds_dirent;
++ data.size = sizeof(mds_dirent);
++
++ if ((rc = dbp->put(dbp, NULL, &key, &data, 0)) != 0) {
++ if (rc != DB_KEYEXIST) {
++ fprintf(stderr,
++ "error adding MDS inode %.*s (inum %u): %s\n",
++ dirent->name_len & 0xFF, dirent->name,
++ dirent->inode, db_strerror(rc));
++ lctx->ctx->flags |= E2F_FLAG_ABORT;
++ return (DIRENT_ABORT);
++ }
++ }
++ if (file_type == EXT2_FT_DIR) {
++ lctx2 = *lctx;
++ lctx2.dot = dirent->inode;
++ lctx2.dotdot = lctx->dot;
++ lctx2.dotfid = mds_dirent.mds_fid;
++ if (ext2fs_dir_iterate2(lctx->ctx->fs, dirent->inode, 0, NULL,
++ lfsck_mds_dirs, &lctx2)) {
++ return (DIRENT_ABORT);
++ }
++ lctx->numfiles = lctx2.numfiles;
++ }
++ return(0);
++}
++
++/* For each directory get the objects and save the data */
++static int lfsck_iterate_obj_dirs(ext2_ino_t dir, int entry,
++ struct ext2_dir_entry *dirent, int offset,
++ int blocksize, char *buf, void *priv_data)
++{
++ struct lfsck_ost_ctx *lctx = priv_data;
++
++ if (ext2fs_check_directory(lctx->ctx->fs, dirent->inode))
++ return (0);
++
++ /* Traverse the d* directories */
++ if (*dirent->name != 'd')
++ return (0);
++
++ ext2fs_dir_iterate2(lctx->ctx->fs, dirent->inode, 0, NULL,
++ lfsck_list_objs, priv_data);
++ if (lctx->status != 0)
++ return (DIRENT_ABORT);
++
++ return(0);
++}
++
++/* Get the starting point of where the objects reside */
++static int lfsck_get_object_dir(e2fsck_t ctx, char *block_buf,ext2_ino_t *inode)
++{
++ ext2_filsys fs = ctx->fs;
++ ext2_ino_t tinode;
++ int rc;
++
++ rc = ext2fs_lookup(fs, EXT2_ROOT_INO, OBJECT_DIR, strlen(OBJECT_DIR),
++ block_buf, &tinode);
++ if (rc) {
++ fprintf(stderr, "error looking up OST object parent dir\n");
++ return (ENOENT);
++ }
++ rc = ext2fs_check_directory(fs, tinode);
++ if (rc) {
++ return(ENOENT);
++ }
++
++ rc = ext2fs_lookup(fs, tinode, OBJECT_DIR_V1, strlen(OBJECT_DIR_V1),
++ block_buf, inode);
++ if (rc) {
++ rc = ext2fs_lookup(fs, tinode, OBJECT_DIR_V2,
++ strlen(OBJECT_DIR_V2), block_buf, inode);
++ if (rc) {
++ fprintf(stderr, "error looking up OST object subdir\n");
++ return (-ENOENT);
++ }
++ }
++ rc = ext2fs_check_directory(fs, *inode);
++ if (rc) {
++ return(-ENOENT);
++ }
++ return(0);
++}
++
++/* What is the last object id for the OST */
++static int lfsck_get_last_id(e2fsck_t ctx, __u64 *last_id)
++{
++ ext2_filsys fs = ctx->fs;
++ ext2_ino_t inode, tinode;
++ ext2_file_t e2_file;
++ char *block_buf;
++ unsigned int got;
++ int rc;
++
++ block_buf = e2fsck_allocate_memory(ctx, fs->blocksize * 3,
++ "lookup buffer");
++
++ rc = lfsck_get_object_dir(ctx, block_buf, &inode);
++ if (rc)
++ goto out;
++
++ rc = ext2fs_lookup(fs, inode, LAST_ID,
++ strlen(LAST_ID), block_buf, &tinode);
++ if (rc)
++ goto out;
++
++ rc = ext2fs_file_open(fs, tinode, 0, &e2_file);
++ if (rc)
++ goto out;
++
++ rc = ext2fs_file_read(e2_file, last_id, sizeof(__u64), &got);
++ if (rc) {
++ ext2fs_file_close(e2_file);
++ goto out;
++ }
++
++ if (got != sizeof(__u64)) {
++ rc = EIO;
++ ext2fs_file_close(e2_file);
++ goto out;
++ }
++
++ rc = ext2fs_file_close(e2_file);
++
++ *last_id = ext2fs_le64_to_cpu(*last_id);
++out:
++ ext2fs_free_mem(&block_buf);
++ return (rc);
++}
++
++int lfsck_set_last_id(e2fsck_t ctx, __u64 last_id)
++{
++ ext2_filsys fs = ctx->fs;
++ ext2_ino_t inode, tinode;
++ ext2_file_t e2_file;
++ char *block_buf;
++ unsigned int written;
++ int rc;
++
++ block_buf = e2fsck_allocate_memory(ctx, fs->blocksize * 3,
++ "lookup buffer");
++
++ rc = lfsck_get_object_dir(ctx, block_buf, &inode);
++ if (rc)
++ goto out;
++
++ rc = ext2fs_lookup(fs, inode, LAST_ID,
++ strlen(LAST_ID), block_buf, &tinode);
++ if (rc)
++ goto out;
++
++ rc = ext2fs_file_open(fs, tinode, EXT2_FILE_WRITE, &e2_file);
++ if (rc)
++ goto out;
++
++ last_id = ext2fs_cpu_to_le64(last_id);
++
++ rc = ext2fs_file_write(e2_file, &last_id, sizeof(__u64), &written);
++ if (rc) {
++ fprintf(stderr, "Failure to update last id on file\n");
++ ext2fs_file_close(e2_file);
++ goto out;
++ }
++
++ if (written != sizeof(__u64)) {
++ rc = EIO;
++ fprintf(stderr, "Failure to update last id on file\n");
++ ext2fs_file_close(e2_file);
++ goto out;
++ }
++
++ rc = ext2fs_file_close(e2_file);
++
++out:
++ ext2fs_free_mem(&block_buf);
++ return (rc);
++}
++
++int e2fsck_get_last_rcvd_info(e2fsck_t ctx, struct obd_uuid *local_uuid,
++ struct obd_uuid *peer_uuid, __u32 *subdircount,
++ __u32 *index, __u32 *compat, __u32 *rocompat,
++ __u32 *incompat)
++{
++ ext2_filsys fs = ctx->fs;
++ ext2_ino_t inode;
++ ext2_file_t e2_file;
++ struct lustre_server_data *lsd = NULL;
++ unsigned int got;
++ char *block_buf;
++ __u32 cmp, inc;
++ int rc = 0;
++
++ block_buf = e2fsck_allocate_memory(ctx, fs->blocksize * 3,
++ "block iterate buffer");
++
++ rc = ext2fs_lookup(fs, EXT2_ROOT_INO, LAST_RCVD, strlen(LAST_RCVD),
++ block_buf, &inode);
++ if (rc)
++ goto out;
++
++ rc = ext2fs_file_open(fs, inode, 0, &e2_file);
++ if (rc)
++ goto out;
++
++ lsd = e2fsck_allocate_memory(ctx, sizeof(*lsd), "lustre server data");
++ if (lsd == NULL) {
++ rc = ENOMEM;
++ goto out;
++ }
++
++ rc = ext2fs_file_read(e2_file, lsd, sizeof(*lsd), &got);
++ if (rc)
++ goto out;
++ if (got != sizeof(*lsd)) {
++ rc = EIO;
++ goto out;
++ }
++
++ if (local_uuid)
++ memcpy(local_uuid, &lsd->lsd_uuid, sizeof(lsd->lsd_uuid));
++
++ if (peer_uuid)
++ memcpy(peer_uuid, &lsd->lsd_peeruuid,sizeof(lsd->lsd_peeruuid));
++
++ if (subdircount)
++ *subdircount = ext2fs_le16_to_cpu(lsd->lsd_subdir_count);
++
++ if (compat == NULL)
++ compat = &cmp;
++ *compat = ext2fs_le32_to_cpu(lsd->lsd_feature_compat);
++ if (rocompat)
++ *rocompat = ext2fs_le32_to_cpu(lsd->lsd_feature_rocompat);
++ if (incompat == NULL)
++ incompat = &inc;
++ *incompat = ext2fs_le32_to_cpu(lsd->lsd_feature_incompat);
++ if (index) {
++ if (*compat & OBD_COMPAT_OST || *incompat & OBD_INCOMPAT_OST)
++ *index = ext2fs_le32_to_cpu(lsd->lsd_ost_index);
++ else if (*compat & OBD_COMPAT_MDT||*incompat & OBD_INCOMPAT_MDT)
++ *index = ext2fs_le32_to_cpu(lsd->lsd_mdt_index);
++ else
++ *index = -1;
++ }
++
++ rc = ext2fs_file_close(e2_file);
++
++out:
++ ext2fs_free_mem(&block_buf);
++ if (lsd)
++ ext2fs_free_mem(&lsd);
++ return (rc);
++}
++
++int lfsck_rm_log(ext2_ino_t dir, int entry, struct ext2_dir_entry *dirent,
++ int offset, int blocksize, char *buf, void *priv_data)
++{
++ struct lfsck_ost_ctx *lctx = priv_data;
++ char name[EXT2_NAME_LEN + 1];
++
++ if (!ext2fs_check_directory(lctx->ctx->fs, dirent->inode))
++ return (0);
++
++ strncpy(name, dirent->name, dirent->name_len & 0xFF);
++ name[EXT2_NAME_LEN] = '\0';
++ if (memcmp(name, LAST_ID, strlen(LAST_ID)) == 0)
++ return (0);
++
++
++ if (lfsck_rm_file(lctx->ctx, lctx->dirinode, name))
++ return(DIRENT_ABORT);
++
++ return(0);
++}
++
++/* Not 100% sure that this is correct so not activated yet */
++int lfsck_remove_ost_logs(e2fsck_t ctx, char *block_buf)
++{
++ ext2_filsys fs = ctx->fs;
++ struct lfsck_ost_ctx lctx;
++ ext2_ino_t inode;
++ ext2_ino_t tinode;
++ int rc;
++
++ if (lfsck_rm_file(ctx, EXT2_ROOT_INO, CATLIST)) {
++ ctx->flags |= E2F_FLAG_ABORT;
++ return -EINVAL;
++ }
++
++ rc = ext2fs_lookup(fs, EXT2_ROOT_INO, OBJECT_DIR, strlen(OBJECT_DIR),
++ block_buf, &tinode);
++ if (rc) {
++ ctx->flags |= E2F_FLAG_ABORT;
++ return (-ENOENT);
++ }
++ rc = ext2fs_check_directory(fs,tinode);
++ if (rc) {
++ ctx->flags |= E2F_FLAG_ABORT;
++ return(-ENOENT);
++ }
++
++ rc = ext2fs_lookup(fs, tinode, LOG_DIR, strlen(LOG_DIR),
++ block_buf, &inode);
++ if (rc) {
++ ctx->flags |= E2F_FLAG_ABORT;
++ return (-ENOENT);
++ }
++ rc = ext2fs_check_directory(fs, inode);
++ if (rc) {
++ ctx->flags |= E2F_FLAG_ABORT;
++ return(-ENOENT);
++ }
++ lctx.ctx = ctx;
++ lctx.dirinode = inode;
++
++ if (ext2fs_dir_iterate2(fs, inode, 0, block_buf, lfsck_rm_log, &lctx)) {
++ ctx->flags |= E2F_FLAG_ABORT;
++ return(-EIO);
++ }
++ return (0);
++}
++
++/* Remove files from PENDING dir - this needs to be done before getting ea from
++ * blocks but we need the inode_map bitmap loaded beforehand so load write any
++ * changes then remove references
++ */
++int e2fsck_lfsck_remove_pending(e2fsck_t ctx, char *block_buf)
++{
++ ext2_filsys fs = ctx->fs;
++ struct lfsck_ost_ctx lctx;
++ ext2_ino_t tinode;
++ int rc = 0;
++
++ rc = ext2fs_lookup(fs, EXT2_ROOT_INO, PENDING_DIR, strlen(PENDING_DIR),
++ block_buf, &tinode);
++ if (rc) {
++ ctx->flags |= E2F_FLAG_ABORT;
++ return (-ENOENT);
++ }
++ rc = ext2fs_check_directory(fs,tinode);
++ if (rc) {
++ ctx->flags |= E2F_FLAG_ABORT;
++ return(-ENOENT);
++ }
++
++ lctx.ctx = ctx;
++ lctx.dirinode = tinode;
++
++ e2fsck_read_bitmaps(ctx);
++
++ if (ext2fs_dir_iterate2(fs, tinode, 0, block_buf, lfsck_rm_log, &lctx)){
++ ctx->flags |= E2F_FLAG_ABORT;
++ rc = -EIO;
++ }
++ e2fsck_write_bitmaps(ctx);
++ ext2fs_free_inode_bitmap(fs->inode_map);
++ ext2fs_free_block_bitmap(fs->block_map);
++ fs->inode_map = NULL;
++ fs->block_map = NULL;
++ return (rc);
++}
++
++/* partially using code from debugfs do_write() */
++int lfsck_create_objid(e2fsck_t ctx, __u64 objid)
++{
++ int rc = 0;
++ char dirname[32];
++ char name[32];
++ int len, dirlen;
++ __u32 compat, incompat, subdircount;
++ ext2_ino_t inode, tinode, cinode;
++ struct ext2_inode ext2inode;
++ char *block_buf;
++
++ block_buf = e2fsck_allocate_memory(ctx, ctx->fs->blocksize * 3,
++ "lookup buffer");
++
++ memset(name, 0, 32);
++ memset(dirname, 0, 32);
++
++ len = sprintf(name, LPU64, objid);
++
++ fprintf(stderr, "creating %s\n", name);
++
++ rc = e2fsck_get_last_rcvd_info(ctx, NULL, NULL, &subdircount, NULL,
++ &compat, NULL, &incompat);
++ if (rc) {
++ fprintf(stderr, "Error: reading OST last_rcvd file\n");
++ rc = EINVAL;
++ goto out;
++ }
++
++ if (compat & OBD_COMPAT_MDT || incompat & OBD_INCOMPAT_MDT) {
++ fprintf(stderr, "Error: MDS last_rcvd file doing OST check\n");
++ rc = EINVAL;
++ goto out;
++ }
++
++ if (lfsck_get_object_dir(ctx, block_buf, &inode)) {
++ rc = EINVAL;
++ goto out;
++ }
++
++ dirlen = sprintf(dirname, "d%u", (int)objid & (subdircount - 1));
++
++ rc = ext2fs_lookup(ctx->fs, inode, dirname,
++ dirlen, block_buf, &tinode);
++ if (rc) {
++ rc = EINVAL;
++ goto out;
++ }
++
++ if (ext2fs_namei(ctx->fs, EXT2_ROOT_INO, tinode, name, &cinode) == 0) {
++ fprintf(stderr, "Failure to create obj\n");
++ rc = EINVAL;
++ goto out;
++ }
++
++ rc = ext2fs_new_inode(ctx->fs, tinode, 010755, 0, &cinode);
++ if (rc) {
++ fprintf(stderr, "Failure to create obj\n");
++ rc = EINVAL;
++ goto out;
++ }
++
++ rc = ext2fs_link(ctx->fs, tinode, name, cinode, EXT2_FT_REG_FILE);
++ if (rc) {
++ fprintf(stderr, "Failure to create obj\n");
++ rc = EINVAL;
++ goto out;
++ }
++
++ if (ext2fs_test_inode_bitmap2(ctx->fs->inode_map, cinode)) {
++ fprintf(stderr, "Warning: inode already set");
++ }
++ ext2fs_inode_alloc_stats2(ctx->fs, cinode, +1, 0);
++ memset(&ext2inode, 0, sizeof(ext2inode));
++ ext2inode.i_mode = LINUX_S_IFREG;
++ ext2inode.i_atime = ext2inode.i_ctime = ext2inode.i_mtime = time(NULL);
++ ext2inode.i_links_count = 1;
++ ext2inode.i_size = 0;
++ if (ext2fs_write_inode(ctx->fs, cinode, &ext2inode)) {
++ fprintf(stderr, "Failure to create obj\n");
++ rc = EINVAL;
++ goto out;
++ }
++
++out:
++ ext2fs_free_mem((void *)&(block_buf));
++ return (rc);
++}
++
++/*
++ * For on ost iterate for the direcories and save the object information.
++ */
++void e2fsck_pass6_ost(e2fsck_t ctx)
++{
++ ext2_filsys fs = ctx->fs;
++ struct lfsck_ost_ctx lctx;
++ struct lfsck_ost_hdr ost_hdr;
++ struct lfsck_mds_hdr mds_hdr;
++ struct lfsck_ost_objent objent;
++ DB *outdb = NULL;
++ DB *mds_hdrdb = NULL;
++ DB *osthdr = NULL;
++ DBT key, data;
++ ext2_ino_t dir;
++ __u32 compat, rocompat, incompat;
++ int i, rc;
++ char *block_buf = NULL;
++
++ if (unlink(ctx->lustre_ostdb)) {
++ if (errno != ENOENT) {
++ fprintf(stderr, "Failure to remove old db file %s\n",
++ ctx->lustre_ostdb);
++ ctx->flags |= E2F_FLAG_ABORT;
++ return;
++ }
++ }
++
++ block_buf = e2fsck_allocate_memory(ctx, fs->blocksize * 3,
++ "block iterate buffer");
++
++ rc = lfsck_opendb(ctx->lustre_mdsdb, MDS_HDR, &mds_hdrdb, 0, 0, 0);
++ if (rc != 0) {
++ fprintf(stderr, "failure to open database %s: %s\n",
++ MDS_HDR, db_strerror(rc));
++ ctx->flags |= E2F_FLAG_ABORT;
++ goto out;
++ }
++
++ memset(&mds_hdr, 0, sizeof(mds_hdr));
++ mds_hdr.mds_magic = MDS_MAGIC;
++ memset(&key, 0, sizeof(key));
++ memset(&data, 0, sizeof(data));
++ key.data = &mds_hdr.mds_magic;
++ key.size = sizeof(mds_hdr.mds_magic);
++ data.data = &mds_hdr;
++ data.size = sizeof(mds_hdr);
++ data.ulen = sizeof(mds_hdr);
++ data.flags = DB_DBT_USERMEM;
++ rc = mds_hdrdb->get(mds_hdrdb, NULL, &key, &data, 0);
++ if (rc) {
++ fprintf(stderr,"error getting mds_hdr ("LPU64":%u) in %s: %s\n",
++ mds_hdr.mds_magic, (int)sizeof(mds_hdr.mds_magic),
++ ctx->lustre_mdsdb, db_strerror(rc));
++ ctx->flags |= E2F_FLAG_ABORT;
++ goto out;
++ }
++
++ memcpy(&mds_hdr, data.data, sizeof(mds_hdr));
++ letocpu_mds_hdr(&mds_hdr);
++
++ rc = lfsck_opendb(ctx->lustre_ostdb, OST_HDR, &osthdr, 0, 0, 0);
++ if (rc != 0) {
++ fprintf(stderr, "failure to open database %s: %s\n",
++ OST_HDR, db_strerror(rc));
++ ctx->flags |= E2F_FLAG_ABORT;
++ goto out;
++ }
++
++ rc = lfsck_opendb(ctx->lustre_ostdb, OST_OSTDB, &outdb, 0,
++ sizeof(objent.ost_oi) + sizeof(objent),
++ fs->super->s_inodes_count -
++ fs->super->s_free_inodes_count);
++ if (rc != 0) {
++ fprintf(stderr, "error getting ost_hdr in %s: %s\n",
++ ctx->lustre_ostdb, db_strerror(rc));
++ ctx->flags |= E2F_FLAG_ABORT;
++ goto out;
++ }
++
++ memset(&ost_hdr, 0, sizeof(ost_hdr));
++ if (e2fsck_get_last_rcvd_info(ctx, &ost_hdr.ost_uuid,
++ &ost_hdr.ost_mds_uuid, NULL,
++ &ost_hdr.ost_index,
++ &compat, &rocompat, &incompat)) {
++ fprintf(stderr, "Failure to read OST last_rcvd file\n");
++ ctx->flags |= E2F_FLAG_ABORT;
++ goto out;
++ }
++
++ VERBOSE(ctx, "OST: '%s' ost idx %u: compat %#x rocomp %#x incomp %#x\n",
++ (char *)&ost_hdr.ost_uuid.uuid, ost_hdr.ost_index,
++ compat, rocompat, incompat);
++
++ if (compat & OBD_COMPAT_MDT) {
++ fprintf(stderr, "Found MDS last_rcvd file doing OST check\n");
++ ctx->flags |= E2F_FLAG_ABORT;
++ goto out;
++ }
++
++ /*
++ * Get /O/R or /O/0 directory
++ * for each entry scan all the dirents and get the object id
++ */
++ if (lfsck_get_object_dir(ctx, block_buf, &dir)) {
++ ctx->flags |= E2F_FLAG_ABORT;
++ goto out;
++ }
++
++ /*
++ * Okay so we have the containing directory so let's iterate over the
++ * containing d* dirs and then iterate again inside
++ */
++ lctx.ctx = ctx;
++ lctx.outdb = outdb;
++ lctx.status = 0;
++ lctx.numfiles = 0;
++ lctx.max_objid = 0;
++ lctx.status = ext2fs_dir_iterate2(fs, dir, 0, block_buf,
++ lfsck_iterate_obj_dirs, &lctx);
++ if (lctx.status) {
++ fprintf(stderr, "Failure in iterating object dirs\n");
++ ctx->flags |= E2F_FLAG_ABORT;
++ return;
++ }
++
++ ost_hdr.ost_magic = OST_MAGIC;
++ ost_hdr.ost_flags = ctx->options & E2F_OPT_READONLY;
++ ost_hdr.ost_num_files = lctx.numfiles;
++ VERBOSE(ctx, "OST: num files = %u\n", lctx.numfiles);
++
++ if (lfsck_get_last_id(ctx, &ost_hdr.ost_last_id)) {
++ fprintf(stderr, "Failure to get last id for objects\n");
++ ctx->flags |= E2F_FLAG_ABORT;
++ goto out;
++ }
++ VERBOSE(ctx, "OST: last_id = "LPU64"\n", ost_hdr.ost_last_id);
++
++ /* Update the last_id value on the OST if necessary/possible to the
++ * MDS value if larger. Otherwise we risk creating duplicate objects.
++ * If running read-only, we skip this so new objects are ignored. */
++ ost_hdr.ost_last_id = lctx.max_objid;
++ if (!(ctx->options & E2F_OPT_READONLY) &&
++ !(mds_hdr.mds_flags & E2F_OPT_READONLY)) {
++ for (i = 0; i < mds_hdr.mds_num_osts; i++) {
++ if (strcmp((char *)mds_hdr.mds_ost_info[i].uuid,
++ (char *)ost_hdr.ost_uuid.uuid) == 0 &&
++ mds_hdr.mds_max_ost_id[i] >= ost_hdr.ost_last_id)
++ ost_hdr.ost_last_id=mds_hdr.mds_max_ost_id[i]+1;
++ }
++
++ if (lfsck_set_last_id(ctx, ost_hdr.ost_last_id)) {
++ fprintf(stderr, "Failure to set last id\n");
++ ctx->flags |= E2F_FLAG_ABORT;
++ goto out;
++ }
++
++#ifdef LOG_REMOVAL
++ if (lfsck_remove_ost_logs(ctx, block_buf))
++ ctx->flags |= E2F_FLAG_ABORT;
++#endif
++ }
++
++ memset(&key, 0, sizeof(key));
++ memset(&data, 0, sizeof(data));
++ key.data = &ost_hdr.ost_magic;
++ key.size = sizeof(ost_hdr.ost_magic);
++ cputole_ost_hdr(&ost_hdr);
++ data.data = &ost_hdr;
++ data.size = sizeof(ost_hdr);
++ if (osthdr->put(osthdr, NULL, &key, &data, 0)) {
++ fprintf(stderr, "Failed to db_put data\n");
++ ctx->flags |= E2F_FLAG_ABORT;
++ goto out;
++ }
++
++out:
++ if (mds_hdrdb)
++ mds_hdrdb->close(mds_hdrdb, 0);
++ if (outdb)
++ outdb->close(outdb, 0);
++ if (osthdr)
++ osthdr->close(osthdr, 0);
++ if (block_buf)
++ ext2fs_free_mem((void *)&(block_buf));
++ return;
++}
++
++int lfsck_remove_mds_logs(e2fsck_t ctx)
++{
++ ext2_filsys fs = ctx->fs;
++ struct lfsck_ost_ctx lctx;
++ ext2_ino_t tinode;
++ int rc = 0;
++
++ if (lfsck_rm_file(ctx, EXT2_ROOT_INO, CATLIST)) {
++ ctx->flags |= E2F_FLAG_ABORT;
++ return -EINVAL;
++ }
++
++ rc = ext2fs_lookup(fs, EXT2_ROOT_INO, OBJECTS, strlen(OBJECTS),
++ NULL, &tinode);
++ if (rc) {
++ ctx->flags |= E2F_FLAG_ABORT;
++ return (-ENOENT);
++ }
++ rc = ext2fs_check_directory(fs,tinode);
++ if (rc) {
++ ctx->flags |= E2F_FLAG_ABORT;
++ return(-ENOENT);
++ }
++
++ lctx.ctx = ctx;
++ lctx.dirinode = tinode;
++
++ if (ext2fs_dir_iterate2(fs, tinode, 0, NULL, lfsck_rm_log, &lctx)) {
++ ctx->flags |= E2F_FLAG_ABORT;
++ rc = -EIO;
++ }
++ return (rc);
++}
++
++
++/*
++ * On the mds save the fid and directory information for each file.
++ * The mds ost tables have already been populated by pass1
++ */
++void e2fsck_pass6_mdt(e2fsck_t ctx)
++{
++ ext2_filsys fs = ctx->fs;
++ struct problem_context pctx;
++ struct lfsck_mds_ctx lctx;
++ struct lfsck_mds_dirent mds_dirent;
++ struct lfsck_mds_hdr mds_hdr;
++ DBT key, data;
++ DB *outdb = NULL, *dbhdr = NULL;
++ __u32 compat, rocompat, incompat, index;
++ int rc, i;
++
++ clear_problem_context(&pctx);
++
++ memset(&lctx, 0, sizeof(lctx));
++ lctx.ctx = ctx;
++
++ /* Found no files with EA on filesystem - empty */
++ if (ctx->lfsck_oinfo == NULL) {
++ if (unlink(ctx->lustre_mdsdb)) {
++ if (errno != ENOENT) {
++ fprintf(stderr, "Failure to remove old "
++ "db file %s\n", ctx->lustre_mdsdb);
++ ctx->flags |= E2F_FLAG_ABORT;
++ goto out;
++ }
++ }
++ rc = ext2fs_get_mem(sizeof(struct lfsck_outdb_info),
++ &ctx->lfsck_oinfo);
++ if (rc) {
++ ctx->lfsck_oinfo = NULL;
++ ctx->flags |= E2F_FLAG_ABORT;
++ goto out;
++ }
++ memset(ctx->lfsck_oinfo, 0, sizeof(struct lfsck_outdb_info));
++ rc = ext2fs_get_mem(sizeof(struct lfsck_ofile_ctx)*LOV_MAX_OSTS,
++ &ctx->lfsck_oinfo->ofile_ctx);
++ if (rc) {
++ ext2fs_free_mem(&ctx->lfsck_oinfo);
++ ctx->lfsck_oinfo = NULL;
++ ctx->flags |= E2F_FLAG_ABORT;
++ goto out;
++ }
++ memset(ctx->lfsck_oinfo->ofile_ctx, 0,
++ sizeof(struct lfsck_ofile_ctx) * LOV_MAX_OSTS);
++ }
++
++ if (!(ctx->options & E2F_OPT_READONLY))
++ lfsck_write_mds_hdrinfo(ctx, ctx->lfsck_oinfo);
++
++ if (lfsck_opendb(ctx->lustre_mdsdb, MDS_DIRINFO, &outdb, 1,
++ sizeof(mds_dirent.mds_fid) + sizeof(mds_dirent),
++ fs->super->s_inodes_count -
++ fs->super->s_free_inodes_count)) {
++ fprintf(stderr, "failure to open database %s\n", MDS_DIRINFO);
++ ctx->flags |= E2F_FLAG_ABORT;
++ goto out;
++ }
++
++ lctx.outdb = outdb;
++ lctx.numfiles = 0;
++ lctx.dot = EXT2_ROOT_INO;
++ lctx.dotdot = EXT2_ROOT_INO;
++ lctx.dotfid.f_seq = EXT2_ROOT_INO;
++
++ rc = ext2fs_dir_iterate2(fs, EXT2_ROOT_INO,0,NULL,lfsck_mds_dirs,&lctx);
++ if (rc != 0) {
++ fprintf(stderr, "Error iterating directories: %d\n", rc);
++ ctx->flags |= E2F_FLAG_ABORT;
++ goto out;
++ }
++
++ /* read in e2fsck_lfsck_save_ea() already if we opened read/write */
++ if (ctx->lfsck_oinfo->ost_count == 0)
++ e2fsck_get_lov_objids(ctx, ctx->lfsck_oinfo);
++
++ memset(&mds_hdr, 0, sizeof(mds_hdr));
++ mds_hdr.mds_magic = MDS_MAGIC;
++ mds_hdr.mds_flags = ctx->options & E2F_OPT_READONLY;
++ mds_hdr.mds_max_files = fs->super->s_inodes_count -
++ fs->super->s_free_inodes_count;
++ VERBOSE(ctx, "MDS: max_files = "LPU64"\n", mds_hdr.mds_max_files);
++ mds_hdr.mds_num_osts = ctx->lfsck_oinfo->ost_count;
++ VERBOSE(ctx, "MDS: num_osts = %u\n", mds_hdr.mds_num_osts);
++ for (i = 0; i < mds_hdr.mds_num_osts; i++) {
++ mds_hdr.mds_max_ost_id[i] =
++ ctx->lfsck_oinfo->ofile_ctx[i].max_id;
++ }
++
++ if (e2fsck_get_last_rcvd_info(ctx, &mds_hdr.mds_uuid, NULL, NULL,
++ &index, &compat, &rocompat, &incompat)) {
++ fprintf(stderr, "Failure to read MDS last_rcvd file\n");
++ ctx->flags |= E2F_FLAG_ABORT;
++ goto out;
++ }
++
++ VERBOSE(ctx, "MDS: '%s' mdt idx %u: compat %#x rocomp %#x incomp %#x\n",
++ (char *)&mds_hdr.mds_uuid.uuid, index,compat,rocompat,incompat);
++
++ if (compat & OBD_COMPAT_OST || incompat & OBD_INCOMPAT_OST) {
++ fprintf(stderr, "Found OST last_rcvd file doing MDS check\n");
++ ctx->flags |= E2F_FLAG_ABORT;
++ goto out;
++ }
++
++ if (!(ctx->options & E2F_OPT_READONLY)) {
++ if (lfsck_rm_file(ctx, EXT2_ROOT_INO, LOV_OBJID)) {
++ ctx->flags |= E2F_FLAG_ABORT;
++ goto out;
++ }
++#ifdef LOG_REMOVAL
++ if (lfsck_remove_mds_logs(ctx)) {
++ ctx->flags |= E2F_FLAG_ABORT;
++ return;
++ }
++#endif
++ }
++
++ rc = lfsck_opendb(ctx->lustre_mdsdb, MDS_HDR, &dbhdr, 0, 0, 0);
++ if (rc != 0) {
++ fprintf(stderr, "failure to open database %s: %s\n", MDS_HDR,
++ db_strerror(rc));
++ ctx->flags |= E2F_FLAG_ABORT;
++ goto out;
++ }
++
++ memset(&key, 0, sizeof(key));
++ memset(&data, 0, sizeof(data));
++ key.data = &mds_hdr.mds_magic;
++ key.size = sizeof(mds_hdr.mds_magic);
++ cputole_mds_hdr(&mds_hdr);
++ data.data = &mds_hdr;
++ data.size = sizeof(mds_hdr);
++ rc = dbhdr->put(dbhdr, NULL, &key, &data, 0);
++ if (rc != 0) {
++ fprintf(stderr, "error: db put %s: %s\n", MDS_HDR,
++ db_strerror(rc));
++ ctx->flags |= E2F_FLAG_ABORT;
++ goto out;
++ }
++out:
++ if (dbhdr)
++ dbhdr->close(dbhdr, 0);
++ if (outdb)
++ outdb->close(outdb, 0);
++}
++
++/* If lfsck checking requested then gather the data */
++void e2fsck_pass6(e2fsck_t ctx)
++{
++ if (ctx->lustre_devtype == LUSTRE_NULL)
++ return;
++
++ printf("Pass 6: Acquiring %s information for lfsck\n",
++ ctx->lustre_devtype & LUSTRE_OST ? "OST" :
++ ctx->lustre_devtype & LUSTRE_MDS ? "MDT" : "device");
++
++ fflush(stdout);
++
++ if (ctx->lustre_devtype & LUSTRE_OST)
++ e2fsck_pass6_ost(ctx);
++ else if (ctx->lustre_devtype & LUSTRE_MDS)
++ e2fsck_pass6_mdt(ctx);
++ else
++ fprintf(stderr, "Invalid lustre dev %x\n", ctx->lustre_devtype);
++
++ return;
++}
++#endif /* ENABLE_LFSCK */
--- /dev/null
+Check if Lustre filesystems mounted
+
+Index: e2fsprogs/lib/ext2fs/ismounted.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/ismounted.c
++++ e2fsprogs/lib/ext2fs/ismounted.c
+@@ -30,6 +30,8 @@
+ #endif /* HAVE_GETMNTINFO */
+ #include <string.h>
+ #include <sys/stat.h>
++#include <sys/types.h>
++#include <dirent.h>
+
+ #include "ext2_fs.h"
+ #include "ext2fs.h"
+@@ -286,6 +288,135 @@ leave:
+ return ret;
+ }
+
++static int check_lustre_proc_vals(const char *procname,const char *real_devname)
++{
++ struct dirent *direntp;
++ DIR *dirp;
++ int rc = 0;
++ char *mnt_device, *proc_val, *real_mnt_device;
++
++ mnt_device = malloc(PATH_MAX);
++ if (mnt_device == NULL) {
++ fprintf(stderr, "Cannot allocate memory to store path\n");
++ return 1;
++ }
++ proc_val = malloc(PATH_MAX);
++ if (proc_val == NULL) {
++ fprintf(stderr, "Cannot allocate memory to store path\n");
++ free(mnt_device);
++ return 1;
++ }
++ real_mnt_device = malloc(PATH_MAX);
++ if (real_mnt_device == NULL) {
++ fprintf(stderr, "Cannot allocate memory to store path\n");
++ free(proc_val);
++ free(mnt_device);
++ return 1;
++ }
++
++ dirp = opendir(procname);
++ if (dirp) {
++ do {
++ int fd, numr;
++ char *ptr;
++
++ direntp = readdir(dirp);
++ if (direntp == NULL)
++ break;
++ if ((strncmp(direntp->d_name, ".", 1) == 0) ||
++ (strncmp(direntp->d_name, "..", 2) == 0)) {
++ continue;
++ }
++
++ memset(proc_val, 0, PATH_MAX);
++ snprintf(proc_val, PATH_MAX, "%s/%s/mntdev", procname,
++ direntp->d_name);
++ fd = open(proc_val, O_RDONLY);
++ if (fd < 0) {
++ if (errno == ENOENT || errno == ENOTDIR)
++ continue;
++ fprintf(stderr, "Cannot open %s: %s\n",
++ proc_val, strerror(errno));
++ rc = 1;
++ goto out;
++ }
++
++ memset(mnt_device, 0, PATH_MAX);
++ numr = 0;
++ ptr = mnt_device;
++ do {
++ numr = read(fd, ptr, PATH_MAX);
++ if (numr < 0) {
++ fprintf(stderr,
++ "Failure to get mntdev info\n");
++ rc = 1;
++ close(fd);
++ goto out;
++ }
++ ptr += numr;
++ } while (numr != 0);
++ close(fd);
++
++ ptr = strchr(mnt_device, '\n');
++ if (ptr)
++ *ptr = '\0';
++
++ memset(real_mnt_device, 0, PATH_MAX);
++ if (realpath(mnt_device, real_mnt_device) == NULL) {
++ fprintf(stderr, "Cannot resolve mntdev %s\n",
++ mnt_device);
++ rc = 1;
++ goto out;
++ }
++
++ if (strcmp(real_devname, real_mnt_device) == 0) {
++ fprintf(stderr,
++ "device %s mounted by lustre per %s\n",
++ real_devname, proc_val);
++ rc = -1;
++ goto out;
++ }
++ } while (direntp != NULL);
++
++ closedir(dirp);
++ }
++
++out:
++ free(proc_val);
++ free(mnt_device);
++ free(real_mnt_device);
++
++ return rc;
++}
++
++static errcode_t check_if_lustre_mounted(const char *device, int *mount_flags)
++{
++ char *real_device;
++ int rc = 0;
++
++ real_device = malloc(PATH_MAX);
++ if (real_device == NULL) {
++ fprintf(stderr, "Cannot allocate memory to store path\n");
++ return EXT2_ET_NO_MEMORY;
++ }
++
++ if (realpath(device, real_device) == NULL) {
++ fprintf(stderr, "Cannot resolve path %s\n", device);
++ return EXT2_ET_BAD_DEVICE_NAME;
++ }
++
++ rc = check_lustre_proc_vals("/proc/fs/lustre/obdfilter", real_device);
++ if (!rc)
++ rc = check_lustre_proc_vals("/proc/fs/lustre/mds",real_device);
++
++ if (rc)
++ *mount_flags |= EXT2_MF_MOUNTED;
++
++ free(real_device);
++
++ return 0;
++}
++
+
+ /*
+ * ext2fs_check_mount_point() fills determines if the device is
+@@ -337,6 +468,8 @@ errcode_t ext2fs_check_mount_point(const
+ close(fd);
+ #endif
+
++ retval = check_if_lustre_mounted(device, mount_flags);
++
+ return 0;
+ }
+
--- /dev/null
+Fixes a number of compile warnings hit during building e2fsprogs. A few
+unused variable removals, and signed/unsigned pointers. The only possibly
+controversial fixup is the initialization of rec_len = 0 in copy_dir_entries().
+It wasn't totally obvious to me what to initialize it to (or if it matters),
+but 0 seems reasonable, and is better than random garbage.
+
+Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
+
+Index: e2fsprogs/lib/blkid/probe.c
+===================================================================
+--- e2fsprogs.orig/lib/blkid/probe.c
++++ e2fsprogs/lib/blkid/probe.c
+@@ -1296,7 +1296,8 @@ static int probe_hfsplus(struct blkid_pr
+ return 0;
+
+ label_len = blkid_be16(key->unicode_len) * 2;
+- unicode_16be_to_utf8(label, sizeof(label), key->unicode, label_len);
++ unicode_16be_to_utf8((unsigned char *)label, sizeof(label),
++ key->unicode, label_len);
+ blkid_set_tag(probe->dev, "LABEL", label, 0);
+ return 0;
+ }
+Index: e2fsprogs/debugfs/debugfs.c
+===================================================================
+--- e2fsprogs.orig/debugfs/debugfs.c
++++ e2fsprogs/debugfs/debugfs.c
+@@ -855,7 +855,7 @@ void do_stat(int argc, char *argv[])
+ return;
+ }
+
+-void do_dump_extents(int argc, char *argv[])
++void do_dump_extents(int argc, char **argv)
+ {
+ struct ext2_inode inode;
+ ext2_ino_t ino;
+@@ -876,8 +876,7 @@ void do_dump_extents(int argc, char *arg
+ }
+ }
+
+- if (argc != optind+1) {
+- print_usage:
++ if (argc != optind + 1) {
+ com_err(0, 0, "Usage: dump_extents [-n] [-l] file");
+ return;
+ }
+Index: e2fsprogs/debugfs/debugfs.h
+===================================================================
+--- e2fsprogs.orig/debugfs/debugfs.h
++++ e2fsprogs/debugfs/debugfs.h
+@@ -103,6 +103,7 @@ extern void do_unlink(int argc, char **a
+ extern void do_find_free_block(int argc, char **argv);
+ extern void do_find_free_inode(int argc, char **argv);
+ extern void do_stat(int argc, char **argv);
++extern void do_dump_extents(int argc, char **argv);
+
+ extern void do_chroot(int argc, char **argv);
+ extern void do_clri(int argc, char **argv);
+Index: e2fsprogs/debugfs/dump.c
+===================================================================
+--- e2fsprogs.orig/debugfs/dump.c
++++ e2fsprogs/debugfs/dump.c
+@@ -5,7 +5,9 @@
+ * under the terms of the GNU Public License.
+ */
+
++#ifndef _GNU_SOURCE
+ #define _GNU_SOURCE /* for O_LARGEFILE */
++#endif
+
+ #include <stdio.h>
+ #include <unistd.h>
+Index: e2fsprogs/debugfs/icheck.c
+===================================================================
+--- e2fsprogs.orig/debugfs/icheck.c
++++ e2fsprogs/debugfs/icheck.c
+@@ -106,13 +106,15 @@ void do_icheck(int argc, char **argv)
+ }
+
+ while (ino) {
++ blk64_t blk;
++
+ if (!inode.i_links_count)
+ goto next;
+
+ bw.inode = ino;
+
+- if (ext2fs_file_acl_block(&inode)) {
+- blk64_t blk;
++ blk = ext2fs_file_acl_block(&inode);
++ if (blk) {
+ icheck_proc(current_fs, &blk, 0,
+ 0, 0, &bw);
+ if (bw.blocks_left == 0)
+Index: e2fsprogs/e2fsck/message.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/message.c
++++ e2fsprogs/e2fsck/message.c
+@@ -263,7 +263,6 @@ static _INLINE_ void expand_inode_expres
+ {
+ struct ext2_inode *inode;
+ struct ext2_inode_large *large_inode;
+- time_t t;
+
+ if (!ctx || !ctx->inode)
+ goto no_inode;
+Index: e2fsprogs/e2fsck/pass1.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/pass1.c
++++ e2fsprogs/e2fsck/pass1.c
+@@ -404,7 +404,7 @@ static void check_is_really_dir(e2fsck_t
+ struct ext2_dir_entry *dirent;
+ const char *old_op;
+ errcode_t retval;
+- blk64_t blk, first_dir_blk;
++ blk64_t blk;
+ unsigned int i, rec_len, not_device = 0;
+ int extent_fs;
+
+@@ -436,7 +436,8 @@ static void check_is_really_dir(e2fsck_t
+ * with it.
+ */
+
+- extent_fs = (ctx->fs->super->s_feature_incompat & EXT3_FEATURE_INCOMPAT_EXTENTS);
++ extent_fs = (ctx->fs->super->s_feature_incompat &
++ EXT3_FEATURE_INCOMPAT_EXTENTS);
+ if (extent_fs && (inode->i_flags & EXT4_EXTENTS_FL)) {
+ /* extent mapped */
+ if (ext2fs_bmap2(ctx->fs, pctx->ino, inode, 0, 0, 0, 0,
+Index: e2fsprogs/e2fsck/pass2.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/pass2.c
++++ e2fsprogs/e2fsck/pass2.c
+@@ -404,7 +404,8 @@ static int check_dotdot(e2fsck_t ctx,
+ struct ext2_dir_entry *dirent,
+ ext2_ino_t ino, struct problem_context *pctx)
+ {
+- int rec_len, problem = 0;
++ int problem = 0;
++ unsigned int rec_len;
+
+ if (!dirent->inode)
+ problem = PR_2_MISSING_DOT_DOT;
+Index: e2fsprogs/e2fsck/pass5.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/pass5.c
++++ e2fsprogs/e2fsck/pass5.c
+@@ -77,7 +77,6 @@ static void e2fsck_discard_blocks(e2fsck
+ blk64_t start, blk64_t count)
+ {
+ ext2_filsys fs = ctx->fs;
+- int ret = 0;
+
+ /*
+ * If the filesystem has changed it means that there was an corruption
+Index: e2fsprogs/e2fsck/rehash.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/rehash.c
++++ e2fsprogs/e2fsck/rehash.c
+@@ -430,12 +430,13 @@ static errcode_t copy_dir_entries(e2fsck
+ return retval;
+ dirent = (struct ext2_dir_entry *) block_start;
+ prev_rec_len = 0;
++ rec_len = 0;
+ left = fs->blocksize;
+ slack = fd->compress ? 12 :
+ (fs->blocksize * ctx->htree_slack_percentage)/100;
+ if (slack < 12)
+ slack = 12;
+- for (i=0; i < fd->num_array; i++) {
++ for (i = 0; i < fd->num_array; i++) {
+ ent = fd->harray + i;
+ if (ent->dir->inode == 0)
+ continue;
+Index: e2fsprogs/e2fsprogs.spec.in
+===================================================================
+--- e2fsprogs.orig/e2fsprogs.spec.in
++++ e2fsprogs/e2fsprogs.spec.in
+@@ -135,6 +135,7 @@ exit 0
+ %{_sbindir}/filefrag
+ %{_sbindir}/mklost+found
+ %{_sbindir}/e2freefrag
++%{_sbindir}/e4defrag
+
+ %{_root_libdir}/libblkid.so.*
+ %{_root_libdir}/libcom_err.so.*
+@@ -180,6 +181,7 @@ exit 0
+ %{_mandir}/man8/tune2fs.8*
+ %{_mandir}/man8/filefrag.8*
+ %{_mandir}/man8/e2freefrag.8*
++%{_mandir}/man8/e4defrag.8*
+
+ %files devel
+ %defattr(-,root,root)
+@@ -212,6 +214,7 @@ exit 0
+ %{_includedir}/blkid
+ %{_includedir}/e2p
+ %{_includedir}/et
++%{_includedir}/com_err.h
+ %{_includedir}/ext2fs
+ %{_includedir}/ss
+ %{_includedir}/uuid
+Index: e2fsprogs/lib/ext2fs/ext2fs.h
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/ext2fs.h
++++ e2fsprogs/lib/ext2fs/ext2fs.h
+@@ -28,6 +28,10 @@ extern "C" {
+ #if (!defined(__GNUC__) && !defined(__WATCOMC__))
+ #define NO_INLINE_FUNCS
+ #endif
++
++#ifndef _XOPEN_SOURCE
++#define _XOPEN_SOURCE 600 /* for posix_memalign() */
++#endif
+
+ /*
+ * Where the master copy of the superblock is located, and how big
+@@ -1396,7 +1400,8 @@ _INLINE_ errcode_t ext2fs_get_memalign(u
+
+ if (align == 0)
+ align = 8;
+- if (retval = posix_memalign((void **) ptr, align, size)) {
++ retval = posix_memalign((void **)ptr, align, size);
++ if (retval != 0) {
+ if (retval == ENOMEM)
+ return EXT2_ET_NO_MEMORY;
+ return retval;
+Index: e2fsprogs/lib/ext2fs/ext2fsP.h
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/ext2fsP.h
++++ e2fsprogs/lib/ext2fs/ext2fsP.h
+@@ -138,6 +138,6 @@ extern errcode_t ext2fs_set_generic_bmap
+ extern errcode_t ext2fs_get_generic_bmap_range(ext2fs_generic_bitmap bitmap,
+ __u64 start, unsigned int num,
+ void *out);
+-extern int ext2fs_warn_bitmap32(ext2fs_generic_bitmap bitmap, const char *func);
++extern void ext2fs_warn_bitmap32(ext2fs_generic_bitmap bitmap,const char *func);
+
+ extern int ext2fs_mem_is_zero(const char *mem, size_t len);
+Index: e2fsprogs/lib/ext2fs/fileio.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/fileio.c
++++ e2fsprogs/lib/ext2fs/fileio.c
+@@ -377,7 +377,7 @@ errcode_t ext2fs_file_set_size2(ext2_fil
+ truncate_block = ((size + file->fs->blocksize - 1) >>
+ EXT2_BLOCK_SIZE_BITS(file->fs->super)) + 1;
+ old_size = file->inode.i_size +
+- ((blk64_t) file->inode.i_size_high) << 32;
++ ((blk64_t)file->inode.i_size_high << 32);
+ old_truncate = ((old_size + file->fs->blocksize - 1) >>
+ EXT2_BLOCK_SIZE_BITS(file->fs->super)) + 1;
+
+Index: e2fsprogs/lib/ext2fs/gen_bitmap64.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/gen_bitmap64.c
++++ e2fsprogs/lib/ext2fs/gen_bitmap64.c
+@@ -547,7 +547,7 @@ void ext2fs_unmark_block_bitmap_range2(e
+ bmap->bitmap_ops->unmark_bmap_extent(bmap, block, num);
+ }
+
+-int ext2fs_warn_bitmap32(ext2fs_generic_bitmap bitmap, const char *func)
++void ext2fs_warn_bitmap32(ext2fs_generic_bitmap bitmap, const char *func)
+ {
+ #ifndef OMIT_COM_ERR
+ if (bitmap && bitmap->description)
+Index: e2fsprogs/lib/ext2fs/openfs.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/openfs.c
++++ e2fsprogs/lib/ext2fs/openfs.c
+@@ -353,7 +353,6 @@ errcode_t ext2fs_open2(const char *name,
+ */
+ if (superblock > 1 && EXT2_HAS_RO_COMPAT_FEATURE(fs->super,
+ EXT4_FEATURE_RO_COMPAT_GDT_CSUM)) {
+- struct ext2_group_desc *gd;
+ dgrp_t group;
+
+ for (group = 0; group < fs->group_desc_count; group++) {
+Index: e2fsprogs/lib/ext2fs/progress.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/progress.c
++++ e2fsprogs/lib/ext2fs/progress.c
+@@ -77,8 +77,6 @@ void ext2fs_numeric_progress_close(ext2_
+ struct ext2fs_numeric_progress_struct * progress,
+ const char *message)
+ {
+- unsigned int len;
+-
+ if (!(fs->flags & EXT2_FLAG_PRINT_PROGRESS))
+ return;
+ fprintf(stdout, "%.*s", (2*progress->log_max)+1, spaces);
+Index: e2fsprogs/lib/ext2fs/unix_io.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/unix_io.c
++++ e2fsprogs/lib/ext2fs/unix_io.c
+@@ -17,7 +17,9 @@
+
+ #define _LARGEFILE_SOURCE
+ #define _LARGEFILE64_SOURCE
++#ifndef _GNU_SOURCE
+ #define _GNU_SOURCE
++#endif
+
+ #include <stdio.h>
+ #include <string.h>
+Index: e2fsprogs/misc/badblocks.c
+===================================================================
+--- e2fsprogs.orig/misc/badblocks.c
++++ e2fsprogs/misc/badblocks.c
+@@ -29,7 +29,9 @@
+ * list. (Work done by David Beattie)
+ */
+
++#ifndef _GNU_SOURCE
+ #define _GNU_SOURCE /* for O_DIRECT */
++#endif
+
+ #ifndef O_LARGEFILE
+ #define O_LARGEFILE 0
+Index: e2fsprogs/misc/e2undo.c
+===================================================================
+--- e2fsprogs.orig/misc/e2undo.c
++++ e2fsprogs/misc/e2undo.c
+@@ -29,12 +29,11 @@ unsigned char blksize_key[] = "filesyste
+
+ char *prg_name;
+
+-static void usage(char *prg_name)
++static void usage(void)
+ {
+ fprintf(stderr,
+ _("Usage: %s <transaction file> <filesystem>\n"), prg_name);
+ exit(1);
+-
+ }
+
+ static int check_filesystem(TDB_CONTEXT *tdb, io_channel channel)
+@@ -145,12 +144,12 @@ int main(int argc, char *argv[])
+ force = 1;
+ break;
+ default:
+- usage(prg_name);
++ usage();
+ }
+ }
+
+- if (argc != optind+2)
+- usage(prg_name);
++ if (argc != optind + 2)
++ usage();
+
+ tdb_file = argv[optind];
+ device_name = argv[optind+1];
+Index: e2fsprogs/misc/tune2fs.8.in
+===================================================================
+--- e2fsprogs.orig/misc/tune2fs.8.in
++++ e2fsprogs/misc/tune2fs.8.in
+@@ -491,6 +491,10 @@ The following filesystem features can be
+ .B dir_index
+ Use hashed b-trees to speed up lookups in large directories.
+ .TP
++.B dir_nlink
++Allow directories to have more than 65000 subdirectories (read-only
++compatible).
++.TP
+ .B filetype
+ Store file type information in directory entries.
+ .TP
+Index: e2fsprogs/misc/tune2fs.c
+===================================================================
+--- e2fsprogs.orig/misc/tune2fs.c
++++ e2fsprogs/misc/tune2fs.c
+@@ -348,7 +348,6 @@ static void update_feature_set(ext2_fils
+ {
+ struct ext2_super_block *sb = fs->super;
+ struct ext2_group_desc *gd;
+- errcode_t retval;
+ __u32 old_features[3];
+ int i, type_err;
+ unsigned int mask_err;
+@@ -1097,7 +1096,7 @@ static int move_block(ext2_filsys fs, ex
+ {
+
+ char *buf;
+- dgrp_t group;
++ dgrp_t group = 0;
+ errcode_t retval;
+ int meta_data = 0;
+ blk64_t blk, new_blk, goal;
--- /dev/null
+Add multi-mount protection support to libext2fs (INCOMPAT_MMP feature).
+
+This allows mke2fs, e2fsck, and others to detect if the filesystem is
+mounted on a remote node (on SAN disks) and avoid corrupting the
+filesystem. For e2fsprogs this only means that it check the MMP block
+to see if the filesystem is in use, and mark the filesystem busy while
+e2fsck is running on the system.
+
+There is no requirement that e2fsck updates the MMP block in any regular
+interval, but e2fsck does this occasionally to provide additional
+information to the sysadmin in case of conflict.
+
+Signed-off-by: Kalpak Shah <kalpak@clusterfs.com>
+Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
+
+Index: e2fsprogs/lib/e2p/feature.c
+===================================================================
+--- e2fsprogs.orig/lib/e2p/feature.c
++++ e2fsprogs/lib/e2p/feature.c
+@@ -73,7 +73,9 @@ static struct feature feature_list[] = {
+ { E2P_FEATURE_INCOMPAT, EXT4_FEATURE_INCOMPAT_64BIT,
+ "64bit" },
+ { E2P_FEATURE_INCOMPAT, EXT4_FEATURE_INCOMPAT_FLEX_BG,
+- "flex_bg"},
++ "flex_bg"},
++ { E2P_FEATURE_INCOMPAT, EXT4_FEATURE_INCOMPAT_MMP,
++ "mmp" },
+ { 0, 0, 0 },
+ };
+
+Index: e2fsprogs/lib/ext2fs/ext2_fs.h
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/ext2_fs.h
++++ e2fsprogs/lib/ext2fs/ext2_fs.h
+@@ -597,7 +597,7 @@ struct ext2_super_block {
+ __u16 s_want_extra_isize; /* New inodes should reserve # bytes */
+ __u32 s_flags; /* Miscellaneous flags */
+ __u16 s_raid_stride; /* RAID stride */
+- __u16 s_mmp_interval; /* # seconds to wait in MMP checking */
++ __u16 s_mmp_update_interval; /* # seconds to wait in MMP checking */
+ __u64 s_mmp_block; /* Block for multi-mount protection */
+ __u32 s_raid_stripe_width; /* blocks on all data disks (N*stride)*/
+ __u8 s_log_groups_per_flex; /* FLEX_BG group size */
+@@ -696,7 +696,8 @@ struct ext2_super_block {
+
+
+ #define EXT2_FEATURE_COMPAT_SUPP 0
+-#define EXT2_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE)
++#define EXT2_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE| \
++ EXT4_FEATURE_INCOMPAT_MMP)
+ #define EXT2_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \
+ EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \
+ EXT4_FEATURE_RO_COMPAT_DIR_NLINK| \
+@@ -780,26 +781,34 @@ struct ext2_dir_entry_2 {
+ /*
+ * This structure will be used for multiple mount protection. It will be
+ * written into the block number saved in the s_mmp_block field in the
+- * superblock.
+- */
+-#define EXT2_MMP_MAGIC 0x004D4D50 /* ASCII for MMP */
+-#define EXT2_MMP_CLEAN 0xFF4D4D50 /* Value of mmp_seq for clean unmount */
+-#define EXT2_MMP_FSCK_ON 0xE24D4D50 /* Value of mmp_seq when being fscked */
++ * superblock. Programs that check MMP should assume that if SEQ_FSCK
++ * (or any unknown code above SEQ_MAX) is present then it is NOT safe
++ * to use the filesystem, regardless of how old the timestamp is.
++ */
++#define EXT2_MMP_MAGIC 0x004D4D50U /* ASCII for MMP */
++#define EXT2_MMP_SEQ_CLEAN 0xFF4D4D50U /* mmp_seq value for clean unmount */
++#define EXT2_MMP_SEQ_FSCK 0xE24D4D50U /* mmp_seq value when being fscked */
++#define EXT2_MMP_SEQ_MAX 0xE24D4D4FU /* maximum valid mmp_seq value */
+
+ struct mmp_struct {
+- __u32 mmp_magic;
+- __u32 mmp_seq;
+- __u64 mmp_time;
+- char mmp_nodename[64];
+- char mmp_bdevname[32];
+- __u16 mmp_interval;
++ __u32 mmp_magic; /* Magic number for MMP */
++ __u32 mmp_seq; /* Sequence no. updated periodically */
++ __u64 mmp_time; /* Time last updated */
++ char mmp_nodename[64]; /* Node which last updated MMP block */
++ char mmp_bdevname[32]; /* Bdev which last updated MMP block */
++ __u16 mmp_check_interval; /* Changed mmp_check_interval */
+ __u16 mmp_pad1;
+- __u32 mmp_pad2;
++ __u32 mmp_pad2[227];
+ };
+
+ /*
+- * Interval in number of seconds to update the MMP sequence number.
++ * Default interval in seconds to update the MMP sequence number.
++ */
++#define EXT2_MMP_UPDATE_INTERVAL 1
++
++/*
++ * Minimum interval for MMP checking in seconds.
+ */
+-#define EXT2_MMP_DEF_INTERVAL 5
++#define EXT2_MMP_MIN_CHECK_INTERVAL 5
+
+ #endif /* _LINUX_EXT2_FS_H */
+Index: e2fsprogs/lib/ext2fs/ext2fs.h
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/ext2fs.h
++++ e2fsprogs/lib/ext2fs/ext2fs.h
+@@ -188,6 +188,7 @@ typedef struct ext2_file *ext2_file_t;
+ #define EXT2_FLAG_64BITS 0x20000
+ #define EXT2_FLAG_PRINT_PROGRESS 0x40000
+ #define EXT2_FLAG_DIRECT_IO 0x80000
++#define EXT2_FLAG_SKIP_MMP 0x100000
+
+ /*
+ * Special flag in the ext2 inode i_flag field that means that this is
+@@ -203,6 +204,15 @@ typedef struct ext2_file *ext2_file_t;
+
+ struct opaque_ext2_group_desc;
+
++/*
++ * The timestamp in the MMP structure will be updated by e2fsck at some
++ * arbitary intervals (start of passes, after every EXT2_MMP_INODE_INTERVAL
++ * inodes in pass1 and pass1b). There is no guarantee that e2fsck is updating
++ * the MMP block in a timely manner, and the updates it does are purely for
++ * the convenience of the sysadmin and not for automatic validation.
++ */
++#define EXT2_MMP_INODE_INTERVAL 20000
++
+ struct struct_ext2_filsys {
+ errcode_t magic;
+ io_channel io;
+@@ -249,6 +259,19 @@ struct struct_ext2_filsys {
+ io_channel image_io;
+
+ /*
++ * Buffers for Multiple mount protection(MMP) block.
++ */
++ void *mmp_buf;
++ void *mmp_unaligned_buf;
++ void *mmp_cmp;
++ int mmp_fd;
++
++ /*
++ * Time at which e2fsck last updated the MMP block.
++ */
++ long mmp_last_written;
++
++ /*
+ * More callback functions
+ */
+ errcode_t (*get_alloc_block)(ext2_filsys fs, blk64_t goal,
+@@ -547,6 +570,7 @@ typedef struct ext2_icount *ext2_icount_
+ EXT3_FEATURE_INCOMPAT_RECOVER|\
+ EXT3_FEATURE_INCOMPAT_EXTENTS|\
+ EXT4_FEATURE_INCOMPAT_FLEX_BG|\
++ EXT4_FEATURE_INCOMPAT_MMP|\
+ EXT4_FEATURE_INCOMPAT_64BIT)
+ #else
+ #define EXT2_LIB_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE|\
+@@ -555,6 +579,7 @@ typedef struct ext2_icount *ext2_icount_
+ EXT3_FEATURE_INCOMPAT_RECOVER|\
+ EXT3_FEATURE_INCOMPAT_EXTENTS|\
+ EXT4_FEATURE_INCOMPAT_FLEX_BG|\
++ EXT4_FEATURE_INCOMPAT_MMP|\
+ EXT4_FEATURE_INCOMPAT_64BIT)
+ #endif
+ #define EXT2_LIB_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER|\
+@@ -1300,6 +1325,16 @@ errcode_t ext2fs_link(ext2_filsys fs, ex
+ errcode_t ext2fs_unlink(ext2_filsys fs, ext2_ino_t dir, const char *name,
+ ext2_ino_t ino, int flags);
+
++/* mmp.c */
++errcode_t ext2fs_mmp_read(ext2_filsys fs, blk_t mmp_blk, void *buf);
++errcode_t ext2fs_mmp_write(ext2_filsys fs, blk_t mmp_blk, void *buf);
++errcode_t ext2fs_mmp_clear(ext2_filsys fs);
++errcode_t ext2fs_mmp_init(ext2_filsys fs);
++errcode_t ext2fs_mmp_start(ext2_filsys fs);
++errcode_t ext2fs_mmp_update(ext2_filsys fs);
++errcode_t ext2fs_mmp_stop(ext2_filsys fs);
++unsigned ext2fs_mmp_new_seq();
++
+ /* read_bb.c */
+ extern errcode_t ext2fs_read_bb_inode(ext2_filsys fs,
+ ext2_badblocks_list *bb_list);
+@@ -1335,6 +1370,7 @@ extern void ext2fs_swap_inode_full(ext2_
+ int bufsize);
+ extern void ext2fs_swap_inode(ext2_filsys fs,struct ext2_inode *t,
+ struct ext2_inode *f, int hostorder);
++extern void ext2fs_swap_mmp(struct mmp_struct *mmp);
+
+ /* valid_blk.c */
+ extern int ext2fs_inode_has_valid_blocks(struct ext2_inode *inode);
+Index: e2fsprogs/lib/ext2fs/tst_super_size.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/tst_super_size.c
++++ e2fsprogs/lib/ext2fs/tst_super_size.c
+@@ -100,7 +100,7 @@ void check_superblock_fields()
+ check_field(s_want_extra_isize);
+ check_field(s_flags);
+ check_field(s_raid_stride);
+- check_field(s_mmp_interval);
++ check_field(s_mmp_update_interval);
+ check_field(s_mmp_block);
+ check_field(s_raid_stripe_width);
+ check_field(s_log_groups_per_flex);
+Index: e2fsprogs/misc/tune2fs.c
+===================================================================
+--- e2fsprogs.orig/misc/tune2fs.c
++++ e2fsprogs/misc/tune2fs.c
+@@ -64,8 +64,9 @@ char *device_name;
+ char *new_label, *new_last_mounted, *new_UUID;
+ char *io_options;
+ static int c_flag, C_flag, e_flag, f_flag, g_flag, i_flag, l_flag, L_flag;
+-static int m_flag, M_flag, r_flag, s_flag = -1, u_flag, U_flag, T_flag;
++static int m_flag, M_flag, r_flag, s_flag = -1, u_flag, U_flag, T_flag, p_flag;
+ static int I_flag;
++static int clear_mmp;
+ static time_t last_check_time;
+ static int print_label;
+ static int max_mount_count, mount_count, mount_flags;
+@@ -75,6 +76,7 @@ static double reserved_ratio;
+ static unsigned long resgid, resuid;
+ static unsigned short errors;
+ static int open_flag;
++static unsigned int mmp_update_interval;
+ static char *features_cmd;
+ static char *mntopts_cmd;
+ static int stride, stripe_width;
+@@ -107,7 +109,7 @@ static void usage(void)
+ "[-g group]\n"
+ "\t[-i interval[d|m|w]] [-j] [-J journal_options] [-l]\n"
+ "\t[-m reserved_blocks_percent] "
+- "[-o [^]mount_options[,...]] \n"
++ "[-o [^]mount_options[,...]] [-p mmp_update_interval]\n"
+ "\t[-r reserved_blocks_count] [-u user] [-C mount_count] "
+ "[-L volume_label]\n"
+ "\t[-M last_mounted_dir] [-O [^]feature[,...]]\n"
+@@ -123,7 +125,8 @@ static __u32 ok_features[3] = {
+ /* Incompat */
+ EXT2_FEATURE_INCOMPAT_FILETYPE |
+ EXT3_FEATURE_INCOMPAT_EXTENTS |
+- EXT4_FEATURE_INCOMPAT_FLEX_BG,
++ EXT4_FEATURE_INCOMPAT_FLEX_BG |
++ EXT4_FEATURE_INCOMPAT_MMP,
+ /* R/O compat */
+ EXT2_FEATURE_RO_COMPAT_LARGE_FILE |
+ EXT4_FEATURE_RO_COMPAT_HUGE_FILE|
+@@ -140,7 +143,8 @@ static __u32 clear_ok_features[3] = {
+ EXT2_FEATURE_COMPAT_DIR_INDEX,
+ /* Incompat */
+ EXT2_FEATURE_INCOMPAT_FILETYPE |
+- EXT4_FEATURE_INCOMPAT_FLEX_BG,
++ EXT4_FEATURE_INCOMPAT_FLEX_BG |
++ EXT4_FEATURE_INCOMPAT_MMP,
+ /* R/O compat */
+ EXT2_FEATURE_RO_COMPAT_LARGE_FILE |
+ EXT4_FEATURE_RO_COMPAT_HUGE_FILE|
+@@ -152,7 +156,7 @@ static __u32 clear_ok_features[3] = {
+ /*
+ * Remove an external journal from the filesystem
+ */
+-static void remove_journal_device(ext2_filsys fs)
++static int remove_journal_device(ext2_filsys fs)
+ {
+ char *journal_path;
+ ext2_filsys jfs;
+@@ -241,13 +245,15 @@ static void remove_journal_device(ext2_f
+ no_valid_journal:
+ if (commit_remove_journal == 0) {
+ fputs(_("Journal NOT removed\n"), stderr);
+- exit(1);
++ return 1;
+ }
+ fs->super->s_journal_dev = 0;
+ uuid_clear(fs->super->s_journal_uuid);
+ ext2fs_mark_super_dirty(fs);
+ fputs(_("Journal removed\n"), stdout);
+ free(journal_path);
++
++ return 0;
+ }
+
+ /* Helper function for remove_journal_inode */
+@@ -272,7 +278,7 @@ static int release_blocks_proc(ext2_fils
+ /*
+ * Remove the journal inode from the filesystem
+ */
+-static void remove_journal_inode(ext2_filsys fs)
++static errcode_t remove_journal_inode(ext2_filsys fs)
+ {
+ struct ext2_inode inode;
+ errcode_t retval;
+@@ -282,14 +288,14 @@ static void remove_journal_inode(ext2_fi
+ if (retval) {
+ com_err(program_name, retval,
+ _("while reading journal inode"));
+- exit(1);
++ return retval;
+ }
+ if (ino == EXT2_JOURNAL_INO) {
+ retval = ext2fs_read_bitmaps(fs);
+ if (retval) {
+ com_err(program_name, retval,
+ _("while reading bitmaps"));
+- exit(1);
++ return retval;
+ }
+ retval = ext2fs_block_iterate3(fs, ino,
+ BLOCK_FLAG_READ_ONLY, NULL,
+@@ -297,7 +303,7 @@ static void remove_journal_inode(ext2_fi
+ if (retval) {
+ com_err(program_name, retval,
+ _("while clearing journal inode"));
+- exit(1);
++ return retval;
+ }
+ memset(&inode, 0, sizeof(inode));
+ ext2fs_mark_bb_dirty(fs);
+@@ -308,25 +314,29 @@ static void remove_journal_inode(ext2_fi
+ if (retval) {
+ com_err(program_name, retval,
+ _("while writing journal inode"));
+- exit(1);
++ return retval;
+ }
+ fs->super->s_journal_inum = 0;
+ ext2fs_mark_super_dirty(fs);
++
++ return 0;
+ }
+
+ /*
+ * Update the default mount options
+ */
+-static void update_mntopts(ext2_filsys fs, char *mntopts)
++static int update_mntopts(ext2_filsys fs, char *mntopts)
+ {
+ struct ext2_super_block *sb = fs->super;
+
+ if (e2p_edit_mntopts(mntopts, &sb->s_default_mount_opts, ~0)) {
+ fprintf(stderr, _("Invalid mount option set: %s\n"),
+ mntopts);
+- exit(1);
++ return 1;
+ }
+ ext2fs_mark_super_dirty(fs);
++
++ return 0;
+ }
+
+ static void request_fsck_afterwards(ext2_filsys fs)
+@@ -344,7 +354,7 @@ static void request_fsck_afterwards(ext2
+ /*
+ * Update the feature set as provided by the user.
+ */
+-static void update_feature_set(ext2_filsys fs, char *features)
++static int update_feature_set(ext2_filsys fs, char *features)
+ {
+ struct ext2_super_block *sb = fs->super;
+ struct ext2_group_desc *gd;
+@@ -380,7 +390,7 @@ static void update_feature_set(ext2_fils
+ fprintf(stderr, _("Setting filesystem feature '%s' "
+ "not supported.\n"),
+ e2p_feature2string(type_err, mask_err));
+- exit(1);
++ return 1;
+ }
+
+ if (FEATURE_OFF(E2P_FEATURE_COMPAT, EXT3_FEATURE_COMPAT_HAS_JOURNAL)) {
+@@ -390,22 +400,89 @@ static void update_feature_set(ext2_fils
+ "cleared when the filesystem is\n"
+ "unmounted or mounted "
+ "read-only.\n"), stderr);
+- exit(1);
++ return 1;
+ }
+ if (sb->s_feature_incompat &
+ EXT3_FEATURE_INCOMPAT_RECOVER) {
+ fputs(_("The needs_recovery flag is set. "
+ "Please run e2fsck before clearing\n"
+ "the has_journal flag.\n"), stderr);
+- exit(1);
++ return 1;
+ }
+ if (sb->s_journal_inum) {
+- remove_journal_inode(fs);
++ if (remove_journal_inode(fs))
++ return 1;
+ }
+ if (sb->s_journal_dev) {
+- remove_journal_device(fs);
++ if (remove_journal_device(fs))
++ return 1;
+ }
+ }
++ if (FEATURE_ON(E2P_FEATURE_INCOMPAT, EXT4_FEATURE_INCOMPAT_MMP)) {
++ int error;
++
++ if ((mount_flags & EXT2_MF_MOUNTED) ||
++ (mount_flags & EXT2_MF_READONLY)) {
++ fputs(_("The multiple mount protection feature can't \n"
++ "be set if the filesystem is mounted or \n"
++ "read-only.\n"), stderr);
++ return 1;
++ }
++
++ error = ext2fs_mmp_init(fs);
++ if (error) {
++ fputs(_("\nError while enabling multiple mount "
++ "protection feature."), stderr);
++ return 1;
++ }
++
++ /*
++ * We want to update group desc with the new free blocks count
++ */
++ fs->flags &= ~EXT2_FLAG_SUPER_ONLY;
++
++ printf(_("Multiple mount protection has been enabled "
++ "with update interval %ds.\n"),
++ sb->s_mmp_update_interval);
++ }
++
++ if (FEATURE_OFF(E2P_FEATURE_INCOMPAT, EXT4_FEATURE_INCOMPAT_MMP)) {
++ int error;
++
++ if (mount_flags & EXT2_MF_READONLY) {
++ fputs(_("The multiple mount protection feature cannot\n"
++ "be disabled if the filesystem is readonly.\n"),
++ stderr);
++ return 1;
++ }
++
++ error = ext2fs_read_bitmaps(fs);
++ if (error) {
++ fputs(_("Error while reading bitmaps\n"), stderr);
++ return 1;
++ }
++
++ error = ext2fs_mmp_read(fs, sb->s_mmp_block, NULL);
++ if (error) {
++ struct mmp_struct *mmp_cmp = fs->mmp_cmp;
++
++ if (error == EXT2_ET_MMP_MAGIC_INVALID)
++ printf(_("Magic number in MMP block does not "
++ "match. expected: %x, actual: %x\n"),
++ EXT2_MMP_MAGIC, mmp_cmp->mmp_magic);
++ else
++ com_err (program_name, error,
++ _("while reading MMP block."));
++ goto mmp_error;
++ }
++
++ /* We need to force out the group descriptors as well */
++ fs->flags &= ~EXT2_FLAG_SUPER_ONLY;
++ ext2fs_block_alloc_stats(fs, sb->s_mmp_block, -1);
++mmp_error:
++ sb->s_mmp_block = 0;
++ sb->s_mmp_update_interval = 0;
++ }
+
+ if (FEATURE_ON(E2P_FEATURE_COMPAT, EXT3_FEATURE_COMPAT_HAS_JOURNAL)) {
+ /*
+@@ -497,12 +574,14 @@ static void update_feature_set(ext2_fils
+ (old_features[E2P_FEATURE_INCOMPAT] != sb->s_feature_incompat) ||
+ (old_features[E2P_FEATURE_RO_INCOMPAT] != sb->s_feature_ro_compat))
+ ext2fs_mark_super_dirty(fs);
++
++ return 0;
+ }
+
+ /*
+ * Add a journal to the filesystem.
+ */
+-static void add_journal(ext2_filsys fs)
++static int add_journal(ext2_filsys fs)
+ {
+ unsigned long journal_blocks;
+ errcode_t retval;
+@@ -557,7 +636,7 @@ static void add_journal(ext2_filsys fs)
+ fprintf(stderr, "\n");
+ com_err(program_name, retval,
+ _("\n\twhile trying to create journal file"));
+- exit(1);
++ return retval;
+ } else
+ fputs(_("done\n"), stdout);
+ /*
+@@ -568,11 +647,11 @@ static void add_journal(ext2_filsys fs)
+ fs->flags &= ~EXT2_FLAG_SUPER_ONLY;
+ }
+ print_check_message(fs);
+- return;
++ return 0;
+
+ err:
+ free(journal_device);
+- exit(1);
++ return 1;
+ }
+
+
+@@ -640,7 +719,7 @@ static void parse_tune2fs_options(int ar
+ open_flag = 0;
+
+ printf("tune2fs %s (%s)\n", E2FSPROGS_VERSION, E2FSPROGS_DATE);
+- while ((c = getopt(argc, argv, "c:e:fg:i:jlm:o:r:s:u:C:E:I:J:L:M:O:T:U:")) != EOF)
++ while ((c = getopt(argc, argv, "c:e:fg:i:jlm:o:p:r:s:u:C:E:I:J:L:M:O:T:U:")) != EOF)
+ switch (c) {
+ case 'c':
+ max_mount_count = strtol(optarg, &tmp, 0);
+@@ -795,6 +874,25 @@ static void parse_tune2fs_options(int ar
+ features_cmd = optarg;
+ open_flag = EXT2_FLAG_RW;
+ break;
++ case 'p':
++ mmp_update_interval = strtol(optarg, &tmp, 0);
++ if (*tmp && mmp_update_interval < 0) {
++ com_err(program_name, 0,
++ _("invalid mmp update interval"));
++ usage();
++ }
++ if (mmp_update_interval == 0)
++ mmp_update_interval = EXT2_MMP_UPDATE_INTERVAL;
++ if (mmp_update_interval > EXT2_MMP_UPDATE_INTERVAL) {
++ com_err(program_name, 0,
++ _("MMP update interval of %s seconds "
++ "may be dangerous under high load. "
++ "Consider decreasing it."),
++ optarg);
++ }
++ p_flag = 1;
++ open_flag = EXT2_FLAG_RW;
++ break;
+ case 'r':
+ reserved_blocks = strtoul(optarg, &tmp, 0);
+ if (*tmp) {
+@@ -899,7 +997,7 @@ void do_findfs(int argc, char **argv)
+ }
+ #endif
+
+-static void parse_extended_opts(ext2_filsys fs, const char *opts)
++static int parse_extended_opts(ext2_filsys fs, const char *opts)
+ {
+ char *buf, *token, *next, *p, *arg;
+ int len, hash_alg;
+@@ -910,7 +1008,7 @@ static void parse_extended_opts(ext2_fil
+ if (!buf) {
+ fprintf(stderr,
+ _("Couldn't allocate memory to parse options!\n"));
+- exit(1);
++ return 1;
+ }
+ strcpy(buf, opts);
+ for (token = buf; token && *token; token = next) {
+@@ -933,6 +1031,9 @@ static void parse_extended_opts(ext2_fil
+ fs->super->s_flags &= ~EXT2_FLAGS_TEST_FILESYS;
+ printf("Clearing test filesystem flag\n");
+ ext2fs_mark_super_dirty(fs);
++ } else if (strcmp(token, "clear-mmp") == 0 ||
++ strcmp(token, "clear_mmp") == 0) {
++ clear_mmp = 1;
+ } else if (strcmp(token, "stride") == 0) {
+ if (!arg) {
+ r_usage++;
+@@ -1002,15 +1103,18 @@ static void parse_extended_opts(ext2_fil
+ "and may take an argument which\n"
+ "\tis set off by an equals ('=') sign.\n\n"
+ "Valid extended options are:\n"
++ "\tclear-mmp\n"
+ "\tstride=<RAID per-disk chunk size in blocks>\n"
+ "\tstripe_width=<RAID stride*data disks in blocks>\n"
+ "\thash_alg=<hash algorithm>\n"
+ "\ttest_fs\n"
+ "\t^test_fs\n"));
+ free(buf);
+- exit(1);
++ return 1;
+ }
+ free(buf);
++
++ return 0;
+ }
+
+ /*
+@@ -1590,6 +1694,7 @@ int main(int argc, char **argv)
+ ext2_filsys fs;
+ struct ext2_super_block *sb;
+ io_manager io_ptr, io_ptr_orig = NULL;
++ int rc = 0;
+
+ #ifdef ENABLE_NLS
+ setlocale(LC_MESSAGES, "");
+@@ -1619,14 +1724,26 @@ int main(int argc, char **argv)
+ io_ptr = unix_io_manager;
+
+ retry_open:
++ if ((open_flag & EXT2_FLAG_RW) == 0 || f_flag)
++ open_flag |= EXT2_FLAG_SKIP_MMP;
++
+ retval = ext2fs_open2(device_name, io_options, open_flag,
+ 0, 0, io_ptr, &fs);
+ if (retval) {
+- com_err(program_name, retval,
+- _("while trying to open %s"),
++ com_err(program_name, retval,
++ _("while trying to open %s"),
+ device_name);
+- fprintf(stderr,
+- _("Couldn't find valid filesystem superblock.\n"));
++ if (retval == EXT2_ET_MMP_FSCK_ON)
++ fprintf(stderr,
++ _("If you are sure e2fsck is not running then "
++ "use 'tune2fs -f -E clear_mmp {device}'\n"));
++ else if (retval == EXT2_ET_MMP_MAGIC_INVALID)
++ fprintf(stderr,
++ _("Magic for mmp is wrong. Try to fix it by "
++ "using 'fsck {device}'\n"));
++ else if (retval != EXT2_ET_MMP_FAILED)
++ fprintf(stderr,
++ _("Couldn't find valid filesystem superblock.\n"));
+ exit(1);
+ }
+
+@@ -1639,12 +1756,14 @@ retry_open:
+ if (new_inode_size == EXT2_INODE_SIZE(fs->super)) {
+ fprintf(stderr, _("The inode size is already %lu\n"),
+ new_inode_size);
+- exit(1);
++ rc = 1;
++ goto closefs;
+ }
+ if (new_inode_size < EXT2_INODE_SIZE(fs->super)) {
+ fprintf(stderr, _("Shrinking the inode size is "
+ "not supported\n"));
+- exit(1);
++ rc = 1;
++ goto closefs;
+ }
+
+ /*
+@@ -1653,8 +1772,10 @@ retry_open:
+ */
+ io_ptr_orig = io_ptr;
+ retval = tune2fs_setup_tdb(device_name, &io_ptr);
+- if (retval)
+- exit(1);
++ if (retval) {
++ rc = 1;
++ goto closefs;
++ }
+ if (io_ptr != io_ptr_orig) {
+ ext2fs_close(fs);
+ goto retry_open;
+@@ -1669,7 +1790,7 @@ retry_open:
+ printf("%.*s\n", (int) sizeof(sb->s_volume_name),
+ sb->s_volume_name);
+ remove_error_table(&et_ext2_error_table);
+- exit(0);
++ goto closefs;
+ }
+
+ retval = ext2fs_check_if_mounted(device_name, &mount_flags);
+@@ -1677,7 +1798,8 @@ retry_open:
+ com_err("ext2fs_check_if_mount", retval,
+ _("while determining whether %s is mounted."),
+ device_name);
+- exit(1);
++ rc = 1;
++ goto closefs;
+ }
+ /* Normally we only need to write out the superblock */
+ fs->flags |= EXT2_FLAG_SUPER_ONLY;
+@@ -1716,12 +1838,19 @@ retry_open:
+ printf (_("Setting reserved blocks percentage to %g%% (%llu blocks)\n"),
+ reserved_ratio, ext2fs_r_blocks_count(sb));
+ }
++ if (p_flag) {
++ sb->s_mmp_update_interval = mmp_update_interval;
++ ext2fs_mark_super_dirty(fs);
++ printf(_("Setting multiple mount protection update interval to "
++ "%u seconds\n"), mmp_update_interval);
++ }
+ if (r_flag) {
+ if (reserved_blocks >= ext2fs_blocks_count(sb)/2) {
+ com_err(program_name, 0,
+ _("reserved blocks count is too big (%llu)"),
+ reserved_blocks);
+- exit(1);
++ rc = 1;
++ goto closefs;
+ }
+ ext2fs_r_blocks_count_set(sb, reserved_blocks);
+ ext2fs_mark_super_dirty(fs);
+@@ -1745,7 +1874,8 @@ retry_open:
+ if (s_flag == 0) {
+ fputs(_("\nClearing the sparse superflag not supported.\n"),
+ stderr);
+- exit(1);
++ rc = 1;
++ goto closefs;
+ }
+ if (T_flag) {
+ sb->s_lastcheck = last_check_time;
+@@ -1773,14 +1903,36 @@ retry_open:
+ sizeof(sb->s_last_mounted));
+ ext2fs_mark_super_dirty(fs);
+ }
+- if (mntopts_cmd)
+- update_mntopts(fs, mntopts_cmd);
+- if (features_cmd)
+- update_feature_set(fs, features_cmd);
+- if (extended_cmd)
+- parse_extended_opts(fs, extended_cmd);
+- if (journal_size || journal_device)
+- add_journal(fs);
++ if (mntopts_cmd) {
++ rc = update_mntopts(fs, mntopts_cmd);
++ if (rc)
++ goto closefs;
++ }
++ if (features_cmd) {
++ rc = update_feature_set(fs, features_cmd);
++ if (rc)
++ goto closefs;
++ }
++ if (extended_cmd) {
++ rc = parse_extended_opts(fs, extended_cmd);
++ if (rc)
++ goto closefs;
++ if (clear_mmp && !f_flag) {
++ fputs(_("Error in using clear_mmp. "
++ "It must be used with -f\n"),
++ stderr);
++ goto closefs;
++ }
++ }
++ if (clear_mmp) {
++ rc = ext2fs_mmp_clear(fs);
++ goto closefs;
++ }
++ if (journal_size || journal_device) {
++ rc = add_journal(fs);
++ if (rc);
++ goto closefs;
++ }
+
+ if (U_flag) {
+ int set_csum = 0;
+@@ -1808,7 +1960,8 @@ retry_open:
+ uuid_generate(sb->s_uuid);
+ } else if (uuid_parse(new_UUID, sb->s_uuid)) {
+ com_err(program_name, 0, _("Invalid UUID format\n"));
+- exit(1);
++ rc = 1;
++ goto closefs;
+ }
+ if (set_csum) {
+ for (i = 0; i < fs->group_desc_count; i++)
+@@ -1822,7 +1975,8 @@ retry_open:
+ fputs(_("The inode size may only be "
+ "changed when the filesystem is "
+ "unmounted.\n"), stderr);
+- exit(1);
++ rc = 1;
++ goto closefs;
+ }
+ if (fs->super->s_feature_incompat &
+ EXT4_FEATURE_INCOMPAT_FLEX_BG) {
+@@ -1868,5 +2022,12 @@ retry_open:
+
+ free(device_name);
+ remove_error_table(&et_ext2_error_table);
++
++closefs:
++ if (rc) {
++ ext2fs_mmp_stop(fs);
++ exit(1);
++ }
++
+ return (ext2fs_close(fs) ? 1 : 0);
+ }
+Index: e2fsprogs/e2fsck/pass1.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/pass1.c
++++ e2fsprogs/e2fsck/pass1.c
+@@ -878,7 +878,20 @@ void e2fsck_pass1(e2fsck_t ctx)
+ (fs->super->s_mtime < fs->super->s_inodes_count))
+ busted_fs_time = 1;
+
++ if ((fs->super->s_feature_incompat & EXT4_FEATURE_INCOMPAT_MMP) &&
++ !(fs->super->s_mmp_block <= fs->super->s_first_data_block ||
++ fs->super->s_mmp_block >= fs->super->s_blocks_count))
++ ext2fs_mark_block_bitmap2(ctx->block_found_map,
++ fs->super->s_mmp_block);
++
+ while (1) {
++ if (ino % EXT2_MMP_INODE_INTERVAL == 0) {
++ errcode_t error;
++
++ error = e2fsck_mmp_update(fs);
++ if (error)
++ fatal_error(ctx, 0);
++ }
+ old_op = ehandler_operation(_("getting next inode from scan"));
+ pctx.errcode = ext2fs_get_next_inode_full(scan, &ino,
+ inode, inode_size);
+Index: e2fsprogs/e2fsck/pass1b.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/pass1b.c
++++ e2fsprogs/e2fsck/pass1b.c
+@@ -286,6 +286,13 @@ static void pass1b(e2fsck_t ctx, char *b
+ pb.pctx = &pctx;
+ pctx.str = "pass1b";
+ while (1) {
++ if (ino % EXT2_MMP_INODE_INTERVAL == 0) {
++ errcode_t error;
++
++ error = e2fsck_mmp_update(fs);
++ if (error)
++ fatal_error(ctx, 0);
++ }
+ pctx.errcode = ext2fs_get_next_inode(scan, &ino, &inode);
+ if (pctx.errcode == EXT2_ET_BAD_BLOCK_IN_INODE_TABLE)
+ continue;
+Index: e2fsprogs/e2fsck/unix.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/unix.c
++++ e2fsprogs/e2fsck/unix.c
+@@ -1068,6 +1068,70 @@ static errcode_t try_open_fs(e2fsck_t ct
+ static const char *my_ver_string = E2FSPROGS_VERSION;
+ static const char *my_ver_date = E2FSPROGS_DATE;
+
++int e2fsck_check_mmp(ext2_filsys fs, e2fsck_t ctx)
++{
++ struct mmp_struct *mmp_s;
++ unsigned int mmp_check_interval;
++ errcode_t retval = 0;
++ struct problem_context pctx;
++ unsigned int wait_time = 0;
++
++ clear_problem_context(&pctx);
++ if (fs->mmp_buf == NULL) {
++ retval = ext2fs_get_mem(fs->blocksize, &fs->mmp_buf);
++ if (retval)
++ goto check_error;
++ }
++
++ retval = ext2fs_mmp_read(fs, fs->super->s_mmp_block, fs->mmp_buf);
++ if (retval)
++ goto check_error;
++
++ mmp_s = fs->mmp_buf;
++
++ mmp_check_interval = fs->super->s_mmp_update_interval;
++ if (mmp_check_interval < EXT2_MMP_MIN_CHECK_INTERVAL)
++ mmp_check_interval = EXT2_MMP_MIN_CHECK_INTERVAL;
++
++ /*
++ * If check_interval in MMP block is larger, use that instead of
++ * check_interval from the superblock.
++ */
++ if (mmp_s->mmp_check_interval > mmp_check_interval)
++ mmp_check_interval = mmp_s->mmp_check_interval;
++
++ wait_time = mmp_check_interval * 2 + 1;
++
++ /* Print warning if e2fck will wait for more than 20 secs. */
++ if (wait_time > EXT2_MMP_MIN_CHECK_INTERVAL * 4) {
++ printf("MMP interval is %u seconds and total wait time is %u "
++ "seconds. Please wait...\n",
++ mmp_check_interval, wait_time * 2);
++ }
++
++ return 0;
++
++check_error:
++
++ if (retval == EXT2_ET_MMP_BAD_BLOCK) {
++ if (fix_problem(ctx, PR_0_MMP_INVALID_BLK, &pctx)) {
++ fs->super->s_mmp_block = 0;
++ ext2fs_mark_super_dirty(fs);
++ }
++ } else if (retval == EXT2_ET_MMP_FAILED) {
++ dump_mmp_msg(fs->mmp_buf, NULL);
++ } else if (retval == EXT2_ET_MMP_FSCK_ON) {
++ dump_mmp_msg(fs->mmp_buf,
++ _("If you are sure that e2fsck "
++ "is not running on any node then use "
++ "'tune2fs -f -E clear_mmp {device}'\n"));
++ } else if (retval == EXT2_ET_MMP_MAGIC_INVALID) {
++ if (fix_problem(ctx, PR_0_MMP_INVALID_MAGIC, &pctx))
++ ext2fs_mmp_clear(fs);
++ }
++ return 1;
++}
++
+ int main (int argc, char *argv[])
+ {
+ errcode_t retval = 0, retval2 = 0, orig_retval = 0;
+@@ -1137,6 +1201,8 @@ int main (int argc, char *argv[])
+ _("need terminal for interactive repairs"));
+ }
+ ctx->superblock = ctx->use_superblock;
++
++ flags = EXT2_FLAG_SKIP_MMP;
+ restart:
+ #ifdef CONFIG_TESTIO_DEBUG
+ if (getenv("TEST_IO_FLAGS") || getenv("TEST_IO_BLOCK")) {
+@@ -1145,7 +1211,7 @@ restart:
+ } else
+ #endif
+ io_ptr = unix_io_manager;
+- flags = EXT2_FLAG_NOFREE_ON_ERROR;
++ flags |= EXT2_FLAG_NOFREE_ON_ERROR;
+ profile_get_boolean(ctx->profile, "options", "old_bitmaps", 0, 0,
+ &old_bitmaps);
+ if (!old_bitmaps)
+@@ -1319,6 +1385,21 @@ failure:
+
+ ehandler_init(fs->io);
+
++ if ((fs->super->s_feature_incompat & EXT4_FEATURE_INCOMPAT_MMP) &&
++ (flags & EXT2_FLAG_SKIP_MMP)) {
++ if (e2fsck_check_mmp(fs, ctx))
++ fatal_error(ctx, 0);
++ }
++
++ /*
++ * Restart in order to reopen fs but this time start mmp.
++ */
++ if (flags & EXT2_FLAG_SKIP_MMP) {
++ ext2fs_close(fs);
++ flags &=~EXT2_FLAG_SKIP_MMP;
++ goto restart;
++ }
++
+ if ((ctx->mount_flags & EXT2_MF_MOUNTED) &&
+ !(sb->s_feature_incompat & EXT3_FEATURE_INCOMPAT_RECOVER))
+ goto skip_journal;
+Index: e2fsprogs/e2fsck/problem.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/problem.c
++++ e2fsprogs/e2fsck/problem.c
+@@ -414,6 +414,16 @@ static struct e2fsck_problem problem_tab
+ N_("Disable extra_isize feature since @f has 128 byte inodes.\n"),
+ PROMPT_NONE, 0 },
+
++ /* Superblock has invalid MMP block. */
++ { PR_0_MMP_INVALID_BLK,
++ N_("@S has invalid MMP block. "),
++ PROMPT_CLEAR, PR_PREEN_OK },
++
++ /* Superblock has invalid MMP magic. */
++ { PR_0_MMP_INVALID_MAGIC,
++ N_("@S has invalid MMP magic. "),
++ PROMPT_FIX, PR_PREEN_OK | PR_NO_OK},
++
+
+ /* Pass 1 errors */
+
+Index: e2fsprogs/e2fsck/problem.h
+===================================================================
+--- e2fsprogs.orig/e2fsck/problem.h
++++ e2fsprogs/e2fsck/problem.h
+@@ -238,6 +238,11 @@ struct problem_context {
+ /* Clear EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE flag */
+ #define PR_0_CLEAR_EXTRA_ISIZE 0x000042
+
++/* Superblock has invalid MMP block. */
++#define PR_0_MMP_INVALID_BLK 0x000043
++
++/* Superblock has invalid MMP magic. */
++#define PR_0_MMP_INVALID_MAGIC 0x000044
+
+ /*
+ * Pass 1 errors
+Index: e2fsprogs/lib/ext2fs/swapfs.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/swapfs.c
++++ e2fsprogs/lib/ext2fs/swapfs.c
+@@ -70,6 +70,8 @@ void ext2fs_swap_super(struct ext2_super
+ sb->s_min_extra_isize = ext2fs_swab16(sb->s_min_extra_isize);
+ sb->s_want_extra_isize = ext2fs_swab16(sb->s_want_extra_isize);
+ sb->s_flags = ext2fs_swab32(sb->s_flags);
++ sb->s_mmp_update_interval = ext2fs_swab16(sb->s_mmp_update_interval);
++ sb->s_mmp_block = ext2fs_swab64(sb->s_mmp_block);
+ sb->s_kbytes_written = ext2fs_swab64(sb->s_kbytes_written);
+ sb->s_snapshot_inum = ext2fs_swab32(sb->s_snapshot_inum);
+ sb->s_snapshot_id = ext2fs_swab32(sb->s_snapshot_id);
+@@ -312,4 +314,12 @@ void ext2fs_swap_inode(ext2_filsys fs, s
+ sizeof(struct ext2_inode));
+ }
+
++void ext2fs_swap_mmp(struct mmp_struct *mmp)
++{
++ mmp->mmp_magic = ext2fs_swab32(mmp->mmp_magic);
++ mmp->mmp_seq = ext2fs_swab32(mmp->mmp_seq);
++ mmp->mmp_time = ext2fs_swab64(mmp->mmp_time);
++ mmp->mmp_check_interval = ext2fs_swab16(mmp->mmp_check_interval);
++}
++
+ #endif
+Index: e2fsprogs/lib/ext2fs/ext2_err.et.in
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/ext2_err.et.in
++++ e2fsprogs/lib/ext2fs/ext2_err.et.in
+@@ -446,4 +446,25 @@ ec EXT2_ET_EA_NAME_NOT_FOUND,
+ ec EXT2_ET_EA_NAME_EXISTS,
+ "Extended attribute name already exists"
+
++ec EXT2_ET_MMP_MAGIC_INVALID,
++ "MMP: invalid magic number"
++
++ec EXT2_ET_MMP_FAILED,
++ "MMP: device currently active"
++
++ec EXT2_ET_MMP_FSCK_ON,
++ "MMP: fsck being run"
++
++ec EXT2_ET_MMP_BAD_BLOCK,
++ "MMP: block number beyond filesystem range"
++
++ec EXT2_ET_MMP_UNKNOWN_SEQ,
++ "MMP: undergoing an unknown operation"
++
++ec EXT2_ET_MMP_CHANGE_ABORT,
++ "MMP: filesystem still in use"
++
++ec EXT2_ET_MMP_OPEN_DIRECT,
++ "MMP: open with O_DIRECT failed"
++
+ end
+Index: e2fsprogs/lib/ext2fs/openfs.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/openfs.c
++++ e2fsprogs/lib/ext2fs/openfs.c
+@@ -22,6 +22,9 @@
+ #if HAVE_SYS_TYPES_H
+ #include <sys/types.h>
+ #endif
++#ifdef HAVE_ERRNO_H
++#include <errno.h>
++#endif
+
+ #include "ext2_fs.h"
+
+@@ -82,6 +85,7 @@ errcode_t ext2fs_open(const char *name,
+ * EXT2_FLAG_FORCE - Open the filesystem even if some of the
+ * features aren't supported.
+ * EXT2_FLAG_JOURNAL_DEV_OK - Open an ext3 journal device
++ * EXT2_FLAG_SKIP_MMP - Open without multi-mount protection check.
+ */
+ errcode_t ext2fs_open2(const char *name, const char *io_options,
+ int flags, int superblock,
+@@ -365,6 +369,18 @@ errcode_t ext2fs_open2(const char *name,
+
+ fs->flags &= ~EXT2_FLAG_NOFREE_ON_ERROR;
+ *ret_fs = fs;
++
++ if ((fs->super->s_feature_incompat & EXT4_FEATURE_INCOMPAT_MMP) &&
++ !(flags & EXT2_FLAG_SKIP_MMP)
++ && (flags & (EXT2_FLAG_RW | EXT2_FLAG_EXCLUSIVE))) {
++ retval = ext2fs_mmp_start(fs);
++ if (retval) {
++ fs->flags |= EXT2_FLAG_SKIP_MMP; /* just do cleanup */
++ ext2fs_mmp_stop(fs);
++ goto cleanup;
++ }
++ }
++
+ return 0;
+ cleanup:
+ if (flags & EXT2_FLAG_NOFREE_ON_ERROR)
+Index: e2fsprogs/lib/ext2fs/closefs.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/closefs.c
++++ e2fsprogs/lib/ext2fs/closefs.c
+@@ -455,6 +455,11 @@ errcode_t ext2fs_close(ext2_filsys fs)
+ if (retval)
+ return retval;
+ }
++
++ retval = ext2fs_mmp_stop(fs);
++ if (retval)
++ return retval;
++
+ ext2fs_free(fs);
+ return 0;
+ }
+Index: e2fsprogs/e2fsck/e2fsck.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/e2fsck.c
++++ e2fsprogs/e2fsck/e2fsck.c
+@@ -202,6 +202,7 @@ int e2fsck_run(e2fsck_t ctx)
+ {
+ int i;
+ pass_t e2fsck_pass;
++ int error;
+
+ #ifdef HAVE_SETJMP_H
+ if (setjmp(ctx->abort_loc)) {
+@@ -214,6 +215,9 @@ int e2fsck_run(e2fsck_t ctx)
+ for (i=0; (e2fsck_pass = e2fsck_passes[i]); i++) {
+ if (ctx->flags & E2F_FLAG_RUN_RETURN)
+ break;
++ error = e2fsck_mmp_update(ctx->fs);
++ if (error)
++ fatal_error(ctx, 0);
+ e2fsck_pass(ctx);
+ if (ctx->progress)
+ (void) (ctx->progress)(ctx, 0, 0, 0);
+Index: e2fsprogs/e2fsck/e2fsck.h
+===================================================================
+--- e2fsprogs.orig/e2fsck/e2fsck.h
++++ e2fsprogs/e2fsck/e2fsck.h
+@@ -569,6 +569,8 @@ extern blk_t get_backup_sb(e2fsck_t ctx,
+ const char *name, io_manager manager);
+ extern int ext2_file_type(unsigned int mode);
+ extern int write_all(int fd, char *buf, size_t count);
++void dump_mmp_msg(struct mmp_struct *mmp, const char *msg);
++errcode_t e2fsck_mmp_update(ext2_filsys fs);
+
+ /* unix.c */
+ extern void e2fsck_clear_progbar(e2fsck_t ctx);
+Index: e2fsprogs/e2fsck/util.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/util.c
++++ e2fsprogs/e2fsck/util.c
+@@ -48,6 +48,7 @@ void fatal_error(e2fsck_t ctx, const cha
+ if (msg)
+ fprintf (stderr, "e2fsck: %s\n", msg);
+ if (ctx->fs && ctx->fs->io) {
++ ext2fs_mmp_stop(ctx->fs);
+ if (ctx->fs->io->magic == EXT2_ET_MAGIC_IO_CHANNEL)
+ io_channel_flush(ctx->fs->io);
+ else
+@@ -709,3 +710,24 @@ int write_all(int fd, char *buf, size_t
+ }
+ return c;
+ }
++
++void dump_mmp_msg(struct mmp_struct *mmp, const char *msg)
++{
++ if (msg)
++ printf("MMP check failed: %s\n", msg);
++ printf("MMP failure info: last update time: %llu node: %s device: %s\n",
++ (long long)mmp->mmp_time, mmp->mmp_nodename, mmp->mmp_bdevname);
++}
++
++errcode_t e2fsck_mmp_update(ext2_filsys fs)
++{
++ errcode_t retval;
++
++ retval = ext2fs_mmp_update(fs);
++ if (retval == EXT2_ET_MMP_CHANGE_ABORT)
++ dump_mmp_msg(fs->mmp_cmp,
++ _("UNEXPECTED INCONSISTENCY: the filesystem is "
++ "being modified while fsck is running.\n"));
++
++ return retval;
++}
+Index: e2fsprogs/lib/ext2fs/freefs.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/freefs.c
++++ e2fsprogs/lib/ext2fs/freefs.c
+@@ -53,6 +53,11 @@ void ext2fs_free(ext2_filsys fs)
+ if (fs->icache)
+ ext2fs_free_inode_cache(fs->icache);
+
++ if (fs->mmp_buf)
++ ext2fs_free_mem(&fs->mmp_buf);
++ if (fs->mmp_unaligned_buf)
++ ext2fs_free_mem(&fs->mmp_unaligned_buf);
++
+ fs->magic = 0;
+
+ ext2fs_free_mem(&fs);
+Index: e2fsprogs/lib/ext2fs/Makefile.in
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/Makefile.in
++++ e2fsprogs/lib/ext2fs/Makefile.in
+@@ -64,6 +64,7 @@ OBJS= $(DEBUGFS_LIB_OBJS) $(RESIZE_LIB_O
+ lookup.o \
+ mkdir.o \
+ mkjournal.o \
++ mmp.o \
+ namei.o \
+ native.o \
+ newdir.o \
+@@ -132,6 +133,7 @@ SRCS= ext2_err.c \
+ $(srcdir)/lookup.c \
+ $(srcdir)/mkdir.c \
+ $(srcdir)/mkjournal.c \
++ $(srcdir)/mmp.c \
+ $(srcdir)/namei.c \
+ $(srcdir)/native.c \
+ $(srcdir)/newdir.c \
+@@ -646,6 +648,8 @@ mkjournal.o: $(srcdir)/mkjournal.c $(src
+ $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
+ $(srcdir)/bitops.h $(srcdir)/jfs_user.h $(srcdir)/kernel-jbd.h \
+ $(srcdir)/jfs_compat.h $(srcdir)/kernel-list.h
++mmp.o: $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
++ $(top_builddir)/lib/ext2fs/ext2_err.h
+ namei.o: $(srcdir)/namei.c $(srcdir)/ext2_fs.h \
+ $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
+Index: e2fsprogs/lib/ext2fs/mmp.c
+===================================================================
+--- /dev/null
++++ e2fsprogs/lib/ext2fs/mmp.c
+@@ -0,0 +1,420 @@
++/*
++ * Helper functions for multiple mount protection(MMP).
++ *
++ * Copyright (C) 2006, 2007 by Kalpak Shah <kalpak@clusterfs.com>
++ *
++ * %Begin-Header%
++ * This file may be redistributed under the terms of the GNU Public
++ * License.
++ * %End-Header%
++ */
++
++#ifndef _GNU_SOURCE
++#define _GNU_SOURCE
++#endif
++
++#if HAVE_UNISTD_H
++#include <unistd.h>
++#endif
++#include <sys/time.h>
++
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <fcntl.h>
++
++#include "ext2fs/ext2_fs.h"
++#include "ext2fs/ext2fs.h"
++
++static int mmp_pagesize(void)
++{
++#ifdef _SC_PAGESIZE
++ int sysval = sysconf(_SC_PAGESIZE);
++ if (sysval > 0)
++ return sysval;
++#endif /* _SC_PAGESIZE */
++#ifdef HAVE_GETPAGESIZE
++ return getpagesize();
++#else
++ return 4096;
++#endif
++}
++
++#define ptr_align(ptr, size) (void *)(((unsigned long)(ptr) + (size) - 1) & \
++ ~((unsigned long)(size) - 1))
++#ifndef O_DIRECT
++#define O_DIRECT 0
++#endif
++
++errcode_t ext2fs_mmp_read(ext2_filsys fs, blk_t mmp_blk, void *buf)
++{
++ struct mmp_struct *mmp_cmp;
++ errcode_t retval = 0;
++
++ if ((mmp_blk <= fs->super->s_first_data_block) ||
++ (mmp_blk >= fs->super->s_blocks_count))
++ return EXT2_ET_MMP_BAD_BLOCK;
++
++ if (fs->mmp_cmp == NULL) {
++ /* O_DIRECT in linux 2.4: page aligned
++ * O_DIRECT in linux 2.6: sector aligned
++ * A filesystem cannot be created with blocksize < sector size,
++ * or with blocksize > page_size. */
++ int bufsize = fs->blocksize;
++
++ if (bufsize < mmp_pagesize())
++ bufsize = mmp_pagesize();
++ retval = ext2fs_get_mem(bufsize * 2, &fs->mmp_unaligned_buf);
++ if (retval)
++ return retval;
++ fs->mmp_cmp = ptr_align(fs->mmp_unaligned_buf, bufsize);
++ }
++
++ /* ext2fs_open reserves fd0,1,2 to avoid stdio collision */
++ if (fs->mmp_fd <= 0) {
++ fs->mmp_fd = open(fs->device_name, O_RDWR | O_DIRECT);
++ if (fs->mmp_fd < 0) {
++ retval = EXT2_ET_MMP_OPEN_DIRECT;
++ goto out;
++ }
++ }
++
++ if (ext2fs_llseek(fs->mmp_fd, mmp_blk * fs->blocksize, SEEK_SET) !=
++ mmp_blk * fs->blocksize) {
++ retval = EXT2_ET_LLSEEK_FAILED;
++ goto out;
++ }
++
++ if (read(fs->mmp_fd, fs->mmp_cmp, fs->blocksize) != fs->blocksize) {
++ retval = EXT2_ET_SHORT_READ;
++ goto out;
++ }
++
++ mmp_cmp = fs->mmp_cmp;
++#ifdef EXT2FS_ENABLE_SWAPFS
++ if (fs->flags & EXT2_FLAG_SWAP_BYTES)
++ ext2fs_swap_mmp(mmp_cmp);
++#endif
++
++ if (buf != NULL && buf != fs->mmp_cmp)
++ memcpy(buf, fs->mmp_cmp, fs->blocksize);
++
++ if (mmp_cmp->mmp_magic != EXT2_MMP_MAGIC) {
++ retval = EXT2_ET_MMP_MAGIC_INVALID;
++ goto out;
++ }
++
++out:
++ return retval;
++}
++
++errcode_t ext2fs_mmp_write(ext2_filsys fs, blk_t mmp_blk, void *buf)
++{
++ struct mmp_struct *mmp_s = buf;
++ struct timeval tv;
++ errcode_t retval = 0;
++
++ gettimeofday(&tv, 0);
++ mmp_s->mmp_time = tv.tv_sec;
++ fs->mmp_last_written = tv.tv_sec;
++
++#ifdef EXT2FS_ENABLE_SWAPFS
++ if (fs->super->s_magic == ext2fs_swab16(EXT2_SUPER_MAGIC))
++ ext2fs_swap_mmp(mmp_s);
++#endif
++
++ /* I was tempted to make this use O_DIRECT and the mmp_fd, but
++ * this caused no end of grief, while leaving it as-is works. */
++ retval = io_channel_write_blk(fs->io, mmp_blk, -fs->blocksize, buf);
++
++#ifdef EXT2FS_ENABLE_SWAPFS
++ if (fs->super->s_magic == ext2fs_swab16(EXT2_SUPER_MAGIC))
++ ext2fs_swap_mmp(mmp_s);
++#endif
++
++ /* Make sure the block gets to disk quickly */
++ io_channel_flush(fs->io);
++ return retval;
++}
++
++#ifdef HAVE_SRANDOM
++#define srand(x) srandom(x)
++#define rand() random()
++#endif
++
++unsigned ext2fs_mmp_new_seq()
++{
++ unsigned new_seq;
++ struct timeval tv;
++
++ gettimeofday(&tv, 0);
++ srand((getpid() << 16) ^ getuid() ^ tv.tv_sec ^ tv.tv_usec);
++
++ gettimeofday(&tv, 0);
++ /* Crank the random number generator a few times */
++ for (new_seq = (tv.tv_sec ^ tv.tv_usec) & 0x1F; new_seq > 0; new_seq--)
++ rand();
++
++ do {
++ new_seq = rand();
++ } while (new_seq > EXT2_MMP_SEQ_MAX);
++
++ return new_seq;
++}
++
++static errcode_t ext2fs_mmp_reset(ext2_filsys fs)
++{
++ struct mmp_struct *mmp_s = NULL;
++ errcode_t retval = 0;
++
++ if (fs->mmp_buf == NULL) {
++ retval = ext2fs_get_mem(fs->blocksize, &fs->mmp_buf);
++ if (retval)
++ goto out;
++ }
++
++ memset(fs->mmp_buf, 0, fs->blocksize);
++ mmp_s = fs->mmp_buf;
++
++ mmp_s->mmp_magic = EXT2_MMP_MAGIC;
++ mmp_s->mmp_seq = EXT2_MMP_SEQ_CLEAN;
++ mmp_s->mmp_time = 0;
++#if _BSD_SOURCE || _XOPEN_SOURCE >= 500
++ gethostname(mmp_s->mmp_nodename, sizeof(mmp_s->mmp_nodename));
++#else
++ mmp_s->mmp_nodename[0] = '\0';
++#endif
++ strncpy(mmp_s->mmp_bdevname, fs->device_name,
++ sizeof(mmp_s->mmp_bdevname));
++
++ mmp_s->mmp_check_interval = fs->super->s_mmp_update_interval;
++ if (mmp_s->mmp_check_interval < EXT2_MMP_MIN_CHECK_INTERVAL)
++ mmp_s->mmp_check_interval = EXT2_MMP_MIN_CHECK_INTERVAL;
++
++ retval = ext2fs_mmp_write(fs, fs->super->s_mmp_block, fs->mmp_buf);
++out:
++ return retval;
++}
++
++errcode_t ext2fs_mmp_clear(ext2_filsys fs)
++{
++ struct mmp_struct *mmp_s = NULL;
++ errcode_t retval = 0;
++
++ if (!(fs->super->s_feature_incompat & EXT4_FEATURE_INCOMPAT_MMP) ||
++ !(fs->flags & EXT2_FLAG_RW))
++ return 0;
++
++ retval = ext2fs_mmp_reset(fs);
++
++ return retval;
++}
++
++errcode_t ext2fs_mmp_init(ext2_filsys fs)
++{
++ struct ext2_super_block *sb = fs->super;
++ struct mmp_struct *mmp_s = NULL;
++ blk_t mmp_block;
++ errcode_t retval;
++
++ if (fs->mmp_buf == NULL) {
++ retval = ext2fs_get_mem(fs->blocksize, &fs->mmp_buf);
++ if (retval)
++ goto out;
++ }
++
++ retval = ext2fs_alloc_block(fs, 0, fs->mmp_buf, &mmp_block);
++ if (retval)
++ goto out;
++
++ sb->s_mmp_block = mmp_block;
++ sb->s_mmp_update_interval = EXT2_MMP_UPDATE_INTERVAL;
++
++ retval = ext2fs_mmp_reset(fs);
++ if (retval)
++ goto out;
++
++out:
++ return retval;
++}
++
++/*
++ * Make sure that the fs is not mounted or being fsck'ed while opening the fs.
++ */
++errcode_t ext2fs_mmp_start(ext2_filsys fs)
++{
++ struct mmp_struct *mmp_s;
++ unsigned seq;
++ unsigned int mmp_check_interval;
++ errcode_t retval = 0;
++
++ if (fs->mmp_buf == NULL) {
++ retval = ext2fs_get_mem(fs->blocksize, &fs->mmp_buf);
++ if (retval)
++ goto mmp_error;
++ }
++
++ retval = ext2fs_mmp_read(fs, fs->super->s_mmp_block, fs->mmp_buf);
++ if (retval)
++ goto mmp_error;
++
++ mmp_s = fs->mmp_buf;
++
++ mmp_check_interval = fs->super->s_mmp_update_interval;
++ if (mmp_check_interval < EXT2_MMP_MIN_CHECK_INTERVAL)
++ mmp_check_interval = EXT2_MMP_MIN_CHECK_INTERVAL;
++
++ seq = mmp_s->mmp_seq;
++ if (seq == EXT2_MMP_SEQ_CLEAN)
++ goto clean_seq;
++ if (seq == EXT2_MMP_SEQ_FSCK) {
++ retval = EXT2_ET_MMP_FSCK_ON;
++ goto mmp_error;
++ }
++
++ if (seq > EXT2_MMP_SEQ_FSCK) {
++ retval = EXT2_ET_MMP_UNKNOWN_SEQ;
++ goto mmp_error;
++ }
++
++ /*
++ * If check_interval in MMP block is larger, use that instead of
++ * check_interval from the superblock.
++ */
++ if (mmp_s->mmp_check_interval > mmp_check_interval)
++ mmp_check_interval = mmp_s->mmp_check_interval;
++
++ sleep(2 * mmp_check_interval + 1);
++
++ retval = ext2fs_mmp_read(fs, fs->super->s_mmp_block, fs->mmp_buf);
++ if (retval)
++ goto mmp_error;
++
++ if (seq != mmp_s->mmp_seq) {
++ retval = EXT2_ET_MMP_FAILED;
++ goto mmp_error;
++ }
++
++clean_seq:
++ if (!(fs->flags & EXT2_FLAG_RW))
++ goto mmp_error;
++
++ mmp_s->mmp_seq = seq = ext2fs_mmp_new_seq();
++#if _BSD_SOURCE || _XOPEN_SOURCE >= 500
++ gethostname(mmp_s->mmp_nodename, sizeof(mmp_s->mmp_nodename));
++#else
++ strcpy(mmp_s->mmp_nodename, "unknown host");
++#endif
++ strncpy(mmp_s->mmp_bdevname, fs->device_name,
++ sizeof(mmp_s->mmp_bdevname));
++
++ retval = ext2fs_mmp_write(fs, fs->super->s_mmp_block, fs->mmp_buf);
++ if (retval)
++ goto mmp_error;
++
++ sleep(2 * mmp_check_interval + 1);
++
++ retval = ext2fs_mmp_read(fs, fs->super->s_mmp_block, fs->mmp_buf);
++ if (retval)
++ goto mmp_error;
++
++ if (seq != mmp_s->mmp_seq) {
++ retval = EXT2_ET_MMP_FAILED;
++ goto mmp_error;
++ }
++
++ mmp_s->mmp_seq = EXT2_MMP_SEQ_FSCK;
++ retval = ext2fs_mmp_write(fs, fs->super->s_mmp_block, fs->mmp_buf);
++ if (retval)
++ goto mmp_error;
++
++ return 0;
++
++mmp_error:
++ return retval;
++}
++
++/*
++ * Clear the MMP usage in the filesystem. If this function returns an
++ * error EXT2_ET_MMP_CHANGE_ABORT it means the filesystem was modified
++ * by some other process while in use, and changes should be dropped, or
++ * risk filesystem corruption.
++ */
++errcode_t ext2fs_mmp_stop(ext2_filsys fs)
++{
++ struct mmp_struct *mmp, *mmp_cmp;
++ errcode_t retval = 0;
++
++ if (!(fs->super->s_feature_incompat & EXT4_FEATURE_INCOMPAT_MMP) ||
++ !(fs->flags & EXT2_FLAG_RW) || (fs->flags & EXT2_FLAG_SKIP_MMP))
++ goto mmp_error;
++
++ retval = ext2fs_mmp_read(fs, fs->super->s_mmp_block, fs->mmp_buf);
++ if (retval)
++ goto mmp_error;
++
++ /* Check if the MMP block is not changed. */
++ mmp = fs->mmp_buf;
++ mmp_cmp = fs->mmp_cmp;
++ if (memcmp(mmp, mmp_cmp, sizeof(*mmp_cmp))) {
++ retval = EXT2_ET_MMP_CHANGE_ABORT;
++ goto mmp_error;
++ }
++
++check_skipped:
++ mmp_cmp->mmp_seq = EXT2_MMP_SEQ_CLEAN;
++ retval = ext2fs_mmp_write(fs, fs->super->s_mmp_block, fs->mmp_cmp);
++
++mmp_error:
++ if (fs->mmp_fd > 0) {
++ close(fs->mmp_fd);
++ fs->mmp_fd = -1;
++ }
++ if (fs->mmp_buf) {
++ ext2fs_free_mem(&fs->mmp_buf);
++ fs->mmp_buf = NULL;
++ }
++ if (fs->mmp_unaligned_buf) {
++ ext2fs_free_mem(&fs->mmp_unaligned_buf);
++ fs->mmp_unaligned_buf = NULL;
++ fs->mmp_cmp = NULL;
++ }
++
++ return retval;
++}
++
++#define EXT2_MIN_MMP_UPDATE_INTERVAL 60
++
++/*
++ * Update the on-disk mmp buffer, after checking that it hasn't been changed.
++ */
++errcode_t ext2fs_mmp_update(ext2_filsys fs)
++{
++ struct mmp_struct *mmp, *mmp_cmp;
++ struct timeval tv;
++ errcode_t retval = 0;
++
++ if (!(fs->super->s_feature_incompat & EXT4_FEATURE_INCOMPAT_MMP) ||
++ !(fs->flags & EXT2_FLAG_RW) || (fs->flags & EXT2_FLAG_SKIP_MMP))
++ return 0;
++
++ gettimeofday(&tv, 0);
++ if (tv.tv_sec - fs->mmp_last_written < EXT2_MIN_MMP_UPDATE_INTERVAL)
++ return 0;
++
++ retval = ext2fs_mmp_read(fs, fs->super->s_mmp_block, NULL);
++ if (retval)
++ goto mmp_error;
++
++ mmp = fs->mmp_buf;
++ mmp_cmp = fs->mmp_cmp;
++
++ if (memcmp(mmp, mmp_cmp, sizeof(*mmp_cmp)))
++ return EXT2_ET_MMP_CHANGE_ABORT;
++
++ mmp->mmp_time = tv.tv_sec;
++ mmp->mmp_seq = EXT2_MMP_SEQ_FSCK;
++ retval = ext2fs_mmp_write(fs, fs->super->s_mmp_block, fs->mmp_buf);
++
++mmp_error:
++ return retval;
++}
+Index: e2fsprogs/misc/tune2fs.8.in
+===================================================================
+--- e2fsprogs.orig/misc/tune2fs.8.in
++++ e2fsprogs/misc/tune2fs.8.in
+@@ -167,6 +167,11 @@ separated, and may take an argument usin
+ The following extended options are supported:
+ .RS 1.2i
+ .TP
++.B clear-mmp
++Reset the MMP block (if any) back to the clean state. Use only if
++absolutely certain the device is not currently mounted or being
++fscked, or major filesystem corruption can result. Needs '-f'.
++.TP
+ .BI stride= stride-size
+ Configure the filesystem for a RAID array with
+ .I stride-size
+@@ -523,6 +528,11 @@ future.
+ .B Tune2fs
+ only supports clearing this filesystem feature.
+ .TP
++.B mmp
++Enable or disable multiple mount protection(MMP) feature. MMP helps to protect
++the filesystem from being multiply mounted and is useful in shared storage
++environment.
++.TP
+ .B sparse_super
+ Limit the number of backup superblocks to save space on large filesystems.
+ .TP
+@@ -559,6 +569,9 @@ and
+ .BR flex_bg
+ features are only supported by the ext4 filesystem.
+ .TP
++.BI \-p " mmp_check_interval"
++Set the desired MMP check interval in seconds. It is 5 seconds by default.
++.TP
+ .BI \-r " reserved-blocks-count"
+ Set the number of reserved filesystem blocks.
+ .TP
+Index: e2fsprogs/misc/mke2fs.c
+===================================================================
+--- e2fsprogs.orig/misc/mke2fs.c
++++ e2fsprogs/misc/mke2fs.c
+@@ -813,6 +813,7 @@ static __u32 ok_features[3] = {
+ EXT3_FEATURE_INCOMPAT_JOURNAL_DEV|
+ EXT2_FEATURE_INCOMPAT_META_BG|
+ EXT4_FEATURE_INCOMPAT_FLEX_BG|
++ EXT4_FEATURE_INCOMPAT_MMP |
+ EXT4_FEATURE_INCOMPAT_64BIT,
+ /* R/O compat */
+ EXT2_FEATURE_RO_COMPAT_LARGE_FILE|
+@@ -2381,8 +2382,20 @@ int main (int argc, char *argv[])
+ }
+ no_journal:
+
+- if (!super_only)
++ if (!super_only) {
+ ext2fs_set_gdt_csum(fs);
++ if (fs->super->s_feature_incompat & EXT4_FEATURE_INCOMPAT_MMP) {
++ retval = ext2fs_mmp_init(fs);
++ if (retval) {
++ fprintf(stderr, _("\nError while enabling "
++ "multiple mount protection feature."));
++ exit(1);
++ }
++ printf(_("Multiple mount protection has been enabled "
++ "with update interval %d seconds.\n"),
++ fs->super->s_mmp_update_interval);
++ }
++ }
+ if (!quiet)
+ printf(_("Writing superblocks and "
+ "filesystem accounting information: "));
+Index: e2fsprogs/lib/e2p/ls.c
+===================================================================
+--- e2fsprogs.orig/lib/e2p/ls.c
++++ e2fsprogs/lib/e2p/ls.c
+@@ -394,6 +394,12 @@ void list_super2(struct ext2_super_block
+ fprintf(f, "Last error block #: %llu\n",
+ sb->s_last_error_block);
+ }
++ if (sb->s_feature_incompat & EXT4_FEATURE_INCOMPAT_MMP) {
++ fprintf(f, "MMP block number: %llu\n",
++ (long long)sb->s_mmp_block);
++ fprintf(f, "MMP update interval: %u\n",
++ sb->s_mmp_update_interval);
++ }
+ }
+
+ void list_super (struct ext2_super_block * s)
+Index: e2fsprogs/debugfs/set_fields.c
+===================================================================
+--- e2fsprogs.orig/debugfs/set_fields.c
++++ e2fsprogs/debugfs/set_fields.c
+@@ -130,7 +130,7 @@ static struct field_set_info super_field
+ { "flags", &set_sb.s_flags, 4, parse_uint },
+ { "raid_stride", &set_sb.s_raid_stride, 2, parse_uint },
+ { "min_extra_isize", &set_sb.s_min_extra_isize, 4, parse_uint },
+- { "mmp_interval", &set_sb.s_mmp_interval, 2, parse_uint },
++ { "mmp_update_interval", &set_sb.s_mmp_update_interval, 2, parse_uint },
+ { "mmp_block", &set_sb.s_mmp_block, 8, parse_uint },
+ { "raid_stripe_width", &set_sb.s_raid_stripe_width, 4, parse_uint },
+ { "log_groups_per_flex", &set_sb.s_log_groups_per_flex, 1, parse_uint },
+Index: e2fsprogs/misc/util.c
+===================================================================
+--- e2fsprogs.orig/misc/util.c
++++ e2fsprogs/misc/util.c
+@@ -291,3 +291,11 @@ void print_check_message(ext2_filsys fs)
+ fs->super->s_max_mnt_count,
+ (double)fs->super->s_checkinterval / (3600 * 24));
+ }
++
++void dump_mmp_msg(struct mmp_struct *mmp, const char *msg)
++{
++ if (msg)
++ printf("MMP check failed: %s\n", msg);
++ printf("MMP failure info: last update time: %llu node: %s device: %s\n",
++ (long long)mmp->mmp_time, mmp->mmp_nodename, mmp->mmp_bdevname);
++}
+Index: e2fsprogs/e2fsck/journal.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/journal.c
++++ e2fsprogs/e2fsck/journal.c
+@@ -881,6 +881,8 @@ int e2fsck_run_ext3_journal(e2fsck_t ctx
+ ctx->fs->io->manager->get_stats(ctx->fs->io, &stats);
+ if (stats && stats->bytes_written)
+ kbytes_written = stats->bytes_written >> 10;
++
++ ext2fs_mmp_stop(ctx->fs);
+ ext2fs_free(ctx->fs);
+ retval = ext2fs_open(ctx->filesystem_name, EXT2_FLAG_RW,
+ ctx->superblock, blocksize, io_ptr,
+Index: e2fsprogs/debugfs/debug_cmds.ct
+===================================================================
+--- e2fsprogs.orig/debugfs/debug_cmds.ct
++++ e2fsprogs/debugfs/debug_cmds.ct
+@@ -163,5 +163,8 @@ request do_set_current_time, "Set curren
+ request do_supported_features, "Print features supported by this version of e2fsprogs",
+ supported_features;
+
++request do_dump_mmp, "Dump MMP information",
++ dump_mmp;
++
+ end;
+
+Index: e2fsprogs/debugfs/debugfs.c
+===================================================================
+--- e2fsprogs.orig/debugfs/debugfs.c
++++ e2fsprogs/debugfs/debugfs.c
+@@ -78,6 +78,8 @@ static void open_filesystem(char *device
+ "opening read-only because of catastrophic mode");
+ open_flags &= ~EXT2_FLAG_RW;
+ }
++ if (catastrophic)
++ open_flags |= EXT2_FLAG_SKIP_MMP;
+
+ retval = ext2fs_open(device, open_flags, superblock, blocksize,
+ unix_io_manager, ¤t_fs);
+@@ -2127,6 +2129,39 @@ void do_punch(int argc, char *argv[])
+ }
+ }
+
++void do_dump_mmp(int argc, char *argv[])
++{
++ struct mmp_struct *mmp_s;
++ errcode_t retval = 0;
++
++ if (current_fs->mmp_buf == NULL) {
++ retval = ext2fs_get_mem(current_fs->blocksize,
++ ¤t_fs->mmp_buf);
++ if (retval) {
++ com_err(argv[0], 0, "Could not allocate memory.\n");
++ return;
++ }
++ }
++
++ mmp_s = current_fs->mmp_buf;
++
++ retval = ext2fs_mmp_read(current_fs, current_fs->super->s_mmp_block,
++ current_fs->mmp_buf);
++ if (retval) {
++ com_err(argv[0], retval, "Error reading MMP block.\n");
++ return;
++ }
++
++ fprintf(stdout, "MMP Block: %llu\n", current_fs->super->s_mmp_block);
++ fprintf(stdout, "MMP Update Interval: %d\n",
++ current_fs->super->s_mmp_update_interval);
++ fprintf(stdout, "MMP Check Interval: %d\n", mmp_s->mmp_check_interval);
++ fprintf(stdout, "MMP Sequence: %u\n", mmp_s->mmp_seq);
++ fprintf(stdout, "Last Update Time: %llu\n", mmp_s->mmp_time);
++ fprintf(stdout, "Node: %s\n", mmp_s->mmp_nodename);
++ fprintf(stdout, "Device: %s\n", mmp_s->mmp_bdevname);
++}
++
+ static int source_file(const char *cmd_file, int sci_idx)
+ {
+ FILE *f;
--- /dev/null
+E2fsck fixes files that are found to be sharing blocks by cloning
+the shared blocks and giving each file a private copy in pass 1D.
+
+Allowing all files claiming the shared blocks to have copies can
+inadvertantly bypass access restrictions. Deleting all the files,
+zeroing the cloned blocks, or placing the files in the /lost+found
+directory after cloning may be preferable in some secure environments.
+
+The following patches implement config file and command line options in
+e2fsck that allow pass 1D behavior to be tuned according to site policy.
+It adds two extended options and config file counterparts. On the
+command line:
+
+ -E clone=dup|zero
+
+ Select the block cloning method. "dup" is old behavior which remains
+ the default. "zero" is a new method that substitutes zero-filled
+ blocks for the shared blocks in all the files that claim them.
+
+ -E shared=preserve|lost+found|delete
+
+ Select the disposition of files containing shared blocks. "preserve"
+ is the old behavior which remains the default. "lost+found" causes
+ files to be unlinked after cloning so they will be reconnected to
+ /lost+found in pass 3. "delete" skips cloning entirely and simply
+ deletes the files.
+
+In the config file:
+ [options]
+ clone=dup|zero
+ shared=preserve|lost+found|delete
+
+Signed-off-by: Jim Garlick <garlick@llnl.gov>
+
+Index: e2fsprogs/e2fsck/e2fsck.h
+===================================================================
+--- e2fsprogs.orig/e2fsck/e2fsck.h
++++ e2fsprogs/e2fsck/e2fsck.h
+@@ -192,6 +192,17 @@ struct resource_track {
+ #define E2F_PASS_5 5
+ #define E2F_PASS_1B 6
+
++typedef enum {
++ E2F_SHARED_PRESERVE = 0,
++ E2F_SHARED_DELETE,
++ E2F_SHARED_LPF
++} shared_opt_t;
++
++typedef enum {
++ E2F_CLONE_DUP = 0,
++ E2F_CLONE_ZERO
++} clone_opt_t;
++
+ /*
+ * Define the extended attribute refcount structure
+ */
+@@ -346,6 +357,8 @@ struct e2fsck_struct {
+ time_t now;
+ time_t time_fudge; /* For working around buggy init scripts */
+ int ext_attr_ver;
++ shared_opt_t shared;
++ clone_opt_t clone;
+ profile_t profile;
+ int blocks_per_page;
+
+Index: e2fsprogs/e2fsck/unix.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/unix.c
++++ e2fsprogs/e2fsck/unix.c
+@@ -562,6 +562,49 @@ static void signal_cancel(int sig EXT2FS
+ }
+ #endif
+
++static void initialize_profile_options(e2fsck_t ctx)
++{
++ char *tmp;
++
++ /* [options] shared=preserve|lost+found|delete */
++ tmp = NULL;
++ ctx->shared = E2F_SHARED_PRESERVE;
++ profile_get_string(ctx->profile, "options", "shared", 0,
++ "preserve", &tmp);
++ if (tmp) {
++ if (strcmp(tmp, "preserve") == 0)
++ ctx->shared = E2F_SHARED_PRESERVE;
++ else if (strcmp(tmp, "delete") == 0)
++ ctx->shared = E2F_SHARED_DELETE;
++ else if (strcmp(tmp, "lost+found") == 0)
++ ctx->shared = E2F_SHARED_LPF;
++ else {
++ com_err(ctx->program_name, 0,
++ _("configuration error: 'shared=%s'"), tmp);
++ fatal_error(ctx, 0);
++ }
++ free(tmp);
++ }
++
++ /* [options] clone=dup|zero */
++ tmp = NULL;
++ ctx->clone = E2F_CLONE_DUP;
++ profile_get_string(ctx->profile, "options", "clone", 0,
++ "dup", &tmp);
++ if (tmp) {
++ if (strcmp(tmp, "dup") == 0)
++ ctx->clone = E2F_CLONE_DUP;
++ else if (strcmp(tmp, "zero") == 0)
++ ctx->clone = E2F_CLONE_ZERO;
++ else {
++ com_err(ctx->program_name, 0,
++ _("configuration error: 'clone=%s'"), tmp);
++ fatal_error(ctx, 0);
++ }
++ free(tmp);
++ }
++}
++
+ static void parse_extended_opts(e2fsck_t ctx, const char *opts)
+ {
+ char *buf, *token, *next, *p, *arg;
+@@ -597,6 +640,36 @@ static void parse_extended_opts(e2fsck_t
+ } else if (strcmp(token, "fragcheck") == 0) {
+ ctx->options |= E2F_OPT_FRAGCHECK;
+ continue;
++ /* -E shared=preserve|lost+found|delete */
++ } else if (strcmp(token, "shared") == 0) {
++ if (!arg) {
++ extended_usage++;
++ continue;
++ }
++ if (strcmp(arg, "preserve") == 0) {
++ ctx->shared = E2F_SHARED_PRESERVE;
++ } else if (strcmp(arg, "lost+found") == 0) {
++ ctx->shared = E2F_SHARED_LPF;
++ } else if (strcmp(arg, "delete") == 0) {
++ ctx->shared = E2F_SHARED_DELETE;
++ } else {
++ extended_usage++;
++ continue;
++ }
++ /* -E clone=dup|zero */
++ } else if (strcmp(token, "clone") == 0) {
++ if (!arg) {
++ extended_usage++;
++ continue;
++ }
++ if (strcmp(arg, "dup") == 0) {
++ ctx->clone = E2F_CLONE_DUP;
++ } else if (strcmp(arg, "zero") == 0) {
++ ctx->clone = E2F_CLONE_ZERO;
++ } else {
++ extended_usage++;
++ continue;
++ }
+ } else if (strcmp(token, "journal_only") == 0) {
+ if (arg) {
+ extended_usage++;
+@@ -627,6 +700,8 @@ static void parse_extended_opts(e2fsck_t
+ fputs(("\tjournal_only\n"), stderr);
+ fputs(("\tdiscard\n"), stderr);
+ fputs(("\tnodiscard\n"), stderr);
++ fputs(("\tshared=<preserve|lost+found|delete>\n"), stderr);
++ fputs(("\tclone=<dup|zero>\n"), stderr);
+ fputc('\n', stderr);
+ exit(1);
+ }
+@@ -690,6 +765,7 @@ static errcode_t PRS(int argc, char *arg
+ profile_set_syntax_err_cb(syntax_err_report);
+ profile_init(config_fn, &ctx->profile);
+
++ initialize_profile_options(ctx);
+
+ while ((c = getopt (argc, argv, "panyrcC:B:dE:fvtFVM:b:I:j:P:l:L:N:SsDk")) != EOF)
+ switch (c) {
+Index: e2fsprogs/e2fsck/pass1b.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/pass1b.c
++++ e2fsprogs/e2fsck/pass1b.c
+@@ -474,6 +474,9 @@ static void pass1d(e2fsck_t ctx, char *b
+ q = (struct dup_block *) dnode_get(m);
+ if (q->num_bad > 1)
+ file_ok = 0;
++ if (q->num_bad == 1 && (ctx->clone == E2F_CLONE_ZERO ||
++ ctx->shared != E2F_SHARED_PRESERVE))
++ file_ok = 0;
+ if (check_if_fs_block(ctx, s->block)) {
+ file_ok = 0;
+ meta_data = 1;
+@@ -529,13 +532,26 @@ static void pass1d(e2fsck_t ctx, char *b
+ fix_problem(ctx, PR_1D_DUP_BLOCKS_DEALT, &pctx);
+ continue;
+ }
+- if (fix_problem(ctx, PR_1D_CLONE_QUESTION, &pctx)) {
++ if (ctx->shared != E2F_SHARED_DELETE &&
++ fix_problem(ctx, PR_1D_CLONE_QUESTION, &pctx)) {
+ pctx.errcode = clone_file(ctx, ino, p, block_buf);
+- if (pctx.errcode)
++ if (pctx.errcode) {
+ fix_problem(ctx, PR_1D_CLONE_ERROR, &pctx);
+- else
+- continue;
++ goto delete;
++ }
++ if (ctx->shared == E2F_SHARED_LPF &&
++ fix_problem(ctx, PR_1D_DISCONNECT_QUESTION, &pctx)) {
++ pctx.errcode = ext2fs_unlink(fs, p->dir,
++ NULL, ino, 0);
++ if (pctx.errcode) {
++ fix_problem(ctx, PR_1D_DISCONNECT_ERROR,
++ &pctx);
++ goto delete;
++ }
++ }
++ continue;
+ }
++delete:
+ if (fix_problem(ctx, PR_1D_DELETE_QUESTION, &pctx))
+ delete_file(ctx, ino, p, block_buf);
+ else
+@@ -552,7 +568,8 @@ static void decrement_badcount(e2fsck_t
+ {
+ p->num_bad--;
+ if (p->num_bad <= 0 ||
+- (p->num_bad == 1 && !check_if_fs_block(ctx, block)))
++ (p->num_bad == 1 && !check_if_fs_block(ctx, block) &&
++ ctx->clone == E2F_CLONE_DUP))
+ ext2fs_unmark_block_bitmap2(ctx->block_dup_map, block);
+ }
+
+@@ -698,11 +715,15 @@ static int clone_file_block(ext2_filsys
+ printf("Cloning block %u to %u\n", *block_nr,
+ new_block);
+ #endif
+- retval = io_channel_read_blk64(fs->io, *block_nr, 1,
+- cs->buf);
+- if (retval) {
+- cs->errcode = retval;
+- return BLOCK_ABORT;
++ if (ctx->clone == E2F_CLONE_ZERO) {
++ memset(cs->buf, 0, fs->blocksize);
++ } else {
++ retval = io_channel_read_blk(fs->io, *block_nr,
++ 1, cs->buf);
++ if (retval) {
++ cs->errcode = retval;
++ return BLOCK_ABORT;
++ }
+ }
+ retval = io_channel_write_blk64(fs->io, new_block, 1,
+ cs->buf);
+@@ -711,6 +732,11 @@ static int clone_file_block(ext2_filsys
+ return BLOCK_ABORT;
+ }
+ decrement_badcount(ctx, *block_nr, p);
++ if (ctx->clone == E2F_CLONE_ZERO && p->num_bad == 0) {
++ ext2fs_unmark_block_bitmap2(ctx->block_found_map,
++ *block_nr);
++ ext2fs_block_alloc_stats(fs, *block_nr, -1);
++ }
+ *block_nr = new_block;
+ ext2fs_mark_block_bitmap2(ctx->block_found_map,
+ new_block);
+Index: e2fsprogs/e2fsck/problem.h
+===================================================================
+--- e2fsprogs.orig/e2fsck/problem.h
++++ e2fsprogs/e2fsck/problem.h
+@@ -593,6 +593,13 @@ struct problem_context {
+ /* Couldn't clone file (error) */
+ #define PR_1D_CLONE_ERROR 0x013008
+
++/* File with shared blocks found */
++#define PR_1D_DISCONNECT_QUESTION 0x013009
++
++/* Couldn't unlink file (error) */
++#define PR_1D_DISCONNECT_ERROR 0x01300A
++
++
+ /*
+ * Pass 2 errors
+ */
+Index: e2fsprogs/e2fsck/problem.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/problem.c
++++ e2fsprogs/e2fsck/problem.c
+@@ -1003,6 +1003,14 @@ static struct e2fsck_problem problem_tab
+ { PR_1D_CLONE_ERROR,
+ N_("Couldn't clone file: %m\n"), PROMPT_NONE, 0 },
+
++ /* File with shared blocks found */
++ { PR_1D_DISCONNECT_QUESTION,
++ N_("File with shared blocks found\n"), PROMPT_CONNECT, 0 },
++
++ /* Couldn't unlink file (error) */
++ { PR_1D_DISCONNECT_ERROR,
++ N_("Couldn't unlink file: %m\n"), PROMPT_NONE, 0 },
++
+ /* Pass 2 errors */
+
+ /* Pass 2: Checking directory structure */
+Index: e2fsprogs/e2fsck/e2fsck.8.in
+===================================================================
+--- e2fsprogs.orig/e2fsck/e2fsck.8.in
++++ e2fsprogs/e2fsck/e2fsck.8.in
+@@ -180,6 +180,19 @@ separated, and may take an argument usin
+ following options are supported:
+ .RS 1.2i
+ .TP
++.BI clone= dup|zero
++Resolve files with shared blocks in pass 1D by giving each file a private
++copy of the blocks (dup);
++or replacing the shared blocks with private, zero-filled blocks (zero).
++The default is dup.
++.TP
++.BI shared= preserve|lost+found|delete
++Files with shared blocks discovered in pass 1D are cloned and then left
++in place (preserve);
++cloned and then disconnected from their parent directory,
++then reconnected to /lost+found in pass 3 (lost+found);
++or simply deleted (delete). The default is preserve.
++.TP
+ .BI ea_ver= extended_attribute_version
+ Set the version of the extended attribute blocks which
+ .B e2fsck
+Index: e2fsprogs/e2fsck/e2fsck.conf.5.in
+===================================================================
+--- e2fsprogs.orig/e2fsck/e2fsck.conf.5.in
++++ e2fsprogs/e2fsck/e2fsck.conf.5.in
+@@ -129,6 +129,19 @@ This boolean relation controls whether o
+ will offer to clear
+ the test_fs flag if the ext4 filesystem is available on the system. It
+ defaults to true.
++.TP
++.I clone
++This string relation controls the default handling of shared blocks in pass 1D.
++It can be set to dup or zero. See the
++.I "-E clone"
++option description in e2fsck(8).
++.TP
++.I shared
++This string relation controls the default disposition of files discovered to
++have shared blocks in pass 1D. It can be set to preserve, lost+found,
++or delete. See the
++.I "-E shared"
++option description in e2fsck(8).
+ .TP
+ .I defer_check_on_battery
+ This boolean relation controls whether or not the interval between
--- /dev/null
+The BLKFLSBUF and FDFLUSH ioctls are Linux specific, and do not
+really have anything to do with __GNUC__ (which is also used on
+OS/X and Solaris). No need to print these warnings on OS/X.
+
+O_DIRECT is not defined in the OS/X headers. Since this is only a
+performance enhancement, and not required for correct operation,
+just ignore it if undefined.
+
+Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
+
+Index: e2fsprogs/lib/ext2fs/flushb.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/flushb.c
++++ e2fsprogs/lib/ext2fs/flushb.c
+@@ -65,17 +65,13 @@ errcode_t ext2fs_sync_device(int fd, int
+ #ifdef BLKFLSBUF
+ if (ioctl (fd, BLKFLSBUF, 0) == 0)
+ return 0;
+-#else
+-#ifdef __GNUC__
+- #warning BLKFLSBUF not defined
+-#endif /* __GNUC__ */
++#elif defined(__linux__)
++#warning BLKFLSBUF not defined
+ #endif
+ #ifdef FDFLUSH
+ ioctl (fd, FDFLUSH, 0); /* In case this is a floppy */
+-#else
+-#ifdef __GNUC__
+- #warning FDFLUSH not defined
+-#endif /* __GNUC__ */
++#elif defined(__linux__)
++#warning FDFLUSH not defined
+ #endif
+ }
+ return 0;
+Index: e2fsprogs/lib/ext2fs/getsize.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/getsize.c
++++ e2fsprogs/lib/ext2fs/getsize.c
+@@ -235,7 +235,7 @@ errcode_t ext2fs_get_device_size2(const
+ #endif /* HAVE_SYS_DISKLABEL_H */
+
+ {
+-#ifdef HAVE_FSTAT64
++#if defined(HAVE_FSTAT64) && !defined(__OSX__)
+ struct stat64 st;
+ if (fstat64(fd, &st) == 0)
+ #else
+Index: e2fsprogs/lib/ext2fs/unix_io.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/unix_io.c
++++ e2fsprogs/lib/ext2fs/unix_io.c
+@@ -474,8 +474,10 @@ static errcode_t unix_open(const char *n
+ open_flags = (flags & IO_FLAG_RW) ? O_RDWR : O_RDONLY;
+ if (flags & IO_FLAG_EXCLUSIVE)
+ open_flags |= O_EXCL;
++#ifdef O_DIRECT
+ if (flags & IO_FLAG_DIRECT_IO)
+ open_flags |= O_DIRECT;
++#endif
+ data->flags = flags;
+
+ #ifdef HAVE_OPEN64
--- /dev/null
+Index: e2fsprogs/e2fsprogs-SUSE_LINUX-11.spec.in
+===================================================================
+--- /dev/null
++++ e2fsprogs/e2fsprogs-SUSE_LINUX-11.spec.in
+@@ -0,0 +1,1106 @@
++#
++# spec file for package e2fsprogs (Version 1.41.9)
++#
++# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
++#
++# All modifications and additions to the file contributed by third parties
++# remain the property of their copyright owners, unless otherwise agreed
++# upon. The license for this file, and modifications and additions to the
++# file, is the same license as for the pristine package itself (unless the
++# license for the pristine package is not an Open Source License, in which
++# case the license is the MIT License). An "Open Source License" is a
++# license that conforms to the Open Source Definition (Version 1.9)
++# published by the Open Source Initiative.
++
++# Please submit bugfixes or comments via http://bugs.opensuse.org/
++#
++
++# norootforbuild
++
++
++Name: e2fsprogs
++License: GPL v2 or later
++Group: System/Filesystems
++Supplements: filesystem(ext2) filesystem(ext3) filesystem(ext4)
++BuildRequires: libblkid-devel libuuid-devel pkg-config libdb-4_5-devel
++PreReq: %install_info_prereq
++AutoReqProv: on
++# bug437293
++%ifarch ppc64
++Obsoletes: e2fsprogs-64bit
++%endif
++#
++Version: @E2FSPROGS_PKGVER@
++Release: 0%{_vendor}
++Summary: Utilities for the Second Extended File System
++Url: http://e2fsprogs.sourceforge.net
++Source: %{name}-%{version}.tar.gz
++BuildRoot: %{_tmppath}/%{name}-%{version}-build
++
++%description
++Utilities needed to create and maintain ext2 and ext3 file systems
++under Linux. Included in this package are: chattr, lsattr, mke2fs,
++mklost+found, tune2fs, e2fsck, resize2fs, and badblocks.
++
++
++
++Authors:
++--------
++ Remy Card <card@masi.ibp.fr>
++ Theodore Ts'o <tytso@mit.edu>
++
++%package devel
++License: GPL v2 or later
++Summary: Dummy development package
++Group: Development/Libraries/C and C++
++AutoReqProv: on
++# bug437293
++%ifarch ppc64
++Obsoletes: e2fsprogs-devel-64bit
++%endif
++#
++Requires: libext2fs-devel = %version libblkid-devel libuuid-devel
++
++%description devel
++Dummy development package for backwards compatibility.
++
++
++
++Authors:
++--------
++ Remy Card <card@masi.ibp.fr>
++ Theodore Ts'o <tytso@mit.edu>
++
++%package -n libext2fs2
++License: GPL v2 or later
++Summary: Ext2fs libray
++Group: System/Filesystems
++AutoReqProv: on
++
++%description -n libext2fs2
++The basic Ext2fs library.
++
++
++
++Authors:
++--------
++ Remy Card <card@masi.ibp.fr>
++ Theodore Ts'o <tytso@mit.edu>
++
++%package -n libext2fs-devel
++License: GPL v2 or later
++Summary: Development files for libext2fs
++Group: Development/Libraries/C and C++
++AutoReqProv: on
++Requires: libext2fs2 = %version libcom_err-devel
++
++%description -n libext2fs-devel
++Development files for libext2fs.
++
++
++
++Authors:
++--------
++ Remy Card <card@masi.ibp.fr>
++ Theodore Ts'o <tytso@mit.edu>
++
++%package -n libcom_err2
++License: GPL v2 or later
++Summary: E2fsprogs error reporting library
++Group: System/Filesystems
++# bug437293
++%ifarch ppc64
++Obsoletes: libcom_err-64bit
++Obsoletes: libcom_err2-64bit
++%endif
++#
++Provides: libcom_err = %{version}
++Obsoletes: libcom_err <= 1.40
++AutoReqProv: on
++
++%description -n libcom_err2
++com_err is an error message display library.
++
++
++
++Authors:
++--------
++ Remy Card <card@masi.ibp.fr>
++ Theodore Ts'o <tytso@mit.edu>
++
++%package -n libcom_err-devel
++License: GPL v2 or later
++Summary: Development files for libcom_err
++Group: Development/Libraries/C and C++
++AutoReqProv: on
++# bug437293
++%ifarch ppc64
++Obsoletes: libcom_err-devel-64bit
++%endif
++#
++Requires: libcom_err2 = %version
++
++%description -n libcom_err-devel
++Development files for the com_err error message display library.
++
++
++
++Authors:
++--------
++ Remy Card <card@masi.ibp.fr>
++ Theodore Ts'o <tytso@mit.edu>
++
++%prep
++%setup -q
++# e2fsprogs patches
++patch -p1 < patches/sles/11/rpm/e2fsprogs-1.41.1-splash_support.patch
++# libcom_err patches
++patch -p1 < patches/sles/11/rpm/libcom_err-compile_et_permissions.patch
++cp patches/sles/11/rpm/README.SUSE .
++cp patches/sles/11/rpm/%{name}-1.41.4.de.po po/de.po
++
++%build
++autoreconf --force --install
++./configure --prefix=%{_prefix} \
++ --with-root-prefix='' \
++ --mandir=%{_mandir} \
++ --infodir=%{_infodir} \
++ --libdir=%{_libdir} \
++ --enable-elf-shlibs \
++ --disable-evms \
++ --disable-libblkid \
++ --disable-libuuid \
++ --disable-uuidd \
++ --disable-fsck \
++ %{?extra_config_flags:%extra_config_flags} CFLAGS="$RPM_OPT_FLAGS"
++make V=1
++
++%install
++make install install-libs DESTDIR=$RPM_BUILD_ROOT ELF_INSTALL_DIR=/%{_lib}
++%{find_lang} %{name}
++rm $RPM_BUILD_ROOT%{_libdir}/e2initrd_helper
++rm -f $RPM_BUILD_ROOT/sbin/mkfs.ext4dev
++rm -f $RPM_BUILD_ROOT/sbin/fsck.ext4dev
++rm -f $RPM_BUILD_ROOT/usr/share/man/man8/mkfs.ext4dev.8*
++rm -f $RPM_BUILD_ROOT/usr/share/man/man8/fsck.ext4dev.8*
++
++%clean
++rm -rf $RPM_BUILD_ROOT
++
++%post
++/sbin/ldconfig
++%install_info --info-dir=%{_infodir} %{_infodir}/libext2fs.info.gz
++
++%postun
++/sbin/ldconfig
++%install_info_delete --info-dir=%{_infodir} %{_infodir}/libext2fs.info.gz
++
++%post -n libext2fs2
++/sbin/ldconfig
++
++%postun -n libext2fs2
++/sbin/ldconfig
++
++%post -n libcom_err2
++/sbin/ldconfig
++
++%postun -n libcom_err2
++/sbin/ldconfig
++
++%files -f %{name}.lang
++%defattr(-, root, root)
++%doc RELEASE-NOTES README
++%config /etc/mke2fs.conf
++/sbin/badblocks
++/sbin/debugfs
++/sbin/dumpe2fs
++/sbin/e2undo
++/sbin/e2fsck
++/sbin/e2label
++/sbin/fsck.ext2
++/sbin/fsck.ext3
++/sbin/fsck.ext4
++/sbin/mke2fs
++/sbin/mkfs.ext2
++/sbin/mkfs.ext3
++/sbin/mkfs.ext4
++/sbin/resize2fs
++/sbin/tune2fs
++/sbin/e2image
++/sbin/logsave
++/usr/bin/chattr
++/usr/bin/lsattr
++/usr/sbin/mklost+found
++/usr/sbin/filefrag
++/usr/sbin/e2freefrag
++/usr/sbin/e2scan
++/usr/sbin/lfsck
++%{_infodir}/libext2fs.info.gz
++%{_mandir}/man1/chattr.1.gz
++%{_mandir}/man1/lsattr.1.gz
++%{_mandir}/man5/e2fsck.conf.5.gz
++%{_mandir}/man5/mke2fs.conf.5.gz
++%{_mandir}/man8/*.8.gz
++
++%files devel
++%defattr(-,root,root)
++%doc README.SUSE
++
++%files -n libext2fs2
++%defattr(-, root, root)
++/%{_lib}/libext2fs.so.*
++/%{_lib}/libe2p.so.*
++
++%files -n libext2fs-devel
++%defattr(-, root, root)
++%{_libdir}/libext2fs.so
++%{_libdir}/libext2fs.a
++%{_libdir}/libe2p.a
++%{_libdir}/libe2p.so
++/usr/include/ext2fs
++/usr/include/e2p
++%_libdir/pkgconfig/e2p.pc
++%_libdir/pkgconfig/ext2fs.pc
++
++%files -n libcom_err2
++%defattr(-, root, root)
++/%{_lib}/libcom_err.so.*
++/%{_lib}/libss.so.*
++
++%files -n libcom_err-devel
++%defattr(-, root, root)
++%_bindir/compile_et
++%_bindir/mk_cmds
++%{_libdir}/libcom_err.so
++%{_libdir}/libcom_err.a
++%{_libdir}/libss.a
++%{_libdir}/libss.so
++%_libdir/pkgconfig/com_err.pc
++%_libdir/pkgconfig/ss.pc
++%_includedir/et
++%_includedir/ss
++%_datadir/et
++%_datadir/ss
++%{_mandir}/man1/compile_et.1.gz
++%{_mandir}/man1/mk_cmds.1.gz
++%{_mandir}/man3/com_err.3.gz
++
++%changelog
++* Thu Nov 19 2009 hvogel@suse.de
++- Update to version 1.41.9 [FATE#305340]
++* Thu Oct 8 2009 crrodriguez@suse.de
++- fsck during boot up fails with Too many open files [bnc#503008]
++* Thu Sep 10 2009 coolo@novell.com
++- fix the super block even if someone mounted the file system
++ in wrong timezone in between (bnc#537542)
++* Thu Sep 3 2009 coolo@novell.com
++- update to 1.41.9:
++ "All users of e2fsprogs are urged to upgrade to the 1.41.9
++ version as soon as possible"
++ * Fix a bug in e2fsck routines for reallocating an inode table which
++ could cause it to loop forever on an ext4 filesystem with the FLEX_BG
++ filesystem feature with a relatively rare (and specific) filesystem
++ corruption. This fix causes e2fsck to try to find space for a new
++ portion of the inode table in the containing flex_bg, and if that
++ fails, the new portion of the inode table will be allocated in any
++ free space available in the filesystem.
++ * Make e2fsck less annoying by only asking for permission to relocate a
++ block group's inode table once, instead of for every overlapping
++ block. Similarly, only ask once to recompute the block group
++ checksums, instead of once for each corrupted block group's checksum.
++ see more changes in RELEASE-NOTES
++* Mon Aug 3 2009 aschnell@suse.de
++- added Supplements for ext4
++* Mon Jul 13 2009 coolo@novell.com
++- look for libreadline.so.6 too
++- refresh patches to avoid fuzz
++* Mon Jul 13 2009 kay.sievers@novell.com
++- update to 1.41.8
++ - Fix resize2fs's online resizing, fixing a regression which in
++ e2fpsrogs 1.41.7.
++ - Fix resize2fs bugs when shrinking ext4 filesystems
++ - If the resize2fs operation fails, the user will be told to fix up
++ the filesystem using e2fsck -fy.
++ - do not install disabled uuid binary and man page
++ - Fix filefrag program for files that have more than 144 extents.
++ - allow V=1 to disable silent build
++- enable verbose build again (V=1 merged upstream)
++- move awk scripts from libcom_err2 to libcom_err2-devel
++* Wed Jul 8 2009 meissner@suse.de
++- moved baselibs.conf changes to util-linux.
++* Mon Jun 29 2009 kay.sievers@novell.com
++- update to 1.41.7
++- disable libuuid and libblkid packages (moved to util-linux)
++- drop libvolume_id support (util-linux's libblkid will work)
++- removed patches:
++ e2fsprogs-libvolume_id-support.patch
++ e2fsprogs-no_cmd_hiding.patch
++ e2fsprogs-base_devt.patch
++ e2fsprogs-mdraid.patch
++* Mon Mar 9 2009 pth@suse.de
++- Fix errors in German messages.
++* Fri Feb 20 2009 coolo@suse.de
++- ext4dev is now ext4 (2.6.29)
++- don't call autoconf as long as it works without
++* Tue Feb 3 2009 mkoenig@suse.de
++- update to version 1.41.4:
++ debugfs:
++ * enhance the "ncheck" command
++ * enhance "hash" command
++ * fix a potential memory leak
++ * fix the usage message for logdump command
++ * fix ncheck command so that it prints all of the names of
++ hardlinks in the same directory
++ * e2fsprogs 1.41 broke debugfs's logdump command for normal
++ ext3/4 filesystems with 32-bit block numbers, when the headers
++ for 64-bit block numbers was added. This regression has been fixed
++ * ncheck command has been fixed to avoid printing garbage
++ characters at the end of file names
++ e2fsck:
++ * don't accidentally print the translation file's
++ header when asking the user a custom question
++ * print the correct inode number for uinit_bg related problems
++ * will now offer to clear the test_fs flag if the ext4 filesystem
++ is available on linux
++ * fix a bug where in preen mode, if there are disk I/O errors
++ while trying to close a filesystem can lead to infinite loops
++ * no longer abort an fsck run if block group has an errant
++ INODE_UNINIT flag
++ * distinguish between fragmented directories and fragmented
++ files in verbose mode statistics and in the fragcheck report
++ * fix a bug which caused it double count non-contiguous
++ extent-based inodes
++ * e2fsck will leave some slack space when repacking directories
++ to allow room for a few directory entries to be added without
++ causing leaf nodes to be split right away
++ * fix a bug which caused e2fsck to crash when it comes across a
++ corrupted interior node in an extent tree
++ * e2fsck problem descriptions involving the journal are no longer
++ referred to as "ext3" problems, since ext4 filesystems also have
++ journals
++ * fix a long-standing bug in e2fsck which would cause it to crash
++ when replying journals for filesystems with block sizes greater
++ than 8k
++ badblocks:
++ * support for normal files which are greater than 2GB
++ * display the time and percentage complete when in verbose mode
++ resize2fs:
++ * fix a potential memory corruption problem
++ * fix a bug in resize2fs where passing in a bogus new size of
++ 0 blocks will cause resize2fs to drop into an infinite loop
++ * fix resize2fs for ext4 filesystems
++ tune2fs:
++ * now updates the block group checksums when changing the UUID
++ to avoid causing e2fsck to complain vociferously at the next reboot
++ * inode size resizing algorithms have been fixed so it is not
++ vastly inefficient for moderate-to-large filesystems
++ * fix inode resizing algorithm so it will not corrupt filesystems
++ laid out for RAID filesystems; in addition, tune2fs will refuse
++ to change the inode size for filesystems that have the flex_bg
++ feature enabled
++ dumpe2fs:
++ * fix bug which caused dumpe2fs to abort with an error if run on a
++ filesystem that contained an external journal
++ mke2fs:
++ * new option -U, which allows the user to specify the UUID that
++ should be used for the new filesystem
++ * treat devices that are exactly 16TB as if they were 16TB minus
++ one block
++ blkid:
++ * fix a file descriptor leak in libblkid
++ * correctly detect whether the ext4 and ext4dev filesystems
++ are available, so that the ext4dev->ext4 fallback code works
++ correctly
++ * fixed a bug which could sometimes cause blkid to return an
++ exit value of zero for a non-existent device
++ * recognize ext3 filesystems that have the test_fs flag
++ set as ext3 filesystems
++ * recognize btrfs filesystems and swap devices currently used
++ by user-level software suspend
++ libext2fs:
++ * add a check in the Unix I/O functions in libext2fs so that
++ when a device is opened read/write, return an error if the
++ device is read-only using the BLKROGET ioctl
++- the libcom_err patches for bnc#66534 have been removed because
++ git commit d7f45af802330a0e1450afa05185d3722e77a76c
++ should fix the problem
++- remove patches
++ e2fsprogs-1.41.1-e2fsck_fix_automatic_blocksize_detection.patch
++ e2fsprogs-1.41.1-function_signature_fix.patch
++ e2fsprogs-1.41.1-link_fix.patch
++ libcom_err-disable_test.patch
++ libcom_err-mutex.patch
++ libcom_err-no-init_error_table.patch
++* Tue Jan 13 2009 olh@suse.de
++- obsolete old -XXbit packages (bnc#437293)
++* Thu Dec 4 2008 mkoenig@suse.de
++- send bootsplash messages in one write call
++* Tue Oct 28 2008 mkoenig@suse.de
++- fix function signature to avoid compiler warning [bnc#439129]
++* Tue Oct 7 2008 mkoenig@suse.de
++- e2fsck: fix e2fsck automatic blocksize detetion
++* Mon Sep 29 2008 mkoenig@suse.de
++- e2fsck: shut off splash screen when check is needed [bnc#237283]
++* Mon Sep 15 2008 mkoenig@suse.de
++- remove recommends of uuid-runtime from libuuid [bnc#426278]
++- move uuid hints README.SUSE.uuidd to uuid-runtime package
++* Fri Sep 5 2008 mkoenig@suse.de
++- update to version 1.41.1
++ * mke2fs
++ + issues now a warning if there is no definition in
++ /etc/mke2fs.conf for the filesystem to be created
++ + creates now the journal in the middle of the filesystem
++ + now avoids allocating an extra block to the journal
++ + will correctly enforce the prohibition against features
++ in revision 0 filesystems
++ + previously would occasionaly create some slightly non-optimally
++ placed inode tables; this bug has been fixed
++ + will now set the creation timestamp on the lost+found directory
++ and the root directory
++ * blkid
++ + recognize MacOS hfsx filesystems, and correctly extract the
++ label and uuid for hfs, hfsx, and hfsplus filesystems
++ + improved detection of JFS and HPFS
++ + more efficient handling of devicemapper devices
++ + fix cache validation bugs
++ + The blkid program will now print out a user-friendly listing
++ of all of the block devices in the system and what they
++ contain when given the -L option
++ * resize2fs
++ + will now correctly handle filesystems with extents and/or
++ uninitialized block groups correctly when file/directory blocks
++ need to relocated
++ + support for on-line resizing ext4 filesystem with the flex_bg
++ filesystem feature. The method for doing so is not optimal,
++ but to do a better job will require kernel support
++ + is now correctly managing the directory in-use counts when
++ shrinking filesystems and directory inodes needed to be moved
++ from one block group to another
++ * e2fsck
++ + now correctly calculates ind/dind/tind statistics in the
++ presence of extent-based files
++ + now prints the depth of corrupt htree directories
++ * debugfs
++ + htree command now correctly understands extent-based
++ directories
++ + new command which will print the supported features
++ * Add support for setting the default hash algorithm used in b-tree
++ directories in tune2fs (from a command-line option) or mke2fs (via
++ mke2fs.conf). In addition, change the default hash algorithm to
++ half_md4, since it is faster and better
++ * Fix support for empty directory blocks in ext4 filesystems with
++ 64k blocksize filesystems
++ * The filefrag program now has a more accurate calculation for the
++ number of ideal extents
++- fix linking of blkid
++ e2fsprogs-1.41.1-link_fix.patch
++- remove patches
++ e2fsprogs-1.41.0-fix_messages.patch
++ e2fsprogs-1.41.0-tst_link_fix.patch
++* Fri Aug 29 2008 kay.sievers@novell.com
++- update libvolume_id patch to work with libvolume_id.so.1
++* Thu Aug 21 2008 pth@suse.de
++- Add current german messages.
++- Fix e2fsprogs-base_devt.patch and e2fsprogs-libvolume_id-support.patch
++ so that the package tools work.
++- Add missing space to two messages and resync message
++ catalogs by configuring with --enable-maintainer-mode.
++* Wed Aug 20 2008 mkoenig@suse.de
++- add uuid related manpages to uuid-runtime subpackage [bnc#418568]
++* Mon Aug 18 2008 mkoenig@suse.de
++- currently do not install *.ext4 links for mkfs and fsck
++ tools, but only the *.ext4dev links.
++* Wed Jul 16 2008 mkoenig@suse.de
++- update to version 1.41.0
++ * add support for ext4 filesystem features:
++ extents, uninit_bg, flex_bg, huge_file, dir_nlink
++ * support for checking journal checksums
++ * tune2fs supports migrating fs from 128 byte inode to 256 byte
++ * add support for "undo"
++ * e2fsck now performs more extensive and careful checks of extended
++ attributes stored in the inod
++- fix e2fsck make check
++* Wed Jul 2 2008 schwab@suse.de
++- Remove doubleplusungood -fsigned-char.
++* Tue Jun 24 2008 mkoenig@suse.de
++- update to version 1.40.11
++ most important changes since 1.40.8:
++ * Mke2fs will not allow the logically incorect combination of
++ resize_inode and meta_bg, which had previously caused mke2fs
++ to create a corrupt fileystem
++ * Fix mke2fs's creation of resize inode when there is a
++ non-standard s_first_data_block setting
++ * Teach fsck to treat "ext4" and "ext4dev" as ext* filesystems
++ * Fix fsck so that progress information is sent back correctly
++ * Add detection for ZFS volumes to the libblkid library
++- remove e2fsprogs-1.40.7.de.po, updated upstream
++- remove patches
++ e2fsprogs-1.40.7-uuidd_security.patch
++ e2fsprogs-1.40.8-e2fsck_recovery_fix.patch
++ e2fsprogs-1.40.8-fix_ext2fs_swap_inode_full.patch
++ e2fsprogs-1.40.8-missing_init.patch
++* Tue May 27 2008 ro@suse.de
++- fix baselibs.conf to not generate unresolvable deps
++* Wed May 21 2008 cthiel@suse.de
++- fix baselibs.conf
++* Wed May 21 2008 mkoenig@suse.de
++- e2fsck: Fix potential data corruptor bug in journal recovery
++ [bnc#393095]
++* Tue May 13 2008 mkoenig@suse.de
++- libuuid: do not use unintialized variable [bnc#386649]
++* Wed May 7 2008 coolo@suse.de
++- fix provides/obsoletes for rename
++* Thu Apr 10 2008 ro@suse.de
++- added baselibs.conf file to build xxbit packages
++ for multilib support
++* Tue Mar 18 2008 pth@suse.de
++- Readd the current de.po just submitted upstream to the TP robot.
++* Fri Mar 14 2008 mkoenig@suse.de
++- update to version 1.40.8
++ * Fixed e2image -I so it works on image files which are larger than 2GB
++ * Fixed e2fsck's handling of directory inodes with a corrupt size field
++ * Fixed e2fsck handling of pass 2 "should never happen error"
++ * Fixed Resize2fs bug resizing large inodes with extended attributes
++- update README.SUSE: give some hints on enabling uuidd, since it has
++ been decided to not enable it by default [bnc#354398]
++- removed
++ de.po (updated upstream)
++* Tue Mar 4 2008 mkoenig@suse.de
++- update to version 1.40.7
++ * Remove support for clearing the SPARSE_SUPER feature from tune2fs, and
++ depreciate the -s option, since it can result in filesystems which
++ e2fsck can't fix easily. There are very good reasons for wanting to
++ disable sparse_super; users who wants to turn off sparse_super can use
++ debugfs.
++ * Add missing options to mke2fs's usage message
++ * Fix bug in resize2fs when large (greater than 128 byte) inodes are
++ moved when a filesystem is shrunk
++ * E2fsck now prints an explicit message when the bad block inode is
++ updated, to avoid confusion about why the filesystem was modified.
++ * Allow mke2fs and tune2fs manipulate the large_file feature.
++ Previously we just let the kernel and e2fsck do this automatically,
++ but e2fsck will no longer automatically clear the large_file feature
++ * Suppress message about an old-style fstab if the fstab file is empty
++ * Change e2fsck to no longer clear the LARGE_FILES feature flag
++ automatically, when there are no more > 2GB files in the filesystem.
++ * Fix bug which could cause libblkid to seg fault if a device mapper
++ volume disappears while it is being probed.
++ * Enhance e2fsck's reporting of unsupported filesystem feature flags
++ * Fix option syntax in dumpe2fs for explicit superblock and blocksize
++ parameters
++ * Add support to tune2fs to clear the resize_inode feature
++ * Teach blkid to detect LVM2 physical volumes
++ * Add support for setting RAID stride and stripe-width via mke2fs and
++ tune2fs. Teach dumpe2fs to print the RAID parameters
++ * Add support for setting new superblock fields to debugfs's
++ set_super_value
++ * Add support for printing "mostly-printable" extended attributes in
++ Debugfs
++ * Add support for the -M option to fsck, which causes it to ignore
++ mounted filesystem
++ * Fix uuidd so that it creates the pid file with the correct pid number
++- The -M option is now used upstream to ignore mounted filesystems,
++ this has previously been in SuSE with -m. This has to be changed
++ since lower case characters are reserved for filesystem specific
++ checker options. The "like mount" behaviour previously in SuSE
++ with -M has been removed.
++- add patch from Eric Sandeen to fix the loss of extended attributes
++ in large inodes upon resize
++- removed patches
++ fsck-ignore-mounted.patch
++* Wed Feb 27 2008 mkoenig@suse.de
++- update to version 1.40.6
++ * Add support for returning labels for UDF filesystems in the blkid
++ library
++ * Fix bug in the blkid library where cached filesystems was not being
++ flushed
++ * Added logic to the blkid library to automatically choose whether a
++ filesystem should be mounted as ext4 or ext4dev, as appropriate
++ * Allow tune2fs to set and clear the test_fs flag on ext4 filesystems
++- removed patches:
++ e2fsprogs-1.40.5-blkid_cache_file_env.patch (merged)
++ libcom_err-no-static-buffer.patch (fixed upstream with TLS)
++* Tue Jan 29 2008 mkoenig@suse.de
++- update to version 1.40.5:
++ * Fix a potential overflow big in e2image
++ * Mke2fs will now create new filesystems with 256 byte inodes and the
++ ext_attr feature flag by default
++ * Teach e2fsck to ignore certain "safe" filesystem features which are
++ set automatically by the kernel
++ * Add support in tune2fs and mke2fs for making a filesystem as being "ok
++ to be used with test kernel code"
++ * Change e2fsck -fD so that it sorts non-htree directories by inode
++ numbers instead of by name, since that optimizes performances much
++ more significantly
++ * If e2image fills the disk, fix it so it exits right away
++ * If ftruncate64() is not available for resize2fs, let it use ftrucate()
++ instead
++ * Add support for detecting HFS+ filesystems in the blkid library
++ * Add supprt in the blkid library for ext4/ext4dev filesystems
++ * Fix a bug in blkid where it could die on a floating point exception
++ when presented with a corrupt reiserfs image
++ * Fix blkid's handling of ntfs UUID's so that leading zeros are printed
++ such that UUID string is a fixed length
++ * Fix debugfs's 'lsdel' command so it uses ext2fs_block_iterate2 so it
++ will work with large files
++ * Allow the debugfs 'undel' command to undelete an inode without linking
++ it to a specific destination directory
++- enhance init script
++- add sysconfig parameter UUIDD_ON_DEMAND_ONLY setting the startup
++ policy for uuidd
++- remove merged and obsolete patches:
++ close.patch
++ e2fsprogs-1.33-codecleanup.diff
++ e2fsprogs-1.35-libdir.diff
++ e2fsprogs-1.39-resize2fs_manpage.patch
++ e2fsprogs-1.40.4-uuid_null.patch
++ e2fsprogs-blkid.diff
++ e2fsprogs-blkid_probe_hfsplus.patch
++ e2fsprogs-strncat.patch
++ elf.diff
++ e2fsprogs-mkinstalldirs.patch
++ e2fsprogs-special_make_targets.patch
++ e2fsprogs-probe_reiserfs-fpe.patch
++ e2fsprogs-1.33-fsckdevdisplay.diff
++ e2fsprogs-uninitialized.diff
++* Wed Jan 16 2008 mkoenig@suse.de
++- update to version 1.40.4:
++ * Fix potential security vulnerability (CVE-2007-5497)
++ * Fix big-endian byte-swapping bug in ext2fs_swap_inode_full()
++ * Fix a bug in ext2fs_initialize() which causes mke2fs to fail while
++ allocating inode tables for some relatively rare odd disk sizes.
++ * Fix bug in ext2fs_check_desc() which will cause e2fsck to complain
++ about (valid) filesystems where the inode table extends to the last
++ block of the block group
++ * Change e2fsck so it will not complain if a file has blocks reallocated
++ up to the next multiple of a system's page size
++ * Change e2fsck so it uses sscanf() instead of atoi() so it non-numeric
++ arguments are detected as such and the parse error is reported to the
++ user
++ * Make the e2fsprogs program more robust so that they will not crash
++ when opening a corrupt filesystem where s_inode_size is zero.
++ * Fix e2fsck so that if the superblock is corrupt, but still looks
++ vaguely like an ext2/3/4 superblock, that it automatically tries to
++ fall back to the backup superblock, instead of failing with a hard
++ error
++ * Fix fsck to ignore /etc/fstab entries for bind mounts
++ * E2fsck will no longer mark a filesystem as invalid if it has time
++ errors and the user refuses to fix the problem.
++ * Enhance blkid's detection of FAT filesystems
++ * Enhance e2fsck so it will force the backup superblocks to be backed up
++ if the filesystem is consistent and key constants have been changed
++ (i.e., by an on-line resize) or by e2fsck in the course of its
++ operations.
++ * Enhance the blkid library so it will recognize squashfs filesystems
++ * Fix e2image so that in raw mode it does not create an image file which
++ is one byte too large
++ * Fix heuristics in blkid which could cause a disk without partitions to
++ be incorrectly skipped when a loopback device is present
++ * Avoid division by zero error when probing an invalid FAT filesystem in
++ the blkid library
++ * Fix sign-extension problem on 64-bit systems in in the com_err
++ library
++ * Format control characters and characters with the high eighth bit set
++ when printing the contents of the blkid cache, to prevent filesystems
++ with garbage labels from sending escape sequences
++ * Fix fsck to only treat the '#' character as a comment at the beginning
++ of the line in /etc/fstab
++ * Filter out the NEEDS_RECOVERY feature flag when writing out the backup
++ superblocks
++ * Improve time-based UUID generation. A new daemon uuidd, is started
++ automatically by libuuid if necessary
++- new subpackage: uuid-runtime
++ containing uuidd and uuidgen
++- removed obsolete patches
++ e2fsprogs-1.39-uuid_duplicates.patch
++ e2fsprogs-1.40.2-open_fix.patch
++ e2fsprogs-1.40-be_swap_fix.patch
++* Mon Nov 26 2007 mkoenig@suse.de
++- fix build: missing third argument to open
++- do not remove buildroot in install section
++* Fri Jul 27 2007 mkoenig@suse.de
++- fix typo in specfile
++* Thu Jul 26 2007 mkoenig@suse.de
++- Fix big-endian byte-swapping bug in ext2fs_swap_inode_full()
++ e2fsprogs-1.40-be_swap_fix.patch
++* Wed Jul 25 2007 bk@suse.de
++- e2fsprogs requires libext2fs2 of the same version number to work
++- enable make check and make gcc-wall in %%check (executed last)
++- shut up bogus gcc warning for use of uninitialised variables
++* Wed Jul 25 2007 mkoenig@suse.de
++- remove e2fsprogs-blkid_probe_ext4.patch
++ broken and it is way too early to support
++* Wed Jul 18 2007 mkoenig@suse.de
++- update to version 1.40.2
++ bugfix release
++* Mon Jul 9 2007 mkoenig@suse.de
++- update to version 1.40.1:
++ * Bugfix release
++- removed patch (merged upstream)
++ e2fsprogs-1.39-cleanup.patch
++* Wed Jul 4 2007 mkoenig@suse.de
++- update to version 1.40
++- branch off libraries:
++ libblkid1
++ libuuid1
++ libext2fs2
++- renaming libcom_err to libcom_err2
++* Tue Jun 19 2007 mkoenig@suse.de
++- fix e2fsprogs-1.39-uuid_duplicates.patch [#189640]
++ * detach shm segment after use
++ * set SEM_UNDO for semaphore operations, otherwise we do not
++ get a clean state after interruption by a signal
++* Wed Apr 25 2007 pth@suse.de
++- Fix German translations.
++* Wed Apr 11 2007 mkoenig@suse.de
++- blkid: fix hfsplus probing to detect HFS+ volumes embedded
++ in a HFS volume
++* Wed Apr 4 2007 mkoenig@suse.de
++- add Supplements line [FATE#301966]
++* Fri Mar 30 2007 mkoenig@suse.de
++- update to current hg version from 29-03-2007
++ * Fixes a lot of memory leaks and other bugs
++- remove merged patch:
++ e2fsprogs-1.39-check_fs_open-in-dump_unused.patch
++* Wed Mar 28 2007 mkoenig@suse.de
++- blkid: add hfsplus volume detection (FATE#302071)
++- blkid: add experimental detection of ext4dev (FATE#301897)
++* Thu Jan 25 2007 mkoenig@suse.de
++- fix segfault in debugfs when using without open fs [#238140]
++* Mon Jan 22 2007 mkoenig@suse.de
++- don't chmod -w headers in compile_et to avoid build
++ problems with some packages
++* Fri Jan 19 2007 mkoenig@suse.de
++- update to version 1.40-WIP-1114 (FATE#301897)
++ * support for ext4
++ * several bugfixes
++- remove ext2resize from package, because the online resizing
++ functionality has been merged into resize2fs since version 1.39
++ and ext2resize is unmaintained.
++* Tue Dec 19 2006 meissner@suse.de
++- fixed build
++* Wed Nov 8 2006 ro@suse.de
++- provide libcom_err-devel in libcom_err
++* Thu Oct 19 2006 mkoenig@suse.de
++- fix bug in uuid patch
++* Mon Oct 16 2006 mkoenig@suse.de
++- fix build of shared lib
++* Thu Oct 12 2006 mkoenig@suse.de
++- fix uuid bug [#189640]
++- fix blkid problem with empty FAT labels [#211110]
++- fix small typo in resize2fs man page
++* Tue Sep 26 2006 mkoenig@suse.de
++- fix bug in fsck udev/libvolume_id patch [#205671]
++* Wed Sep 20 2006 mkoenig@suse.de
++- update to version 1.39:
++ * Fix 32-bit cleanliness
++ * Change mke2fs to use /etc/mke2fs.conf
++ * Mke2fs will now create filesystems hash trees and
++ on-line resizing enabled by default
++ * The e2fsprogs tools (resize2fs, e2fsck, mke2fs) will open the
++ filesystem device node in exclusive mode
++ * Add support for on-line resizing to resize2fs.
++ * The blkid library will now store the UUID of the external
++ journal used by ext3 filesystems
++ * E2fsck will now consult a configuration file, /etc/e2fsck.conf
++ * E2fsck will detect if the superblock's last mount field or
++ last write field is in the future, and offer to fix if so.
++ * E2fsck now checks to see if the superblock hint for the
++ location of the external journal is incorrect
++ * Resize2fs will now automatically determine the RAID stride
++ parameter that had been used to create the filesystem
++ * Fix mke2fs so that it correctly creates external journals on
++ big-endian machines
++ * Fix a bug in the e2p library
++ * Add a new debugfs command, set_current_time
++ * Fix debugfs commands
++ * Fix mklost+found so that it creates a full-sized directory on
++ filesystems with larger block sizes.
++ * Fix a file descriptor leak in blkid library
++ * Allow fractional percentages to the -m option in mke2fs and tune2fs
++ * Add support for device mapper library to the blkid library
++ * Fix the blkid library so that it notices when an ext2 filesystem
++ is upgraded to ext3.
++ * Improve the blkid's library VFAT/FAT detectio
++ * Add support for the reiser4 and software suspend partitions
++ to the blkid library.
++- update ext2resize to version 1.1.19:
++ * Add support for ext3 online resizing
++ * Support LARGEFILE compat flag
++ * Make the resize inode part of the fs struct
++ * Add the FL_IOCTL flag
++ * Bugfixes
++* Fri Aug 11 2006 pth@suse.de
++- Fix to comply with gettex 0.15.
++- Move ext2resize sources to toplevel directory.
++- Fix use of MKINSTALLDIRS.
++* Fri Aug 4 2006 kay.sievers@suse.de
++- update libvolume_id integration to match util-linux
++* Fri Jun 16 2006 ro@suse.de
++- added libvolume_id-devel to BuildRequires
++- updated e2fsprogs-udev.patch to match header rename
++* Wed Feb 8 2006 hare@suse.de
++- Fix fsck -m (#146606) to really check filesystems.
++* Mon Jan 30 2006 hvogel@suse.de
++- Document -I inode-size [#145445]
++* Sun Jan 29 2006 hvogel@suse.de
++- fix hares patch
++* Fri Jan 27 2006 hare@suse.de
++- Add option to not return an error code for mounted
++ filesystems (#145400).
++* Wed Jan 25 2006 mls@suse.de
++- converted neededforbuild to BuildRequires
++* Fri Jan 20 2006 hvogel@suse.de
++- Support ext2/ext3 online resize
++* Mon Dec 12 2005 hvogel@suse.de
++- remove lib/et/test_cases/imap_err* from the tarball because
++ they are not distributeable.
++* Tue Dec 6 2005 pth@suse.de
++- remove unnecessary type-punning
++- reduce compiler warnings
++* Tue Nov 15 2005 jblunck@suse.de
++- added close.patch provided by Ted Tso (IBM) to fix bug #132708
++* Mon Nov 14 2005 hare@suse.de
++- Use devt when comparing devices
++- fsck: Use information provided by udev for detecting devices
++* Wed Oct 5 2005 hvogel@suse.de
++- fix too few arguments to a *printf function
++- require libcom_err on e2fsprogs-devel
++* Fri Sep 9 2005 hvogel@suse.de
++- add gross hack to avoid divide by zero in probe_reiserfs
++ [#115827]
++* Mon Aug 8 2005 hvogel@suse.de
++- added environment variable BLKID_SKIP_CHECK_MDRAID to work around
++ broken software raid detection [Bug #100530]
++* Tue Jul 5 2005 hvogel@suse.de
++- update to version 1.38
++- mt reworked his patches a bit. See Bug #66534
++* Thu Jun 23 2005 hvogel@suse.de
++- call ldconfig in post/postun
++- add version to devel package dependencie
++- readd missing patch (7)
++* Thu Apr 28 2005 hvogel@suse.de
++- update to version 1.37
++- mt reworked one libcom_err patch a bit to provide more
++ meaningfull error handling
++- fix retuen value in inode.c
++* Thu Mar 31 2005 hvogel@suse.de
++- split libcom_err to a subpackage
++- add mutex synchronization to e2fsprogs/lib/et
++- removed usage of a static buffer in error_message()
++- disabled init_error_table function
++- disabled build of unused e2fsck.static
++* Fri Mar 18 2005 hvogel@suse.de
++- fix endian unsafeness in getopt (#73855)
++* Tue Feb 8 2005 hvogel@suse.de
++- Update to 1.36 final
++* Tue Aug 10 2004 pth@suse.de
++- Update to 1.35 RC5
++* Wed Mar 17 2004 pth@suse.de
++- Don't build the EVMS plugin because it's out of date for
++ EVMS in kernel 2.6.
++* Thu Mar 4 2004 pth@suse.de
++- Add patch from Olaf Hering that makes fsck read a different
++ blkid file via BLKID_FILE environment var (#35156)
++* Thu Feb 19 2004 kukuk@suse.de
++- Remove obsolete recode call
++* Mon Jan 12 2004 ro@suse.de
++- removed run_ldconfig again
++* Sat Jan 10 2004 adrian@suse.de
++- add %%run_ldconfig
++* Thu Oct 2 2003 pthomas@suse.de
++- Add patch from Kurt Garloff to make e2fsprogs compile
++ with latest kernel headers (SCSI_BLK_MAJOR undefined).
++* Mon Sep 15 2003 pthomas@suse.de
++- Fix czech message catalog which has been transformed twice
++ from latin2 to utf-8 and add an iconv call to the spec file
++ that will make building fail if the file is corrected upstream.
++* Sat Aug 30 2003 agruen@suse.de
++- Fix an endianness bug in ext2fs_swap_inode: Fast symlinks that
++ have extended attributes are acidentally byte swapped on
++ big-endian machines.
++* Fri Aug 1 2003 pthomas@suse.de
++- Apply patch from Ted T'so for badblocks.
++* Thu Jul 31 2003 pthomas@suse.de
++- Update to 1.34.
++- Various fixes to libcom_err to make it really compatible
++ to the heimdal version.
++- Fix int<->pointer casts.
++- Fix places that may break strict aliasing.
++* Fri Jun 20 2003 ro@suse.de
++- added directory to filelist
++* Wed May 14 2003 pthomas@suse.de
++- Use %%defattr
++- Include all installed files.
++* Tue Apr 29 2003 mfabian@suse.de
++- add libblkid.so* and libblkid.a to file lists
++* Thu Apr 24 2003 pthomas@suse.de
++- Update to 1.33 and adapt patches.
++- Add missing headers where necessary.
++* Thu Apr 24 2003 ro@suse.de
++- fix install_info --delete call and move from preun to postun
++* Fri Feb 7 2003 ro@suse.de
++- added install_info macros
++* Tue Oct 1 2002 garloff@suse.de
++- Fix segfault in display of real device in presence of volume
++ name. #20422
++* Tue Sep 3 2002 mls@suse.de
++- remove duplicate evms scan (already included in 1.28)
++- fix volume group scan bug
++* Mon Sep 2 2002 agruen@suse.de
++- Update to 1.28. Includes very minor fixes in htree, which we have
++ disabled anyway, one fix that we had in a separate patch, and
++ has additional release notes.
++* Mon Aug 19 2002 agruen@suse.de
++- Update to 1.28-WIP-0817, which includes Extended Attribute
++ and several smaller fixes. We disable htree support and don't
++ install the evms library for now.
++- Remove `make gcc-wall' for now (as it does a `make clean' in
++ doc/).
++* Thu Aug 15 2002 mls@suse.de
++- support jfs, reiserfs, evms in label/uuid scan (code stolen
++ from util-linux:mount)
++* Sun Jul 28 2002 kukuk@suse.de
++- Remove unused tetex from neededforbuild
++* Fri Jul 19 2002 olh@suse.de
++- use a better method for finding missed filelist entries
++* Fri Apr 12 2002 sf@suse.de
++- added %%{_libdir}
++- added fix for lib/lib64
++* Thu Mar 28 2002 bk@suse.de
++- fix man pages, filelist and add check for missing files in packs
++* Wed Mar 27 2002 bk@suse.de
++- Update to 1.27, fixes resource limit problem for other archs and
++ merges many patches
++* Thu Mar 7 2002 pthomas@suse.de
++- Add patch from Ted T'so to keep e2fsck from dumping
++ core when the journal inode is missing.
++* Mon Mar 4 2002 pthomas@suse.de
++- Fix implicit function declarations and some other gcc warnings.
++- Include patch from Kurt Garloff to make e2fsck display the
++ device name in addition to the volume label. Adapt it to 1.26.
++- Adapt BSD_disklables.diff to new code.
++- Set LC_CTYPE in addition to LC_MESSAGES.
++- Repack with bzip2.
++* Fri Mar 1 2002 bk@suse.de
++- Update to 1.26. This release has a number of critical bug
++ fixes over the previous release, version 1.25:
++* Fri Feb 15 2002 pthomas@suse.de
++- Use %%{_lib} and %%{_libdir}.
++* Wed Feb 13 2002 pthomas@suse.de
++- Make heimdal-devel conflict e2fsprogs-devel.
++ Temporary solution for bug #13145
++* Thu Dec 13 2001 pthomas@suse.de
++- Add mkfs.ext2.8 because mkfs.8 from util-linux references it.
++ Fixes bug #12613.
++* Fri Nov 23 2001 pthomas@suse.de
++- Add accidently left out e2image to file list. Fixes bug
++ [#12009]
++* Wed Oct 31 2001 ro@suse.de
++- fix for axp: should malloc buffer _before_ use
++* Wed Oct 10 2001 pthomas@suse.de
++- Update to 1.25.
++- Remove patches not needed anymore.
++- Change mke2fs to output warnings to stderr not stdout.
++- Repack as bz2.
++* Mon Sep 24 2001 olh@suse.de
++- replace ext2fs_d
++* Fri Sep 21 2001 pthomas@suse.de
++- Add patch for mke2fs from 1.25 as that bug seems to be the
++ reason for the mk_initrd warning.
++* Wed Sep 12 2001 pthomas@suse.de
++- Update to 1.24a:
++ - Fix brown-paper bug in mke2fs which caused it to segfault.
++ - Revert the BLKGETSIZE64 support as this ioctl has been used
++ by an unofficial kernel patch to update the last sector on
++ the disk, and this was causing disk corruption problems as a
++ result.
++ - Mke2fs is now more careful about zapping swap space signatures
++ and other filesystem/raid superblock magic values so.
++ - E2fsck will no longer complain if the the mode of
++ EXT2_RESIZE_INO is a regular file
++ - mke2fs and tune2fs will allow the use of UUID= or LABEL=
++ specifiers when specifying the external journal device.
++ tune2fs will also search devices looking for the external
++ journal device when removing.
++* Fri Aug 17 2001 ro@suse.de
++- update to 1.23 to enable external journals on ext3
++* Wed Aug 15 2001 pthomas@suse.de
++- Update to 1.22.
++- Drop fsck Patch as code changed.
++- Use LD_LIBRARY_PATH to run test programs.
++* Fri Jun 8 2001 pthomas@suse.de
++- Remove incorrect use of AC_REQUIRE (fails with autoconf 2.5)
++- Recompress tarball with bzip2.
++* Thu Jan 18 2001 schwab@suse.de
++- Add Obsoletes: ext2fs_d and Requires: e2fsprogs to devel
++ subpackage.
++* Mon Nov 6 2000 pthomas@suse.de
++- use _mandir and _infodir more consistently in spec file.
++* Sun Nov 5 2000 ro@suse.de
++- renamed packages to e2fsprogs/e2fsprogs-devel
++* Fri Jun 9 2000 kasal@suse.cz
++- Build dynamic libraries. Partition Surprise requires them.
++- Make /usr/lib/*.so symlinks relative.
++* Thu Mar 23 2000 kukuk@suse.de
++- Don't erase BSD labels on Alpha
++- Add Y2K fix to debugfs
++* Wed Mar 22 2000 kukuk@suse.de
++- Fix ifdefs for gcc 2.95.2
++* Tue Feb 22 2000 garloff@suse.de
++- Bugfix for the change ...
++- ... and change version no of fsck to 1.18a to reflect the change.
++* Sun Feb 20 2000 garloff@suse.de
++- Patch to be more clever WRT to basenames (used to find out wheter
++ a fsck for this device is already running).
++- Give better message in case fsck fails, to tell the user what to
++ do. (e2fsck only displays the label, nowadays :-( )
++* Thu Feb 10 2000 kukuk@suse.de
++- Use autoconf to create new configure
++* Wed Jan 19 2000 ro@suse.de
++- man,info -> /usr/share
++* Mon Jan 17 2000 ro@suse.de
++- fixed to build on kernels >= 2.3.39
++* Sat Nov 13 1999 kukuk@suse.de
++- Update to e2fsprogs 1.18
++- Create new sub-package ext2fs_d which includes libs and headers
++* Mon Nov 8 1999 ro@suse.de
++-fixed coredump in e2fsck
++* Fri Oct 29 1999 ro@suse.de
++-e2fsprogs: 1.17 vital bugfix in e2fsck
++* Sun Oct 24 1999 ro@suse.de
++- e2fsprogs: update to 1.16, sparse_super is default on when
++ called on a > 2.2 kernel, can be overridden with -O none
++* Fri Oct 15 1999 garloff@suse.de
++- Disabled flushb again. (Moved to ddrescue.)
++* Mon Sep 13 1999 bs@suse.de
++- ran old prepare_spec on spec file to switch to new prepare_spec.
++* Wed Sep 1 1999 ro@suse.de
++- mke2fs: sparse superblocks default back to "off"
++* Tue Aug 31 1999 ro@suse.de
++- update to 1.15
++- cleanup diff and specfile
++* Sun Jul 18 1999 garloff@suse.de
++- Enabled flushb compilation
++* Sat Jun 26 1999 kukuk@suse.de
++- Add fix for fsck core dump from beta list
++* Tue Mar 16 1999 ro@suse.de
++- fixed configure call
++* Fri Mar 12 1999 ro@suse.de
++- update to 1.14
++* Thu Oct 29 1998 ro@suse.de
++- respect change in 2.1.126 SCSI_DISK_MAJOR
++* Tue Sep 1 1998 ro@suse.de
++- update to 1.12
++* Sat Apr 26 1997 florian@suse.de
++- update to new version 1.10
++* Sun Apr 13 1997 florian@suse.de
++- update to new version 1.08
++- do not include ext2 libs and include files as they are only used by dump
++* Thu Jan 2 1997 florian@suse.de
++- update to new version 1.06
++* Thu Jan 2 1997 florian@suse.de
++- update to newer version
++- use now static libs instead of 4 small shared libs
++* Thu Jan 2 1997 florian@suse.de
++ update to version 1.0.4
+Index: e2fsprogs/configure.in
+===================================================================
+--- e2fsprogs.orig/configure.in
++++ e2fsprogs/configure.in
+@@ -1232,7 +1232,7 @@ test -d lib || mkdir lib
+ test -d include || mkdir include
+ test -d include/linux || mkdir include/linux
+ test -d include/asm || mkdir include/asm
+-for i in MCONFIG Makefile e2fsprogs.spec \
++for i in MCONFIG Makefile e2fsprogs.spec e2fsprogs-SUSE_LINUX-11.spec \
+ util/Makefile util/subst.conf util/gen-tarball \
+ lib/et/Makefile lib/ss/Makefile lib/e2p/Makefile \
+ lib/ext2fs/Makefile lib/ext2fs/ext2_types.h \
+Index: e2fsprogs/contrib/build-rpm
+===================================================================
+--- e2fsprogs.orig/contrib/build-rpm
++++ e2fsprogs/contrib/build-rpm
+@@ -34,11 +34,46 @@ EXCLUDE="--exclude .hg* --exclude .pc*"
+
+ [ "`rpmbuild --version 2> /dev/null`" ] && RPM=rpmbuild || RPM=rpm
+
++# which distro and release
++DISTRO=$(lsb_release -is)
++RELEASE=$(lsb_release -rs)
++# now the hacks in case either is empty
++if [ -z "$DISTRO" ]; then
++ echo "You really ought to install the lsb_release binary for this distro"
++ if grep "SUSE Linux Enterprise Server " /etc/issue; then
++ DISTRO="SUSE LINUX"
++ fi
++fi
++if [ -z "$DISTRO" ]; then
++ echo "Could not determine the distribution. Please install the lsb_release binary"
++ exit 1
++fi
++if [ -z "$RELEASE" ]; then
++ echo "You really ought to install the lsb_release binary for this distro"
++ case "$DISTRO" in
++ SUSE\ LINUX)
++ if grep "SUSE Linux Enterprise Server 11 " /etc/issue; then
++ RELEASE=11
++ elif grep "SUSE Linux Enterprise Server 10 " /etc/issue; then
++ RELEASE=10
++ fi
++ ;;
++ esac
++fi
++if [ -z "$RELEASE" ]; then
++ echo "Could not determine the release. Please install the lsb_release binary"
++ exit 1
++fi
++
++SPECFILE="$currdir/e2fsprogs-${DISTRO// /_}-$RELEASE.spec"
++if [ ! -f "$SPECFILE" ]; then
++ SPECFILE="$currdir/e2fsprogs.spec"
++fi
+ $RPM --define "_sourcedir $tmpdir" \
+ --define "_topdir ${RPM_TOPDIR:-$(rpm -E %_topdir)}" \
+ --define "_tmpdir ${RPM_TMPDIR:-$TMP}" \
+ --define "extra_config_flags ${EXTRA_CONFIG_FLAGS:-''}" \
+- -ba $currdir/e2fsprogs.spec
++ -ba $SPECFILE
+
+ rpm_exit=$?
+ rm -rf $tmpdir
--- /dev/null
+Access inode size via EXT2_I_SIZE() instead of using i_size directly,
+so that files larger than 4GB are correctly handled.
+
+Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
+
+Index: e2fsprogs/debugfs/debugfs.c
+===================================================================
+--- e2fsprogs.orig/debugfs/debugfs.c
++++ e2fsprogs/debugfs/debugfs.c
+@@ -722,12 +722,9 @@ void internal_dump_inode(FILE *out, cons
+ }
+ fprintf(out, "%sUser: %5d Group: %5d Size: ",
+ prefix, inode_uid(*inode), inode_gid(*inode));
+- if (LINUX_S_ISREG(inode->i_mode)) {
+- unsigned long long i_size = (inode->i_size |
+- ((unsigned long long)inode->i_size_high << 32));
+-
+- fprintf(out, "%llu\n", i_size);
+- } else
++ if (LINUX_S_ISREG(inode->i_mode))
++ fprintf(out, "%llu\n", EXT2_I_SIZE(inode));
++ else
+ fprintf(out, "%d\n", inode->i_size);
+ if (os == EXT2_OS_HURD)
+ fprintf(out,
+@@ -901,9 +898,7 @@ void do_dump_extents(int argc, char **ar
+ return;
+ }
+
+- logical_width = int_log10(((inode.i_size |
+- (__u64) inode.i_size_high << 32) +
+- current_fs->blocksize - 1) /
++ logical_width = int_log10((EXT2_I_SIZE(&inode)+current_fs->blocksize-1)/
+ current_fs->blocksize) + 1;
+ if (logical_width < 5)
+ logical_width = 5;
+Index: e2fsprogs/debugfs/ls.c
+===================================================================
+--- e2fsprogs.orig/debugfs/ls.c
++++ e2fsprogs/debugfs/ls.c
+@@ -79,7 +79,7 @@ static int list_dir_proc(ext2_ino_t dir
+ if (LINUX_S_ISDIR(inode.i_mode))
+ fprintf(ls->f, "/");
+ else
+- fprintf(ls->f, "%lld/", inode.i_size | ((__u64)inode.i_size_high << 32));
++ fprintf(ls->f, "%lld/", EXT2_I_SIZE(&inode));
+ fprintf(ls->f, "\n");
+ }
+ else if (ls->options & LONG_OPT) {
+@@ -102,8 +102,7 @@ static int list_dir_proc(ext2_ino_t dir
+ if (LINUX_S_ISDIR(inode.i_mode))
+ fprintf(ls->f, "%5d", inode.i_size);
+ else
+- fprintf(ls->f, "%5llu", inode.i_size |
+- ((unsigned long long) inode.i_size_high << 32));
++ fprintf(ls->f, "%5llu", EXT2_I_SIZE(&inode));
+ fprintf (ls->f, " %s %s\n", datestr, name);
+ } else {
+ sprintf(tmp, "%c%u%c (%d) %s ", lbr, dirent->inode, rbr,
+Index: e2fsprogs/e2fsck/pass1.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/pass1.c
++++ e2fsprogs/e2fsck/pass1.c
+@@ -2033,8 +2033,7 @@ static void check_blocks(e2fsck_t ctx, s
+ }
+ pctx->num = 0;
+ }
+- if (LINUX_S_ISREG(inode->i_mode) &&
+- (inode->i_size_high || inode->i_size & 0x80000000UL))
++ if (LINUX_S_ISREG(inode->i_mode) && EXT2_I_SIZE(inode) >= 0x80000000UL)
+ ctx->large_files++;
+ if ((pb.num_blocks != ext2fs_inode_i_blocks(fs, inode)) ||
+ ((fs->super->s_feature_ro_compat &
+Index: e2fsprogs/e2fsck/pass2.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/pass2.c
++++ e2fsprogs/e2fsck/pass2.c
+@@ -1220,8 +1220,7 @@ static void deallocate_inode(e2fsck_t ct
+ if (!ext2fs_inode_has_valid_blocks(&inode))
+ return;
+
+- if (LINUX_S_ISREG(inode.i_mode) &&
+- (inode.i_size_high || inode.i_size & 0x80000000UL))
++ if (LINUX_S_ISREG(inode.i_mode) && EXT2_I_SIZE(&inode) >= 0x80000000UL)
+ ctx->large_files--;
+
+ pctx.errcode = ext2fs_block_iterate3(fs, ino, 0, block_buf,
+Index: e2fsprogs/e2fsck/super.c
+===================================================================
+--- e2fsprogs.orig/e2fsck/super.c
++++ e2fsprogs/e2fsck/super.c
+@@ -170,8 +170,7 @@ static int release_inode_blocks(e2fsck_t
+ if (inode->i_links_count) {
+ pb.truncating = 1;
+ pb.truncate_block = (e2_blkcnt_t)
+- ((((long long)inode->i_size_high << 32) +
+- inode->i_size + fs->blocksize - 1) /
++ ((EXT2_I_SIZE(inode) + fs->blocksize - 1) /
+ fs->blocksize);
+ pb.truncate_offset = inode->i_size % fs->blocksize;
+ } else {
+Index: e2fsprogs/lib/ext2fs/extent.c
+===================================================================
+--- e2fsprogs.orig/lib/ext2fs/extent.c
++++ e2fsprogs/lib/ext2fs/extent.c
+@@ -253,9 +253,8 @@ extern errcode_t ext2fs_extent_open2(ext
+ handle->path[0].max_entries = ext2fs_le16_to_cpu(eh->eh_max);
+ handle->path[0].curr = 0;
+ handle->path[0].end_blk =
+- ((((__u64) handle->inode->i_size_high << 32) +
+- handle->inode->i_size + (fs->blocksize - 1))
+- >> EXT2_BLOCK_SIZE_BITS(fs->super));
++ (EXT2_I_SIZE(handle->inode) + fs->blocksize - 1) >>
++ EXT2_BLOCK_SIZE_BITS(fs->super);
+ handle->path[0].visit_num = 1;
+ handle->level = 0;
+ handle->magic = EXT2_ET_MAGIC_EXTENT_HANDLE;
--- /dev/null
+Index: e2fsprogs-1.41.1/tests/f_extents_ei_block/script
+===================================================================
+--- /dev/null
++++ e2fsprogs-1.41.1/tests/f_extents_ei_block/script
+@@ -0,0 +1,3 @@
++rm -f $test_name.ok $test_name.failed
++echo "skipped"
++
++
--- /dev/null
+Add the distro version to the RPM release number, so that it the
+RPM names do not conflict.
+
+Allow the RPM built from upstream to replace the split packages provided
+by the distros. At some point in the future it may be desirable to also
+split the RPM built by this spec file, but this is complicated by the
+fact that SLES and RHEL have different splits.
+
+Signed-off-by: Girish Shilamkar <girish.shilamkar@sun.com>
+Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
+
+Index: e2fsprogs/e2fsprogs.spec.in
+===================================================================
+--- e2fsprogs.orig/e2fsprogs.spec.in
++++ e2fsprogs/e2fsprogs.spec.in
+@@ -6,13 +6,22 @@
+ Summary: Utilities for managing ext2/ext3/ext4 filesystems
+ Name: e2fsprogs
+ Version: @E2FSPROGS_PKGVER@
+-Release: 0
++Release: 0%{_vendor}
+ License: GPLv2
+ Group: System Environment/Base
+ Source: ftp://download.sourceforge.net/pub/sourceforge/e2fsprogs/e2fsprogs-%{version}.tar.gz
+-Url: http://e2fsprogs.sourceforge.net/
++Url: http://build.whamcloud.com/job/e2fsprogs/
+ Prereq: /sbin/ldconfig
+ BuildRoot: %{_tmppath}/%{name}-root
++%if %{_vendor} == "suse"
++Group: System/Filesystems
++Provides: e2fsbn ext2fs libcom_err = %{version} ldiskfsprogs = %{version}
++Obsoletes: ext2fs libcom_err < %{version}
++%else
++Group: System Environment/Base
++Provides: e2fsprogs-libs = %{version} ldiskfsprogs = %{version}
++Obsoletes: e4fsprogs e2fsprogs-libs < %{version}
++%endif
+
+ %description
+ The e2fsprogs package contains a number of utilities for creating,
--- /dev/null
+Test case for expanding inode size.
+
+Index: e2fsprogs/tests/f_expisize/expect.1
+===================================================================
+--- /dev/null
++++ e2fsprogs/tests/f_expisize/expect.1
+@@ -0,0 +1,427 @@
++Adding dirhash hint to filesystem.
++
++Pass 1: Checking inodes, blocks, and sizes
++Expanding inode 2.
++Expanding inode 11.
++Expanding inode 12.
++Expanding inode 13.
++Expanding inode 14.
++Expanding inode 15.
++Expanding inode 16.
++Expanding inode 17.
++Expanding inode 18.
++Expanding inode 19.
++Expanding inode 20.
++Expanding inode 21.
++Expanding inode 22.
++Expanding inode 23.
++Expanding inode 24.
++Expanding inode 25.
++Expanding inode 26.
++Expanding inode 27.
++Expanding inode 28.
++Expanding inode 29.
++Expanding inode 30.
++Expanding inode 31.
++Expanding inode 32.
++Expanding inode 33.
++Expanding inode 34.
++Expanding inode 35.
++Expanding inode 36.
++Expanding inode 37.
++Expanding inode 38.
++Expanding inode 39.
++Expanding inode 40.
++Expanding inode 41.
++Expanding inode 42.
++Expanding inode 43.
++Expanding inode 44.
++Expanding inode 45.
++Expanding inode 46.
++Expanding inode 47.
++Expanding inode 48.
++Expanding inode 49.
++Expanding inode 50.
++Expanding inode 51.
++Expanding inode 52.
++Expanding inode 53.
++Expanding inode 54.
++Expanding inode 55.
++Expanding inode 56.
++Expanding inode 57.
++Expanding inode 58.
++Expanding inode 59.
++Expanding inode 60.
++Expanding inode 61.
++Expanding inode 62.
++Expanding inode 63.
++Expanding inode 64.
++Expanding inode 65.
++Expanding inode 66.
++Expanding inode 67.
++Expanding inode 68.
++Expanding inode 69.
++Expanding inode 70.
++Expanding inode 71.
++Expanding inode 72.
++Expanding inode 73.
++Expanding inode 74.
++Expanding inode 75.
++Expanding inode 76.
++Expanding inode 77.
++Expanding inode 78.
++Expanding inode 79.
++Expanding inode 80.
++Expanding inode 81.
++Expanding inode 82.
++Expanding inode 83.
++Expanding inode 84.
++Expanding inode 85.
++Expanding inode 86.
++Expanding inode 87.
++Expanding inode 88.
++Expanding inode 89.
++Expanding inode 90.
++Expanding inode 91.
++Expanding inode 92.
++Expanding inode 93.
++Expanding inode 94.
++Expanding inode 95.
++Expanding inode 96.
++Expanding inode 97.
++Expanding inode 98.
++Expanding inode 99.
++Expanding inode 100.
++Expanding inode 101.
++Expanding inode 102.
++Expanding inode 103.
++Expanding inode 104.
++Expanding inode 105.
++Expanding inode 106.
++Expanding inode 107.
++Expanding inode 108.
++Expanding inode 109.
++Expanding inode 110.
++Expanding inode 111.
++Expanding inode 112.
++Expanding inode 113.
++Expanding inode 114.
++Expanding inode 115.
++Expanding inode 116.
++Expanding inode 117.
++Expanding inode 118.
++Expanding inode 119.
++Expanding inode 120.
++Expanding inode 121.
++Expanding inode 122.
++Expanding inode 123.
++Expanding inode 124.
++Expanding inode 125.
++Expanding inode 126.
++Expanding inode 127.
++Expanding inode 128.
++Expanding inode 129.
++Expanding inode 130.
++Expanding inode 131.
++Expanding inode 132.
++Expanding inode 133.
++Expanding inode 134.
++Expanding inode 135.
++Expanding inode 136.
++Expanding inode 137.
++Expanding inode 138.
++Expanding inode 139.
++Expanding inode 140.
++Expanding inode 141.
++Expanding inode 142.
++Expanding inode 143.
++Expanding inode 144.
++Expanding inode 145.
++Expanding inode 146.
++Expanding inode 147.
++Expanding inode 148.
++Expanding inode 149.
++Expanding inode 150.
++Expanding inode 151.
++Expanding inode 152.
++Expanding inode 153.
++Expanding inode 154.
++Expanding inode 155.
++Expanding inode 156.
++Expanding inode 157.
++Expanding inode 158.
++Expanding inode 159.
++Expanding inode 160.
++Expanding inode 161.
++Expanding inode 162.
++Expanding inode 163.
++Expanding inode 164.
++Expanding inode 165.
++Expanding inode 166.
++Expanding inode 167.
++Expanding inode 168.
++Expanding inode 169.
++Expanding inode 170.
++Expanding inode 171.
++Expanding inode 172.
++Expanding inode 173.
++Expanding inode 174.
++Expanding inode 175.
++Expanding inode 176.
++Expanding inode 177.
++Expanding inode 178.
++Expanding inode 179.
++Expanding inode 180.
++Expanding inode 181.
++Expanding inode 182.
++Expanding inode 183.
++Expanding inode 184.
++Expanding inode 185.
++Expanding inode 186.
++Expanding inode 187.
++Expanding inode 188.
++Expanding inode 189.
++Expanding inode 190.
++Expanding inode 191.
++Expanding inode 192.
++Expanding inode 193.
++Expanding inode 194.
++Expanding inode 195.
++Expanding inode 196.
++Expanding inode 197.
++Expanding inode 198.
++Expanding inode 199.
++Expanding inode 200.
++Expanding inode 201.
++Expanding inode 202.
++Expanding inode 203.
++Expanding inode 204.
++Expanding inode 205.
++Expanding inode 206.
++Expanding inode 207.
++Expanding inode 208.
++Expanding inode 209.
++Expanding inode 210.
++Expanding inode 211.
++Expanding inode 212.
++Expanding inode 213.
++Expanding inode 214.
++Expanding inode 215.
++Expanding inode 216.
++Expanding inode 217.
++Expanding inode 218.
++Expanding inode 219.
++Expanding inode 220.
++Expanding inode 221.
++Expanding inode 222.
++Expanding inode 223.
++Expanding inode 224.
++Expanding inode 225.
++Expanding inode 226.
++Expanding inode 227.
++Expanding inode 228.
++Expanding inode 229.
++Expanding inode 230.
++Expanding inode 231.
++Expanding inode 232.
++Expanding inode 233.
++Expanding inode 234.
++Expanding inode 235.
++Expanding inode 236.
++Expanding inode 237.
++Expanding inode 238.
++Expanding inode 239.
++Expanding inode 240.
++Expanding inode 241.
++Expanding inode 242.
++Expanding inode 243.
++Expanding inode 244.
++Expanding inode 245.
++Expanding inode 246.
++Expanding inode 247.
++Expanding inode 248.
++Expanding inode 249.
++Expanding inode 250.
++Expanding inode 251.
++Expanding inode 252.
++Expanding inode 253.
++Expanding inode 254.
++Expanding inode 255.
++Expanding inode 256.
++Expanding inode 257.
++Expanding inode 258.
++Expanding inode 259.
++Expanding inode 260.
++Expanding inode 261.
++Expanding inode 262.
++Expanding inode 263.
++Expanding inode 264.
++Expanding inode 265.
++Expanding inode 266.
++Expanding inode 267.
++Expanding inode 268.
++Expanding inode 269.
++Expanding inode 270.
++Expanding inode 271.
++Expanding inode 272.
++Expanding inode 273.
++Expanding inode 274.
++Expanding inode 275.
++Expanding inode 276.
++Expanding inode 277.
++Expanding inode 278.
++Expanding inode 279.
++Expanding inode 280.
++Expanding inode 281.
++Expanding inode 282.
++Expanding inode 283.
++Expanding inode 284.
++Expanding inode 285.
++Expanding inode 286.
++Expanding inode 287.
++Expanding inode 288.
++Expanding inode 289.
++Expanding inode 290.
++Expanding inode 291.
++Expanding inode 292.
++Expanding inode 293.
++Expanding inode 294.
++Expanding inode 295.
++Expanding inode 296.
++Expanding inode 297.
++Expanding inode 298.
++Expanding inode 299.
++Expanding inode 300.
++Expanding inode 301.
++Expanding inode 302.
++Expanding inode 303.
++Expanding inode 304.
++Expanding inode 305.
++Expanding inode 306.
++Expanding inode 307.
++Expanding inode 308.
++Expanding inode 309.
++Expanding inode 310.
++Expanding inode 311.
++Expanding inode 312.
++Expanding inode 313.
++Expanding inode 314.
++Expanding inode 315.
++Expanding inode 316.
++Expanding inode 317.
++Expanding inode 318.
++Expanding inode 319.
++Expanding inode 320.
++Expanding inode 321.
++Expanding inode 322.
++Expanding inode 323.
++Expanding inode 324.
++Expanding inode 325.
++Expanding inode 326.
++Expanding inode 327.
++Expanding inode 328.
++Expanding inode 329.
++Expanding inode 330.
++Expanding inode 331.
++Expanding inode 332.
++Expanding inode 333.
++Expanding inode 334.
++Expanding inode 335.
++Expanding inode 336.
++Expanding inode 337.
++Expanding inode 338.
++Expanding inode 339.
++Expanding inode 340.
++Expanding inode 341.
++Expanding inode 342.
++Expanding inode 343.
++Expanding inode 344.
++Expanding inode 345.
++Expanding inode 346.
++Expanding inode 347.
++Expanding inode 348.
++Expanding inode 349.
++Expanding inode 350.
++Expanding inode 351.
++Expanding inode 352.
++Expanding inode 353.
++Expanding inode 354.
++Expanding inode 355.
++Expanding inode 356.
++Expanding inode 357.
++Expanding inode 358.
++Expanding inode 359.
++Expanding inode 360.
++Expanding inode 361.
++Expanding inode 362.
++Expanding inode 363.
++Expanding inode 364.
++Expanding inode 365.
++Expanding inode 366.
++Expanding inode 367.
++Expanding inode 368.
++Expanding inode 369.
++Expanding inode 370.
++Expanding inode 371.
++Expanding inode 372.
++Expanding inode 373.
++Expanding inode 374.
++Expanding inode 375.
++Expanding inode 376.
++Expanding inode 377.
++Expanding inode 378.
++Expanding inode 379.
++Expanding inode 380.
++Expanding inode 381.
++Expanding inode 382.
++Expanding inode 383.
++Expanding inode 384.
++Expanding inode 385.
++Expanding inode 386.
++Expanding inode 387.
++Expanding inode 388.
++Expanding inode 389.
++Expanding inode 390.
++Expanding inode 391.
++Expanding inode 392.
++Expanding inode 393.
++Expanding inode 394.
++Expanding inode 395.
++Expanding inode 396.
++Expanding inode 397.
++Expanding inode 398.
++Expanding inode 399.
++Expanding inode 400.
++Expanding inode 401.
++Expanding inode 402.
++Expanding inode 403.
++Expanding inode 404.
++Expanding inode 405.
++Expanding inode 406.
++Expanding inode 407.
++Expanding inode 408.
++Expanding inode 409.
++Expanding inode 410.
++Expanding inode 411.
++Pass 2: Checking directory structure
++Pass 3: Checking directory connectivity
++Pass 4: Checking reference counts
++Pass 5: Checking group summary information
++Block bitmap differences: -1385 -2019
++Fix? yes
++
++Free blocks count wrong for group #0 (8, counted=10).
++Fix? yes
++
++Free blocks count wrong (8, counted=10).
++Fix? yes
++
++Expanding inode 133.
++Expanding inode 165.
++Expanding inode 181.
++Expanding inode 286.
++Expanding inode 387.
++
++test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
++test_filesys: 411/2048 files (0.2% non-contiguous), 2043/2048 blocks
++Exit status is 1
+Index: e2fsprogs/tests/f_expisize/expect.2
+===================================================================
+--- /dev/null
++++ e2fsprogs/tests/f_expisize/expect.2
+@@ -0,0 +1,7 @@
++Pass 1: Checking inodes, blocks, and sizes
++Pass 2: Checking directory structure
++Pass 3: Checking directory connectivity
++Pass 4: Checking reference counts
++Pass 5: Checking group summary information
++test_filesys: 411/2048 files (0.2% non-contiguous), 2043/2048 blocks
++Exit status is 0
+Index: e2fsprogs/tests/f_expisize/name
+===================================================================
+--- /dev/null
++++ e2fsprogs/tests/f_expisize/name
+@@ -0,0 +1 @@
++test expand_extra_isize feature
+Index: e2fsprogs/tests/f_expisize/script
+===================================================================
+--- /dev/null
++++ e2fsprogs/tests/f_expisize/script
+@@ -0,0 +1,4 @@
++FSCK_OPT="-fy -E expand_extra_isize"
++SECOND_FSCK_OPT=-yf
++
++. $cmd_dir/run_e2fsck
+Index: e2fsprogs/tests/f_expisize/image.gz
+===================================================================
+--- /dev/null
++++ e2fsprogs/tests/f_expisize/image.gz
+@@ -0,0 +1,888 @@
++\1f\8b\b\b+\80hF\ 2\ 3image\0ìÝ\vàlUY÷ñ9\b\9c9\8azTTTLTJTÔ=³ï\85z4´SQ¢R¢QQ¡\92QRQYYiYZ\9a÷[eEey-±¬¬,©ÈKQYYQYQQâ\1d\15\15\15õý={ï5³föZ{\86Ù\1c<¼~?oË÷̹üÿÃÿ\99½÷º<ëY\93 \80/XÓ¶=®ûåc\8fn\7fû\88®M\9eÒ5ýáq\ f<÷¡\1fS;brâä\91\1fÚ3٣߾ì¹\8f{èäk?Ðü\9b=Ý\97¼Y÷\ 5N龯MÔÞzÏ;<þ\ 1o\7fÈ[~ï»\9e=¿ü-\8f|ô\rù\9fç<þ\e¿ã¾?ò\92\87~ü\15\ f|î\v\9eüÆ×Ýä\88=Ë?³ÿ\8e\9bêõÍÔ\8eQ»¹Ú-Ôn©¶_íVj·V»\8dÚ±j·U»Ý\9eõïv\80Ï\13\0\0\0\ ek®\7f~dÓW~ìÑGð#\ 1\0\0\0\0àÿ;\9fû\82öî³?\a\0\0\0\0\0Bö2ÿ\ 1\0\0\0\0À\8d\8b\e\aÛþW×È\8aøÂñ\81\aé\7f\92Éä\ 1\ f<÷¡'uý\93\9bL\8e³ÿo\7fûêÈ=\93ÉS\8e\9eL\9ezôõûý\8f$\ 4\0\0\07¨§<Uÿsñ\81@ÿ\7fÏJí\9c]ì[«\8f³\87\1f÷á\19ÿ®nÑǺúN.ZûOXþ½ñµ\91\0\0\87\93\8b\1fÔÞþûÏÿ#&Þí\7fr\94îçG«íU\9b^\8f÷væ\7f>¿^þÔ6\ 6ÿ§¸»¶xþ{\7fï\98£vÿ\1eÏþòc?~ó£\86â\7fÄ{§{Îo>U®Ïù]ßò\9d\8f\93t¶oÏyÍïßÄûýY]Ì\vû»{N޳콴\7fVÍêrºçøæ÷oîý~^äå¾=\974¯Ïô¿VQ\97óæk½i²þý³y\9eîÛóÆIïû§U\9ev¯\1f÷Ä'Z\9bÕI>Óÿ?\9fÍÊ|\9eÏ\93ù|\9eÖ³yY\95å<¯çYQU³4\9dg³<«ë:OëjVUú\8bú/©\92Ù¼\98U\85¾[\92UI\96\16I\9d'e\92\96I2Oõ·\9a¯[äżJ³¼ý\9eúJÕ¼¬\výçf\85¾i\96\97E\99Tó:ÑËr\96Õå¬,õíç©þQ\92Ìò:KÒ*Íg³y]»÷<«g\95\8bÿ÷ªß÷î\81øßvDü\9f£øßnCü÷í9»\89ÙíWâ<+ªf\1cqZóg·öþLÿQŬù³\83ýÏGUæí¿;ÐüÙ^ÿßÍÒ"mþ¬ê}Þf
++GÝüÙI½Ï\8fBÓýÙþæÏnëýÙ¼\9aeEóg×LÖÿ\eæ©¢?ð³±8dål¦÷<KgI\9d)¢\16e\8by]e
++º>¸e¦À¥³¬ýûs\8bö¬®Ë¤û÷ú¨¤úÿõ\99©Üçq\9eë7çõL¡OªYÑþ»´,õ\13Õ\7fäl®¯¡\ f\87¾\8f\8bÿ÷wñ\7fw$þw\1e\11ÿç*þ_´Ãõ_ÖI\12ºþõóNêæ\9a=³÷¹(Êt>ÝsFïß(~õ¾=§6¿¿ßÿZº\84òækeý{ÆÜ¾V{/¹\9dÿµÒ"ß·§}
++Þjås7¯óæspõ¤÷geU\14\81Ø'E\91ÎÊ:¯ò²ª»øÖ³²ÐmD\97îÌŸ®ôqOª¢\9aÏ\8b2Ku«\98µ\7fWo1×ß*«öï)¸\85niv\7fi>\13íu®¿=Ë\93¢´;P²¸gÙ-jæâïb\1f\8bÿ\17\8f\88ÿó\14ÿ/Ùxý·?Ïóý\9fÙ,i>óûö\1cÙÿ\f¤y\954q»¶wßÎ\93¤\9aîyÿd=\9e³ª.öíyç¤\17ÏYVµ×ö¥\93õûÅL×^{m¿mÒÿLé\ eß\8f©5Ý\9aÛkXAÔMX\1f\98,×\ f_wº\8d{^Tz\16$³²\8b¹¾\96»/ÏuÑêV\90gºmÏÒ,M\8aù<Ë\12{Rd\95"©\e{VdY\9dÛ}§Ô½Ò#¬Ê\12ûêóJ?\98|®\7fV\15Y\92\95éL\1f\e=Dô[zºè¥\9e\17\95\1e%i¢/«O]µmüï3"þÏWüï»1þçöï¹³¼jã\7fvÿ^\8b¦lþìÌþ\9fé\8e7k>\e\az÷ê,-õ\198¹wß\98µ¡Ñ×;±ÿõÊdîßûýëZÏÞYû\1c\9a\ 4Þ\7f\99æÞgÔÿìdy\92®}fÒ$·k¹¬Òî\19¯Ï¿Âd·\88²é£Øg£Èʲ¹o¤ÕL\97¯ºH\8arÝÝ7\14yÝØKÝ,fõ¼\9ew}\ 5ý0\8a¼ù·e^7ß§V\8fCïmæõÿ,îW\ eÄ?\1f\11ÿ\17(þÅ\96ñ_¹7geÒ>«Ïé?ãçY\9d6?Û³zñJõ|s×ëóVbUw÷\93KzñÐõQÌ\9b?»h\12»¯¯]ç¡ûtÛ7Ó\13V\17Zï¦\ fάJí¡T¶¿.ô\1eê|¦\ eb\99\95º\9d§uR[/Q}5½Rϲé\11ê÷\8bL·¥¹â\94Ôºàu£ÐM!Ñ_Ñ£¿´\ew¡@Ïõ¾æv\eг>S\1fs®ç\80:µ\9e\ 1ê\1eÔúxd\89{¯ú\82îýé««\93:W\a (\ü¯ìâ\7fedþ÷þ#âÿBÅ\7fxügÏÿþõ¯ÿÆ\94\11ÚõË>\v¥n4ú@äþõ\1f\8a¿\7fý?`Dü_¤ø?p\87þ\9fÂ_\aû\7fêÙV͵\7fnïϪÒþÍéý±DYwÏ\8bª×\9fÓ}&oï3ÉÀ\98àø\811ȱý{P\92æí÷kïý+ã\85¢®òµ\98äzJë^R龡±Z\99Í\17㼬\8eôç]¿_ÿB·\97´Ö\rÝ:\88ºíT]ßp\96\96MßF£GõTêy\95»{TóïußÙúú\7fÈ\88ø¿x\8bëßÅù\18ÿg\9fè^Öü\fÏ\1aè·\9fÖ»oÔ\1aÛ|\81_ãzâçöðp}\80õqA\96[\9fq>O¶½þ\1f:"þ/Qü¿bãõß>\93ßà÷\91\12ë«=¥yýà\95ë5\99µý»s{}ù<OË\8d?\e\eKÍ
++=·ë´VW¹®ºëÉ&L²,³'¬=ÄõÃÒ³µ*¬\a®\ 1x©\1fgZê¯èï麬õ\ 4-êZ\7f\947¿ß~\8d:K+u°*=òÕu+ÕÛT\am^©ë¯kºÐïé¢Õ\83»Pg ªR\1dóD\1dr{¾kp¦\18%¥=ÕÕ\89\9fÛ\13?³)¤$W\97¡°î¾ºô3û\8ez#e®\eA]ªk¢/¯\1e\9f®õ$Ë\14ö*\9fåe\91Ø<\87ÆùêêihPéZÉÒÂ\ 6 µ½ ëì\14ú\17y\99n\eÿ¯\19\11ÿ\97*þ_»Cÿ_ý\9f:ÖÿÓ\87·ë\e\9e\1dø3u\99¼¹¡Û®Î)%í³#éÏã(zûö\9cÐ\7f\1f\1a\8bͽþ¿ÿgö\1cͼþ\7fè\1eµ/Ðÿ\9fÍ\8ay¾Úÿ_¿F\15=]Á\8a¬ëÃå\8a½z\88UѾÖs@\9d=\8d\b-\9e³Y\95dnN!©*\rñôÉÓsÍz\85ËïÑþ¹ú\9aêxÖÙ\86ç¿\7fÿÿº\11ñÿ¹\8d÷\7f|¾çÿ7]ÿ_?"þ?¯ø?jËùßð¼Ìiý¹¶4iæ\7f\82ó¿ºÿU^\7fn¥¯W&IÛo8¾÷5³<«öuë\0ß´2\ e)³jC\9fZ÷{ÝT3\rü
++ÝUõ\0H¬O\96ØU©Ñ\9a:wóT\1dî$ÓÃ"Ñ-[ý4ý¿Bã¾<Émf¦¬g\1a-ê\99¤×z\h\88¦±\9cúliÖ|}[
++Ð\98²¨çú\91¸q}U\14\99¾\9aúwY\9a\96úzér=B׽Ʀz\1c¤yáæ\15CsQÛÆÿ\eGÄÿ\17\14ÿoÚøü¿²]+X\89U¡ûñå\93Ø\1cþ´\eã¯ÜßÕ'Þ·çâI\7f¾(ëúÿo\füYZ¶ýø×NÖû \1aÊ7ã¤Þ\18JÃo=gçÍ}:O²vþ¥°ûv\9aj,\9eZ@\17¡ûl÷ówóózÆëÁ Èë\19_\97Ö±\98ÙÓLcvõ\ 6ò\ýû¼ª\92¹Bk]\r\ 5JÏ\ 1\rëÕe«gú\9fB\1d}=\13\8aZ]<\85S\1f¡Z\ fø¹ÝòÕÏÏ
++\9bGЧܺ!úBs}\10gö Ì
++»ã«\17¡\ fc^Ú\ 4D¦~òJüß3\10ÿÇ\8e\88ÿË\14ÿÇm¼þ/\18\98ç?¿÷gêçÌÝøo}ÍpÚ\8dÇ\1eáÿ}u\99Ü\1cs(¾îù\1d\9eû½j\12ë\9bL÷\6 \ fx\9f\95ØÜýÊsØ\9f3ö?[º¼õRý][ÁSpÕ¹«ÔGÈm*I½ÃYÏÂl^h(g÷\93ZÝZõ+geUgê?êó1ËôÇÍJcÕÜLݺ\9fë\ f¸ø¿§\8bÿ{"ñÿÎ\11ñÿEÅÿ»6Æ¿?þSç¦[ÿ;£w\1fWçµ\99Ëss¼þ¸\#}ÝÇO |\9e²¤íǵk\ 3\ fóÿL?©¶\1fwe\7f\9eß~\82Í\9f]Þ»wè\ 2,Úþä»zÿ®Ð\ 5îõïÔ\7f«r÷kuÕõ¡P\ 4S[üË5ÔÑ@ߦ\ruÝZÿ^Ñ\9aÛâoZÔz\f\146/ îº`\946Û\97ÛܲþW\1dýÅ\98>Õ(¡\9a7!ÏÒ$íÆ4ú1éî1³[\7f¥ÛGÑ®ÿä¥\ 6!z\0\14ÛÆÿûFÄÿ\97\14ÿïßxÿ?§÷<.ôðts9·^[ûi¯ÙSú\7f6Ë»¹ú¤?\9f ~uéïî]\9dSJÛ{M\eÿ~NÁ\15ý>|U×{»ëßÿ>í,óòYQéF¬\9f\7f²\98\1f\1e·v¯ñ_ó\1cɪRcкª\9aq§Þ~3ï\9cÚÒn·Æ¤!\92-,gÍ\18¶[k.lµ1Ít\ fhÖ\fýø¿w þ?2"þ¿¬øÿèõ\98ÿ±\9c«?#:¾s\9f\8d\95{\86\8d¬½9ÀÐxÌõ)üuÈL\17ã4°fà®ïµu\1c},tãµ\99ø¹õèt¡ë\9a¬\12=Íç6wg³v\89nê¥Â\8e\83.Õù<×]Z\1f¦RÑTÜç¶ÜoOz[üQ·R\97ð¼P×q®ÏEiËA\96-RØ?[ÜOt;(tW¯Rý£L\9f¡\99\8b÷ÀXp%ÿã½]üß\e\89ÿO\8e\88ÿ\85\8aÿOíòü_¬ñ\9e\15\\83\9fvýµ\8büÏ\8cn\rûö¼²¿¾c\v\1eMì\9fÛ\9f\8fÕÏ7 ôñæµ-ãØí³°L\8c\99ÿ³Ël\8d±l\16oÔ×\9e\17ê_è:Íô Ð\83»Ö\95©¾·-ꪣm\93Hú\1aù<S\9f°\99AR ì\89\êá\e²>\0öĶ.\9eF\ 3öfæ©>2¹>'êèª\13\92TúêE\92è¾®\ f\86÷è\81¡¡ÿÌÖ\8ftKÓ A\17~¥Û{¥Û½¾R\9dÏl\16Ø:\8ay\92¤\ 3}\90ɶñÿÙ\11ñÿ\15ÅÿÙ\eãß¿þݳÕ\8d\rÃù8ïhsLVæì³ÂîÀ{»±\9cÿLÑÍWÿæå×9OgC®NÖÜ?Ô±·)A·V\9bé¦\87rm7ò¼²\ fI®¸*ä\16MÝôëJC±Ô.[û\0¨cgÓ8\99M!ê~PXw°HK[:L\8b ¯¥OPaÙd͸P7z{¸ëI_ÕºÊm4¡\1fÉÜÆÅúm»[Ø'¤¶[\8aÆ\19\81¼¡¦?2\14\7f\7fþçE#âÿ«[Íÿ\9fß\7f&«ßSzy>þ5k½àX\9e\8f[\13XÏ ùBZãóòIª¤Ô°@·£²Pï@}\82.þ\1a(¦\93mãÿâ\11ñÿµâ\7fAt\9dÏõ\ 1BýµàØ@Wh»>pl$?t\12ìk~¾×lÖûf×C_q6Kr\r\1eu[Ð\9f궨GMóu]\1frëûÿKFÄÿå\8aÿK7öÿúù\1f©\ 6¾¡Ü\1fE¾\e«\9dÞ\9fs×M¯íÇ_\1c\99O
++Ìÿ$e7¿ÿòIl\9eÑÅ(4¯¦\ eZ~¸Íë4\9f\9d¤POb®¨\97Íz\82ú\fÍø!É\12ûÊzOuæÇÿ}\ 3ñÿÅ\11ñÿuÅÿ\97\8eºî÷\7f=SË6.çF?\ 3î\19°>þ\9fv\9f\8d\9b¬Î\rÎ\ü_´2Ïãr\82ßÐ\1fã©+]įÙö3a\1d7½\1fuï\vý\9f\ 6ÛÍ3>)2\e\8b\97\95ýqn\ 3\13\e\7fÌ-ÃG\8fð*l:xV©\9f§`ª÷®èØ\ 3Z\1d~[ã«+]´ºu«\9faK}ê\ 2ê\93§N_f_Y½\8e¹-2Îlâ'³õ}ëóÍu7Ðg3ós\91Bs\ 2Ýç@\1d\81Ùâú\7f_\17ÿ÷Eâÿë#âÿ\e\8aÿoìÐÿ³%Ú,Òÿ[®É\9d5°6xf4oÌ\eÜ<\98\a\92õ×\el-®ù³\93ûïSýôöysb0\87e\1aÈ\e´µ\86\rÏ\83à\9c¿ål4}¹ºÉ\v)çvw×hÀ2ɺuA=\1cô9¨Ò´X]÷[_?\9cé\83Q\ eÅß\7fþÿæ\88ø¿b«ü¯Øú\7f \1f¯\8bÅtÏËz\7f¦Nxu\b\9eͺªs[V¶ý\e³îÙ\1cúÙßh×ÿ7]ÿ¿5"þ¯Tü_·Ãü\9fnT\85[û\vá¹ý\1d+s|e\9e\14Þ\1cßmWÆ~å,\99Döpt9Yn>\9cçuÕ$¾~pŤ?ßX¬L\105ë\846S¯aßÚ<\7fp¿F$'¬Öß´ü½ºyfh X¹¼\96J½\93ªÎ\ 6Ö\ 6\1f¢çTië\ 16\15¼rÿ\7fÿ@ü\7fwDü_¥øÿÞÆø\9f\1dÉÇ8s _p`Ol\1c\1f\8a¿\1eËI\e«\13öÄû\80íüßׯ¼\8f´7?4p¯ÐÇÅvz\15\96$\944×]Ý\8cæç\89Fð\1aÌ«/\90ª\872³\8d_º\1fèÑlùø³ª\9cëñ®®\88åtXz~:SoQ·\82&\89Ëëgê\8aOÔsHt\r7ÿ¬Ê\86ç&\9aç|,_ÄÅÿý]üß\1f\89ÿ\1f\8f\88ÿ«\15ÿ?Ù2þþu^ÕE2íæw\9eí?Su\11M»~ÜíV~¿V¿ïÂÈ\9að3úëtIVV\81øÙl¬n°6\ eÓ\9d³®²öz\8cëê§Úì³°\157ÝnõÔêöæd\89-èÌc8·\89@ë\0ê\9e¦ðdú\1cX8,5_ßÎ.sõ\f\9b\8e\9c\86®³æÃ\98UÖO³\8fRnó\90ÖÇг?׸®Ð\9fTÍ×Ê-C®r\r\1aK}÷¶Çh{\11m©GOI}\98ô\ræÝ\9c\80Æ\fÖEµµ$ë£Ö³íãÿ\17#âÿ\1aÅÿ-;¬ÿ麨ç^\1f\7f}\1fG¨\8fßîó:m`Íà\94Þ\98ѺXþºÐʾ\10\e\7fM\96ûBV×\ftóõî'¡=¢¡\9c1·/dã}du?È¢\1fg\9b{R\9b\17Vg¶jÇóum\ 3:õþ-\9bÑÿ»\91=!\95u0lÚÛ\8fÿ\a\ 6âÿ×#âÿZÅÿovØÿ±\8cË\19ý}7U{ý\85öôé§Ðõ\ f^;0Ö\8b¯\11l\88Ëá<æ³Û\89\9e÷zÎéaÐÜûÕoLìûY¶Á¤ÿYqñÿ@\17ÿ\ fDâÿ\8f#âÿ\9b\8aÿ?í°þã®/÷lX\99ÇOlþ7ülpûøÂ×ã\e&ñ~áEý\7f7_ÍÕ_û\1cÄúb\87åý¿¶ä³ÌV\18ÊÅØp(þþøïßGÄÿ·¶\1aÿ]\10ÙËqþ@\1eÇ9½gFªÿð¹77\18Î\r\bì\ 1É«ìó:\ 1<bÞ8l1¨Hlê¸Zî\a\få\ 4h<YXÆP¹\9eÿ³éúÿ\8f\11ñ\7f\9dâÿ\9f;\8cÿì\1a\ fæw/\9eå\a\aÆq§\ eÔ\8dèïõ¶®vpng1.810\a9ër\90N\bÎ5N÷\1c\17Ü\9bèæ\83¦+}Ý$ïå\18jľ¶wOC¢´òç\9c+[\12Ì
++×\17\1d\1a7\ 6ï\ 1ÛÆÿ\7fGÄÿ"Åÿÿ6Æ¿\1d??ß¿\97góÂÍÉß\7feü\9fWmL\9eÕëÓkX3kû\fO\1a\9cË\9f\fÏéÏò²y\86Û'Æ\96c\93¼v{rë¬Èu×¶Q\96\9eÐy®1|a\ 3;{\ 2h\0®Ç²B\9cÙ¸ÌnÜ¥úhzð×]\1fn¦Q[?J,§Ïöméi \9b\92B\9dêþÝäóè\eä¶¿Ó\9e\ 3z2ÙJ\81íØ7±e\ 2\8d
++çêûf¹\r@Ôm°t\ 3ý\9cf\96ÛQ\95\16m=!Ôß°N¦-Eè\ 3\97Y\7f?Ñ·.3ý\ 4²r^7ûÄgóz5þ\1f\1c\88ÿ\aFÄÿõ\8aÿ\awYÿרË\9fã\rç\80\9dÚ¿\97+¢\89××\ få\ 1O\ 39@Uf5b.\8f\8eÿCùÆ6G±>W\18Ù\97q¨æ\ 5&^î±"®\ 1ª.\ fË8i¦\ 5ã¹`©Í\87¸ø\7f°\8bÿ\a#ñÿØ\88øÿ¶âÿñ\1dâ¿ÜC\19¯\ 1ä>\e«¹¹íÜÖ¾ÀÞ@·_ÇÍ\1d¯ç\ eE×fo\ù>½½CöÁÑ\90Ãå\1a/ö\96n\eÿÏ\8c\88ÿï(þ\9fÝeü·\18Ç\9d>°7¤\9d\93\rí×p¹¼+s\87\96>×Ä¿}v<Úÿ\9aY\9e/æ\80,-Ï.ºÒêp\14¶\17¿MËÓ3¢½È*ûÝf\8a]Ï\80¦¨\8e%s\97\96\96W×ú»v¹Õ\89åð¤V\ fªZ¬\eè&\9cÝ\10{F¢µGü1â¶ñ?jDÝÿ7(þG\1f½)þm\1f*tßuyûáyÞ«ú÷d]¬íXïý\ 3ãÀx\9e÷!fqµ\80ZU\1e=õË2\1f\9eÇ=$Ï\8fmã\7fó\11ñÿ]Åÿ\16G_÷þ\7f»\1f+Ðÿϲ̯\v¶:/Ô\8eÁÝ>®P^ \9b\ 3XíËg]?ÿµýü\10\e\97¯=\ ft\97nóktÁ\1e\86¹~úOr\9b;ÒM&ñÆ\ 6½5åmã\7fÛ\11ñÿ=«ÿ¶ñú¿r ^ïèçk꿾í\e´y>¡º1Ón>g¥6\80~\ûö¼t\12[\e
++åÒEÖ[ô<×Ï]=ñîç»RW¥Ýã\91Ûò®B:·«ÎÊÒ\1dvy¡ÛÆÿÎ#âÿûVÿmcüÏ\8e®×¹yþõ\1a\ fûº>ÜëWú\fEá\8f\ro¾¶\8eÛ~.\9eÑ\7f.ÔÍ\10mÙ7Ò@jf?F\97˫Шϩ\9f[eóte\9dÕV\9eJ/5ê\9a[/À&Yl[N¢ÈT\1aQ\966zQ\98g\96q]\17zÃóÊò/ô\1eêy³D_69|µM\11[q\81Ê2¸êZ_¯Jà \ f\81õ0ô3P_0m2útÛ± àBO\88Ú:"\1aïY\ fÓ¦\11+ýwÛ÷Tß\7f1\17¼Z\ 3"ø9Þ6þ_<"þo´úoG_÷þ¿\9b_q÷\86g¬ôã\9a¡MpOÖr?g\7fOÖ27èÒIll\10ªõf%\13ÛÏb`\1fHÙ.\ f¯ÔVYí\7fO¼}¢¶\f0on\r³æ\99¬Or³\85o®Ï\84\86
++VçÓº\9aYYZ²êÌÒ>Õ\11ÊmH¯Þ¨ete3\9b¾)\9b´^\ekêÊϺT2×GG]Τ²\9e©"Ý\14\80«l>(³¹`K\b¨jÝq\92\99\9bKòãÿ¡\81øßgDüÿÀê¿m\8c\7f`ÿ_íöx\9f\11ÝË\13ÌóÓOzÚÍ\r®\8c'u\9f\fÕ\ 4uû<§\81=\83\16Ûк`ÚåQO\ 3¹$ízó´ÿy\9eÏ6&'µ×m6\eXoÖ½¦´\vÞòG²4ïÕ\1c\9c¥m~Éྠ¹.ÖËý\7f\1fêâÿ¡Xý·\11ñÿC«ÿ¶Küs··²ÍÉYß\93åî\váº\0ï\9cÄ×\f/\9dÄóI/éýY»\ fíâIl\1dÂ_\17ìöÖ.s,ûëoÁùÆ\exÏXoÿç¦øß\7fDüÿHñ\7fÀÆø_\10X˯gþü_¸\9eW[\e4TÓÙíé\ e×\86¹j\12Ë\1dw\9f«éZ\1ep\19{Þtõ&7^×]\1dÆR\ 3º@~öäPÖ\8f\8eÕ\ 2Û6þ\ f\19\11ÿ7)þ\ fÝ!þ6\8f\93xù¿á¼\8c³\ 6Öy\ e\ 6ë\ 3\87ê\82¸u\83½Ý:Ïú~^\97Ç\11~\ 6ôkÿè\87?sõ ·\1cK¦êéÕ\96A¤~Þ<r\9f÷÷\12ÇÖ(¢õ~\ 3y#+ñ¿j þ_3"þ\7flõ\9f®\87ë\7fõù\9fæ\9bs¼O\1d¨\es \7foÐÏ-Ö\ fh÷\ e\9c\1cÝ\87èÖúúu\b\8e\1dØ×º?¸æ½Ö\97\fåð¯ïå\eªûÒ>ï\v[[²\9ao\1aaê{ØÆ:?þWuñ¿*\12ÿ¯\e\11ÿ?Qü¿~cüÏ\89æøìíúxý}\9c\aûûÂln6²þ«ñ_·oèä\81ùÄc\aê»\1f\13X\1fNÒë»Ø`sOHÛ\ÏH\røØ\1ca\93\8f¨·\eÛ\93Úë\8fl\eÿo\1c\11ÿ7[ý\9f\1d®ÿåõ\98Eöñ\9d\1c©\19Ú¿\16m Õ>¿Ûz\r\ f\}¶×í5ü\8eHßï\92\8d¹Ý\81ün×\17ÔÀM\17¯Ffú\99Û3Ýî@YZ\15YÕìÈ\9f[âO\93©¯ÿIJ}~-\87£)1¨\8b´yvÛ®²¤é\ f4¥%¼} £Ï\81Ø6þ\8f\1d\11ÿ\8bþÏ\ eó?./Ë=Çû¹Á§\ 6Ç~nÞ?¼\96pE´ïïúvá>È;zó\ 5ºø¢ë\ 5MÜr\9byÏr/\7fÓ\8d\v\ eéZp(Ï7\96«¶mü¿sDüÿÔêÿlyÿ\ fåk¹ú\ fþ}^£\9a,´ö¿\9c\17¸2¸¾çæ\84\8eY\e\97\97Þ\981¼\ 6ý¶þ= ÛkÒëç/÷a¸ú½éÜ\82\\16Õ!^[\8c\8d÷óY9\ fæ\84m\eÿï\e\11ÿ?³ú?;Ýÿ]Í\8eó\ 6j\ 3\9c\13Ì¥Ú\17è3,û~§\räk\1f\1c¨7}jp~(\9eOvâ@Mû\13¢5h\ 6Ö\r××\18Bù_\835\0»\9c²fïÿúýÿÃ\ 3ñÿ\91\11ñÿs«ÿ³ÓüO\92¶ý®~\9do]?i,7`Yãñ@?7¤9\ 3äYÑu\83É\8dx¾\7fíL\91Áú\90ei;U\92¹\8bÿ\87»ø\7f8\92ÿû\93#â\7fÉ\8eõ\1f\96ùßçG®»3{±·úÏ¡½½ËZÂY\7f.A?÷¹7.\bÝg\ e³\9c_wýª¿`³\ 5\95%\14æU\11¬+\18«w½rý\87âï_ÿ?5"þ\7f¡ø?}\87ñ\9f;3)¸\at\91ãwê\9eØZ~è¾lgJ¸ù\9fðý¤_\eÎÖÊü1~ÿ\8c¨ý\91þÉ1Ñ9-rDÜ3{ý\8c'Ý\87²E_Ï?ËÁËG\88æ\ 1®\9f7µmü\7fvDüßbõ\9fvYÿ\9b»Znç\rì\ 1è?\e\Í\ 6·o$\16\97\87¯<ÿ³,÷æ\93C9àÓnÎøÖ+_Ïö¨öó\8cæ¶¿g8¾ó2³C\9bÒf\15°,×öxÚ³FÏ\84¶Çn[B\12[ì\9fÙ8Æ>\ få¼]\ 1Ð\98!\9bë\99¢¡e\9e'6ü\9c[ÿ¾°C¤l§\90¥\8cuc\7f÷yZ<\ 3l\9diÛø¿hDüߪø¿xcþO[\8fù1þØ»9\7fq\7ft_ «åñ¨Õ1C·Ç÷¢Il®Æíý
++Õ\9a\98vùæ\ 3¹\ 1MÝ\ 4o\8eÆvéë\96\9bT\95uÊõ\ 4V'[ÏsE!MòR/-\14êäÛö\1fÛ\b\94i8o\839Û\89¡\8e\85bÚL\ 4è\9fÚîl»y§ó\95=zÍx±ÐW-lï\7fªA\87-å7É\83\1a\ 5ë\9bYÒ·-\ 1é\19\90eö;Ö\rÉëyRÍs«\12[j8 ±TÚtûí\98!+\11\906\9b_ýø\7fd þ¿8"þo³ú/»Ìÿé]úg|ôë\7fõûêv®\96Û\e¼^ûg\1a¨ïÓæ\98]8\89!¬]³Á\9a\1c\87YÝ\9f¡\9a_\967`Ñ/íÁáç\7f}¤\8bÿGbõ_FÄÿíVÿecü«Þ\1c\9fbP¶÷ädOüz=yOèz\r\9d\ 1Û\8eÉö\ fÔ\85í×~Xö\r¯\9eÄ\9e\vnN)tvÝÚ}\7fåìµÕû}¯\1f·Rß50Îs÷!;=Ì~ig\80Ù\\81\9d\11¨ëߦ\1c2]óI¢\ f\96m>µsÃ\12Û¤byÆó¦dH^l\eÿß\1c\11ÿ¿Tü\7fk\97ù\9f²}\86îíúùǬ\ÿóÅX=¼\86{ÕÀ\1cà»\ 6â\1c\9f\ 3ÚÛå\0¬¯Ct±\rÍ·/Îo
++Ä÷PÍ\ 1®¯+ÛXÀ>\rÍ3KÃ×Ú\ e\82´R1iºzý\7ft þ¿;"þ\7feõ?¶\8cÿ±«kü+söÏ\¹þ\93n\1fw\7fÎÞí\er5àV×ëf³ð\19\0î<É@\r°á=Àî\Ź=É\15Á²\9c,÷ר½Ø*²§eaÇyfYS¶Ç\86ò\1a\8e×åÌöøÛ\8cNmׯ®Ñæ\ 33·²½\163õ\ 1KËäµÇ¿þ/³Á¾m\ fÈm:qÞä@è¯ê\93Õt:,\1d$U\7f²¶y^K\90+Ô'Ñ×Ó··mÁÍs!³}bú,Ú\DQ\14\8bý?\1fíâÿÑXý\8f\11ñ¿Ôê\7flìÿµóµý½ÜWD\9fÍÁùú.OÏ}fÂuc.\9eÄóIÚ¾a¨\9e¤\9bß\8dÔT\8cåX¸ú+\87å¾ðmãÿ\17#âÿ×Vÿccüûû?Ô¡)ܹ{ẠÇ\r\8cãÛ8>Ñÿ3»\88\9aûÂK'¡|\8dÈXm=/Ã~´v\¬®¢*·s\16ô\0®uÑÙù{µ}üj»\1fg\96}a'4Øé¼s[ú³S|çö\83·\85¡Ò²\8b+û\eú8ØG ,\9bbÓúO³©ºBCzõ\rÒÕúmºyØV0}zìíØ§ÙÎ\80µJavLpÝl\18S\9f©LÊ&õ¼(\9aÕFë7\16úXe6\9e\98Û\7fèÌrÆÓæ&¹müÿzDüÿÆê\7fì\92ÿaû\15wÈÿYæ\8d\1c\8cö)\82y Ý<\8fëo\86ç\ fO\1a¨S½¿?O¥Þ\7fûý¦{byÊëëGî<\99¢h\ ek¯-êvc)ê\89\7f\8eÄú<\9f\9b\17ê=ã·Éÿ Åß\9fÿýÇ\11ñÿÛæ\7fÛëü¬\95\9f]Þ\95L\aÖóÛu¹\ 3«s9I2ùüh\9e÷¶Þncr]ÝEi'ùª\ 3Yi¤\99Î\9a'¹îä\85}\9ej[³Á\80\9d\ 6l\83Ç¢\19ë\87×ûk»õg\96Á£î|eÏ\80*±å\ 5]Ú\85îNµm1µÅïÒ: ¶3ܾ\97%~§Í'Ç>GYs\ 6¸}uuUÓÚú\95\99\1fÿ«\a®ÿ\7f\1a\11ÿw(þÿ¼åó¿_¯·\9fÇ;³í·\93å\1eÿðgæ\82IìÙ°Ö\7f;d?Ûf\8eO7\7f» -Y·:\fç\v\ü¯îâ\7fu$þÿ>"þ\7f§øÿÇÆû\7f;W\1f:çÓÝ\eBóÿÓîÞЯ\eyõ$~ϸj Ï#\90û»ØOòÎè¸1\96\ 3\12Z\9féîï±Ü\9e^\8dÆ¡ùü±g\96n\eÿÿ\1d\11ÿ¿·ú\1f[Îÿ>z5¿¢tsõ¡º`.öýý\1a/\8döýöíyá¤ß_\98¥U||÷ùèï×sÓ%«[\85¥méSTÛþÁ$KìÜ÷¦¦\80Õ\1c«¬è@a£?\r\19,½ÇÆ\r6Ék9&Ù̲EtoÌ\9a9\90DO\9b¢¬ýó¿7Åÿ\ 3#âÿ\ fVÿccüÃõ\1f\87ûw§n<\17¬\9f\evrÿ~a7ØI¸Æ\8f«í\1cÊ×\98gn¿Øñ\ 3ã\90i4¯)\96û\19¨Û4YÖÿió\89ô\19*j}\ 4t\15Wþ\1e³Èy_\eë?n\8aÿÇFÄÿ\9dVÿccüÏÝ\13\9a«\99\ 6jÿµu¡N\19Èá\r\9cï¤K¢}^\9c\10\KØ\17¨Õ´\9cG:2\92Û=\19¨M\15Èýïö\90¬?#ºý ±\ïÅ<RdN\7f(\1f8Tóme\9ej(þ~ÿÿ3#âÿ\8f[Õ\7f;;XãÓå÷¯Í»×í5yFô\9aÄòº·ãRcµ@ýø\7flàúÿì\88øÿ\93âÿ¹]ò?ÔÙν1~xÏæ©\91ëùä~\9fqQßÿ¤@þ\9f\9e\88Þ\9cR¨^kh/Çò¬ácúïÑ*±yÏ\80Ð}"\1a³z±\96\17ª\ 3ÛÔ\ e+S[ͳC½¬úÏdð¬\1fw¶h7¬\87DjýN¿þ÷Ǻø\7f,Vÿeïîñÿg«ÿ²w\87üÏE\9d\8f¡ý?§F÷\ 6\86ú\0êR,ö\rôë\89\9e\189\83ðØ~\1d)ë\85ys>«çB\96y\15\9bóÙ°WÐÛ'Øöû-\99`ÖÎuù{
++Bµ<\aæ 7îÿÙ\14ÿ\9b\8f\88ÿeVÿecüÏ\8d\9eñ1í®W\7f\8eÇö\7f\84ê¸/sù÷\ f\9c\rÔ®ñôÇ\1a/ïÍ\vÏótqþKósT\0\8a¦&x\99\1dÊ~ùÀù=c÷|¬\9c\ 32\14\7fÿù\7fÛ\11ñÿ\97]ÏÿÒ0/\99Döÿ*\f\957Ç\eÊó\ eî\ f©êÚå\ 5®ÏÿO\ 3y\81í\98á¸hm\92\eà\19\1e«?\13Z\9b\88\9fýnÕÂ\9aédë\ 2Ø\9cAÞ»þ?>pýßnDüÿUñ¿ýÆëÿü\81½|mÿû +ó|óî\f\98«zó\83í¹Áï\8f®ã\86ö\0-çxÞÑ\9fãiK§-æ\9aC}Q?^]\7fKw\81ÊÖgô\bYÖäõæ~Bç½éY\9e5«·\95-äÚ¾\ fËíHmç~\96d6:°²\1f©Õó)\9a\92\1e6Ë\97ØC_\ 3>uaR;ò»´z¢YÝ\9cò©\ 1A\915GÔ4Ã\88¢Ô\83.)&\8b}\82.þ\1fïâÿñXý\9f\11ñÿ7«ÿ³wSÿÿ\82`.W¸þó¬\8bÇÙ\ 3ÏåÓ\aÖp\ 2ç\ 3\14º\8a¼u¡\9bæ\1auã\8d\93\ 6Æ\9c'\ eô)ûý\87¡½cþg)¸\87,<Ö+S+\ 4\99.æ\90zyàk}\89\95ë\7fSü¿xDüßeõ\7fvéÿ-jõ\fõÿ\ eFó\ 6Ý\1cA(\96¡ú¯mß0\8b|\ eß\15Í5\9dv¹\ 6C9£\87(Gt\91\97èž\97ã·MÿoSüï3"þÿnõ\7f6Æ\7fhÿÏÙ\ 3µaÎ\8aÔ\8d?s`Þð@¿\9ehw\16\8c«ÿ÷¼Õy Y¶\96\13ÐÌÏͬ\ 4sf\95\97ªÔ
++K\94í¯mÉÖB¦0e¶\1a\936ec+ë\93YòmZ5U;ì¶\9eÙÞ?õ)\93Ú\8a´Ø\89_º=W¶>ÓÌ!\17ºÔ\155+\bb}JÝ ,{ǪÄäµ\1eñ\1aåÔz$¸³\1fbçÖ,ö\13¸\9a/¡ý?\16÷O\fÄ?\1f\11ÿÿ°ú?;ÜÿÛ\1aêý¾\9fe»»¹\9fÐüÚÞî\9eЯá\11Xó×µÖ~&²\81úS'õÿlqî× Ñ\1aÓnü·rßÊ\8b*\1f¾ç×v\1f°$\ e}\99æì\90:\9fø5\9eýsÃ\16u\9c\9a\98&Éz\8d\107·¨ÛMnw\93y3al/\8aÙÊõÿ\89.þ\9f\88Õÿ\19\11ÿÿ´ú?;\ÿ3Û\1f7YÖø\b¯\ 1O¢õ\7f¦\819زN\92i·6دïqùÀ\9aáèýß¡µ¾ö÷u©\1fÊÚ?\815è,o\9e\ 5Ëó\7f6Åÿ!#â\7f¹ÕÿÙåù?w¹:g\rÌå\ 5î\ 3\8b\ÎSúã¶Emà¶Òè«Vú\ee\93Sê®Cõ\9cìð\1e[WÏ-íNCq«âÐlÂ\98Ûz¿ý¡ÝÂ+;yÑ6\83ZY¿ÔNglÎòÓ=Ú\1e
++z\86WM\9e\80\86]\99þrb§üØI\8d\1a¶ÙM|\96X\1dà¦\92_\9bÆ«AÂÜ
++y©ß^ë;ÖöÙ´Eä¬)ßeå<\v[\rV\17 t}¹X-a\97\9b\1a\9b/\1c¼þýñÿ×\8c\88ÿ\7fí:þ_ôÿÚ±\¨þã´[\93\1fªÉÿy\9c\7f\8f\9d\ 5p¸Ô\80\\89ÿ5\ 3×ÿ×\8e\88ÿ\7f+þ\ fÛxý·ã§G¬Ü_ÛýðÁù×îúwksý\1cïþ¼@jWÚd\99\e\1c:7Æå\8c÷÷\1a½©÷Ìȫ模M{nbç±äö[M·¿Ìgy`m.p\96o\9e\15\960nO\12{\8cÏm7gf\99\1e©Ý\9e\9a\8fC\eKn·§\99î\1f\96I^[¹\89¢9\ 6V½TÛ#\92é\ 1\94X\12Érþï\9a.þ×Äê?\8d\88ÿÿXý§\8dñïïÿpó.±ý_®Ï\16ê_¹ñZxÿGû,\ f\8fñß4\89C\r\8dÓ××UÖÆd\87j¯G¬¯\18Ýÿµ>'µmü¿qDü¯°úO;Ìÿ-ûæçFëní\v\9cÿ¾¬Ë\178\1fR\81rõDý{\8d®»Å^\83Pí/W\ej}Íhð3\11X{\8fÕóÒ]¹´3\81\9aÙú¬(5~×'<Ïm8iYEVnbÖV\97Òc^# Âv\95è\1e`§\8eæMÂ\80¥\99ÙH±9\18Ãõ-\ 35\ 4\17ûVm¼°mü\1f;"þÿkõ\9fv¸þ]\1c\83g\0¬Õÿ\b\9f\erJ4oxÚõõ×ë\ 3M\ 3ûFÚ=ãïì\8f\19º}æ\eÖßݾëCY÷'\983¼v\16dðóàÇÿ\93\ 3ñÿÎ\11ñÿ?«ÿ´1þg÷çV»\1aÿ{»k¼?\9e?5°Vßî»\fý¶{\83O ® \r\9dýêö\13¯×\1fvk\827píÞ`\1eÿ"W`m\7f©?\17\10:\8fÀÅÿ\93]ü?\19«ÿ4"þï¶úO\eãßö×\9e¾\9aÿÛÍ\aÖrf®o\18ªçæöcôïÙúwIô9_7?ÎEí\80P\8d°\959ÀeM¯¹í´+\8b¬².Y×\97«m"®°\9dZ³Åú\8eۻѮÓå
++j¡N\99Íî\95M¢¨\1dÓfÓ
++µ\86\8b¥\1d2§+¼²§\81>\ fV\rÇ\1e\vv,PsàC5·\fu;ÎÍV\94gv&\95\1d@§\8f¢mûÍ\8aÌ\8ezËm¢4Ëm"Òz\9avXlb§Î\96µ>SéÖñÿ\91\11ñ¿Òê?í°þ¿<«+pþ¯\ 68¡³\7føRæõñÏ[éÿeݺQà^Þåñ¸çüúºÀ¾À^R·\9e4\99\ 4ëî,\9eÁUûtÎòª²^\99þ×¶\864C?=
++\9a\85\80æ<'\85>Ït/°^[iG\81)þêÍ'u\9bÊ]Ù¤\9d\1e\146»_ZÙßÂ&xìÀ(K\17UD\9b9¤æôÁ*×SÃ>gê<äVòÚæ\8eܳbål\82mãÿ\93#âÿ\1eÅÿ§v\98ÿms¹ß?p_¸2°Æëjÿ\ 6ö\8d.òr.\9fôç\9a²Ô?ã¯\9f\87Ü?÷Á\19®çnEê/®Öf;\f®}\7fü¿)þ?;"þïµú?\e¯ÿöç~Ñê5Ù\8d×Þ40^\v\9cå\94\97]ÿïe\93ؼáu\9cÇ\89Í\9fÙþ\9btm¬g\e»j»\92m%_½\82Ô¦sæ¶?@}Ï:ÕÓ<±EùRA² \ 1\ 5H\9f\96ª9nÆFf¹ÍÒ¨o¯\e\e'\92Õ6¾Ëìà·bnWºí!·\8as¶G¤°\84Nuè\14m\r5ì\94ÏÄ\ 6\8d¶ì¯Î\8eþ¶^&¶J\94¨Ûi{ÍS\egf¶SÉêFeÅlÛø¿hDüßgõ\7fFÝÿÏ\8eäå\9d60f8%0/äj\ 6\107ðÎI,ol\87ù¿õ\1c®CWóaí¼¢Ð¸Ï\9dM\11»ÿ\7fj þ¿8"þï·ú?\eïÿí\99\1c¯^\19ãÏ2wí¯Ä#Éó6Vo\9cÄ×\f^Ù{^Ïmjµù<½p«±|l\f\9fÚóÖ\8eëZÞómjÞÊCZ^UÖÕÜK¬Ödf\89Ê\95õ\ 3kKðk\ e\ 5ÕÀβ~l\11¯\19\1aXùH]Ìvä\97ååÍ,W§\99ÝK¬R\84þ<ÑÝ"¯\9bO\88n볺®,1`Ö¬òÛ:o\99\96v\dÓó·ú\91¶EÌþ\9aº\156Ë\9cZé\18Ë9h\96#\9aCájû\88\15^ý\8fOuñÿT¬þÏ\88ø\7fÀêÿì²þÛ\8cËúµ_Ý\19\9eẠ\1aæxÏ\8cÐú\8eËó\fÿoº\9e#kì7¦µ"ÿ\fÒÁøûë?¿9"þ\1fܸþ\83Ï\97m¯ÿß\1a\11ÿ\ f)þ¯Ûrþ'´V;\rÌñµç«\1c\88îÕpù]ýó¿N\8aæ\99\a÷~,ú\fÇôó\13ºúß¡}¨m\ eÒ\91Ñ5í\81ùÂ~\rñµg»\9f¿í\9d÷µ¾O¤W·$´F¼mü\7fwDü¯²úO»Ä\7f±&wpOh\8d×ÿ¬Ì\vÌfÝ\9eñ\93£ë ¡}\1emÍð¶_x`e\rª%1\94\17\1c\e3\ 4ò\7fG×\86èêw»\\9fÔ
++\83Ú´aa\83Áá5çà:¤\1fÿO\ fÄÿ\8fGÄÿÃVÿiãó?pþ»\ 6ÏÓÀÚOÛ÷?g༨3úk\ 2úQϼµäû¯ô\19òª½þ¯\rä\12dݸàêÞºÀ2?ýÊ\8dó\85\91yCwV\8b\95\ 4·íàêºÙ\88½pçF¦ö\9b\1aÜ7½=\r\bó\£ù¼°® \9dâ`Cþ¢\99ñ±}\ 16ÓPÎ4RPÇ©»\a\94bCÖ¢¬ªrí\8c:\r¯\8aEý\8fOwñÿt¬þÓ\88ø\7fÄê?íÐÿkçÝÚ½Õá\1a¯í\9cA¨\8e¯[Çïßÿûg\ 2/Ïpê×\85µódÖ¯ëîì\95õ3\98Ü}øPÔî=dùÃ~ü¯\1d\88ÿ_\8f\88ÿGþÓÆø\9f\e9ã÷ÌÀ\1co5kçw\ eFkC\f?\e^Û\9bSTG9÷ë\86\85Î\fôçølbÍNç´v3;zÍ\8aÕ\15E[\17Nòº²ò\9b\95¥"&¶Â7o\96[æM½6]Ã3[ݳ\1eza\17»%ôÛ\0Á\96
++tqÏ,Á/µµÜæ´fÝ\15ôÇ6j×õ`ç>è[ÕºÎc÷ÿõÚ\11V\bLïÃò\ 6Ótý\`\17ÿk»ø_\e\89ÿ?\8e\88ÿÕ\8aÿ?m¹þ»uý÷Å\19\ f§Dê¼\9e4p6üþhÝ\b7\9f\18ª)\14zÆ\1fÂÚA±Z\ e¡³Ý×ëÃÆÎ~\88Ö\7fß\14ÿ\7f\1f\11ÿ\8fYý\9fQù\9fç\ f\9c×rntßµËÿí\9f\e{yï9o)rE$Ïw¹§¨¿ÿËÕ\88Xy¾·õ\1az{w\93:/¬è»ÕüµÂ0ÙçiýØÛ[¾\12ÿÏ\fÄÿ\7fGÄÿãVÿg\97ý\7fV¤ÐËÿ\rçò\9d\1aÝ\9béærÏ_YÿMºë¼¿Î·<oèÒèÚÑ4p6¸ú\ fu`\f×ÎÃÚ\92Nbù\1e¹á$¶\12 (ë\11\96Y\9dfÅÇÖjjÛà¡§@^Û\14¢MÞØ=ÂÖxr+t¥§D³l_X\86GÕ$÷Yùw[¯¶\\10\9b\10Ö\15]\rì\15\rå\1aêT\8bø\7f¦\8bÿgbõ\7fFÄÿ\13VÿgÄøßå\ 6\84ãxe`ý\7fÖÕ\0ê¯\ 1ªs]\ 6ëÆ.â{i?/ ©'vI¿ÿ¿v6\8c\7f.K \86\97WÛ!>\ f\9f\8dÁñ\7f(þþüßÇFÄÿ\9aò¿Ûù\95ðzý$º7gÚ\ f÷k9¼k\12ê\17|>æØ\ 2Ïçк\82¿\97ç\ 6Ë\19Øöúÿø\88ø\7fRñÿÄ\ eã?»¯ºùÿй0îü§þy,§íÙ´^ü¢\95{IÕÕ\99yù$6\9fè\9eíksl¹\95`¨\9aþ»\9eí©\86õê\98f\96a\9dY§¼¹LSë½)\1ezp'MoÌò\84S\8d\12õt·¥\1cë+6[\0\13ë×¥V¡×\8aB§zbë³QåU;lL\9b\ 5B\8dñuW´\15°\99ý§æ\96á\97Ù\89d\89n
++IZåýÜãÐ93ÍÙ/þó\7fSü?3"þ\9fRü?»åýÿv«¹\9a].ÏY\ 3µ×N\8d\8e\rÜ\1ap¨O\11Úÿ[èî\19<kbqö{¿ö¯;\eÀÕ\15ëç\8döë\8aYï¯\9e\84ë ¹=/^_ÂÊ;§~\1e©;SÀ«\eÖ<Ë7\9dù\96V6\ e-\12[|¬Öò¿-î\9f\1d\88ÿ-\8eÚ=þ\9fVüoyÔ¦ëÿ\9cH\9d·Ó¢g|\86Îjtµ\1c]\r¸ðºq?ÆË\9c\91ãû9\ 5IR̼5\80P¾\99Û\87Ò\8fÿ5ý¹Ánï¨[cöös.ÎüZË㲷׬\13ê®RÍ\8a\95Ü\93õµç¡s@{Ï\1d\17ÿÏvñÿl$þûGÄÿZÅÿVG]÷û\7f»'shïßÁè\18ßÕx÷ó\89ô\\9c¹}\7f¡ZbkÏlW3kfÓ8\1a3Û&nu¸lã©Ý\855Я\14´º*ë²°²ºVÊß\8a¯êYß,ó·\95WgU\93\95ßÔ\ 3*Ô\e³a¾eûØI\8d6¹<·gFn3?©\9dï\98TúêEÒ\94r\9fYê®\15|Ïô̱}ä©\95\15²òï\95z\84ê°ÚWÒmÞ²\91¬(p\9e$il~`Óþ¿Mñ¿õ\88ø\7fFñ¿ÍQ×=ÿg¹.wæ@\9e÷+\aã\1cÞËñ¬I(×p=\8f/zöú\8dëóÐ?s(PÿiSü\8f\1d\11ÿÏZý\9f\8dñ\8fïÿ
++îÿXÔ\86:8°\a¬?\a¼Ìÿ>~๲KÍákúùÁê\9aå[\8c\r\12[*(ÒÔ«ñ²>\87\e»\9f\87rÌc{Â\ 6÷\7fYÜ?7\10ÿãFÄÿs\8aÿ\1d6Æÿ\84è>þ¡Zn®Ï\1e®\ruaï:ok¹<·?Ç·\96\17\1aØ{yC×gZÏ\1d<$õ\ 1\ü?×Åÿs\91øßqDü'§\1eûñ;m\8cÿ\ 5Ñz-ÓÀù\1fí8ï¬ÀÙoîl S\aæøO\1e¸g\1c7ÐÿÛ?Ðÿ?&Ò\7f¹¦?\9fÔÕ\9b^\8c)õ\9c\17ýü@ß/v\8d\ fÖ\7f\ e\8c\ 3'ÛÆÿø\11ñߣøßecü\8f\89ÖxsyÜáù¿gMbyÃûö<c\12ûLM\86spVrd?\ fsu7Ø}fÛø\9f0"þG(þwÝòù\1f®ËÞÎå\85ê?\f\9d×çöì¯ç\rM»õß~>ÙË{_ËÕ\12qÏ\84®\9eÆznU,çÆ]Ã\87K½\87Þ½Æ\8fÿäyñøßmDüo¢øß}cüÏ\1f¨½\7fVôlÀi þ\8bú½\95\9b[yàê<N]OÂ5{\97uÛãg
++Çúo\87°¶\9bþ\8e]Ⱥ\vèaÒ\9cæe\ fqÝG\9a\7f¢\eÄ\ß|Þtðz¬í\10Ò;°Ý\ 5UÙÎ\11$MÍ×Þ¹\7fî,\ 1\17\7f\8bý¢\ 5â\7fâ\88ø\1f©øßc\97çÿâü¯~\ e¸\r\8fRïy\1dÎ\ 1\9aDj\87Åkó»õ¤p~Pÿü\17ë\87\f<K\82g|¯å\rmªÑuHÎ\ 2·Óäýçÿ¦ø\9f4"þG)þ÷Ü8ÿ\13\18ÿWu\11ÊóÓã´[û9#\92ûqz \8e¯Û/\õÖ\19SÝ\8cÛ¯\97EjÐ\9dØû>yaë\88û\aj\ f\1f\13¬=±7T\vÞ\9b}ZÙ#\18¨ã;+ìY\91f¹7V´£fì\93a\19\81\96XRyý\98йÁêêÚlÃÌ?ÿaSüï5"þG+þ÷Þxý\9f7Pcï\9c\81³úâóÃÓà\1e0«\rtâ\9eØÜ\90[\e\ e\9fCuiïúwõ$Ö¯ûP=\86±g5\rÌIõÎ\9e\8dÌ\17¸3\ 2\17sÎ~ü÷¬Åß_ÿ=yDü÷\9eºÍù\1fçF®±3\ 6Îp\f\ç\8bý¿\a\ 3µá³.ÿ»_\17Üj9¹½Æá\ÓË£óø®fÈzîòb\1eA}ôõº\8d\87°Ï`³FÉâúï\9f\ 5¹r\ fqñßÓÅ\7fOäú¿ß\88øO\15ÿd\97ù¿Å\99ܧ\ f\8c\r\ eö×ø\12}æ½{}8\97ë¢h\ eè\96kú\87K\ eèz\9eY\99ÔEl^¡w\1eݶñ\9f\8d\88ÿ>Å\7f¾åúßWæUÓ¹\8b}øì×~\1d§e͸«\ 3c9Wã=pþ_wnô4Tk¤®Ó}Á:\83Ù<Ùð\19\89äõ/ç\19Úzð×{]·H\9d\98\99ýû\99\8dÿmÆ0Ù>þé\88øßTñÏvXÿYö»Ãç\7fL\ 35×m.~\1a8«Ý\8f5\8d\9e\15\13\9c¿ÏÚܽ\81z±Ög\v}\8e\M\88ÐçÈò\v\829\82Ö\ 1¨\12W7$v\86\8b7/8îü\ f\7fü±müË\11ñ¿\99â_íØÿws¿ýuõË\ 6rø/í?«»ý8.ÿ'\9cgøòÁ5\9cÀZM¬îêJm Ãä9ár\v\82ý\7f\8bû\11\ 3ñ¯GÄÿ\18ÅÿK·¼þÃçõÄ®ÿã"g\ 6î\ fî\19sùàþX!ÏÓÒ]Ç¡ù\ 5W'®ÿ¹ìç\89çóåQ°Íu\9cZ®XâÖåV~îÞ\18Üj\ 5̬\1eܼ²á½ø\9eõ´Þ·\1fyý¯¬+¹ø\1fÑÅÿ\88Hü¿lDüo®ø\9f²Ëü_÷¼v÷\80\95ùZ]H.\ 6ý3£ßØÏï¯gÝ9moèß³\17µ\7f.
++æ\v\ f¬\13´÷\ 4Û\98Wèó\92\94Í¬Ü¢Öæatγ)$Yb_Aß»ÙWÜô=\86âï\8fÿ\ e\8c\88ÿ-NeÿÿájÛø?hDüoyê6ùßç\ f\9cåvö\9eø\1aßYѹüØÚÀ\17Jl½ùÿÐ\9afs\9eܶ÷ÿ\a\8f\88ÿ~ÅÿË7öÿúù¿\85ÆêÓÀ9Nö\9cuëûá=\ 1í}üùþ×ÊæEh\7f¯}\1e¦]¿/ÔW\ fÜóÝÏÔR¾ëª´¡tÒä×Ù\1e~ËKjÖfK˯×-;·ú-U³\9cWÚ]Þ\9eɶ\81Ûnñ©é\96V\rÆ\ e\92ÉkK\1fÓû´\91_R\95¶C_OìÊ\16\ 1d¯}%=-¬Ê\97¾u©gVeEÞ\9aõåÙ¼îï!Xë\7fèGЬ=[ÅàÚÖ\91ËÙðõïÇÿÔ\11ñ¿\95â\7fp\87õ\1fWã×ÍË÷û\7fí\8ap¿fÔS&ý{I[\13tèZéjsÞhj7]\ f}Áïÿ_9"þ·¾\ eó¿ë}<7ÿ\13Ú\17\80á¼ÂP¾ÿz?Ð\8fÿM\ 6®ÿ¯\1a\11ÿÛ(þ_½ñú\7fmol¶ÌónÇ`á=;ïì\8fõ\17ç\86]Ú\e×Ít!µsÊýý|®>Ì6?ÛH>µ«Ëb#ù\89\7fÎÖáºWÈÅÿ&]üo\12\89ÿi#â\7f¬âÿ°\8dñoçæÂ9^íxîa«ó9ݾ\8b\97OÂóÆÏíýþP½\9eP\8cCçw®Ï\9f¶uµ¦gVÛpÕÒ³\932Ëj;\1eNwZ½O\9b¡\9d[²eZ47\7f«¿\93êæ¯'Li§ºåöx×ÿ\16I\9aßà¹fÛÆÿô\11ñ¿âÿð]ÆÿÝÙª®\8f\7fëµ\1c\80öÏÎ\1887âôÀþª¶\96ÇÐú «+\16ÚS¼/PWL\17ý¼\8eä\ f´¹á'\ e¬C\9d\10Ía\rå%\ 6Îð\9c«\87Qzû\8aWÖÿºû\91:¦ISñ=kÖ\9b\97çÔn\eÿG\8c\88ÿí\14ÿGnìÿ\9f\1f©×vVt]p\1a8ã±Íïî\9fï¨k¥«åß\8e\r\9e½2ΰ:3¯\rÌ\v\85kµ¹\9f»®É\99u¤²f\89Ö&k\9a»\92®]uÓ¬\88kfG¹k\9cje·jKÕÒÓØ*|é\83\9dY\91H\8d¿ìö\9dÛ\1a\91u K]\9aÖy×\9fTÍ×ÊmÊØvó¥M¶om¥¥ÕkL\9az\ fÅÌòût-ç]n@Q4\a<×¶Ñ¿lª\8bxç\80¬û¹zEÛÆÿ\8c\11ñ¿½â\7fæ.ù\9f\8bzüÇD÷\ 6ÄòiÜÚ`x\ fð\e£9\1eÓÀü \1d\rÌ\ 1^\1fy\1dëg÷\1e²³\0×Ï)Ø6þ\8f\1e\11ÿã\14ÿÇlyÿ_YÇ×h¦½G¶ù¿Ï[\99çwu\19/\19è7¾¶?\ f\¸3=.ìõ\eÜö@\7f@\ fk{^\17ùP-\97X¿0·\99ý¤©ØªNBÞìÏ*jK\r´LbÝ\ 1ì«dÖ§P\90íü\17u\1d,½¿®-QØî\17¥F¡\1a,ÚG¨(5\96´¾\89¢ouí¬¨\90Å^_©½\eU\85Héo7\83W[OÖð×JHÚìÄ¢n¤\9d\b0\14\7f\7fü÷\r#â\7f\87\1dçÿ\96ç¨\9e\15ó\8díæ\ 1\ 3õÀ\9bódýø\1f9pý\9f5"þwTü¿y\87ý¿mß)\e¨×xÒÀ\99ÑýýøËz\8dÇ\ fì\e?vO|-ðâ^¾\89\9d\e¶\18/\ÿgx-òt½Z\91þ\98rl}ÈÅõ\7fd\17ÿ##ñ?{Düï¤ø\7fË.ó\7f\8bu¹s"¹\81gökòæE·\87óÈ\81ó$'Ѻ\v.Æës\8d{\ 3ç?º¼Ýë)/cr\88ò\80ô-ìÝ´õc×ó\87·\8dÿ·\8e\88ÿñ\8aÿ·m\8c\7f¿þÓ²&Û\99{âó8g\ 4r½Ó¬}þ\aÎÿír¶Üºþcü\1c\ 1ýä÷\ 5r9Ýøno ¯¤¬æ¡û\9d\ 3d\exJo|få}k]\96V\12>W×0Él@®Ïkaù\1c6Ùo¥Üô±É2û\1d«ã®\1e\9f>@¹Ý=Ô©Ð\13|\9e\16¶\92`ÇÈëîb¹½ÕÆ<³Å\T¨ÏâÇÿ¨\81ø\9f3"þwVü\1f¿ÃõoÙìm¬Î\ fÖ\ 6\8aå\ 5¸ÏK¸¾Ç\19\ 3g \9e\16=gr\1a¨5Òæ\ 5N\aö\19M¢{\9aBÏhÛ\8fs=ìùñÏxôë\84¬¯ÿ¯\ÿGuñ?*\12ÿsGÄÿ\8b\14ÿ'ì\9cÿ¹¿w\1f·95¿\86ß\81\95\9f¯«×ݯÕèö\ 5ºñ_(ÏËå\ 5oZ;ò×\8bÖrÂÜ\9e¿±µ¾õ÷Ó¦¢Daó\90\16o\85_ã
++«9QÙ´@i\vR\8a½}~g6*´£¤²æ\91aË\80u³\81}®Q\83í%M\86ó?7Åÿ;FÄÿ.\8aÿy\eãßßÿaã1·\87³_ßã\r\93øx±\1dÛ\85ëE¾´?ï\1f¨ÿâ\8fûº:0¡\1a\8aÍ\18êFX\13d1\96\1d\8a¿?þ{â\88ø\9f°ëø¯\9bÿ\9d\ 6ê\7fê*ªÜýzÿêØ¿ëÇU\91ûÉIÑóbCùÄv\8f?\8cÆq¡s]Ck\12©%\16X9SË\ 1mö\ 4$¶¥X}ã¬]7[\9fÿÝtý\9f?"þwUü¿{\97þ\7f:¯Û1Y¿ÿ¿<Ë)°7$·3\9e\ fFò\86\ f\fÌ3\9c\12\98KLg\857ï\1fÚ\87èêI¬\8eCÛgÆ´\ekö÷\9a\1f\eý¼¯ô \14£À~óÜ\92 Ôõ/ü<r\eÏû5μN\9a\ 5\ 3Ë\1d\9c\84Ï®òã\7fô@ü¿gDüï¦ø\7fï\ eûÿ\96c¹s\ 3{\83çUååxõk\83\1cì\7f=;Ao²Ìõ\ f¯'^\15É\11ê×\99Õí>qã\85Øyq¡:.º\9fϼ<¢ë}ý°\99aèÎ"\bÕüðÇ\84.þGwñ?:\12ÿ\vFÄÿî\8aÿ\ fì°þçúìî\1aê\9f×¾?z&\8fë\97¯Ö\ruç µ½ ÿü¿¬Î\8aë:§\96gÖ\1dÈíak\97¦\8dHgí\fob˶uó\80V\90ʤl\8e^.\8a¦7oùºEYÙ±ßÍÊ\80u)r+KYuë8YÙÔæôÏ\0:\14sK͸`(þþóÿI#â\7fâVù?\17Döì\9c\17Ç\89Ýç\83]íÐm¯ÿ\1f\1c\11ÿ/Vü\7fhãõßÎ\84Ïë{c¯??³.ö$\9cÏ¿Ü\ 3üòþ½yQ¯óY½u#Û\vâær#{2Öër¶?ËÒ\96ä\93Ê\8aò»\1al7\96ó\0·½þ\7fxDü¿d«þÿ9\81Z\9eu\1dÿ×Í×\86æz\96ucN\1fèëí\8f®+\1c&×èØ¹}×\1ftóJí\`\9dÏ\13;ÏĶ\9f_\87ø?yDüï±UüÏîïÍÔç´òòøÂë¿\81{CW\83Ã]ÿ«çÆ\97E;ÏóÂIlLáß'×úËV\83Éf^-u/ws\0\81:\1d\87ãz¯-\1fèÏ-EÄz»6}\94o\1dÿ\1f\e\11ÿ\93ØÿsØÚöùÿ\94\11ñ¿§âÿÔ\1dò?\96ç5öÏ\0Ì4à\99\ 6j\ 3µç{\9cÕ_ûíÎê\98\ 6Î\8bÉÒ²pcÿpÎßu<KjQKò\9a^þ\89ÛkìÝcb{\88£5\1e\ 3õ\9d\17g\8ahH`\17wYWÍÍaîÎ\ 3èÎ%iïaê4¸Ü@?þ{\aâÿã#â\7f/Åÿ'v©ÿ¬.\94ÿ\8c\ f\9dËàÖ\0\9e¾ò3Nêè9>\8bú ×í\q\97\1f\10\99\93\vÕ`·\mõÒ4lo&æ/8·;z\9akXVÔ¥=Øõð®l4Wh°\98ÚÂ\80z\89zHXÕ¦ÜryíX7\r$k;\17Êö\ 1ë\1fh\8c7×`ßr\80K\8b·m/WÏ@}\81Ô\9e5¥þÈNö¨õPHCgVØ\93ßÖ'k\7fýoo\17ÿ½\91ø?mDüïø?}\97ýÿº$B±_îý;\18\9dË\rÖ~YÌ\19&ÁûIè|\87åYB'FΧ<a`Þò¸\81\9c¶c\ 3µ\8bÚón×ç{»5\86õó\83ÜuÜ룬Ï\ f¯×2U×Åê\855ã§mãÿ\8c\11ñ?Yñÿé\1d®ÿe\8eôé\ 3g|U½~£\8d\84J/\ah%7Ð\16\b'Ë\9cÒpí¶id÷êÀ8ÔÕ!ê×\ 2qs\94\ 3sù±Ú¿á>¥\8dÜl\10×l\12«\9a\ 2¨íü¡\15\16µdÿ¹\9d\1fgÅ#&\ 3g\81ä\90o\eÿ\9f\19\11ÿû(þÏÜ)ÿ§êÎ×>/r½öç\85]ý\95}\81º!n\9dÏÅê\89+ÿnÖÍ\e\ 6Î\13[ÌC^\1e\99\ 3~Wày\91,ö¨¹ëv1ïÛ\9dÛQÙ\92nb\99ÙUnóte¥øZ§\7ff©?\1aýY1ÃÌVul\86Ï\1e.sK °Ý \96¾a5AÔ\89W8+û\ezêY
++zY6\89 ©ûVúl¥Vk õ×1ý>ÀJü§\ 3ñ\7fÖ\88øßWñ\7fÎ\96ù?ázü\81=Þz¤¶s\ 3§öÇ\8d\8b:0Gî\89ç\a\4\89ç\15\ 4ö\ 2tk=^<\ fÅúüèóÁmRx\96Y¶wfóÏ¥F\9a\93¡3a\ü§]ü§\91ø?wDüï§ø?o\87øÛ¶«j\87ü/ûÁûgC\86\9f)\a\ 6Î\94
++\ 3º³!O\1a8Sb\7fô\f{\97\v\14êoºqÀZ\1f2x^{äÌ\87¡ýA.ÿ+µ\1a±ú°Ø?¯*Û{\l\1fÿç\8f\88\7f¢ø¿`\87ú?Ëuùv\8d_çåi\ 3×ð\93ûy\1e]ÍÐà\[[\17ó\90äÜ\1cfu`Vú\87ÛÆÿ\85#â?Sü\7fncüÛgë\8bVãßå]÷÷øZnо`}÷6¿ÓÅ\7f\9bùÝëc®5\92\7f¹²g¤Ù¶\93Ú\84]Uèÿ4\92³N»U\b°å9}]ëÈÙö-{îé#¢\8f¡\1d\0 OX¦g|®Ç»úCVã·¶\ 2núÈÚ.¢ºêv\85%ºñÛ;·)~õ\8e2ûÊi¦\8e¡\ 6\82Vý¹j¶\9fY.\90U\ 4Ó³ óë¿YÜ÷\rÄÿçGÄ\7f®øÿÂ.ù\9f\8b3\9eÏ\198ç}¨>äiÑ\9cR7Æ\ fÏ)¿¶÷y³z\1dóåç¥n*±ê§x\98ÎõÆê?®\9f+´\88ÿ¾.þû"ñ\7fÙ\88ø§\8aÿ/ïTÿÑÅã\9chþGðløÅ\18ïÔ\81=¾ý3`æÖ©òò\rú5g\8eéÏQ¤³î}L\aÆ/G\ 6÷©FÆ\84íý$\9fÛE\9c/î/«µ\lá°´\12.¶\90cÇ\80\94]\8dénïol¬Øæ£è\13g\1f\98Ô»þCñ÷çÿ/\1c\11ÿl«õ\9fj`\9fO .».1ÿLÎPî\95\9bc \9fåsd \96\9bÏë:Äk~ë¹Ä¡³\7fÖs¿F=»¶½þ\7feDüsÅÿWw\98ÿkkµ\9f>°/äà@]øÐ\1e~\97\93wJd./\e8û5\19Øgrü@}\82c¢9ªCk¿kù\9b¡ýû\93µ3`]>ºëËÆö¨®Ô\93ôã\7fÓ\81øÿÚ\88ø\17\8aÿËw\99ÿYÔj8?z6H(7¸=7öà@>A6\10¯$0.̲Ê{f\84îñn®7\94£2\rÌõ¶ûWö\a>SÍ\92Íʳ \90_²\1cïõ?\17½5þÈyã+ù\9f7íâ\7fÓÈýÿ\15#â_î\98ÿáöÿ\87r|Û\18\9f:pï?\10=OÎÕ\f
++\9f\19xIo]¨Í×½8\90gÔÖ\f÷çs×òtoÈó\ 2×\9f\r¡\98G÷ÿ\87âï_ÿ¯\1c\11ÿJñ\7fÕÆë¿}\8e\87rrÝý5\9cç\19:\93¹\9aùë¯áçÿå\93øºíÛ¢ãJ÷ù\bÕ\88]ôÝÂcÁØznð\19¯ð¨{oõ\1d\9a³¿ý\Ðë5_xÛø¿zDükÅÿ5;ìÿ\\9eÉrp \8f\9f\f\9c\e\7f\´\ eLpýR\87ÓûL\85÷\ 1^\13È)²üðþç)M\8bÜ{¦×\95å\14ZY\bKBlâÐÎù\16\1aZêQg5=f®V´¿\7f/R×%Vß-ºN\14:;fÛûÿkGÄÿKwÌÿm×ÜÎÝx.Pø\1c·ø¸ðÿw\eÆ\7fþ94[Çÿ¢\11ñÿ²\11õ\1fÉкÞ?\eÁú\8f\16÷\9b\rÜÿ_?"þ§(þ¿}=\9fÿ½<¯¥\9d«{\83?·\92X>×\85ÍëPý'\97û½¾7п~\ 2{êü\1aM¶Âª[n]\15V\ 6Vwe;\9d)\9b[îN\99ÙøÝffÔ\15+¬2X¥1©-ÐW6\8bg_Ð\1eßÖ©W¯/·Ý"v\1a\94eeÔê\ fZY¿Â
++
++[ª¸-×è\91Q[§ÑÖ\1cìB¶ÜnË\0Ï\0@b[B\8bf¥¢)\01³c',Û»¶7a7ÃBÿ"oÖ\9b\aÏÿ¾Y\17ÿ\9bEâÿ;#â\7f\7fÅÿ\r;å\7fµç¯¸þú\vVÖÎêîl¨v\r \9cÿqÑ$Öotu#·ÿ4 Ìç¯öÉ"9\18s˽±)`Û\104/ôð\9eÙQµþÖ¼V×½M×\9aÙZ@b¡³Ï¨ðÕ©UüRÏÒº{\1a\8145Åô\1dgM\19áʶ
++(ô¶Ë ËʪРéÛ×\99\r%,\ 3ÉF»¶à7«\1eHQ[Þ@Ú;ofÛøÿþ\88ø?@ñ\7fã.õ\7ftq¸¾\7fø\øc\ 6Î\f\99FÎx\9bôç\8c\12õ°¼ñBx>©¿/Ð\9d\rìò?Bs\r®ï\17\1a\93»³\84»ù\9aL\97är\8eö\ 68ûÝ\7fþo\8aÿ\1f\8c\88ÿ\ 3\15ÿ?Ü¡þc\9b[sÖ@îm{ÆR¸fì;\aî\vïè\8få³YW7ª\7fv\88\e\87Dî ±3\19\87s³nØóÄ\839Ã\96NäÇÿ\98\81øÿÑ\88ø\1fPüß´Ëù?\8bqü9\ 3g\ 3·Oþ\8bVîñÅÜÏñ¹Éê\9f%í\9cRÿ,\80b\96Ö¡³\0l®ÎÏÇÔÕW,ö\Ûö°<Ël\96§Ê,
++\16I=äó*\9b\a½MØ\94
++¦\ 4ê\83\92&VÙÁÖôô\10ÈmÊGOd\r íá£çDYZ7¢°\9dÊimó\1f³Ôâ®\9b{a\89Ýe¡ß²>\81\9d\ 2\90XV\9fM e¹>MµÍ\1fÔesÚ£¾\1e8úd©\9b\92\94sË÷Ì\8a\99\9b#òç\16\ü\8féâ\7fL$þo\1e\11ÿ\a)þ\17ïPÿÓ*\16øû¸Â{|ª\813ÝÚ¼\91oZyv\94Yåå\14ôëÍõçÿ\96y(ý9@W\e4R\9b¡»Ï[\99'Û&¬{\84u\1a\13«\11\99Ø)ñ\96©ÑÔë¶\99:\9b®Ó½¢°c\9aõ\11(í4w»¢5\92ÓH¨°â\1dº\1fØÒ@b+Äu\9a\r\9e\17\17Ê!Míðh\9bb,,±Ü{þo\8aÿ\9f\8e\88ÿ\83\15ÿ?Û¥þ³ÕTñò¿Â÷òÓ\ 6j\0\1e3P\9b)0\8f³ø¼½¿×7\\9e\1fwE¿\1f\90\94Ý>\95Ë'¡9\f\7fnÐÖbÖÎ\87ëÅäz¨\ 1å×\b\8c=\83¬8q¾müÿ|Dü¿\ñ¿d\97ü¿YÖõ½Î\1a\98Ë?\18]Ë\99\ 6ÖyÚ\1a0\97\fô\e.\9aÄÖqÖ\9fû\81u\99\eü¹\1e\18§F×
++õ$)íÜ\ 1K+HçíàÚ\8fÿÍ\aâÿÖ\11ñ?Uñ\7fÛ\96ñ\ fçñ\9e¹'v͹u\9ePÎå´[¯óc©^qæê±\87sÃ\8f\19¨\19xd¤¦L»/ \94\17²a<¹\9e籨Ý\12Ë'ër¸õ£ÑSÎ&~ëE\ eh,_ÔÝs\82¹Á.þ7ïâ\7fóHüß>"þ\ fQüÿr\97çÿ¢\9f\1f\98ÿYô×ÏÜXÿ\7f(? \9co\14ÈÿÕHʯÿ\1f®\1d{R?ßxQ\8búØ~\1fÆÆí\9bòA,µT\91®òö}7}Τ\9cÙ\82b±º\16¼\92×ãç\ 1tg\0\ 4÷\ eúñ¿Å@üÿjDü\1fªø_ºåù_+y\1eI\9aºçûWçøçµ\17\8bp\9d·l ^Óñ\ 3{\r\8e\89î\es×yx)t\16pû\99\89Ävh\rg}OW0w\7f±æ\e¨K§î\91¥\ 6Z±ÐYÖÎý§is
++Í5Ù!1íü\84\8bÿ-ºøß"\12ÿ¿\1d\11ÿ¯Püß±ÃüO»þsv´öw°ÎçÜ\9då{úÀ~ÞÓ¢¹ÿÓ@Î %T»uÆcWÇ\19Ý\9aàÉ\83ç~LWç »üôc£sW~\1eÐÚ<Ь\9a7µd\9buÃÌÎ\89Ë5ÖÑÿ_\14E³ÿCcÎlm\9f «'\14ª\ 1¾uüÿnDü\ f*þ\7f¿eý¯ð|ý¹\91Ú@gFsø\82u\81\17õdO\v\9e\ fì\9e á\9aaU´\9exèÜ\17½ó2t\9fY®[\1f\eý|úý\ 3·×s`=ÏÕ\ 5÷ë~¹³\83C9\85+k\19~üo9\10ÿ\7f\18\11ÿ¯Tüß¹Ãõoó.áúOón_À¹\91{F g°;ÿ×Õ\85ì?g²\81>F2\90÷uÒ@ý\99ã¢ù±3ªWÖ ºó\9f×s\81½z.ÑûúÀ¹Äí×Öïû×ÿ-»øß2\12ÿ\7f\1e\11ÿ¯Rü/\eQÿ1TÿݶFºqaè³áîñ¡z\ 2Ó@¿Áê\89\86ö\85·g\10\9d<p6å±\81ñ\82Õ\1f<rÏu\1d\13\ 4bm\87\b©\8b\91Úc<\9fÙ\8c\91ßwh¯õPmÏ\95=þ^¼íîaO\13÷\19Ù:þÿ2"þ_øÿë¨õßv®æ¼Õ1Y÷gWôÖrÝùP{»yþ[Æ3X\17b¹÷ïM½±\9c:ÒU6\1c·´\99\8a±ì\9ce|²\99U]LôóÖ\8fÛ\8dÅ\ 2ç0Í«¶:\9f~£*\13= +Ûè«!§þù\\83´ù<\997ó\80êäåYfɼ¥\8d÷\v»Ïhd\90Ôí1CU\9eèñ>Ëm¦@OüZ#\aKö³Ñ\89\9dE\9b\95Cë¿\16÷ý\ 3ñÿ·\11ñ?Mñ\7f×.ù_\8b=þm\9füá+\9f\8d¬{Î÷ûä3;HÑûl\84ö\r\85æêÚÚ1\97F×òBgFÚ\1e«Ò[\1fV0bë}¡ý7¶0«Ø\94¶!0/Õ§©J÷9±=àöà\9eÛ
++\83M\11Z®\9f>cÍ\ 1\8fyi£\83ÌV -oT\1f¾$Í5þW\17`^k¤PØD\94íú²©äÅg/P\ fÀÅ\7f\7f\17ÿý\91ü\9fËGÄÿk¶Êÿ½``\ÝÏÿ¶yüÄ\9b\e\fÇëô\81\9a²§\f¬7$\ 3ýÀÀ³À&ð&±\1cðd6æÀñ\81\1a\11~\7f/4\87ì\9fû\11û<\ eÆß¿þÿkDü¿Vñÿï]öÿÍÝÞéþóßæXÛ9÷³#y\ 3§GëÆL»{Æ£ýÏZ\96çî~\11®3tyà\99áö\ 5ôë?4÷þÕ±~¨\16\8fnT\89\1dÕZؾl«7iÕÞm\15Y\8f£¢íôWö»M\8aO®~\81\15o³\a{iõ\1cõX±Ê\91³ªNl^8µü\80j\99CºV÷¥Û#RÛ9Õ\8b}\82~üo5\10ÿÿ\19\11ÿ\87)þW\Ïç\7fX?\7fÚ]oëu|Ý^¼p-©«'±õ\ 2·î\13^\83º²\1fÿ®ÎÀ´ûܬç\9aDæ|\16k/\91¹úõ¾Û¡ª3¼\12ÿ[uñ¿Uäþÿî\11ñ?}ÇúÿËù\9av¬\14ZÇuýìP\8e×\8d07s%§ìP¯\eÛÜÂPüýëÿÊ\11ñ\7f¸âÿ\9eQõ\7fÎ\r\9e\râæxBsꡳ|\96\9f§S\aÖ\7f\ e\fÔó:e`?y¼Ï°·\9b\aôÿ¬\9ee»|>ô\13±\ 3?Êdíù¿\98×éÖ\87\16óF\81õ\ 3?\87q²müß;"þ\8fPüß·1þÕ@\9e\93¢s¥ûBgvt9>nþ-\\arÚïÿåIåæñC5\eCy~¡µáÉvkűº\8f¡ý ~ýÆõ9áQ5\83¶\8dÿûGÄÿ\91\8aÿ\87Fìÿ\99\ 6Öÿm¿î40ÇÓîÓ¯¢s Ó®&\\7fþ¯_«of+ªÞºïú\19\13ÓÀ9\82¶\7fÓ\9d!±~^áúgbý,¾Èy\r\96Á;<Ï×?§~½^ÀÆý?\9bâ\7fÕ\88ø\9f¡ø\7fx\97ûÿbNæ¬^Ìô$\9c%Þ\98|¥n̬\9d\ass9{Wïåi= ×øtçM\ 6kÊwãÍH\7fNãô¦FcnG?VY©\9e\9a~Ô©\9dÛT&vÔ\93\9dÝ`Y×65¡A¹]{z\82'V\16¤T\7fÅ\927¬\12P]WÖKÓU\9a¨\8bokµ¶£À\ e \9f¥Eb\ 3\85J}Õf
++À6\80Ú>¾:³JE¹\8d*jÝRôõ¬4\84e\aªkY¹Z²V6Îf\12\9aú1i»®¾~ÿ¿õ@ü?2"þ_§ø\7ft§þ¿\9b\7f??ºÿÃÝ7Âû\ 6Î\8aæ\8dî\rÌ\rØY\8en^Þ\7f\ eÙù\9fÁZ¾\8bZC\97÷×\85»}\86þõ\1eÙÇ\17Ëõ\18{\9e¨\7f\ 6e/ï\7f½ÿ\7fë.þ·\8eÄÿê\11ñÿzÅÿ\13»äÿYBãdYÿq½~\8aÛ\93\1d>3¢Íï½ýê8¯nïç\17N\86Ö^b}ón=Æ\12·lÈf\89^vñÕv\a¿1\9dù°8#2Kêmã\7fÍ\88ø?Jñÿ䯸·{®ÃyÜ\17Oâù_¯ì]\97Ëú ý\îeÝÈ\17öæ\86]¾¹\17óõ}ØÃu5º<«\eSNø¶ñÿÔ\88ø\9f©ø\7fz\87ó¿t§«ü<\8fp\7fîÈÈÙP\93\81ýÝWNâ9~\97õúnzdfnÏHèþ\14»_ØõÕôéô÷æºÞ\17û.âgõ\1e\8as\9eBýC\9b\1fÒM£.\86âïÏÿ\;"þ\8f¾\ eç\7f\84êq\85ó?Ý~ük\83s¹7²y\9fC:\ fÜÕ\12\bÖ\fóã\7f\9b\81ëÿs#âÿ\18\8bÿÑ\9bâ?Tÿÿì\81<Î@m\882éjÀgÑ\9a<Cõ\9cÜ\18±\7f®t \9eûb<qd´~;î3ºòùU\ 4kÿ^\914Ï\97^}\16ol\11:¿94¯0³Ý v#©\9bÑ\85î\13éj>h¨þÿmºøß&\12ÿ=Gï\1eÿoPü\8fØ\18ÿË\aÆq\97\r<ÿÛõÚPÞ\98\e\e\86Ï\ 1\7fí$6¦t{Ã\ 6öqÄÆS®¶·¿WÜõ\v\ e˱á¶ñ¿É\88ø\9f¥ø\1f¹1þ\81þ¿nníµÕ?ÿe>«»Ú\80ç\f¬\e\9d\1eÉÿ?m`ù`´\ e\99Ë\ fºíÊ\98ÑêP\9d<°>}b4Gi\97õ\ 1\97·eó~V&Ê\86\94ê\0*ÞmN¬¿Æ\14Ø#Ð\8e+çy;\7f\9c\95å¶ñß;"þߨøO\8f¾îù\7fºük·&\17>ߥ¿\17kYßó\1dѼ 7Ö\bÍõ¹¹\9fÐ}<4¯\e¸_»ùºP®Ï¢>çar6ÌÖ×ÿ¾\11ñÿ&Åÿ¦\e¯ÿ\13{ýxÝÖæm\8eÝ1\913\9búõ½\96ã\82þ~}u\8f\16kü¡½}Ó@¾\98Ý/Ü\19ôëù\82\13?ï'\90\83\17¸þü}\7fö\14®bó·\91s\9còL×{nUÇËÒ\12\84\9aÂã\96þ\95Út\83Õ\92Ó\0²ª\9b-c\1aµdv¯¯kY4åAô3Ë0\9céscIÄ«÷ÿc\aâ\7f³\11ñÿfÅÿ\98\8dñ?{ \1eïY\91üê3\ 3ó\82îìÏ\ 3\ 3õÄN\1eÈý9v \86ÿ\91Ñ<\14w\9f
++õ'\ 2÷\8dhÿa-?#¶§+¸gt \ eÁdSÿÿØ.þÇFÆ\7f·\1c\11ÿ³9ÿï°µmü÷\8f\88ÿ·\10ÿ\eeüýûÿFÄÿ[\15ÿ[ïrÿ_Ôj<s`Ü}``/_¶'þ¬?9²\97÷ø\813cÚõÿ\95\1c\85º(7M6Yÿ *\9b[©e÷Û¾ÀÔ¦\0muFÏhuØ\92B\83z;\ZÃùÄ\8av[®Ï¼)÷\95\17\81s]Ü>áÕ:\ 2á=\82nþ ¸þ´müo3"þߦø\1f»1þ\17\fäÝ\9c7°\8fî¬@Ý\98²Û\93yæ@nÈéÑúà.\7f \\eö\84\81zäÇDó\91Bõ¨¬\ f3 ¯)\87òvbë\ eñº²m=ðйå\8b}\84ÛÆÿö#â\7f\8eâ\7fÜÆñ_ þsn}¼ÓöÄ×ñ^Ö[3ÒOlæÎ\ 5
++Í n\1a_GæÎtEά7¯\81gig\ 1ÙxKý1;\14ÈN\vªJ\8dØ\9a\12ov"\90î[³Ê&vJËôC}ªfF¾´\12Î\85ºmÖ}·\15\9fl¦î\9dÍôÚ\Pn\a:¥\85\1aTvâGÒ¤uÎ,ÝË\92?uß°½\9b©ÞU\9dZN`UY\7f.·¯Tç¶,Ø\9c;\92«[8°F9¯ò:in&v\8eÐu¸ÿßaDü\1f«øßqcü«Èºû Ѻ\10î\9c\8e\9b¬æòÌÜ<m8OïÈ\81óbúu\1c\96÷þË£ó\ 2ÓÀü¤\8d5\17¹_í8/4W°~_\ f\9dÙ²Èß\89\9cí6*OÀ\8fÿm\aâ\7f§\11ñ\7f\9câ\7füÆûÿyÑguè\9cÇåÙ@g\rÔÿ9µ\7f\1f×U1\9bDò<«y\92NÂuCÚ{Ñ\89\81ýæ³\95\Ãð\1cuüó¸Å\9c\9f?\87<+òv/÷úu¼Ø×\99äzº×ºOè~\97\15ºÕLÖë\ 1ô\e\üoÛÅÿ¶\91øßeDü\1f¯ø\9f°Ãóß\9dñ\12Úÿiy~¡½\1fvýÇò\ 5\83ý\81Å\9aði\ 3ëϧ\fÔ¦«¢g\13\85r\rÛùâÀ:\92·\8fl½ïØí)\e\9aïíÕ\8bwë»Þý#\98\178\14\7f\7füw×\11ñ?w«õßøùO.Îþµ¥çÜ\98mU_p\9agKÒä\85\ 5Ï\7fÚtýßmDü¿]ñ¿û.×ÿÌÍÿ\9eÝ¿\1fg¶Ïç`t\9f\7fè\\80å¾Ð\13\ 6ö\86\1d\1f¬5áòLÖëû»|ñÐ~¢M}ÍÐÙ-\913\ 2Bû¹b{Gcûþí¬Éln\8b\ró6?rÓõïÇÿÄ\11ñ\7f\82â\7f\8f\1dÖ\7fÚ\1c¿l`_ÀÕÑñø4P\8f§Í\19¿rp] \cî²Þ\9a\81;\ f0TGr^¨\7fV ß\1f¼>æ\ 5Æ\9e\17¼uüO\1a\11ÿïPüï¹Ãüϲ¯vz´&Ó40V/Ôg\9f\ 6jqé'\91N\ 3ûEÚ¾A»ö\13Þc~qo\°~V\èì¶C°\87»ýüXî\9eîW]\81Â\ e£µ(ë¹^[/¯\9c\ 5kH\ 5û\86~üo7\10ÿ{\8d\88ÿy\8aÿ½w¾þ\8f\8dîýsû/Öë;N»µ\98õõ:7\7f·Ò\8fËÛ:jÓnM¸ÿ\8c¹8\9a{²þ|uù\9f\81û¬\95a\9f\15Í\99Ëe´fG \96ã¡Þ\ 3¸\88ÿíºøß.Òÿ;yDü¿ó:ôÿö¯®ÿf³ ®ç~`)©Mt\95UU\ eÅß¿þï7"þߥø'\e¯ÿ¶ßõ\18ÿ¾¬\8b3ÔïÒ\a»\fõ»ÜÙ^î\19ß\9fÛïçö.×oûÏñ¹\1e®m?ãÒþ=ÀæU\ 6úÚµ:`\91=÷\8b\1a\9f\81s¿f\85õÿlr»²G\86U éj@èæ¡þ\9em%Ð\1dÂJy47\ 6=ºt\8f·ç\7fi\a|ê.\97ÙïXþ¿ú\rI¥»\7fV멯7 \11sS\ e°°"byik\ 4Þý\7fSüg#âÿDÅ\7f¾Cþ×2W¯ý\f\84ëÿ\;\89\8d¥Ýþ¯PÿÐåÿ\85Ö\r\82ù\7f«ç2®Ï§\8fíǹ1þ\rY\v¨ÉUôã\7fû\81ø§#â\7f¾â\9fí²þ·Èã=cO¼ÿ}j¿\9fWÕ\85\9b\97 \9f\ryÒ@í×\13\arù\8e\19È\r¹&:?¼i\\1eÊ!\8bä}\84ê¼úg>Ú2\95*̺\1a/+ç\94\87Ö6\üoßÅÿö\91ç\7f9"þß}\1dê?¬\Ç\99>¿Þüox\1fw{O\7föJÿ\7f^ºs\1a×÷ì\1eê9\96Ðþ]õ¿f6Ùn§·Û\ 2\91b`»xÒ\99õáJ+ñfå@R=\88lÉÏJ»ÏgÍÈéhÚn±ymi¾¹\8d!¬¶`Y\15Íä\9eþ¤j¾Vn\95Ò-²i³\12¨\a@eçË'¶\81@ý\7fÛQ¤çQ>_ÙK>³\1d\ 2Cñ÷¯ÿjDü¿Gñ¯7>ÿÛgì«W\9eͳ,\94ÃíÎd\8e\9dÇàòõÖk\ 2M\ 3{~Û:¯ì÷\vº½\a¡y\9bµú,«gõ¶ç1Ûs<±ûPf\85%*õý5\ 2×EÚ,
++ê\ 1aY\81v\b\9f\86b\95\15\80×\18.ÉR\e"4¹\80ºÄmè\98èá¢\8fù<)ôwk;л9ü©n\8eõ´\ f\82nð6¦(ÓÒ\86\ 2M\ 5ºB\17¿\95\bµ¿¦GEe\99\80VòOw\85Y³½°)þ\ÛYRÅ\86ëß\8fÿ\97\8e\88ÿ÷*þ_¶åúo¿V\7f;f{ÆÊçb¾r\8eo¸^O»\ 6\1c:Ovèú½>ÏVõëüØÐ«9\86¡¹3è\89^6Û¸\14\ e\9bȰ:\0¶Ý'+K[ô\9cÙ2\9eu\1e,ÊzìÛ9Áê\15Ôe\93àÙìü´Þ\84\9e\11µ}\18+õ\ es;T¬°Q_sp@eÏ\8fæ@a»áWú\8cè;\87Æ\98ÛÆÿ\94\11ñ¿@ñ\7fà.ù\1fÝY\9e¡õ\9fö\19ßÎã>xå\99\91tç\ 2\1e\17<O*TË¡ý\9c]Õ\7f~/ö
++]ÖÏ'èêø\86æÿlÞÂÏå\88\9dÇ\1aÚ»\13\9a\ 3°s\9a\9a5<[ÄͲ¬\9cÙZ®>\eÍ\99p6wÜvúæm¶\81>Zv\10\88Íý\14v\8a`\9e7¿ßÍ9¯ö\ f¶\8eÿ\81\11ñÿ>ÅÿA»ìÿ°\8bÐëÇ¿~5\8f§;çµ\7fO_®é]\14xvÌWö\87o;¦\v\8cíü½\18êöë~¯nvm\17²Æ\8duV[ÙP½´\eü¬9®pf\9bôJ\rÜì\86_Ø\9d»\19¨Ù°£¶ÝÞz~ëþ¯~¨nÜv´cÙ¬ßë¹®ËÜÎüÓ=^CI}½ÊfqòO\93ù¯;Bb\v væxi\87LêþPÚmÉrIì³PÚ]H\9d?;|\c\84ùbN*O²mãÿà\11ñÿ~ÅÿË·Üÿ\17:w)¼ÇÇÕ\86hû\r/Zýw]\8cßÖÿlÌÝÙ oì=óFKð3Óí5]ï\atû*Cu\fÍ\91|©uùªBÿ\97Í\9a\89X{\92Û\0O\9do«Ôf\8bU\96«¨ÏL1·á¡\1eþ\89\1e\ 3V§Ñj_YnxN°\9eô6\87 ·Þõì\92Ú\8e\ 5rÛÚoå\82í+ëûÏí@R\9b1®\9a.¤å\ 5ÍëfÛGæï1öϨòã\7fÜ@üO\1d\11ÿ\1fPü¿b\97ë\7fQGûÌ\81u¾3¢9~nÿ×ú½y\1aØÿÕ®\ 1\1c\88Ö \ fÕ\7f_\9e3\92\fä\12\ 6ê\85.êÌ\9c\10=Û:8¶ðÎmöòûÜù\1eþ\9eÃ\95}`±õ@«#îâ\7f\\17ÿã"ñ?8"þORü¿r\97ü\9fE\1eO;Ïÿ\84Õ\\9d¹_³1\Ïñµ\93ØÚ¡Ë\1d\1cªÑäÿì×®ñ±ën¡µßB7\ 5Û\15bG»4;½\v\9bSJ\8bÂÖt2ë\ 3Z÷Ï6n¤EÓµ«l\ 3\88%\85Ì5êÑcͶÿ«ã¯«½nz¢3+3¡!b³\1dÔú\14zcI±\9a\ f´mü¿jDü\7fPñÿê\rñß\e\88¿Õã ç~µyAnÍîÅ+×~ÙÕjkïï¡s\ 1§\81{|{ÆGÿL`ÿz\»\ 6ÝY\e±ó÷t÷±}Þ\1cì¥[¹\1dù\9bؼ\8bF\7f\1a[µ\ e[Á¯\9b\9fY\8dßæÁo\1d9\9bìkºýº\7f7\a¾ÚÜMñåES\1dÆÎñ°B z'\95\rU\8aÒêÇÙ:`3C\98[GÑÊ\8eë\ 6a«B¹\95\8aS·8Yæ\13.j\ 3m\eÿÓFÄÿ\87\14ÿ\87m¼þûã?7\9f\1f:ÿI?´y;683\98\e\14|.,òÉN\8f¬5¾1Ú\97\18Êã8\8c\9fõ~ÞOpÍÁ\8fÿ\1d\ 6â\7fú\88øÿ°âÿð\1dê?¸\9c\9cày\1e]Î}èYnû\86]ÿîùþ8O\9dtw¾k\7f\8fçËz÷\ 4W\13j¥öS\7fO§mç¯Õ)Ol\1f¿ÍÒØ3ÀÖ\8e\9aûµMèÙ\89Þ¹Õpª\9aa½Ý¢æv÷Ö\ 3Çæ±u'°ÚÞV\11ª®máÆRÊõ^mg§zû6û«\aIe\93\ 1Öå´¯¤\8f\94Ý?ôK=y*ÛìÛÜffóÚÛC\10Þ/°\92Gäâ\7f\87.þw\88Äÿ\11#âÿdÅÿ\91»ôÿôÃ\8bõÿ\96{9\ 3û<\17õ:«\81:¯'D×\eB9`mÿpÿÀ\9aÂt \ f8ÙX\ 3À\eOº~\9d?¯?´7ÁÕ|\8dÕ\13\8dí\vµ²\11é¶ñ?cDü\7fDñ\7fÔÆø\ fÕÿºd\12[\93\99îiW\ 5×k\80o\1aÃ\1fÂ\9aÚ7Êú_\9bâ\7fæ\88øÿ¨âÿè\8dñoÇñáZ~oè÷å\16{@Úûvÿü\9d\97ö×ó»s\1a¦{\9e1 Í'.ò2׿È\ 6Îá\89íɸÑÔ\ 2ôã\7fÇ\81ø?fDü\7fLñÿ\86Qõ\7f.l~/|\8eó³\ 6æm\9fÖ{¦»ý\1a±¾\9cÛ_\11:Ûwä\99Ì\87uý\9f;vñ¿c$þg\8d\88ÿS\14ÿoÞeþ¿\9b'qû9Ös<Ý\9c}(/dÚ\eõçù/ëß\17tõ\15Þx2ô\9cÞÛ=\83Öǧk\9f\1f¿æª??\1c\9c׿\ 1s=b9¢[Çÿì\11ñ\7fªâÿ-[\8eÿV®ãv+kpü§±áÊ\1eßÐ\1a`¨6 ®§E-ßð\9cá\15½û\89\1d·íÖyÖÏ ÛÐÏX?oÍêºÌ¬oa\8by^-V}bêÒÆþÖ\9f¬++\a\98é\92OÒfϨ\8d#+ÛTZèÞ£ÇùÜJ\86ØíÆ\92¸¬^ ¾\9cõ\ 5*û\9bis÷\99\17mßÙ[\83l¿¿u\17ʶ\82Lr\1d®ÿo\1d\11ÿ\1fWü¿m§ý\1fm=¾àþïnl\10:\ 3²=7òô\81ý\1f§\rÌÉ\9e2°\ féäÈ>´\93"uà\8f\ f\9e[1\r\9c1ìú\1f\91>ÈÊ\99\r\81}\ë9ACûC\16}ÿërý\9f3"þ?¡ø?~\97ü¿ÅøéÜ\81ú\8fçl¬\r\1eÞ\a|z\7fO_V&íçã`à½ÔÝý&°¯H½êl\12ÞW´<\8fv\1a=W~}l\12©\ f»¾¿À\8e{¶¿dÓ¿6\1cÎ\8bîü Ë\17²Ï\84M*Ø4\99z\91ÅJ\1d ¶\ ed3ÎÜ6þç\8e\88ÿÓ\14ÿo\1f\11ÿi Æ{{ÎÃYÑý\9cÓ.\86ýÚ\7fí\9e¡P\9d1\97kr»ÕÏDwϸ¤7ÎX¯ï4Pש\99\17Ò%Ø$^W¶R[\1d\9az^\ 3uÿÖï\19½øßi þO\18\11ÿ\9fTü¿ccþϹ\91\18\9f\13Í\v Î\vwgr\85>\eË{üÁ=ñ5£S6\9eý\17Þ\87t\ïkÖuY\ 5ëÂFÎ\8c\89\8c;låGý9ë,Ú*SpoÏÊÙÏ\81µ¥è\1e`\17ÿ;uñ¿S$þç\8d\88ÿO)þOÜòú_¹ÇÛ¬Ì$|Æcj#_/\96¡3\17÷\ 5êu.×\8dÛ1åsý?ÓÕ\98\rå\86Y¿ÌÒêt½æ\95\15\ 1±õ\98f®¿Ð\13Vý6\ 5 µ\12<v=kügS\ 5º
++í\18\13ý§ÔV\9bÙRÄ£®ëÙf\8a\94£U\a¯u«\9877tEX\83û¤Ês\e¬×Í(S¿\9dÙ|Sn\e\86j[ù¬\aÖuCçEæ\96Jl\93Uö=Ü\99 º¹l\1dÿóGÄÿé\8aÿwïÒÿÓ\0§\98Döÿ6õ\18\ e\ eôñ^:0\9føÂèÜÐZÌotóyCgÊ\86jFl\eÿï\19\11ÿg(þß»åþ\9fþXí¸\81³·÷\a×þܸ¯\7f^S\9b+ЯëÝæ Ü\7få{äÕ<~/H\83¦»x\93\85k\97a\9e+d\85¥èÚ\93ßJ±\16Í\ e\11ë§Zâv©q¾nìu×w[¯å\1dÌ\e_]·;4ãÃmã\7fÁ\88øÿ´âÿ\ 3;ä\7fÌ,ßÍ{Î\87Îx\fí\rY\9eñ{pàL¾~mx«(6\rÔ\85oÏ\93½<\9aO\1c:ÿÕí\1dóï#×snqô\8cq¯/à\9f\ 1ì\9f-\99åÍýayþ\9bÅýø\81ø?iDü\7fFñÿÁ\8dñ\ f\9cÿ·Ø«uR´îêÞÀ\18»Í\eé\8f±ÝY¾{»õ¸õó\18ݾÁþ^Ã~m\0\97\7fèæ\85Vî)eâÖ\8dSݵk\9bq³JÐ\8bü»ð\1e?ÿlÇõs\82ýyÅõý\84£ö\9e¹ø\1fßÅÿøHü\7fhDü\9f©øÿð\96ñ\ fÝ\83Ý\98-\94ç\1d:ã}y6d\7fÎÎõ×o\b\81~úúÙ\8d×GN÷¨gѶñ\7fò\88ø?Kñÿ±-Ç\7fë×Qpü§\8eW».0\rö\19\\8e\7f?ïó\95½ùàöÜïþ9QþùÝkýÁCyVË¡\9e\vîÝ\93¶\8dÿ\8f\8f\88ÿÏ*þ?1býg¨\ 6\84\9bW\v÷\r&\ 3k\ 3ý{}[ϧ¿G|y\ 6üÛúëÆéle\8fg3¾ÎíN\9cåî\8c÷µ{y¬ÆÏb¯Ð\rx\ 6ôÖ×ÿÓFÄÿÙ\8aÿ3v\89\7f·.\17\1aÿÙ\9a\8c\8bý£Vç\86\92Ù\86\9c\e·þ\13\9eO¾z\12\9fSº*0nt5\ 3/\ f\8e-üµÁÀù=+çòtë\85³¬ÙÕ¥;¹Ý$²¶D¤¥\8aÎRKíÌ\9b22Vó5\997\eJ3=Ù\vÛüWت¯å\ 16\vÒú§V\89Ä6+¦óèÚÓ¶ñÿé\11ñ\7f\8eâÿ3»äÿ-æ^\8fí\9d\raýåv¯~»Æ¿¾ÿW\9f§I¬Ï¸\92\a´Voÿ0Û«[diÚT\98-l_¨å\16¤¶é§²\1a´\95}\99Ò6\94ê\ 1acâ\99-Ûq"Y3\8dl%\0k½\9bÒ.÷ÒrË»ugû-K2/6<ÿýýßÏ\1c\11ÿçîºÿÛ\9e¥Þ\1a\9f\7f-+hõ4pþ»\7f¾OxÏp\169ÿùøh\9da÷ù\vßK\8e\89®M\8dè7öï áz¾±3¡\17û\90Cùªú\1c\17Í~\ 3\8dyüøßyàú\7fÖ\88ø?Oñ\7fÎ\96õ\1fÂg<·ÏäÐ\19@±úk.\97#\3¶\7fþ\8f«'àö\1a\86æ!\ 6âµ\18O¯\9dÕ>9\8cÎú ®M¹øß¹\8bÿ\9d#ñ\7fî\88ø?_ñ\7fÞ\88ú\8fÁó\9f\17ûÿÎ\8e®É\fÍ\ f»º!ëköÁºÀÝ^\ 37\ fqÛÕ±f×ß8!º\7fmowÿ\88\9d5í\7f¯¼jÊ\9aôöi¸ýZM½\90,Q\87/É\v{êë^³V\87 :ÿ»6\16]yþo\8aÿóGÄÿ\ 5\8aÿ\vvxþ/ûÝgô×ëò*-½üï\95µ\81ÔÕí=y Ö÷\89\eë5\87ö\ 1¹gAèì¸P<m/ÂÞn<º>ß\14\9a/ðæ\80\965%¼=G®Æ\ N¸u\r
+++\0¡!c±8kV\9dCÝ¿,_±ù\96ëã\91mãÿÂ\11ñ\7f¡âÿ\92]úÿÝYÍ¡ýÿí\99¼§õ¯ï*éÎ\8cÍ¢k\7f.\8f§_\e \7fö\87\95gÜ\17¨Aær>¦\81³=ë¦\ 6ýU\93Øgh±Ö»\8cëb\7fI,§£9FNã!·vïj\ 2DÖ\0õühö\1dÙ
++\9a-?&yw®ØÚYÄ+ñÿ¢\81ø¿tDü_¤øÿÜÎûÿÎ\19Èý9cà\9eq zÏp5Cý\98eM¹X½îc\aî\a×Nâ\9fÁ«£ù¤.ÏËõï¢ñZ~Fbõ¿\9b±Ã6׺ׯìíÿû¢.þ_\14\89ÿÏ\8f\88ÿ\8b\15ÿ_Ø\18ÿÐø¿Xä~\85çwN\1f¨ÇuÊÀY,í<àúÞ°à< W§\7f±¯êðÛï\15:/&VCÌ\9f_\9al\eÿ\97\8d\88ÿK\14ÿ_\1eUÿ÷¬hnÀpþÇ\81\81ó\1a²è5\1dz>´{J\8f\eØ£:\89\8e_¦\81ù&«GÙ}¦\=Èø\99\80ý:\91nmxå\19Òí]\bå\7fl¬ÿ»)þ\17\8e\88ÿK\15ÿ_\19\95ÿ}ÚÀ\19_íÚë\13WãØÝ\1f.\9bÄó?Cs¹.W3°ß¬«\e²aÜ\1eÊÓlÆ\87\95MÝ$v"l¥kÑîȶgÛö\8d[Ú\9f¢bÉä\96S\92fµ-\ eØV\0[ô\9dg\99mÝ,lR¹´\94\92ÊþÆÜö\8b«»Z6\89¢©ÍïèvQ§¹m\18\98\f\9c\ 5\16ÍÿÞ\14ÿ_\1d\11ÿ\9fSü\7fm§þ\7f^µ}¬Ë"s|¡ý\1a³n\pqtþÏÕxYÍñn\8eC[Ô\8c\b\8dÿÖó\82ì¤\9dY]\97Id.±\9b\839Üæ\14Óf\8b\92=Z®Cü_>"þ?¯ø¿bËûÿíWs(ºX\9e>\90\93\7f0r\8eß\81\81zRí\9cQhßÐõ½þ{\ 3îñiê9\9c\r¸º' )C0O¬>Ü\?<\9bNÌWâ\7f\97\81ø¿rDü\7fAñ\7fÕÆõß+#×x\9b¡yæÊÚ_Ýå\85>%º\1e·oÏù\93X~¿\9bc]Ë\8f__·³²©º¡*Bó¦O[viÙ\9aê;U6Ó®\1fg¦þ\9b\9d¹3kÎwS\8f¤²e\18Ë1²E[Û\1eX$un'îZÁw\vÙáv?pñ¿K\17ÿ»Dâÿê\11ñ\7f\99âÿ\9a\1dîÿ®\ 6g¨\9f¿ì[\9d\12©ç×ÎÕ\1d»Òÿ¯»ûÉq\ 3yÜÓþ\C6_Ô\e\ f\9fOÝöAÖ×!¼û@ð,ðÐyÌm?Î\92}gîÌïõy;E¹hÎ\96·úpEQ$\91ý\85ѽ\b~ýÒmãÿÚ\11ñÿEÅÿu»ä\7f-ÎyI\ 6öã\9c8P\eº\7f&\9bå\»þ]xÝøâÀ\1ao]\96[öý\ eÑÚ\9e\bM>ßJ=çn\9fϨZTÛÆÿ¢\11ñÿ%Åÿõ;Ôÿ[îÇ:{O¼\9fwp`\ eàÔ\815\85,z¦\9b\9b\aZ9\1f>·¼â~]\10«\1f¼·»g¬ç\92º¹¡P=¹µÏ\8e_»-\94ÓÙ\÷\85>Öú(ÚsÇÍ\ 3®\9fû64îwýÑ\95çÞ¶ñÿí\11ñÿeÅÿwv¹ÿ/úëg\fÌåµ?ãõú\1f.×{}¿®ëgôkC_\16Ìß\98\ 6Æ\18usÆà¥ý1â²^\90_3(\94÷ÑÛ\17|\88ê\91\84æ\ 4WÆ)Cñ÷×ÿß0"þ\17nµþ\1f\98ÿÓË?\93m=ÆÁuùE\1fÿ\98h>Á¾@þï2×üªèØÐ}¦úçM¾+\9a\ 3<\90\a¼>~ô×\90\9bµy¯O\7fÈêÕl{ýÿþ\88øÿ\8aâÿÆ\8d×ÿ1\ 3g|L£\9f\r7Ǿ2odÃÛfÝ5\90¯\95\17\93Ð\19pmý¿+\ 6r\ 6.\8fÎ \85òÿ\ 3óÆËýDmÝÀæ¾?·\19¹¼)ÒXûõ\0n¨q£\1fÿ\13\ 6âÿ\a#âÿ«\8aÿ\1fn\1cÿ\9d\1fÌñqûB\86Î\85í\8fýÏ\8eî\19
++æ\ 4,Îv?0p\ 6M6PûëÄ\81g×þè¼æ¦¹\83õ¹ºÐYB^\8d°æ<\97\81óàý¹æE\1e\90\8bÿ ]üO\88Äÿ\8fFÄÿ×\14ÿ7myý\87j¼N÷<¹Í#\\89g\91ííÆøý¼\8aó&¡~ÚZ_}¥VKby3¥Ý9guÙÔà´ô ;±ÍæT\13u\f+u\1f2Ëß±Õ\9cÔ\96\184\16W8\9aû®\1d½>K\8aZC·ÒâÐ\1cý2·¥Yݪ3;hY\97\9dº\9dX!ø*±Û\8d=Vl\14fÕ=u5ë;ê\eh¬y\83Ö\82Ý6þo\1e\11ÿ\97+þ\17\8f\9aÿ?+0þË2¿þçêÚP\9d\ 6ë\ 2®\r\86ÆxÓÀyÎ\1aJ\95n\f\1aÎ\19;~ ?åØþúµõÐ#ù"kg\aèÓ8\8fõãÖóÌ\86Î\f\9aY-õ¡ùÿMñÿÓ\11ñÿuÅÿÏv9ÿIW\9d¿Æ\17\9e\e>5Z\ 3ÀãõÏ\ 6í¯ãµûC§Á3C]\7f1¼7ýÚ\81~A¿Î\90Û»2é÷\r\9aýØ\81ó=C{C£õ\9cbó¼Í^\ 2K\1e(,\vÆ>\ e³¦S;\14\7f¿ÿÿç#âÿ\e[ôÿCç\7f¶×Ý9\ 3ç\ 2\9c\19×îjüöÇmÃó\85C×ðê|@YäÞó}(Æ;®\1d´¹\1desÊ\8f\95\8aËóxNWhþÏ\8d?ý¹\85\95Úÿ~ÿßâ~×\81ëÿ\92\11ñ\7f\85âÿÖ\9dó?ú¹_v\1f÷ë8\85jêìíîãý9\99\93£uæ§]\9cû{\82ö\ fÔ\1fëçöÍk\97\7fxõ$¶nåÆ\85kk46fk¦òÝ=!¶WÈÕo\8fí\ 1\8eÕ\10j&$gm\ e¤\1fÿ»vñ¿k$þo\e\11ÿW*þoß¡þ\8fMc¶×ßy\ 39\97í|mÿܰ¡5Þ\vûkCÝÙ\8fCýñµ3\1f×Çï7\9a3¿\16ç\bfËó\1f6Åÿ/GÄÿU\8aÿ_m\1cÿ\9d\10\99ã9n`LÖÏÅ\9dg®fx`þ§;\17toh>¡¹×ôç\12\96ufúµ¡\9a\9aÿ^~ÂP?.µ\84N»\99dVÏSw\81:Z\97eâ\9d\a:ñÆu\87d\ ehÛø_:"þ¯Vüÿv\87õ\7fWã78f_Ô\\vÕkJS?\axe~P?\96ÚË\r\ f\9f\e{ü@\9fãÈ\81}BW÷ï+Ý^ôÈ=¥·\1f<²Ïgý¹í>\1f\16ú´É/jò\ e«¡\1câ`â¡øûý¿w\8c\88ÿk¶\9aÿ='\9a«?\rÌç´ç<ö×~2Ýø&_Àº}\9e\96\ 4Pªó0kÎ\17ñïCkû\ 6¶½þÿnDü_«øÿýÎç\7f·s9~\1d§Z÷Ì}{Î\98Är\ 2¼\9fEt\r<³}àe\9dÔ6\9dc¥¼fV-Ù6UZ2®®&=T-ÉÒvTÎm»}Ö<ÆÛj\fú`Z¾G³\1f¿ÐýÕ:äVñÉ*vZ\atnµ\9dõ\0HmBV?ë*·
++aÍíyfÛ;ì&\9eY5/\9b\8e±mývK¯*Ë\aÈí+é2µ
++\816©\94'IzC\9cÿ½éúÿ\87\11ñÿÍ]×\7fÖêü\85s|\ fFsC¿@¯ÿXîg0/xÛø¿sDü\7fkÇñ\7f»\8f3Pû·Hçí³ÿ\9chßp\1aØ\ebë¿¡\9aPËñÚ\81èy!7\82¸»s@ü1do\9d¹ëK6\ 5\83®Ëøï²\11ñ\7f\9dâÿ/£Îÿ<³ß7Ô¸©½þÛ\\9eç\ 5ÆØÁ\\9e®¦ÄÞîL\89õ=ynܸ:¦È²*<?³¾_ÏÎ\81\9aÙ¸Ìzå3;\0Ôfãk\9b¾³\15`õ¸,M0³9\1a«Ü\92èQ¦§VÒ\f#gº§éN^Ö\96\16nÕ\802uå3«Öa\19\86©\9d\0\9c[MA+\1eU·Ù\83\95\9d
++f\7f»\19lZýØ´²M\fv\ 2i±ÈCN
++H3õgÝ\ 2\9b\1dÍ{ç\7fnºþÿuDü/Úêþ\7fvt/ß4°ÿÃæ\ 6'¸Ns\89¡=f~üï6pýÿÛ\88ø¿^ñ\7f×Nù\9fU\91xë¼ëÏ\86i`_H{.Ä\81\81{|\12Í3suÜûkÐm¾x¨þÈ\86\9fû¡¨ßáê7¬ç/û÷ýÁõ\81Ä\8a\8bUÉJþçݺøß-\12ÿÿ\1c\11ÿßVü/ß©þS\95´÷ês\a÷\86\86Îqpó?á¼ñkûãô<íê ô÷í.ç\13Úy\9eÐ\99\92Cã±Èù\90+cö¹=Ðl^¯(³C\98{¾¾î½uüÿkDü\7fGñÿï\8dños«\9e¹\12/·Ç£\9f³×\9eñ×\9eýÓ¯\19{Á$Ö_X\8fMäÙx¨k°Uµî\a©>«ö°ÎfIe³¾³r®N{iu}s»²k«éh÷
++\9b¨µÊï\95ÅÍÒ}s\9b\85¶\95\ 1]áv ·\95\ 3Ëí<©yóy´"ñõ¬\99ë·\9f\93¥\10ÔM6\81M\1a&6ÿ£\81ð̶\ 4¬Äÿî\ 3ñÿ\9f\11ñ\7f\83â\7fÅ\ eõ_\96ëõ\81ý\9fúiûk@ûW¯ó¹¿6\1cîS\1e\188W6ð\8cèî\ fn\9eº_Cø¸\81|Ãc÷ÄÖ\88·xn»\Àõ<Òõ{\86\9f/X×ö\17m\997««¡ü\0\17ÿ»wñ¿{$þï\1e\11ÿßUü¯Ü©þC\9b\93\11Ú\ 3¾|\9e÷k@éßug\83µ9ºO\ fÌ)»óAWæ\14²,x>¨Õ\1aw÷\8b@\rmË\ fRg\÷çyÛ_içZ«¦2\93ÝögÖÕ²ÍLEÑî¿UO¬®¬<ke\8f¤Ä*GÎ\9beúy³\9f'Ïm&gn{>-ç»h&\85m\9eÇf\94òBß½²ãcm»\92Íè×\99í\f² \91")/ o¥{@»§ØV\9e\12;cÖ¶%\ 4Ö\18·\8dÿ{FÄÿ÷\14ÿ÷îrþ·mqõúÿý\î~î\8f\1em\8bºðá5ãS£ëõn\ fJøì\87dãZB(o4t6\90å¢\ 5ë\ 5uµ)#÷\ 2ÿ\1c'\7fî߯÷\1c\ã\rÌ\ 3ØC,µ´´mãÿ¾\11ñÿ}Åÿý»Ô\7fZÔx:/º\8fßåPÏ\e»þ_hïÇ´[§ñÇ\rU]$.¿{½.\8cËý\rí1
++æþvg\93®ÝÇý½;®~\8bmÌKíØh«õmçF×Ë~ú!\9bóõj\ 5¬\ÿ'\ eÄÿC#âÿFÅÿªQç\7f\9c;P\eðôH\8e×iÁÚZ{»{C?'<\vÖ\12Ü\eØ\vÔÖ\89\9fFjÅ\1c9p\8eÅ$x/XË\ 3\8bÕy åyÄÎú\19Ê\11sý\89\95ó?Nìâ\7fb$þ\1f\1e\11ÿ?Pü?2¢ÿ\17?ãýÔþ³_ÏBÿ¬\9eÐXíºÖñX\9e'}mt>1\98ë×Õ/Þ¢\8f7x~s¨þGdL\99ª'`\vþIa\ 5\ 3'«µB\86ú\7f\9bâÿÑ\11ñÿCÅÿê\1d®ÿeÿù¸\81:¿Ó\81}|m-\87þ³á\85½µCWÇo}|\18©µw(ïÍë{ú\ eÕ\9eÒ\95ú\9f\9bâÿ\89\11ñÿ#Åÿ\9a-÷ÿ\86Ïø\1dʽnçæÎZéÿçݾÑ~\rPWSÎÕù\fí\er5@Vú\8fu\9bWäúbsû»\8a\wo\8eíãÑ\95i[ö3ÛÙ¥\81Ge{÷ms\8eÕ\ 4-\15\12\e§Yüu\8dÛ@ÞªAÙ\9eÝÄ\96ª\9b\f]Ë×Íì·,\95£Ô#@_Þ*OyùߣÎ%Þ6þ\9f\1c\11ÿ7)þ\9fÚ¸þßÏÿÑ;N\82ç4&ú\1c{ýõ\95\1a\7f\85«ï\18Ú3>ër\86\8eï¯'kð4óî5«ã\83y]Å\9e\r\8bú\9f×ôú\8e®þç¦|\8d-êzÖö\80/¬êÃlñ\9c׿K\9b¹Ã¤Î\vK\12·Ú\90V,¨ûwväw³\ 2¥ab3_PÛ{\9d7\aM[ª¡m\rÛ:þ\9f\1e\11ÿ?Vü¯Ý1ÿ#\{y¶²÷·\7f^Ë\95\93ø\9c@{¿Xyöw}¬ðý¢=\17,X3¸{>Ïùwý«öùQ«\17gÇ÷Y\81\8f|\12\1d\93ÇÎ\84q{¶\ fuþÇ\17+î®\85â¿ø\ fßÁ\9f(þ{önºÿ\9f8PãýøÈ>¿ã\ 6æ\ 5'Ñ5ãi \1f§\1fd9\rôáÚù\84«¢×¶[\13\bõ[Ýõ\1dÛ\8fß]÷Ëܬð\´¿oïz_OÚ6þG\8c\88ÿ\9b\15ÿ\9bì½îý?ëÅ\16^\9eGh\9f\87˹\f×\7fëïÿ]Ö\7fëïå^\9e+wEd\1eàÒÞýÆíQZ¿§\87öÚxãþÏW]¸\95:\13ú\98l\1dÿ#GÄÿbÅ\7fïÆø_\10=Ë7Tÿ{®Û\\12Ë\rYÌñ\1e\8c\9c)Tõ×\f,¿b²<\1f`}Þ`_à\8wÆ[hþo\99\87~Â@ýÒ~n»-Ù\14kó~e\96Ôëu;½¦[as¬pQVU\19¨5\10Ìû]¯ÿ½)þÓ\11ñÿSÅ\7f߯ø\9f\13='7x\8e÷b\ fx{\8d\9fïýYVe\95»/¯\«yÕìñØ\e83 \9d\ 3º¤×ïok?½©\7fÿïj\85/îñm]îõÚMmí\9eÊæ÷\8bĦi¬ï]v5[u)\96suóæV\11,\9d\15\96Ï_©\8b®a\9cÆù6»\9bTå¬LôqNÔ{°Ó£ìXàZ7\81ºj\1eøM=¯Úº\8b\89\15\8aµâ¶\10¨ÛHÙÜ<íSaÿ¬Z\9c\e¿~¾°\1fÿ/\19\88ÿMGÄÿÏ\14ÿ\9bm\8cÿU\ 3k5\97÷âÒÖå¾´?\86ëjüº¼°Ð\98q\1aÈ\v³|ò}Ý\9aPh\8e\7f ÿîæáý=¹¡z¼½\1aÞ\87Ã\1a\91\8bÿ\97tñÿ\92Hþ×1#âÿç;æÿϬr\13¯¶_¾^¯ù0Ϲ:,ëDë\93ei\82öíf\99·ÿ'\14\7fÿú¿å\88ø_¢øïßåù¿\987??òL>sàüç\ 3\ 3cõ\93úû<\93f8´Xßï×\869>:/0\r\9c5Úî\e\9fFû-\eæ\83×÷\80ûucì4ñ\99å\80ØþÞªYÿ\1f\9c«\8c\9d\a²òü·¸ßc þ·\1a\11ÿ¿Püo½eÿ?<_sæ@m\803öÄÇì§\ f|¦^Öæ¦øÏ\94$¼w¨¹n2+ÞQW\85mßÔåf3¬\1ar¥Má½B¿g{ðtcµ XuÃ*Û\80_Ù\90Þºîvì¯=xuñÙÃ9±\19]\8b°®\7fuÍô\1c°\e\84\8dí-¬M2\90.|\eÃ5\87´êÙ¯nE\95Û =±-%ÍÁ\92vj¤¢o˸öß[Û\9b°\r\13v¨x^¦þ¸26\16±ù#\17ÿ{tñ¿G$þ·\19\11ÿ·(þÇn\8cÿyÑ}ÙnÝ%<Æ»b\12\9b\ 3t5ÚÖ÷\87M»þÜúy"î\\80Pî\87?¶\vå\80¬\9d«\11Û\83\15\9d«»\81Ç\81\8býãÛÆÿ¸\11ñ\7f«â\7f\87½\9bæÿÎ\ fÎñL\ 3ç;µg¿\9c>P/ò\94\81Z\ eÕÀ9£'\fìí<~à\¨c\ 6r\97¯í}ÖÒöèâ\95Ï\94Ò¨Ï_\96nÝÉËÑ]Ô\16\rï\r\8d\9eó³^ßxí3ÚÌ)¹ø\9f¤¸»\16\8aÿ\1dGÄÿm\8aÿ\9dv\19ÿ-ÖcÚëøÅ+ýü²Y\93Ý\eÈãjë<ôó¸\96{¹/\8c®\vmx.\87ök\aë/ä\85ÕqÎ\9bÎ\97\ 2Rk\80\974\17a\9eêR·>\9a=\95kËܵkU\8flÛ¹ou§lŦTÿO\9f\88&ù׿m¬[®áa¡\7f\ÚLpSH ²£ä-¯´¶\rþmU8+#UÚ[É5\0HæV| °õÁ¤
++¯Sm\eÿãGÄÿí\8aÿ]vèÿéy;kë$\9d\17¬ãëÎ\85\¯å\19Ê \Î%\ 4ú\ 4\8b9Á\ 3ýëxq&D»¦\10^\83\ eÔ\r\fäw\1eê\1aÁ\81s'zãýÅ\9cD\97/¶müO\18\11ÿ¿TüïºCü\97ç\7f\9d\1d9ç3~.¤»g\84k\ 3½±·\ 6T×eµ¯Û\13\16ªó2pO°jl6\1d£\88Yåå^=ßÃåüÇ`®Ð¶ñ¿Û\88øÿ\95â\7f÷-\9fÿýsÔú¹_Ö\ans+ûu\81Û8\9e²'6÷çjB\84Ï\13;!\9a\17\14ªýÜÖ§:r \9eä$:g\1cù,\rÕn\få\ 1-Î\89\8dÌ1\86>\9bzTU\8búP~üï9\10ÿ\13GÄÿRÅÿ\1e»\ÿ\8b\1a¯ç\ fÔÿ9oOx.ïÌ\81z\82§FsÆÝü\7f\7fßð\89Ñ5\ 3·F\1dÎQ\98DëZ¬÷\ 1\ 3g:®¯á¯Ïõ¯çõ\86Ö\96CuD{ãÿ{vñ¿gdþï¤\11ñÿë\8dó\7fø|\19\8a¿\7fýßsDüÿFñ¿×Æû\7f`þÏ»ÿ\87×~Ï\19È\19\8f×\86s×ÿÊÚ\80îåþØ1\94\97ïî\ 1á:DÇE÷¨\84êJÚúEl®im\9d`e?\7fì|Ðno\80ýáPý·õ¾ÉÖñ¿÷\88øÿâ\7fòÆûÿæú\9fá36\93\81\98\9c¸±Ö\9f\1f\93¼°çùd 7¸_\e~9>\bä\13Dò\7f#çÄ\ 5ó|\15V+î\9b¹ù#¯î_ô³\10;Kt¨þç¦øßoDüß¡ø'»\8cÿ»çõ4p-Û<^è\8cßå\9eÁãû\9f'\r\9aÓX\8eߢ>øþè9Þ.?è¶«÷¨Ôå ìxf\8czù¶
++¨\vv\9eÚ\80\7fQ«ÃË\ fjÖ\8fÔi\1eþM\9eh5\9c[\14\99\7f\8cÖÿÝ\14ÿÙ\88øÿ\9dâ?ßiüïjl\9e»±öú\83WÇ\80Ý\1e\80ý\ 3ó\0ýýA©Ýy½\9c¢ð\1e\80þ\1e!\9b|K¯ÛÚ >\8aÍþ\9bXÎ\7flìnuÉK«GRάB\88î\1eµ\95§R¿1i\vþÏÛ
++Uó²Iðµs£
++[Yз±ßïÕ\8cß:þé\88øÿ½â\9fm|þ÷ïÿ¶'+x¾\8fnvÅ$r¾Ïb\ fo5\90wsÂÀ³f׳\9eûç͸3\0Bñ_«ã¿Íùϱu\9cõ¼ ymO|}ÎËÒ\12DÒYæÆ\17\81½f~üï5\10ÿrDüÿAñ¯6Æ¿\9d_[¯ñ\1fÊ×Õ\7fy:÷ò8üë[äÊåq\84ûwíÜo(_lÓ5\eÉ£r}.+³ NWQë^Q»ûè´\1dº,¯\8an\rè0:kÀÅÿ^]üï\15\89\7f="þïTü¿tcü\ 3Ïÿf?öé{Â1>8p&Ü©\ 3{ÉÛù\9aû¯|ÎòjîõïÂuæúgÆ,×§\ 3ó¿Ý:shm¿ËÛ\ fÕcKÓ®'TSé7QLó\×\7fae\80\82¡Mû\15M\15b\9b³²+X\91̬ÈCêÏ/·çÂ\ 5?\8fë{Õ·\8dÿ\97\8d\88ÿ?*þ§ì°þ¿¬óvæ@.÷Û\82÷\r7ÇÛÏý|å$¾nøòÁ~\9c믫ç[\1eng\89Dë\7fY\r¸mãÿÀ\11ñÿ'ÅÿÀÆøg\ 3ý¸þyìúÑVí3à¸à\1cð´»Îûg<\; ¯%õsÿÛ\1c£ö¹\1e\1eC¾k\12Êû =;Öòyüq\9c¿\1e\13:ë!4\87Û\1câr}ô\a·\8dÿ\83FÄÿ\9f\15ÿ\aï\94ÿ\93e±ýßË3TÎ\89\9cÿrâÀ}þ\84\81µÆ~ÿ¯Ò\15æÆ\v«û\90æÝ:Ä4¸¯{\1a83ÖJ\80w\9f\89Xmÿvn¾HíÞRÎì\88¯tQ÷áúx>¸3e\9a3aüøß{ þ_>"þ\97)þ§î2þëÆc¡ü¿¶\86ÆÙ\81½¿eæ?3B¹õî\9a\ e\9f5wù$>n\18>çmÃ8ßï§ß ç\82wû\aÖÏ/X\99ÿ»w\17ÿ{Gâÿ\15#âÿ/\8aÿÁ-û\7fë÷ëÐ<î2¿ë`dÎ8pö{\97¯\1f<ûi\91ÇS\rÔ\93;!:\9f4\rìãh×.\8f\1dØ·²?ºße²ºFãÎq\89Í\ 1-×\aÛ=\bCyf½ç˶ñÿÊ\11ñÿWÅÿ«vZÿ\9fwu\19Ï\8f¬ñ\9d7p\1foÇ\86ëç\82¸\1c¿þ\â\85\93Ø3f²\98\8f\9b\ fæöÝÈÎÿØxýûë\7f_="þÿ¶cýç¶ÿuö@}¯3\ 6æ\ 5\ 39\0Ýyín\1e'\k ?\8f\93ª\9f\9dM®?ÍØ¯n"\97º3¾Æìá\1f8KÞ\9fë\v\ro}ý\9f6"þïRüO\1fµÿë´\81\þ\83ÑÚzÓnmh½¦À4°_¯Íå8)P3*ÍR¯_¸\9e\e\1cì\17&eí×&¹.5a\16}´´H#¹ÆË³Á\ 2ûù\17ûÎÃ{\ 1¢û¿6]ÿ\ f\1f\11ÿ\7fßjÿÏyÑs\By~V2#¸þÛÕÞÚ\17¨ÿ¾\«;\18½oÜØ]ó¡\9cÀ\95Ú³~üO\1e¸þ\1f1"þÿ¡ø?r\97ù\9fE\9fí¬þ\9alW³ÁÕóê×çê×óÒ\98¸\ eÍ%XÉ$¿.Tø\9c¿ÀÙ\90Ù|¥Ö@¸6` fT¶¬%ã\8f\ fº}\84vw¶\1a½.÷;t\ 6`³á«ë\8bÌì`\11ûKÝZB0\1f9P\87¢é/ºø\9fÜÅÿäHüÏ\18\11ÿÿTü\1fµCþ\87\9d¡\15Zû[Öd<³\17\93å\19o§\ eì\ 18e \9eP5°g¨_S¦\vpÒÀÜåñ½÷¿¬\1dxÜ\9eMãÉ@í@wv\83_K`Q\v(°\ f`ý\9cº\95z\91ÛÆÿÌ\11ñ¿\ñ\7fô\ eù\1f¶ÛÁÏÙ\ e\9d£èâ\15:ÿ%\14/\9bësc¹ðçæøhÝÈà>\8fÅ3åÈ\81õ\88ÉàXoÒ\9f»\ fær¯\9f7ØÍ\19FÏ{Y?[r\96äíÞbÛh\94\15ÉÜ«ÿbq¿Ï@ü\1f3"þÿ¥ø\7fÃ\ eù¿YSÿ'0ÇÓ\9d©æòBú÷øS\a®ï\93\aú\92'\ eôåN\bô3ç3¿\9f\17\9e£¸fp\8e847\1c\19»¯ô\v#ý»Å} ð\è\9d5W'ùÌÅÿ>]üï\13\89ÿY#âÿß\8aÿ7ï´ÿÏ\8dåÎ\198\ 3ò¬hmØáÚà\97\ fÌ\ 1\ 6ê
++,ö"½mpÏÝ\8f\ 3õànÈ9¿õú߮ޫ;ÿgÑG\1c\8a¿ßÿ?{Düÿg×óÿÚc27Ôøy\7f\7fÞ¦Ëç?\8cûè.oÿ\ 6ß÷\994sMºô»=\ 2Û^ÿß2"þW(þߺñú?7\9aC\1fZã±z]Ã\9f\8bË{y#VçÛ¯Ù\15ZkrëÉ+÷ëª.\=\91Ðþ\84õgx^Tv\12àÌÕv³u\96æ÷5f±\r\9cY³>÷yÙ÷ÛÛS°mü¿mDüÿWñ?gDþ§{.\87çëúy¼sÝBýz\8d·Z½§tµÞ¯\8dÆÓ}®Bã¹i ¦X»\16ÕÏ\ fÑ\80n\1e¨\ f8/²öìµµÚ1VʰÉÜ*Í\8bÅymvOW\9c¯§yÂhþ§Åý¾\ 3ñ\7fü\88øÿ\9fâ\7fîÆø·}¨óWúÝI\97_sM4·Îåy\1cðçòÔéÙ·çIÑ9Þ^<Fνê\17ó².*[\9a\9d[E&=¶\93ʶë\156Þ®KÛ¬<·õyýK=Ûë̲7ìp\99®.ój. ¾\8b-îÚ92¹Í>ª×¦«=±\13~²Ê\9eùú\9aEf©\1e\95m Ïk»\94ä\85Õ\8dµ½\82¹z\89\99\15\95È\9aúßvøO>ojÈ6ËÇ\1aúÙfdu\94óåüÏ}»øß7\12ÿo\1f\11ÿw+þOØaþgèü÷å<ßÙ\ 3ù\9agöó\ 6ê´ûÜôÏ\88È\15¡áó¤\87j\a´Ï\9bÐyS\8bõ£Cw¦\93\7f\96\94¾ºú\89eR.r\86\93d=\97´wþû¦ø\7fÇ\88ø_©ø\9f·1þm\9fûU+ë<e\97_\11ès7ë«oè=ã\97{5úç8.óÉ/\f¬ñ\94i¾iÍ&·\9fkYùcòÀ\9e\8df¾¦®5\90·\e·\15±Ê*Ý 2»Ã4\ 5\\9bkÑþ0³e\e«î\92åv`¤\9eÑV\ 1¦ùzêÕÛÂ\9díøo2}3\r\bõ\97\93ÊJ\83é\11Q'\96 \[E\83Ê\12\83³¦ºLSyÎ\8a\83ê?4S·¡ªíçd ¨YS\ 6N\ 3\90¢È-\eL_;÷÷ÿo\8aÿ\13GÄÿ=\8aÿù»ìÿªêðù¯]Þ\8d\9b?{øÊó=ëæcÚþÚ#VþÌÍã¼a\12\9fË\r\9cÿÙí\r åt¬ÍÕæYa\87wÙÓµYÍm
++¯Ú°-µ\8f\80ÕýÒ¨°ª\9bÛñL1²S½j«ìW4å|RÝÕ¬d\9b\9e\f\89Õþq9Äö¥lBÈN²¶Bn\1a\Z}\b+\17f\a¹ÍÛÊ\80z\ 6é\vÚ
++\97\9e\ 1\89MóÍíÜëÂ\1e(3{UÍ+wnD\97_´\12ÿû\rÄÿ»GÄÿ½\8aÿ÷\8cÚÿ;´\ 6Ü\9f\etµÚ\87r\84§\81\1ca«õëÖ\rúy£'\ f\9cAslä\1cÊýÑ3·\18#\ e\9dááÆóë¹§+s\88k5ê\a×\7fï×Åÿ~\91ø\7fï\88ø¿Oñ¿`\97þÿ¢&ûÙÑܰ½\81\1c\0\9bøvçxõÏ\8d\7fn\7f\ØÕ\19\ûù÷jåÝ\bÏ\8d_?\9f¸WG~ÛøÿÀ\88ø¿_ñ\7fÒÆø·ý§\17\8c\9f\\9d\87\v#}ü\97Nâó¼/\9cÄæÜ÷uçFÆê|Fjz\8eíçÏ\9a.^j\a7W\85þ/\9b5\ 3;Ëô±\89ÁfÿO\9eÛö\1e{\96ëã£\ fÔÜ\8axÎ\12Åß®[;\ fµ¶'\95-\ 4¤3\e7è3WÛÆ\9eÒf\8d\9b\8cP{ÄëC\92ÙWNõé³¢uv÷¯ì\fÉÂ>#VùSÃÀ,¹\ eñÿÁ\11ñÿ\80âÿC»<ÿ\9b5þ\136Ö\85ï\9f\19\7fä@Mè«&á<Ã\8bz\9f±Y]\94yüþ¬þ{³\14§°Zg}fc³Ys²ª.RuÔ\13}G\vàÌ
++úZrneó6MI¿¼\88äz\ fÕj>\14g o\1dÿ\1f\1e\11ÿ\ f*þOÞrÿ_\7fom{\16ËëWs2\8bvý´\9d½\ fåxo\9c\7f\1d\97G=·JË6õ^Ï-Rº-dµ¥\89é¥%÷Yxì¡¡N\9eÆa©%û\15\96µ×\1cÌ`)ʵõèÕ\87Ѹ?iJ\7fYiDz¹\8fÔvù[â~e;9êZ_¯J\9b³Þó¬©þc5|m"Ñ\9eù¥\15\99Ôõ®\7f\96Ú\ 1²\99åù\97V\r ÒÏȾ§\1d\ fÛý7\87ö\19\ fÅß\9fÿÿ±\11ñÿÐVù\7fýõ_;Ë#´Ægû¿¦\813¾-O\7fò\ 5jm¯@hïWð\8c\11?þÉÀõÿ\94\11ñ¿Jñ\7fê\ eë\7fv¾É¼éã\9d\1d9ÿ»ß÷_Î\v\1e\88\9cÓ{r4\97(\94ÿ³ì\83N\ 6jC¶s¿·[ý^Á5¨fN×
++6ØF\10Ý\1fÒy»È5Pß1xöO \9fgý|àõyEÿÜïÊ
++ÑZ9\14\17ÿ¤\8b\7f\12\89ÿ\8f\8f\88ÿ\87\15ÿ\9fØxÿ?/²ï¦\8d×\81Õ1~\92xë\ 2áZ^û\aêI\ 6ê8,Î\8dº¼\17Ëeí°þþ\8fmÆs\9bÎ\ 1\88¬÷\87Ö\90ݺ¡\1d\ 2Þ\94\1e\9eë2.ÔO¶\9da¹Õ\7fKgÍÉà\1a+\14ÖS´\94çÂ\12\8dõ\ 4±Úñê1&þ½bÛø?mDü?¢ø?}Cü÷\ 6âoã87\87\e\1a¯¹ó\9a\9e±\12ãùJþÿzÍ\9dPþ\7fÛÏ\bìýÌô³ïÇ1V¯£W·ÇêïÛ.Фéáé_éú¶\8aýzÖ\97v<¯u\1dÔÙ+K\eÌÌlHa\97§eù7\ 5@m#\81¥o\94Íq Ö§¯â伩\1e©Ï\8fz\ 2\95Í\räºåÙ$Aeµ@ÔI)ì\9cwu\b+K-\88\8cc\17ã¡øûÏÿg\8c\88ÿG·Zÿ\1f:ÿµ\9fÿ¹\Ë=}ã\1e\80pNA50ßtrôYt\98<ë\17÷ïÅ<äÚºþz\1ep`íyåü×M×ÿO\8f\88ÿÕ\8aÿÏì°ÿ«åxÚ@\8evíï\ 5+k¿uÚ~fúõ\7f\97gþl\12[\17\8aü¼Ý\1aJð|U»åhh0k&~\92y\91i\ba\97¦\15ýÕh-)ÚR\9c3\eï'V\ 5Ôê\97ÙS]C±R·û\\ 32uËʤٻ[TV\ 3Ðúÿ¶\1c0Km¤Pg\99\9dk\92ÙÔA¥Wµåq¥vêkm'{ØÎ¤ÌÊü[^@:Tó½·\97Ø\8fÿl þÏ\1c\11ÿ\8f)þÏÚ\18ÿþùoùÌÎÞ¹b\12_ûï×w·ÿâÊûl\84ë\86ô?\em\89\v\83kû\13\7f½g~B´Æ\87\r*\8bT×ZÙ¬"'×ÏZ³ÝÙK;O¤\99]ʬb¬\9d:\1e\9f®kË\10±aç¬Íðµ¹\ 4=9êÔf\19-·$ÉË6\ 3\99\85¬\9a\ eª\8bÿ¬\8bÿ,rÿ\7fÎ\88ø\7fü:\8cÿÖÏÓ\ e\9dý\{{<õ¿\92\81<Ý\13\aÖw¯Øi>á:å}\8d\9bwð×yûõãµÀÜþÑà¹âCñ÷¯ÿç\8e\88ÿ'\14ÿçí²þ³8C-°\ 68+»³¼Ï\19¨åxöÀ\99r\81u£E}¸jàìðÀYÄvôG3N=12N=a NÕñ\ek\ 4ûgº{c8=/\8a¡³À\9bé>ûlûç\11»ú\90E\99×þüߦø?\7fDü¯Qü_°Ëø\7f±ÿë\8cà½ÁÝ\ 3Bç\7fM\ 3gü´õÄÚ\\82oZË%i?\13\17Gó\ 2·¸¶]\9e\9f~¶VßÖf
++}\10õTOÒ&=W·z«Ô2·ÂÞ\96\9dm)ÚsÝÄmYV=ÖÒzò\96¥cC\v;\11N\17´nÓVn&Ñ\10Á*ÁÇëxEÎ\1c\v^ó¡ý_\9bâÿÂ\11ñÿ¤âÿ\92QõßÏ\8aÌ\r\9f6p\ 6H{ÆËsWúðYÑ®\eôÏyÑϺÚ4\ 6ì®!;oÍÊ\ 2Y¾Îâ,7ݺmÈVÛä\8eÆáó"·ó\1a\9aõ\1d\røK=\99\8aÜ6{Ûcyfg7Ììì>KÒÔ\17)ÊÚr²l)ÁR´4\86´Ó¬ô»\9dØ¡¸ë¡nÅ>Õc«jõ,,ÃËÎ\ 6·Þ\83~»9á-·É¾Ú\92¾ëP\8d¢È\98uåú\9f\ fÄÿ¥#âÿ)ÅÿçF\9dÿ\11Øÿ»¨Çx``\7fX5°§0\89\9e+\1d¬\eÛå\94¹5§þ\1e°c\ 6æ"¯ ®9¹ùÀÐ:ÐzN`·×k¥\1e`w6´«ûàïë\8aÕ\95\8c\9eÿ1ïâ?\8fÄÿçGÄÿÓ\8aÿ/ìRÿ·\9bw\8b\ 1¸ø\86ëµeÑ\9cÁi \97C?©z\1aØÿÓ\9eývÂÀ9Óû\ 3}ÍYW·æ\9aþ¼pWÿÇ{nÄê\0Yj·-äæ~¾Yw\ 6\9ce\ f\16n>*PG.8ÿ\1f\9a\7fÜ6þ/\e\11ÿk\15ÿ_Þ%ÿ¿»\97\87òÿÛuÞÓ÷ÄÆx.¿;´n¼/PëË~êm¿á\8aàØÐÍý\86ú}Ón?Ází
++ï\99±è«\ 5Æ\8f\87jm74.íÕ¯óã\9f\ eÄÿÂ\11ñÿ\8câÿ+»Ä_C¡|\12©ó¾èÇ\9f1P\ 3êô@ÞPUfÞÜàJ\9c묻nOê}®,\eÓÝ\aÂùÄÓH\89k\82óÐ~¿q}Þ8R×ÁÍAYÿ@-±½aËXÛ\16°"³{Há×\10\ eÔ|ÊõWtg°<ã4uñO»ø§\91øÿê\88ø\7fVñÿµ\8dñ¯¢{<ö\ 6îåv^sp/¿åáxãªð¾\90#£s\8aÓ.\ fd}\1e*Ôß¿¾çb\86Îj\ß\aRçEº8ßqÄ\9cÒ¶ñ\7fù\88ø\7fNñ\7fÅ\96×\7fxOö\19\ 3k¶\a£ç.\ 4ëC/Î\87È\ 6Æÿ'\ eÌ\1f\9d00Oq\ ß´êê\94\1e\19ìì¯á\ak¶ÖU\1e;3 4Æ÷Î\8b\bÖ}ð÷\91ûñÏ\ 6âÿÊ\11ñ\9f<äØ\8f¿j\87ø/ûÏg\ 6×ò§\81\1a\ fmíÏð\19>®^ç×û1¨mÞ÷ÒIÿ³7\9b\85Î\10o\8eU\8fÏ\ 1h\88\96\ 5ÏsÔ(Ïn\146)`k\ 4¶²5kòõíÜX[6È\9aÚ¯vô\93e\ 1ê>Ð\ÉVãµÐ`1³õ\9e¹%"Ïll\986ÅO\ 3çÿ\84j\85\ eæ\ 5¸øg]ü³Èüï«GÄ\7fÏC¶Yÿ\eêÿ·ë¼Ïö\9fÇż\9c\1cÆ\9a9\ 1=¸-M+k\8eñ³\8d\99V6.Óm:SçËÎ\87´D-Ý;lÚ¶¶Û´>\17¶rß\fRmgÈܲ>l\82§9óÝæ¶\9a\v[\7fR5_+·Y¿Äòy\9aSúLPÛ×oÇ\81Ìl-XÏ\89|¾¹ÿ\1f\8a¿\7fý¿fDü\8fPü_»Cý\7fËÿrÏñp]àéÀüß$2Nïïûtû\82¦Ý¾Ïõ3hCg>,Ï\ 4º¢ÿgÝþ\94à\1ca»ïÂ\9d×Ó\9cÁº8õ\1dã\87æñ®\8fs\1f\ 6ó¿6Åÿ¢\11ñ¿\89âÿú-Çÿáº\1cg\ 5öÝUÝ>ïÓ£kõn=o}\ fÀ´Ë\e÷c\96'I\15»\8eu{®o\84¹ÿë9\ 2Á\9a!~üó\81øÿö\88ø\1f©øÿÎ.ý¿®îâ´Û¯µ~V»[Çí?·_Ö¿&\17õ¸^Ú\1fû\ fÔä[Û§½þ\¿1\9e\v¿R{ÒÅ?ïâ\9fG\9eÿo\18\11ÿ£¶zþ_\10\9d¯Û\eØÿÕ\9eñ|Vt^Îõ\r×÷dM\ 3ç»Ùµ\1fÌ\aZÔ\ 5\ eÔþµ$Doþ/|öãtÏuÉ3YË5Y?ûQÝBÝLl\13gSìµj\12ÝܵÝÝ£bûÅbuá\ 6ãï_ÿ¿?"þG+þoÜ!ÿß\ eÀ\9av?{?ÿ³Ýû\138§ÇJ_xÏþ~]¨k&ñõ\80«úk\7f\8b\1aCWNây¦íÜ_hÞª\8bçÊ|\8b\97Ãéjñ,æï\835\9bìB.\8bêzØ\7fd\1dNËC´4@ýf\95d\e®\7f?þ\7f0"þ{\15ÿ?\1cUÿ£\1d·\85Ïy~Jó{gÌåäÝ\1aà\93û÷zÛ \1d¹ÇÏkëvgVM¡ÈóÊúßVtɶë\94\85\1eûµ=ÂmS\92\95w¶Ý\17¹åÚZÒeÚÌÔØ¼MÖÔY°\87».·´¶\rüÙat\ 6t´þǦøÿÑ\88øO\15ÿ7íRÿ³Ëñp÷\86þxþ¢`ÿÎí\19ZÍ·¨º¹\9d\97MbóLCc¹µÚ{7ƽ ës\ 5M\ eȶñ\7fó\88øïSü/Þ¡þ\9fɹuÚ\ 3+±tùÿÇõ\9e\19©~²\89·þ\1fº/L»ÏÇz¿Ñå\ 5¬×\99\ fÜ+zýÀCxï¨mÛ íüoö~ê\1ftë\ 4c÷\04k\88ÛÆÿOGÄÿ¦\8aÿ\9fí\92ÿÑ\8dñBù\1fÖ7pgÃ\85\9f\vm.ϱ«9\Ýúþ+{ë²Ë³\1c^¾)\a4v\ e\83b^4kn¶\8f¯(\8aä0ºï\a\9fý×¥ÿ÷ç#â\7f3Åÿ\92\1dæ\7flÜ«ÏÙº¹Ùð¼Ðk£ñÝ\17¸Æ-\93º\9a\84Ïÿrµä×òðb\9f\81ëc\9eæPÍ\15\aó\f\ü\vÅݵPüß:"þÇ(þoÛ\18ÿs\83Ïx7Æ[\99ß±}±\93áú\9eÓÀÙÀmÎX\12Í3\v=Oܾ°½]~O¿ÎÄ4R·úê~þy·÷de\r±¿oc²V·a¨\1el,¯k½þ§>/Vþ¥½ïûý\80mãÿö\11ñ¿¹âÿ\97[öÿBy¼nýgýÞàÖ\ 5C¹³ÓÀº`»\9f0\eXKlï\rÏ\\89\7f²2\97Û<w\15³T·X«\9c5Ó2¶õZ÷e\8dÀ¬F\94eWÔ\96Ìgù\eÖ)°*?\95åíÚ#;·uY»\12\vKË\987i¡¹\róæM\8e±\15\ 4ªgÍ\91\ fVÿH};[G¶§\86MÝ[]\0u\0f6Í\1fÛ\aº~fX,¿¨É\ 5Þ6þ\7f5"þ·Pü/ÝaÿO\9bsqÖÀ¸à´þ\9a¡º\¡s¡Úz¡Yt\7f¯Ëáy\8cÿoô£ÚÛ\r®çtoXûñó´-Øêß5¥¿r=\ 6\92,i\12\84õ\96j;ÝÇ\12qævKWÿÁ\96pfê\1cÖs\rìsË"ÐC¦°\9dEÍö½Âú\90\1aö«oÐ>oB{\83C5¥]¾w/wdÛøÿí\88øßRñ\7fÇ\96ãÿP\7fm\1aÈã·xº8÷sn^\18\9c/vµ\7f¶9¿mñ\9c¿ñÍï\ e\9d\vÓë£n\eÿ¿\e\11ÿý\8aÿßïRÿ¿«ã?\ã«\1aØ\97ßæú\87ê\ 3O\ 3¹þí¾¢ÀÙÑ6ñ:p«Ëåï³¹Ák:Gê\ 6¬×ÿ
++\9e\13àÇ¿\1c\88ÿ?\8c\88ÿ\14ÿwîxþ·[û_¿ÆÝÞ¿P_=\98·±ØK|ñ$\9e\17ü¦þ\9fÕuºÅZÿ¢î£í©Ýp>ÓayþwÙÅ¿\8c¬ÿüó\88øßz×õ\9fE\8eõy\ 3gy\9e\11ÍåûB7\90OèÎ\ 4\1d\8c¿\7fý_6"þ·QüÿeÄü\8f[G{ÂJ\8cçÝ\1e\8f#\aöÖ]50\atE¯_·Ü7òÎI?ÿ¯Íéw5'Vë\83êb\rß\13Ösøý=\1a¡ù¢öyb9ÜvL\9buþm\ 3\91u\vôø·õ¼Ì2¼¬$\84\1dò\97\16M¹\a»Ò\13Ûè¥\ 1£þÓSK--k»{ÖMo_ï½È\9a-\1fͱÑêÊ$ER¬ÎÿlºþÿuDü\8fÝêú\8fç\7fºþ_\7f_Æ\19\ 3g+\9d¶ñ\fØPýßà:p\9aWíó¡¿÷³Í\ f:>P\9f´\9d§½\9e®ã\99\8d\1a\9b*¿E\99tc|?wh½6±[SôÏ\8dr{G\82ù\9f\9bâÿo#â\7fÛ\8dñÇç˶÷ÿw\8d\88ÿí\14ÿÿ\1cµÿûüè¹\9cÁ³á»\1cÝàÜa\97\e¶/pn »fCó\ 4ËzÃÇ\ f\9cõtlï\9e£±@>\r\9c\11j÷¯¡ç¶»VKÝÞ\aæ\0C5}C÷
++?\17Ìå(÷îÿÕ@ü/\1f\11ÿÛ+þÿµKü»çª\9b\eZ¯ÉìòÂúù}ý\1aÞm-ÑW\86ò?ºó½\ 2{\7f»yáõgzw\ 6×\8dq\r¸W/ÚÅ¿êâ_Eâÿß#â\7f\9câ\7fÅ\88ü\7f7þ\ f×d;0p.g5p.c\12Ý«áÖ\ 1Vê?Ô³n\1fÇ$Rë»Í\11\ e\9d\1d\1az\9e\aÎô\8cånYÙx}wëÆ[η]\15¹¿/Ä\9d\aÙ;74Ro.\98ÿ¿)þï\1e\11ÿ;(þW\8eØÿ\15ªÇµ¬ñu|\7f\rH÷N\7fl\10ªËèâ\15\8a±Ë÷Z\r¦\984ñ¿|\12ê\ 3N\ 3µ\ 1\9e¼wßXÉõ\8eÅ4R\eRߢYj,tU\97kµ½®\97ý_\9bâÿ\9e\11ñ¿£âÿÞ\8dñ?q ÎóþÈÚ@\9bß\15®ÿõ¤À8-z\8eÃáXÃ+´Ïózß'ìÇ¿\1e\88ÿûFÄÿN\8aÿûw¨ÿmg²»g\7fÿ<¶ëxö[W3r\1a8ûÍ3ê¯ó,û\8a\97ôsC\ 3ua¼\1a0~\7fËíÕ\ fÕa¼Áç\8a×Φ[Ä¿îâ_Gâÿ¡\11ñ?^ñ¿j\97ýßÝ9¯nm \ãéàÀ¾±þþOÝrg.g7|öçŽÜ\91Y\9aϲ-ÆèV¢E\1d<\9b\86±£¹ò"¹ÁÏý\1c¬3ÛÕ~Z9\avÛø\7fxDüï¬ø\7fdËõ\9fPÍià\1c¯vÞ¥¿ÿsyþÓ\81=±û¿\9bÿ ç\80$Ñ9¥ih\9e'Oªi öK[köÈàxphÜçÆ{k5\ 1B5\87ü¹\9d¡ó¨\¿#X'ÌâoîúÀs\1fz\92×®Ï9\867>çQofþ\a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ìê\bµc&{\8e¸o÷ë«oyÄ\11÷½o÷gÓÉäÚ=GLöè×Ï~ͳ~¢ý»GîyÜ\13\9f\98Ü|ùëÙ-\96¿\9eßrùëtÿò×Ù\96¿Îo½üuq\9bå¯Ëc\97¿®n»üu};ýzÿ䍿{%úõí½×3ýú8ïõ\¿¾\83÷:Õ¯ïè½Îôë;y¯sýúxïu¡_ßÙ{]ê×_ä½®ôë»x¯kýú\84åë¹½¿»z¯íýÝÍ{mïïîÞk{\7f'z¯íý}±÷ÚÞß\97x¯íýÝÃ{mïï$ïµ½¿{z¯íýÝkù:µ÷woïµ½¿\93½×öþîã½¶÷w_ïµ½¿ûy¯íý%Þk{\7f3ïµ½¿¹÷ÚÞ_ê½¶÷\97-_göµrïµ}Â{m_«ô^Ûת¼×öµjïµ}/õ^Û×ú2ïµ}S¼×öµîï½¶¯õ\80åëÜÞß\ 3½×öþ\ ex¯íý=È{mïïÁÞk{\7f_î½¶÷wª÷ÚÞßC¼×öþ\1eê½¶÷÷\15Þk{\7f\a\97¯\v{\7f_é½¶÷÷UÞk{\7f_í½¶÷w\9a÷ÚÞß×x¯íý}÷ÚÞßü×öþN÷^Ûû{¸÷ÚÞß#\96¯K{\7f\8fô^Ûû;Ã{mïïë¼×öþ¾Þ{mïïQÞk{\7fgz¯íý=Ú{mïï1Þk{\7fßྲྀ÷wÖòueïï\e½×öþ¾É{mïï\9b½×öþÎö^Ûûû\16ïµ½¿oõ^Ûûû6ïµ½¿s¼×öþ\1eë½¶÷÷¸åëÚÞßã½×öþÎõ^Ûûûvïµ½¿'x¯íý}\87÷ÚÞßyÞk{\7fßé½¶÷÷]Þk{\7fOô^Ûû;¿y}t{\7fÖ\eünÿµÞà÷ø¯õ\ 6¿×\7f7x\81ÿZoðûü×z\83ßï¿Ö\eü\ 1ÿµÞà\93ü×z\83?è¿Ö\eü!ïµ=@~Ø\7f÷÷dÿµÞß\8fø¯õþ~Ô\7f÷÷cþk½¿§ø¯õþ\9eê¿ÖûûqÿµÞßOø¯õþ\9eæ½¶\aÈOú¯õþ~Ê\7f÷÷tÿµÞß3ü×z\7f?í¿Öûû\19ÿµÞß3ý×z\7fÏò_ëýý¬ÿZïïÙÞk{\80<Ç\7f÷÷\ÿµÞßóü×z\7fÏ÷_ëý½À\7f÷÷BÿµÞß\8bü×z\7f/ö_ëý½Ä\7f÷÷Rïµ=@~Î\7f÷÷óþk½¿_ð_ëý½Ì\7f÷÷\8bþk½¿_ò_ëýý²ÿZïïBÿµÞ߯ø¯õþ~Õ{m\ f\90_ó_ëý½Ü\7f÷÷ëþk½¿ßð_ëý½Â\7f÷÷JÿµÞß«ü×z\7f¯ö_ëý½Æ\7f÷÷Zïµ=@~Ó\7f÷÷[þk½¿×ù¯õþ.ò_ëý½Þ\7f÷÷Ûþk½¿ßñ_ëý½Á\7f÷÷»þk½¿ßó^Û\ 3ä÷ý×z\7foô_ëýý\81ÿZïï\ fý×z\7f\7fä¿Öû{\93ÿZïï\8fý×z\7f\7fâ¿Öû{³ÿZïïbïµ=@þÔ\7f÷÷gþk½¿?÷_ëý]â¿Öûû\vÿµÞß[ü×z\7foõ_ëý½Í\7f÷÷vÿµÞß_z¯í\ 1òWþk½¿Ký×z\7f\7fí¿Öûû\eÿµÞßßú¯õþÞá¿Öûû;ÿµÞßßû¯õþþÁ\7f÷÷Îåë¹=?þÑ\7f÷÷Oþk½¿\7fö_ëý]æ¿Öûû\17ÿµÞß¿ú¯õþþÍ\7f÷÷.ÿµÞß¿û¯õþþÃ{mÏ\8fÿô_ëý]î¿Öûû/ÿµÞß\7fû¯õþþÇ\7f÷w\85ÿZïï\7fý×z\7fÿç¿Öû{·ÿZïïJïµ=?Þã¿Öû{¯ÿZïï}þk½¿÷û¯õþ>à¿Öûû ÿZïïCþk½¿«ü×z\7f\1fö_ëý}Ä{mÏ\8f\8fú¯õþ®ö_ëý}Ì\7f÷÷qÿµÞß'ü×z\7f×ø¯õþ>é¿Öûû\94ÿZïïÓþk½¿k½×öüø\8cÿZïï³þk½¿Ïù¯\83µÇ{÷·Ç\7f÷w\84ÿZïï&þk½¿#ý×z\7fGù¯õþ\8eö^Ûóc¯ÿZïoê¿ÖûÛç¿Öû»é\1e\eãv¯³ÕñÿÍ\ 6Æÿ\0\0\0\0\0àÿ#ûù\11\0\0\0\0\0Àø\1f\0\0\0\0\00þ\a\0\0\0\0\0\0\0\0\0\0\0\9fO\17\7fYmås\8fl_íw¿ÜÓµ\9e·Þó\ e\8f\7fÀÛ\1fò\96ßû®gÏ/\7fË#\1f\1dû{\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\17·ß3\99\1c§v\aµ;ªÝIíxµ;«}\91Ú]ÔNP»«ÚÝÔî®v¢Ú\17«}\89Ú=ÔNR»§Ú½Ôîv²Ú}Ôî«v?µDm¦6WKÕ2µ\P+Õ*µZíKÕ¾Lí\14µû«=@í\81j\aÔ\1e¤ö`µ/W;Uí!j\ fUû
++µ\83j_©öUj_v\9aÚר}ÚÃÔNW{¸Ú#Ô\1e©v\86Úש}½Ú£ÔÎT{´ÚcÔ¾Aí,µoTû&µoV;[í[Ô¾UíÛÔÎQ{¬ÚãÔ\1e¯v®Ú·«=Aí;ÔÎSûNµïR{¢Úùjßö=jß«v\81Ú÷©}¿Ú\ f¨=Ií\aÕ~Hí\87Õ\9e¬ö#j?ªöcjOQ{ªÚ\8f«ý\84ÚÓÔ~Rí§Ô\9e®ö\fµ\9fVû\19µgª=KígÕ\9eö\1cµçª=Oíùj/P{¡Ú\8bÔ^¬ö\12µ\97ªý\9cÚÏ«ý\82ÚËÔ~Qí\97Ô~YíBµ_QûUµ_S{¹Ú¯«ý\86Ú+Ô^©ö*µW«½Fíµj¿©ö[j¯S»Híõj¿ö;joPû]µßSû}µ7ªý\81Ú\1fªý\91Ú\9bÔþXíOÔÞ¬v±Ú\9fªý\99Ú\9f«]¢ö\17joQ{«ÚÛÔÞ®ö\97j\7f¥v©Ú_«ý\8dÚߪ½CíïÔþ^í\1fÔÞ©ö\8fjÿ¤öÏj\97©ý\8bÚ¿ªý\9bÚ»Ôþ]í?ÔþSírµÿRûoµÿQ»Bí\7fÕþOíÝjWª½Gí½jïS{¿Ú\aÔ>¨ö!µ«Ô>¬ö\11µ\8fª]ö1µ\8f«}Bí\1aµOª}JíÓjת}Fí³j\9fS\9b\1c1\99ìQ;Bí&jGª\1d¥v´Ú^µ©Ú>µ\9bªÝLí\18µ\9b«ÝBí\96jûÕn¥vkµÛ¨\1d«v[µÛ©Ý^í8µ;¨ÝQíNjÇ«ÝYí\8bÔî¢v\82Ú]Õî¦vwµ\13Õ¾XíKÔî¡v\92Ú=Õî¥voµ\93Õî£v_µû©%j3µ¹Zª\96©åj\85Z©V©Õj_ªöej§¨Ý_í\ 1j\ fT; ö µ\a«}¹Ú©j\ fQ{¨ÚW¨\1dTûJµ¯RûjµÓÔ¾FíkÕ\1e¦vºÚÃÕ\1e¡öHµ3Ô¾NíëÕ\1e¥v¦Ú£Õ\1e£ö\rjg©}£Ú7©}³ÚÙjߢöjߦv\8eÚcÕ\1e§öxµsÕ¾]í jß¡v\9eÚwª}\97Ú\13ÕÎWûnµïQû^µ\vÔ¾OíûÕ~@íIj?¨öCj?¬ödµ\1fQûQµ\1fS{\8aÚSÕ~\í'Ô\9e¦ö\93j?¥ötµg¨ý´ÚϨ=SíYj?«ölµç¨=WíyjÏW{\81Ú\vÕ^¤öbµ\97¨½TíçÔ~^í\17Ô^¦ö\8bj¿¤öËj\17ªý\8aÚ¯ªý\9aÚËÕ~]í7Ô^¡öJµW©½Zí5j¯UûMµßR{\9dÚEj¯WûmµßQ{\83Úïªý\9eÚ﫽Qí\ fÔþPí\8fÔÞ¤öÇj\7f¢öfµ\8bÕþTíÏÔþ\í\12µ¿P{\8bÚ[ÕÞ¦övµ¿Tû+µKÕþZíoÔþVí\1dj\7f§ö÷jÿ öNµ\7fTû'µ\7fV»Lí_ÔþUíßÔÞ¥öïjÿ¡ö\9fj\97«ý\97Ú\7f«ý\8fÚ\15jÿ«ö\7fjïV»Rí=jïU{\9fÚûÕ> öAµ\ f©]¥öaµ\8f¨}Tíjµ\8f©}\í\13jר}RíSj\9fV»Ví3j\9fUû\9cÚä&ºþÕ\8eP»\89Ú\91jG©\1d¶Wmª¶Oí¦j7S;Fíæj·P»¥Ú~µ[©ÝZí6jǪÝVívj·W;Ní\ ejwT»\93ÚñjwVû"µ»¨\9d vWµ»©Ý]íDµ/Vû\12µ{¨\9d¤vOµ{©Ý[ídµû¨ÝWí~j\89ÚLm®\96ªej¹Z¡VªUjµÚ\97ª}\99Ú)j÷W{\80Ú\ 3Õ\ e¨=HíÁj_®vªÚCÔ\1eªö\15j\aÕ¾Rí«Ô¾Zí4µ¯QûZµ\87©\9d®öpµG¨=Rí\fµ¯SûzµG©\9d©öhµÇ¨}\83ÚYjߨöMj߬v¶Ú·¨}«Ú·©\9d£öXµÇ©=^í\µoW{\82Úw¨\9d§ö\9djߥöDµóÕ¾[í{Ô¾Wí\ 2µïSû~µ\1fP{\92Ú\ fªý\90Ú\ f«=YíGÔ~TíÇÔ\9e¢öTµ\1fWû µ§©ý¤ÚO©=]í\19j?ö3jÏT{\96ÚϪ=[í9jÏU{\9eÚóÕ^ öBµ\17©½Xí%j/Uû9µ\9fWû\ 5µ\97©ý¢Ú/©ý²Ú\85j¿¢ö«j¿¦örµ_Wû\rµW¨½RíUj¯V{\8dÚkÕ~Sí·Ô^§v\91ÚëÕ~[íwÔÞ ö»j¿§öûjoTû\ 3µ?Tû#µ7©ý±Ú\9f¨½Yíbµ?Uû3µ?W»Dí/ÔÞ¢öVµ·©½]í/ÕþJíRµ¿Vû\eµ¿U{\87Úß©ý½Ú?¨½Sí\1fÕþIí\9fÕ.Sû\17µ\7fUû7µw©ý»Ú\7f¨ý§Úåjÿ¥ößjÿ£v\85Úÿªý\9fÚ»Õ®T{\8fÚ{ÕÞ§ö~µ\ f¨}PíCjW©}Xí#j\1fU»Zícj\1fWû\84Ú5j\9fTû\94Ú§Õ®Uû\8cÚgÕ>§69R׿Ú\11j7Q;Rí(µ£ÕöªMÕö©ÝTífjǨÝ\í\16j·TÛ¯v+µ[«ÝFíXµÛªÝNíöjÇ©ÝAí\8ejwR;^íÎj_¤v\17µ\13Ôîªv7µ»«\9d¨öÅj_¢v\ fµ\93Ôî©v/µ{«\9d¬v\1fµûªÝO-Q\9b©ÍÕRµL-W+ÔJµJVûRµ/S;Eíþj\ fP{ Ú\ 1µ\a©=XíËÕNU{\88ÚCÕ¾Bí ÚWª}\95ÚW«\9d¦ö5j_«ö0µÓÕ\1e®ö\bµGª\9d¡öuj_¯ö(µ3Õ\1eö\18µoP;Kí\eÕ¾Ií\9bÕÎVû\16µoUû6µsÔ\1e«ö8µÇ«\9d«öíjOPû\ eµóÔ¾Sí»Ô\9e¨v¾Úw«}\8fÚ÷ª] ö}j߯ö\ 3jORûAµ\1fRûaµ'«ý\88Ú\8fªý\98ÚSÔ\9eªöãj?¡ö4µ\9fTû)µ§«=Cí§Õ~Fí\99jÏRûYµg«=Gí¹jÏS{¾Ú\vÔ^¨ö"µ\17«½Dí¥j?§öój¿ ö2µ_Tû%µ_V»PíWÔ~Uí×Ô^®öëj¿¡ö
++µWª½JíÕj¯Q{Úoªý\96ÚëÔ.R{½Úo«ý\8eÚ\eÔ~Wí÷Ô~_í\8dj\7f ö\87j\7f¤ö&µ?Vû\13µ7«]¬ö§j\7f¦öçj\97¨ý\85Ú[ÔÞªö6µ·«ý¥Ú_©]ªö×j\7f£ö·jïPû;µ¿Wû\aµwªý£Ú?©ý³Úejÿ¢ö¯jÿ¦ö.µ\7fWû\ fµÿT»\í¿Ôþ[í\7fÔ®Pû_µÿS{·Ú\95jïQ{¯ÚûÔÞ¯ö\ 1µ\ fª}Hí*µ\ f«}Dí£jW«}Líãj\9fP»Fí\93j\9fRû´Úµj\9fQû¬ÚçÔ&GéúW;Bí&jGª\1d¥v´Ú^µ©Ú>µ\9bªÝì(æ4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0àÿ±÷/à\96Uå\81÷[;\8dÍ®\v\97$xIB\eD¢ÜÄq¿¨\18\92`K<\88\80\ 5\14E\15`(b)ÅE\9aNó)vx\12O$j#Égrì\13\92\8f'rZ\88D1!\9fDPL\ eié\84N \ 5E$J ²\ 5DÔ\14I0b{Þw\8c9çÞµ×®êîÓ!Aùÿ\92¥Ö\9akÍË\18cÎ=ç\1aïx\a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0àéã'~ò§ÖP
++\0\0\0\0\0|¯û¾Gæä?õuòí«öX¾tÏ9³·þ÷¿\90×;\ e{à¸óÞpîÙ.¦Uósgî¥ïÿ\8e¼\ eü»Ã\8eÑ÷±a~îyÓç\8fØqáO´÷\8bósÛÛï\f߯ïÿ\97}îëë1e~îÖÕãû\87ýɧ_§ï{\93êüÜ¥«Çõ¼tǾohïW\9bçç\8e]§ï?[^\ fï8p\87¾\1f|Nós÷·í\9e,¯Ë\17\ eûÛö~\ròþûÚzæåµîÕÏþS}?\1aÝî~kõ}=\88óßöÒo´÷\9dwósO¬\19·û\92\1d?w§¾\9f¢³ós\97ì=îçáÿùY_kï\17#Ç{s[ÿ\9eòzà´\1fmû\93s\96÷ÃÞã~Þ¾ùà¶?¹èq\1dÛÞ×\83xÉ7~à[ú~ñV¶{E{ÿ9òºí±\ 3¿ÙÞ¯ÉÌÏ]·fÜÏ\9f<ë\88¶þ\1a\9c\94ÃÍëÆý<t\87ÙÜÞOFÞßÐÖó\ 3úþ\93\ f\9dÓÞ¯¹¬\9e3{\8dûù\87\1fÛ¸Ðë+¥$ÿ^=wÌ^ã¶Oýím\ f´eÎU×\96ݼf\öù\ f\9fõµ¾ÌGß\96Ý3ÕÑù\vç\7f¼/\vµ/;jÚÞÏß°¹oO*¼¯s¿½ÆczËþç\7f¹-ó¶\94¶ì µ\8bë|÷\vû2\97r[VöÑeGÉëâ\97oúL_\16\8ciË>ÕÊãDy\9d÷\883}Yr±-{Ǻ±\rìÿá\rý{Áú¾ÎK¦e\9f¼ú\8c;ú2\97ú1\1cÐ\8eý¹òúâï\9fðH_\96b_ç\93S¹¼õ\95[¾Ò\96ÅTú²ËÚ~\9e.¯¿¿á\8d_mËR\ eýønnÇ·¯¼Ì\7f8ý/û²êú¾Üµf\ö¶\17\fÇ\97½éë¼fj\1f\e>òæ¾½blÿÞUÓ1l~ÑÆ/µeÕÙ^·ûOíögïºðe}Y\18ÊúþÕcy^\19N¿·/Ky(³Õã¾|îãÛ¾ÐÎW\13c/ëûÛ1l\93×\19Û\7fj\8f¶Ì\ 6SÛ²\83Û²_\91×ñw\9f8,«6ôe{\8dûyÉ>ç|vXVz\9bxϺq{¯¿ñÜvÞ9\17m_çÅÓ9|Úåç|®/+vh\83{\8fËN=hÛ\17Û2o\87í]=µÏM\v\ f}°-\v>öeej\9f¿qË\96\85¾,æ¾Î\87ö\19Ëú®\e6<Ø\97å¡Í\7fj:¯7ß²iøÞ¸/ë¦s{Ãö\97üèp\8dó½\1e®\·¸/o~q_æ\87:ºrº\86üfÙÚ×\19cîÇ^Ö\8cÇ÷Ö#Ϲ»/ËC\9bض÷Xf\7fóÑ7õeÒÎúñݾv¼\ e¼þá·Ì·e¹\98¾½£Ú:ßÜêÏ^×\96\15çl[vßTf\e\17>ôÞ¾¬æÞήY7®óµ\ füáGúµÚ¤þ½-ëÆ2{ÿ-G?Ü\97\85<\9cÓ{\8dë<ná¼÷öeÕöz¿fºþÿëÏÝûÒ¶Ì\9aØ×yñ>ãuâßïyìB_\16Kà\8f6¾ËýìùçË%%XùoýßÁÈé\17å<\93kPÐer~TùïTäJ6|&æXä\16KþRæhc_G´ÙµuÕ\18 òWæv½\19¾£¯\²-.gï\82\8b.Y¹Ý°rEö.\86à|\92\138FùkQdUNÎJùÛ`¼üõ/Îú\98tÝrÛ\12mð¥ÈßvÙF\8eÕ¶mú\92}ÛG¹¨:Ùÿâ½\Ь\\82d{>%ã\82 ^þ¢ø\9cå*Xå½ \7f\95\ñÆ\1a\93\8du²\ 2ùS\e³³Yþ\ 4&¹uÐk¢\1ca
++!È:dµÑ$ù\13\98ôÂ%Û²²¯ÎÊÿ\rÇ/\e«²¯Y._&Ê!Ö\92\87ÏÉ-\8aÏQîH³\96qI!êe,Ø\18lY,\9fê¥Èdï²\rUVT¤\1c{ÝÈ \94ÉK>+;\93´äª\94\91qU\ eWöÌåþ¿\93\94¨\94\923òF\96\12ñÕÈ\11IÉ;ý\97õÅ%\97\8a\16\8b\94HÐC0rQ\95ê\94b\90Ã+rM×ò×ò\vòß5JUImk\9d\85äd?¤îj\92Ô,û\\83éûUkÑ\v·Ü%\84Zô¸\8b)Õ\eù§\94\94÷ýXdûAîÁC,E¶&{¡\e
++Nþ§sR\99Rëò×F¾${#MBÚ\96ìs\96\9b'©\a_c1Un£d\13EªBvOþFÊ?¤¡¥¤MB*G>%{\1còÐ\ ee\7fB®roRå\16r¨'ù£+{\90å?¥¬\8aüÍ\ fC}JEµ6&{\1c[\19\9b$e$ÇlZÛj\9f\91"ÖsAÿìy)k#§Ø4ÕK\94[2i6R\9\17Ù\13Ù/¹K\93]ö²\15§mOj¦H\89Zi[Ò®¤è\8d\94\91|Ð\15iìR\8bz^\ 4ë¤Ê\8aþ\11lõ\1fõl íoþbýG£çªü]kû¥-I?+\aÚ\96Û\9côè¼4xiur\83i\86¶(Í×Êͼ´4©\83*·{ÒÎ\8d\91-dÙ+©'9o³\14«7R3²ÏR5A\9eu¤ü\8bÕs \1d\954\17¹½ÌR>òÙ*\87«\rM6]å3rÀR'Ò\82¤\³\97\1a\91Ë\87´°\9c¤ýË;U?&U\´\ 4²\14®\9c\ 5¶µ]Ù\94\9c@R\98%õ¶¢ç\82\9cµÆ\rÇì\8cVq\92sQ\8a5.\96EÑÓWÞ\91er!qÆ\ fíQÚ\90ü¿O.¥\89È\97µñI\91\rmQ.3Nî\97¢\97Ãie\98äÔ×\12\90g»á\\93ë\8a¬¯H\99YiêRèµ×\89\1c`\96K\8d¬Õ%½\8b3±¶÷\83\ú\8a\¤¬×Ö!gÕ°\9frÔ¾´v\13ô²)ÍÄÊIgä
++$û$g\9a\14\90ñ²gzM\vrrée@JFjDªQJPÊ0¦,\17`¯\97\1c\9fõÒ+åîÛ\r«\96\81\9càòvÐ\93I¾g¶ñrw\12å\f\97ÓI.´VÏf'µ-U![ózu\90uÉ\ 1h;Ò-ëNx;쯬C¶¨»\99¤5Hc\94æ®§\97<fÊ6¤R¥1èU^/õÒD¤põ°å\1a\13M;\7fs\95û^\93äÊ%m«È%GÞ\93â®>ôòÓV#\97HÙ\8a|KvK/\84ôÿ\ 3\0\0\0\0ðL°Øÿ¿úÐ'Þ¶|éüÜû¦~û\83?}Ø)½\9fSûá×ï5¾¿s\7fþíSÿØÎýóWLýê\87ï\b\7f/DãççnÖ®U\17Èë½_ýÁ[Ûû%h\@ë¿\9aí·ßÚÖ?Ûo\7fWëGÒþ§§\1cÚß\8f^öó®µ\8bÛýµ³Ûû%Êç×µ¾¥_\95×a\8f¿ºõ)¦àd?\ fhë?J\8f÷\8f\7fäöÖ\ fo«¬ç\86ö¾ö\ 5\1føªý¾ÓúÕ\8d5ós\8fOñ\ eKûáWÏ]ÑÊç2ymþÐ \9fíýínèóºlê\v<oaµï1\12c_õñS_Ùù\vç~`è\8b·½?lÛÔÿö3\ f_4ô\8d\9b¡ßõÊi?¶-\1cú\91±\8f»÷÷]:õ·\9føþ7=8ôq\ fýôÇNåü{\a\9eqw¯_\97ú:¯iuv\85¼>úòSÿ[_\16Rï_<³}Owèü\aÏßgèÿ\1eb\ 6®ÚMÿ÷¶ö½\ròºò]'\8fýß¹\7fïâ©?s¶ÿûØ©\Þ¼°ýc½ÿ;ǾÎçM}À³ýß½_yåþïõk\17×¹Æ\ fýß®\7foÛ\14wñúKOê}²&Ûþ½Û§2»ðCc\7f´5}Ù\róã²Ùþè\rí{ÚÏûÜ\17¿±¯S\7fPìå9\1dÃ\93kÎýR_V\87¾\ÓÚö;µþ>ôÆû{\9f³\19ÊúÒuã:gû±ËÚñØOûÜ\1fØ¡ï8õò¼qêçݼpHï\8fÎÞ÷eWM1$³}Ç\8f¶ïÜwüÄ\14k°ñîç~¼/\v¾\97K\8fQ¸V^Ç\7fñ\93\1fíËò\10g±aºÆløâú±Ï¹öréñ5zÞ}ÿ\ 1Ûú±W7Änl\9dâVÖ\1fxbï§×\1f[Û²{¦8\84ãî»é\83c_ußÞöé\1aò\89w½æ¡¡¯zhó\97Lû2Û\1f}øTfÇ-\1c}`_æ\86¶tÙTfÇ}ù\aÛyë\87ßÅ\ 1üãYÒ·cK\8dÙiï¨Ó\9e\ f\9b´o§\18£]ÙEþæ\98Ö©f³\9cÝÑ\84 ½~Ú\13)\17\97¬=Üò±\10mëýÑ>iocÔà/\13¢³Y»gSJ¶hO¶\93\9b\86±?ÒGy#\15\9f´\876»\98ôâ/ÿçe½r\15ÉÚ\1d\17l))Ë_D#\7f\84µC(\17í¾ YþÌ\17'kȲ\ 3&TÝç(×\10ù\82\1c\86vÇËß×\90µ\1fµ$íKÊ©h\8f¿µY\16i/k\95ýñc?\9ck\1dV&d¹\ eéñë\9fıÏQö(y¹\8eújµw¸\95Û?e_}ÕÞMSä&On|òPo^û\8a¥È\86>¯\95b\1az\9fu\94»«(\7fÅ¥öêðÝP¼l±Ê¾Éb©ò\14¥\18ÛʤÊäï\9a\94LÔ\8eÓR´/XJÜjÝÊ_{í}N¹¦¨G§}`ÖÚ¨}y:äNAûȼÓ}Ð>¼RåFSã\f\82\96\83)rõ\ fÚ"\ÔH½ª\7fíjëOË×UÚ\9f\89c<\82¶¸á\18¤Y´þá¢ý\87Ò¬Lk·²\11'Å"\85 {ª\11\ 2Y÷ ¤R´ÿRã\13ä\ f_ôµèaÄ\165 \85¯P\8aÛ\84"µ\94L\8dR%>\eã´\v~I¼\884¦)¦D\ eQjÞô\9eNÛ¢K¤\ 6«Ñ^Dí\12¯z\9f'ÍAþLÉ\ eÈ\7fDi¢\1a
++!'\87\95æ\94\83˵úì³\14x\90\ 6\e´7Q÷LÚ\86¬OþÏi#\93"\91o;i\96r\ 4òéÖÁýð¾$ùLÐÖR\86\98\149Çt\1d¶\1a\r\ eëý·c?ú®ú\9beeÒðµ\9e\9dìqÐN}Ù\13iHI£4´«U\17jXE RÏ!ê\ 1˽¿TXnñ\ 25µÎnÝ!\8d\fÐðÙ \1f6¥j¼\85\94\8b\9cÍrÐúW¾ÈfµS¼¶R\93ò×\v\83´o9ïJÕ\v\84ÔY ír Í#E=ZYw\\16s³R¼\89î`\96Ó,ë ¡§X\1eúeåìHR®5\fe¤]·í´Ög\ 2¹28\ e\8dÕHz\ 3*ÅPôª\15rÖ\a\13ù\8c´f¯MÅk\84\85\9eÃR;R×¹uѧÐZxÔ(\15Ù\90\9cÏr%,zîG\13õº\91ä\fÕp\10]\91Ôb©ECC\96Ä]HåK\9dT¹\ eÉÕM[²\9cjÙ\14½|%§\813r}Õ8\17=-å\16ËÆ\1a¤\96½\9c{®·É Õ·BLÍò\18\1d\rqHVC\ 6ä\e>Nå¹RL\8b4º¨§\85\14\85×ð\b\rMYµ\9bø\13§{\rÛ,Ö\93T\8d\14f\v\81Ȧ\8eíS\9ea\8aÜëÚ`Z\7f¹^º\9d¶`-άq.R
++QÛMiÅ.G.\17>9î\984º$Êí§î\92¶B\r\14\8arHzz$\8dH\91¿DAÃ\ 5ª\B¤²´·_פ!\r^ÿ\80Ä,W\9f¢\17\7f£Ç%Å÷ÔÇ\ 5Ðÿ\ f\0\0\0\0À3Ábÿÿ\7f¼ìÈ/,_ºçÜ\8d/W;ïÞù¢ó\8foýÛ6¬\9a\9fÛwêS~Á\9b\ fy¢÷ãZ??wÅÔߺs\À]S\9fÛ!ßü±¿kýüVã\bz_Üåò:öÞ\ 3þ¡õÃ'\1dß~ÑÔ¯¹ó¸ú\eÚû\eåuè·®}mÛ\1f\17ýÒ1»³cØ÷\9d¶=;Þü\8e©ß|v¼¹\99úô¶>ö\9cO\fã¿}_秦uÞøûç=Ô\97\95ÔÇG¯\9aúrgûÔ¯\9aösvÜx\1fïª\1d\97gß\7fîµ½L}í}\8f½¯ó×åuÂ+Ï}¸÷\8dçaÜñAÓ¸ã7|õ°+{߸\1fúH\8f\9fb\rfûÍßѶ§±\1a\17þðY}\9duìǾ}\9fÅï-ï\e\7f¢õj®\85W\1eròc}\1c·wýØ·®\e÷eó\ 3¯û\95±o¼ïË\ 1ÓøïÙ~ó£w3\8eû\92)îá¤\a.zy_\16K/\97«\97\8c«¾õ¦Þÿ\1d\86X\83[÷\19×9;vzýÔNgûƯ\99\8eá´íïzE_VR_g\1fÃ~¤¼Þ¾×I½?Z\8a³·\89\ 3¦¶´qáU\1féýØv\88Ïèy\1f6iý}ùèwöeÑôú»£íçÊ}ÜWNõpÜÂAÃ\98k;ô©ÏOeöù«Þú¥¾ÌÇþ½\8b\96|ofÌõ\14£sÒåÇ>Òûª³¥¯\1a\0\80ïmmü±Ñ\88\83¤½û&\ 6\9f\mQ\12δÑå>FëkÖÁá\9a¢@\a´G\8d\92Ñ>l¹SòoÚx\8d:)¦w\98/é³]!6B\13Nø\94SY\92·Bn\8bM\8bZ ¶¤a¼ü®r5D\1dðnLMmß\93rG!\0ÑÈ.\aÓ:IkÒ`\0ídÕÐ\1e\eb\bú\8eöÛÇêLq1\85j³¯I¶ì\93öàjz\ 6ÙS\1d³ßcdt\97åÉÁÇ!Fe\8c©\90ý¬!EÛFÛ\9bRb\8c!k·¯\8e¡\97{\7fí\9fn£Ûåp\8a\8eZÏVJÊ\96:ä\10\90m\17\rOh\9d»ò\85*Eg¼|TVQªÑ>`ÍfQµ+?\18¯y\ftÔ¾<$i¢\86Öµ\1feõ\1a8¢û®é\194þ%É\97³\96FK"Päð¤\90u\1c|
++Cv\87¨½óYîÝc-ÚC\1c5½\82±íÆ{IÌ\8a4\83Pw\91û \94Ö÷]Úxz\13«\86Ah'y,içx,'õ¦ëÉ®¤\18K Ái\ 2 \8d\99ÊI\ eRV¡å-\rH¾«cУ\ 6ph\0\82o±\19\1a\89\11ô¬1<ò\84(U¥\eÒ8\10MK"õRµ´õ\vc¾\0m\84º\95°¸¿}÷¤ÄÆÏ\ 4£¹;z¤J\95fo5áJ\bRæÚV´^äé5ù(+Öø&\174~XGð[\8d\83ÑÈ\12Wõt\91jÕh%ù\90\1c\9fì\7f\92%¥+J\13Ð\8eûê[F\91ªi\f²¦Å\97%«ñ\15rþD7íc\96\8a\93SÌ÷¸\ 3mPÉK\8b\90zÖX\81Uÿã\1c%z\84®d³$\17ËîbÂVÌOAÿ?\0\0\0\0\0Ï\ 4\8býÿ¿½ðØW\96/Ýs\18?ÿqùÁ?ñ¦\9eÇÞ\9a\9f{^{\7f¶ÿ\7fÕ.úÿ·µ~S\1dÛ}éÑÏÿ³>v6\98ù¹û¦1¼\7fqÜaÿ½½ïS\9c\9f{r\8a/Ø9^ L}ÈÏúëçýYÏ\93oâ\98·\7fv|¾\99úé\7fùç\ f}|\88_\bósÇLc¿w\1e·\7fA[ÏÊãöïÙÍØü\83§ü׳ñ\a[öYüÞò<ùKÇû\7fmm\8f?(C®ñû¦\1cÞ³ñ\a}ìº\8e ¿ç\ fÖÿÕιéßßöeåqû=?ûÊ1\ 6=\9føÊãöË\94·~\85±ùSÿõú\7fy|\8f¯Èµö~è\83¦>ê\9b>2|¯Ø!gxÏç¯måÜ;Nù\9d¾¬ý¼¥±\17\1eV\8eM8|êg\9f\8dMè¹\ eV\8eMØwíXGß<à\94/\ fËB_¶~ê\13¿ø\17NýÊ\90\7fÞôýÜo\8a18caË\81øýÚ÷e1\7fÂw\8eÜÖsÚû\10z\1dmÝg¬¿Ù¸\85ǧvüÑUoüL_6Æ\18\98iÙl.\80ç<\1a³9í\ fÞMNû£¦óé3¿´ñk;ç´_·\9b\9cöÇ,ÙÞò¼õ=~ä|£\ f\9cÓ×\99ì\90'àÒ麱iáÑß\1a\96\rãè\8fjËV\8e¡\bÓy¹qáu\1f\18ò\v\fq\12=·Èʹ\a.Ùkñ{ÇÝ4ä\1e\18æ\9b8v7ù\ 5¾>Í\ 3rÏs7>:ä\10\18Êó¨)þg6ßý%SlÉlìÅ\99Sî\88Ùü\ 2ë§ëÝl\9eüçí&÷ÀãS\1cÖk¶?¶çpýÔ\9f\93\ 1à\1fÕnÆæï¶¯j¥1ÿËÆÞ>mÆ7ïb\f±Õ©W¬\ eðnÉÓK»ù[Ö_·Òøå\9eÏ^î\89ú\9c ²\99à³v
++ZMU®A©å4w\9a\rBV\e\83ü\8dMUó\8akò\ 1í¦so1Fí¹Ö\12\89Ú\17®3\ 2hærM³®]¾Ñjr\0¯Ù\ 1ZV\82\1a´\97Òjq\9a\9cu\0{rRn}^\88\15újõ\93Nî³ìP\1f»êo_Þ\ f¾«üöÿÛýâ¹õ\'×r&ø63E~:æ{\18ò\14LãÙee?¼J³ÕxÛ%9\0v5ßA2Á\ 4\9d²!Æ\1aÆÏ>\85q\18µh\1e\10M÷®\13\ 3µ\8c\1dC,BmùL\96÷\93ï*\97¾v\8eÇ©]h J£\19ór¬0/\83\ 6d\98 g`ê»Z\86¾ù§:Çý?e~\139ä\9c¤\rµ\99'\86sI¶ì³&zÐð\ 19ñª´ÜÅ|\ 3³±.cÌ\85\86\ eh*79[\8b´\f\9dÉBc8t]:ù\83\9caZ·rÖy\1fªæ¯is\85h@\844ÆÔRÐD\9dj!ê\81\87ê4~ÄJié|%R µ\85\99È©¬\13}´v¡\93Fh2\12úÿ\ 1\0\0\0\0øÞÇó?\0\0\0\0\0Ï\ 4\8bñÿ·o\7fÖ\rË\97ÎÏ\9fb×_ºcß7´¸Óªqø=n_¿pð7îøû\16\9fot\9e¿\vÚç\97çó[=·aÊ5÷\97\1f{Óö\1e[^b\8f\15~²ÅÙ®<'Ü\15mÙ¶U\1aóûS{ô\98íÐrª\ 1\0\0\0\0º6Æ%ø¢aö){olöYç3t:\17i\ e.É{Ùø\90]Ò¬x¥ä¢\89ã\8aÎꨡæ)i\fy\9b\rQ'D56è\94\95&V[S\8d®$\9d$Os0êP\akJÕ`{£ÓF\16guÞD\9d]1jrEã®Í\19Í\90\17J±m\9cCÑI¬\93fã\8bò\8ch}l9ì\9cNh\vQvÈÈCbÑ`÷Ð\86\v\r\19\r]\e\v {\19C\90õ»\9cdw5!¢¯QÓ\r:Í\9aXt@O\92{«\99\ 4kJ:Y¦\ e6Ð9HkÈOá|\9c}\9cT\8dòä\et,\83~1\8ec \9eN¹\b\97>ÿ¿éñßøñÙçÿ>ÆW\1fö_ø\96ÿ=ä\1f·óCÎr\1d«zà\9f¾û\víù?\ 6\1dç?å·¿í±\ 3¿ÙÇç'³zîæi¼ìþ×\9eÑÇ\81\e3ä8_ÌÝÿù\ f\9fõµ>>Þ\ fc\93ß?ýþpîÂÑ}¬·´§¥ùÝuLìÙ\ fíýÎ>~<\rã\81ß·$\7fýò¼÷WN¿E\84=6=8ü¦0\8c\11¿aÚÏÙ<ôÇOûy×\r\e\1eÜy\fõöi{³¹ß\8fÙÍXáKò´_³¶\8fë-:5(\0\0\0\0àéù[Ë8\96ßÖ¨9\rt\ 6\fM¼P«-\8b95äAÜ\9bÒò\80xëô\11~È¡`åi1å<äL\99>ïj\eÂoK\90§{yt\1fó\f\8có-h:\85\96WÁå¢é04O\891\9a2%U\17J]\9a·Eg\97p:3\83N !;X2ñÿ\0\0\0\0\0<3,öÿ\1fñç\1fÿ\9dåKç\87>oíç?øÓ\87\9dÒsÉküÿñS\ eö#vìwfÏÁ^ýüÜÍíý_\95×a\8f¿ºÍñ\9e\82KóC¾sýüKvüÜ\9díýèìüÜÅS^ò¥ùùW\ fyþu»[?ÿÖÚÖoÓ\90\8f}ý\94S~ÿ\ foè±\ 4Á\ e±\ 4\8bs°o[8¼çè\ fÎ÷¾ý'¦mÝøûç=Ô\97\95Ô\97õq\v+çÌ¿¡Sóª\7fæe\e\16z\fB\18Æ.ô9Øu?·Ü{Óº¾¬¤¾lKÛÞÊñ W¶e§ÈëßÚ³{Þq;æ\9b?f:¾Kö9§ç\94·uÈ\8f¾©-;Q^'=ì¯éyê\eò¿ï&\87½\99rÿý\13Ûz\8ew\97J/³£¦í\9dvù9\9fëËÆüï[¦\18\8b\rÛ_ò£Ã|\ e¾\1fß\ 5Ó:\7f³líëÔä¹mÙ±S\9eó·¾xs_\96Í0_ÀþS\1dÍæj?hZ6;ßýeS\9b\98Í\8f~ý\92ï\1d}`_æJá\ 4\a\0\0Àÿ\ 6í_M¥çP×äþI#±5Ø|Õ0·EJA§\99¨.xMº.\1f]µ¬\7f6\15\eVÊ£¿Ò|\e\1aqoä¾¹\14[ª òäÕÂßSµÞÄ,ÿ4í\vºÉ\16L\1e\8aÕ\bÿ\96Ý]Ö¯½Ê:E\87|UnÌ\8d¬Ig\ f\eû\96uÒ\0WL\1dâÒII\ 3Îc\89¹\fû´S_ô®rú\87\1clëÿ\96\a\83i\8e\0\1f´_:I)\94\9c\M¾´è\7f+{ã<[\ 4\9d\8aCvH¾]uHBÖbô\9aKßä ;¢\ fm±¶É\154\7f½æõ7Ó>éä\ e}\9fcª²+ÆêP\ 4\9dáÁÛè4\7f¿æù×àùjk\88N§\ 1iÓ\88ä,ÿ¡Yÿu\82
+++eïu~\80,µàk6VÝYy^µ:¯IÉrh²
++yôÒ\92ñ:i\89<T\ 4í»7²é\1c¼)!;\rµ×\ 5µ\97G\89r\9cZS%Û¡\1c5
++ßIñ¹§Û¼\16ôÿ\ 3\0\0\0\0ðL°Øÿ\7fá=ÏýýåK÷\9c»dêß~Ͼáu_Õ\ 5yÿ}Sßöå\aÿÄ\9bôý\ܪù¹Oµù´5\90àÀ¿;ì\98>Îß\861\8f\80öM\9f\7fñ\11ßèï{\8d\17\98â\ 2\8eØqáOô~~\17ççn\9c¶{Ð\1fýÒ\89½¯>¤ù¹Ö}¿ê½òºí³ûÿMïWN²þ\ 3¦y¼\ fùæ\8fý]ËG`5NáÊuãû\1f<÷°\96¿ ¦(ï_1Íí}ÄãgÝÛâ\11²w²Ýöù£äuð\1fÿÈí-\7f\81òù»Úç¯×c>éûÿ¼Å)ÄbW\ fy\10/\93׿\ f\9dðÙ~\mÊX\9d\1f½KûÕ¿uý\98ó \ fsÃ_7Íñ~â\91\eîîÇ\1djï\8f¿níxìgßõÅ[z>\844ôs÷ùæO\90×\96»\9f|e[æCèýê×µ2ÖØ\80ó\1eq¦/K®/ûÔ´½O^}Æ\1dC\Dê}ü·í5\96ÅÖÇ\9eó\89¾L\7f)\Ì\95°rÌ\84iû²¯¼Ì\7f8}ÌÛèú1Ü0mÏ¿dã\9d=.¸\1e\eð\9euã÷Þö\82M½\²\1fb\ 3n\98úñgó6Ü>Åa\týé\vòÒ×yÔÚq{³y\e®\9fêá;Gnëñ\14Rfýø\9eX7®ó7nÙÒã\14B̽\®Z;¶ñÙØ\87+¦v»yá\98\ f\ fóÛ\97¾½«÷\1e\8fïo>ú¦»û²\1cú²mm{+ÇE\·n\çÆ\85×}`\98ßÞ\fû2\9do\e\1eyõóû<õ¦ôzز÷¸Îõ\a\9eøà0\87½íõpÌÚq\9dÄE\0\0ð?g\859ÒkÕ ÜåÞÒ\87Z\96\8cÅí}¤Qçë.É9ù\v¬cwµ\83ÖFë´ÛQ'¶\97\ 5:7|®:ÿx5r\ f\1c£ÑîaWSµÉéçõ_:ñùªÙ¾CMÇf\8b)²\8a2ö9'\93\8c-²B\rJ-Ú']½¬'j×j\94ûF\1flÈQ\13À\15Yo\90\r\eí^LVûd½wYwÙÔ\1c\93,7I>[ÛÌó!Ë\1eÖ¢\9dÉVn¥bÖyì³Ï:M»\91#Ê)Êv\83vc×êb,NJ)'\17´\9fZo¦å¾Ü¹Tuêúäwß?®9ÒÚ±ø(ïËzC¶lSÔIÚÃÒqÌz¯ØÇ[\17'å(·ç!9Íl\96S6Eî\8aä\9fY便ä¬\14¥×þ^©Á\1a\8c/>jêµ6N;H\8d¶>ä,ëÈÚ¹+7ú\9a9Îê]W\92£ÕùÒM±Q\1a\80\93ÝÎN{\8f¥lå¨å&±Ví@N5k
++·TS\94ÚõÚç\e´ç¶È\8eÛ\14\92¬\ÊR·,» ï\e\1d÷íe\1f}AêGJSJÖÉ\ 6j\98úæ\93f£ÓæÒÚ\9fÜ\1akz·6ç|L-G\9eÔR\9eÊ#ùÔÛ\9eìQk¬Ò\fÒPÞ^k%¶äyQÊQ\8e@êSv(\99lu\17\8bÓlq9ëC\8eÕbÔÍj\8d»¬\9dÔR[²@;Óm\92ªk½ÌÒ^[T\82\1c\91´\80â5É\9e\89Ò24¡»ÑT}º"£\1düEÓöi]É3C\96F,å -^\9f\11BÛ¿ \8d=J\ 5H3©c{×sMÖ¨9ýÆ>\7fióRj¡D/54\9ekR7²úì4\13á0.ÞÛ\18zÜ\844:9ÉLÕ*Ó.vy¦¬A\83\ e´\83¿ä*\8dWÊUÓïi/»Th;]¤¬µ\92KËõ\97å4\8aÉH\ 5Ió(ZåzèòÔä|Êú I\rå\9c3%jϽ \9axÏF]]\94MÉ9Päôò²\9a\90ôtÕ2\88º¦\1af\ 5Ð\86\13\8dÑúô²\8fA>)\95£×\89Z\87¸\81å1\1a1ÈnG\8d\92Èí¬m\81\12\9aîÐËyíZ5ÉS©´*-à ;!×\9f*\aàRK»(û-û%Ç!'\89æhdü?\0\0\0\0\0Ï\ 4<ÿ\ 3\0\0\0\0ðL°\18ÿÿØAû¾fùÒ=ç®\99â\9cßqØ\ 3Çõ\18è´j~në\94knçxþù\16Ã<\e·ÿ\9e%qþKó\ 5\1e<åäÛy~Á\83§xîc\8fú¡O\ fqËn~.L±ã\97\1eýü?ëï\a3?·núüïÞþC\7fÜâÿ]\94õ\1f=íÏÎó\14n\98âÓ·}úÙ\7fÒâÿ¯ós\8fOñÒ;ç)|b\1a_ðÓß|i;Þb\9c|¾ç\eÔ\8d¼ä\e?ðö¾ì¨\94ô\9eCw\ÑbÀKÐq\aë÷Z|ÿôÏ·÷³n÷\98iÿ\9fõ×Ïû³>o¢\89ós÷´÷gçSÜ\7f\8ai\9f\9dOqû\94'ï¬/ø\ f\ fc0\86¼\83\9f\9aâÈß°ðÀo\rã\15b\8f¡_µ÷x\8c\7fû\9e\9f}°/\8bC\9cü\93Óö6}l\18¯`ríë¼bÊõwá\8bÎïß³¶ôe\e¦\98öó\17Îÿx\1fË\10j\8fißcúÞiùÌ\87ûx\858Äì\9f¹×â÷¾¶¶/+Ã\\8b\aMe;\9bãññi?\7fïÀ3ú~F\97úñ]ÚÖ©_>ûþs¯íã\15üp\fûN1û³c\196´1\10\eäuå»N\1e\97å!_ánÆ2|}ÚÏÙ¹+7µïýº¼Nxå¹ýØ59ɪű!ûÉë\9c¿~q\1fã\91ëP·ûï&§ä±S>ÆÙñ\11OLí}6§äõíø^'¯\1d×\9eùÐ\90Sr\18¯pø4æb6od\99Æ\8d\9côÀE/ïã*âPï··eÏÕö\12Ï{lXVûö.mëüIyÿê¦ÿÔÇ\ÈIß\96\1dßÊì\9dò:ñCo¼\7fX6|/Lã\1cfçß<v:\ fgÇj\94i\9cʳ\ fÙòßú2?,Û0µù{\9e»ñÑaìDìÇ~k[ö+ò:î¾\9b>دMf\183c¦óuvNÏý¦kÅ'Þõ\9a\87ú²0´Á-»ÉayñT\7f·üØÏ-ôe¾m\ f\0ðÔ\18c©u\8eì\16o\1c4ܽf³¸Lþ,¤°t\9e/§ùß4&>åÐbó\93ksrù\98\8cü\89Ô Î5f<ê\ 4éFþÏÛRå¯@Öpú`KIÙÊ'\83üÃÛ\98uNvß\12y\15ùC\99²¦\15\vU>«±ËE¾à²,\90ϧ )Çb,:#XÐØuo³Õ\e\8b ³\9a×\92\92ßÝ\cÓ±\16Ý\9aìÐ\18k¼B<õ8¿Øò¸|Ù\96Ñ(wùNÝÝ\9ccrð:\9fyl Òª\rUþz\1a\8dûOQÓ\93i\1e5\9d\95¬jÈy0^ã\99u$\81Æàë\10
++\rA\97£o\93³G§3ÈË¿SvI¾\9c¥è]\eØPB\95¿\92r/ZuÀA\9f!^Cê³\86\95Ç*\95àt0DÒ¡\15¦\fÇ%Ï*\9e}\8b§o)Ó¤@¤¤³ÔZ\88ÉÌäí[>G\9bÜV\1aou®n¹\ 1óf§øó>n$\974üï\95rûE\93Ûø\83ì5 ÜûÅñ\r&j\9dIs0r÷-miqþ¸\124/]\94\86)ÿ\9dRÒq\10!¶9Ý\9ciqïYï¼å>Ò\9a\1a\8aT|hyò²Ó5Æ\10´\1aÒªa¾º\9e¯O\1aFÕ± ex\7fùø\96,\8dX\83öã\92Ü\87»\9aãnéX\15ëô\99£¸qκ]ŸÛ6H#H«¶:VC*·jH¾\96©F¶Ë\9b=*ßeýb\90ÚÕÁ\ 2I\9b\89¾?Ô\85\8e\970\9a\84OÏ\85ØbëS\957|Ô\90øªÏ\0:äÄɤ4ò\1aåt˦\9dâ²?:(;ËÓhöº\ar>ç\90ul\8c´\1d¯# ¢¶Â$\15X59 T\88¶Dýt\el£qø¾$ùLÐÌ\83c9j\11Fiئ5_m\rrNKã\f©\14\1dÙ\10¤È\97£n¥\8d7\90\1a-\9aºQïç£Ü0\16\13ä|¯QGMè &UÔó\aZÙ¼ÑF¯\95\1d\83ì½\(tä\86\1c\94\14V\91ZÖ\ fûÔ\ 6ï\14=ÿå|\90ÇFGYµÕ\81\a²j\1fwzþÿ\81ï;þç\97_\17ççî\9fîW\ fû\93O÷ñÿ&Éóê\1d{¯ü¼ýÄ4\9fýá;Â\9dýyÛÈû\17Lyë_ðíã\8enãð¥Læ\87qÍGZ>ÞþÉ}V~~>|\17ÏÏ=\ fÿF}ÿ[×¾¶\8dÏoûsÏ.Æío\9bÆ\99\9f·°Ú\ fó\v\fcåÍtÌ[î|Ë!ýÙs\1ck}ô´¿\17¿|xÞóÒâÛ²wì5þ&ò\97\1f{Óöþ\9cX\86y\ 2.Ûg×Ï\89·îfÌû\96©\9c7¿hã\97úï&Îöu.ΩpÆÂkÞ=äí7ò©ü6-ÜÚsìË9Ö×yå\92±ëÛ~§\8fO7uù\1c \17Ýtò_÷eµôg\9e÷·unÒgÖ/\1fýÎ>>=\ eãÓoÛ\9bg\17\0\0\0|/þFä\83<\7få$\8f\901\rϰ¥j\9e\ 1M\16/\ fÍ)ËC£v\ 6èï3^\1eM\8d<ÒÉÃ\85\rò ,\ f_Éé\ 3\98qY\13\ e¤þÜ.\8fyÉÉs\9cæA\90\aÁ\18\16·÷¿\9bç@\7f+²:8]\aò§%ÇÑ&\13°ýùD·£)\ fä^?ÉADyô6ò`©?·Ty4Ðl\10òrNǸ\87 ïx«éò\9dìHLò,*Ï`ò\ 4ì|Ò\ 4\ 2I\9eúì¦\ fyü] \98:n×hb|íïÑ=\rú+X.Iv²Ê\83¯¬I\9eV]KR\905\8d\82<ÄË3¶×\11ø5Ølbvr$\9aæ@\7f§
++¥NÇ3þ\9e2þ\86÷Ý\96\ 3`ùolR}Rèòh\9f¥\14b\94\8d\aÍ\ 4\90ô÷Å,Å¢¿Óh9»¨i?ô7\98¨mM\130xßrþK}\ 6}K\7fÒÊRhRE\9a\1cbé¼\ eÄÿ\ 3\0\0\0\0ðL°Øÿ\7f¸}Ö/,_ºçÜñ»\88ÿ\7f´ýn0\9bçÿê]äó¿¢õ\1d\9fª\9f¿ý\9aS{ÿ·öç_²\8bø\82ŸÜ\9dóù\1f5õO\9fÿ¶\1e\87\1f\9dæí¿jÚîá;~íìö~\89n\9c_àWuý\8f¿ºÍm\9f\82Kós\17ï"nÿ\1dí}\8d[>ðUû}§Å\v\18kVÏÝ0ÅôÎÆÆ\97)n÷?¾ì\8c\85!\96`\88\ f\7fÿ\14¿ÿù\ f\9fõµ\1eÿî\87\98å«§± ³q\ 6w´e+çò?¨mOc ¾uä ÷\ eËB\8f!¾cÍX\ e³qówMËÎ]¸½Ç\19¤\1cúöîY3í˽7ëõSR\8f%¸f7ñè\8bã\19fc\17îoÇ®ñ\10\17þðY=ƽÚ!þýÖ)~z6®áþV\aÛäuÆö\9fڣǪ\aÓã§/\9eæ\91\b{lzpXæú1ܸf\vñ/\9cú\95\1e\ f\11ÍÒ1
++Zf¯¿ñÜ;\87e¶¯sëT\7f³1îÇOñ\17³s\a\1cÛöeåø÷+w\13ã¾ujÛ\9fù¥\8d_Û9\8eý\82)¾ÿ´íïzE?ßJ\1aæ?X;nïõ\ f¿e¾Ï\1d0Æ{ôy+ôØÿö×7÷¸\8dbC_\16¦:\9a\9dW \8fk¹V^Ç\7fñ\93\1fíËò\10ã~ýÚÅï]÷Â\1e\eïr/ëG÷\19ÛËl\1cû\86é\1cýW«_»½/˾·Ý3§ú;éòc\1féó\89ä\16#\ 6\0ÀÿÈnæ#\9fú7W\98Ïü»*W¾FÆ»\16Ûmbξê\rÉ\14W¿sÌöØ¿ªS\ 3To²\1c\86\1c˰\1ec4\19½\97RÊ:\19¼\eâ±kAþ\9cëø\ 4+ǯ ÄC.Þ·\ e`Ý=íöÕ\ elY\144\88_\83«£\1cu²¿r\1fWSÛq\r~ný\8dA\8aA>,{ óG\9dÞ=i'§Ü\15\14ײǻÚ"´]Ô áM\b¡Ê\16å\ 3Ú\97,¥m\9c\ e~\90U¥¨\91Õ²î±oz¥>w'%\1c5Â?gísõö©Ê\91®qïBCÝS.eÌ»_eEm?t^\a\9bµ÷y§ö§Yû£î\83ïï\8f±óQ\e\8bl2í¢o^Ú£ì¦\8eÌ\90z\²¾\95bÿ¥l¥ÍdíÕ5-&_ã\rô\1eMg\887YÛ\8fAg×0p+%ª3\18h\9c@Lzô±ÊQI\99híVíA®Ú5.ÏGZbr
++\ 4íö\97vÍZ\83\ 1tMR4:nC6\9d\83\9c&:\18¥\rï°®®Z:?Ãòy3äcÙÚâÇã\:®@ný£\86¾ëz´Ò¢Iö\1fkl\80+=b@Î÷¢Ó\18È\7fj\98F\9b\12a\18-"\9f÷º3Úg¯\ 1\18Yç\1eÐÁ&^Z\8a©}SEw*É©-ç·4tiý\1a\90/Ç*\9fr:òf\17cBªñ}6\90Tu\94rðcy8\9d\1f¤ê°\13\1dÉ\93Æq\12N\1a\7fÖ10zß_¥ÁË\99b\8a\94T\8bE\90æ*\8dÔêêå¬É:\9aA\8eÅéH!¹\18I+\90=3r\ 2\14ý¤^Ú²\Öú8í\95Æ¡Ðÿ\ f\0\0\0\0À3Ábÿÿê\93\1e[»|éü0\8fû{åuÛg÷ÿ\9bÞç\98Âü\90«JûS×\9cð£\7fÔúñ²\99òäÍæÛ; õOÎöÃ\1f=õM¾dÇ¿kãùSvf~î\92ÖGª}\9dG<~Ö½ý}íç¿gÊ'·óøÿ3§Ü`;çÉÛ´\9bqþ\97-É1wnÏ#§\99/Ú²£§õ\9dúÛÛ\1e\18\96\ryÈ.Zò½w¿°÷±»Ôû\8b¿¾\9b~û¯O}Þû\7fxCÏ\ 1\10ìÐ\8f~û´ì\93W\9fqÇ\90Ónè\87íóÞkN´{þ`ý_õe)öuÞ<õ%ßøûç=Ô\97õü-«ç¶ï3®Ó¿dã\9d½ßÞ¸Þç½n\8a=8÷\8eS~§÷Û»Ú×yÌ\94×í\9c¯~ñ²¾lÌcpßô½\9f½ëÂ\97õ~ûPzÿôú¶½£äue8½Ç%Ô\94û:¯\9aÚËç>¾µ\vgbìûù\9eÝä\91»~*ëM\vo~ñ\90»m\88\13¸kÊ©0\9b×í\86¶\9f+÷£_?Å~lZxô·z\8e\ 3;ô]_5å\ 1ü\9b\8f¾éî¾,\ f¹ð®\98\96\9dò\8bçýe_Vl?¾÷µ}9R^oßë¤\9e·.Ç!¿Þ£S\9cÀl¿ý]Óù²á\8bëßÛûß{n\94ÕC\8cÊÊýï\ fí&ÿÜ\99Sÿûlþ¹\v¦ò<ná¼÷öeÕöýüÔº±Íÿ\eû\93\ f\ e¹5\87ü\81\9b\96|ï\9aµ}YÑi\\ 1\0À?£%sÁW\8df0\9a\9bI'j_5ô+÷¼\85.û\10w\91³ÏU\9b\93ͽ÷|Ì\ 1ø4ìcÞ©\ fÝkÒ>¹í\8b²\ 1ï¼1\8bcÂeýE\1fW\8a\86\ 1\8cy÷\9e\82ø\80\9eoQFbÈî\97Å\9c}+å\92lõ¡\99é\8c\1c\97\94\89\9bÆäÏö\1fkXDËhçB\fSl\8bæ}ÌZX¶æ\96/QÃD4\eeÔ<\8erSZ\8a\91\9d4Ú5.\85â4úDV Û\92ÿH:ìÜ\9aTå!B\8a®äv\vïô\1eßÙ\14\92¬ÜÉ}¦\97:\94\15¹b4\7f¤ÞBJ\ 5\ 6ÍÄh\9c&X\94\rH=ö¼\879UyFð\eZ\1fjÌ\92rÙu\1eJ«el£Ñþvïúw¢Ô\88´JÍ\8b7äh,òPä\8d\1c[ûm!:©åÂ3\1a\bPL\1db?\9c&ÅÔ,\83zÛ*íU\ e5Iý§\9eOÑÆ,5¦Y\105}·¼\174Ó@Ñ<\fÚ×\1f£\8eÞ\97jÖ\a\ 5í\90×d\8a\1a\ 4££ü¥-[MÔç5+\80|Jª?Hk7\9aå0\99\9c5"C\9aµ\94J\8bm\90"\95\86'¥¬m%É×´«ßjÿ}Ð$\9eF
++¾ê\81e\8d&Ò\1e}\r\12Ðæäcjå©É\1e¢mÑD\1a¾#û\96õtÒø\ 6ù¸Æ÷´RѸ'-QÙ®4ÔR\87X\93\99ܤ)ä¼R|\10ýÿ\0\0\0\0\0|ïãù\1f\0\0\0\0\80g\82ÅøÿÍ\9fxà³Ë\97ÎÏ}}\8aA>bÇɯêyï¼\9d\9f»z\17ùüökïÏ\8e\17¸\7f\8aSß9oߺ)FýYox~\9bG0WcVÏÝ7m÷ô\85Ë\7f¼çy\8b©Ç)ß³$.ú¸>·\9df\ fiË\1e\9fâö×\1fxâ\83Ã|Þ6SÑ\0\0\0\0ð=iÉ8\8b\95ò3ê°Öì\82É:@Ƨêt kû¬óöi8¾â)Ë ¸ôùÿº\97>ÿ«³Ïÿ\17LÏç¿{û\ fµçóà¢\9f\1fÆBëûë^ýì?mÏóÆ\94ùa¬úòqøãï\ 5\eåuè·®}mË«/ë\19ç\94×\81ÇoXxà·úï\v.ö1ÇGOsØ\9f·ð\17/îc÷}ècâo\9dæ\9bÿù\e6÷\9cû.\ e¿\ 1¼gú}àü\85\9f¾¼/\93\9ak˶·e+\8fÏ¿x:ÖÙ1ø[§u\9e»ptÏ#\90Ó\90Ëþ\98)\17úlîüK§|ç³9ðß?\95Õ7\ f8åËý7\ e?äãß·-{\9d¼v\{æC='½\1dÆ¡\9f9íË\19\vǾr\1c/ß¿wÑÞãö6ß²©ç²\ fÅ\ e¹å§ïmZØ»\8f'\8fÒäÛ²MÓ1\9cö¹?°}YN½\ÊTG³cé·ï5nïí\1f=½ÿÞ\92Ʋîãìu\9d\eï~îÇ\87ßi|ÿÞ\93Ó¼\ f³ãÞ·Lû9;F}Û\92eG\1fØÇ¡»\96\7f\0\0\0\0À\90SÞ8Íù.\ f\895V͸Ðß_)O\84<Õ¦dM¨Ög«ÓØ\9b\1cäQRS;\14/Ï \9a\ 5A\9eV5\13B\9bðB×éåqU\1eó4\9f¿fçÒIí}2>.}\ e_ú
++Qç\84(IGýWydÍqÕ\92|\ 1¦¶¹,¢Î\ 2¡\13B´\893ä¿{>\7fÙ#y\8enÓed3Î\ 5a«Û]®\81§"çÃÒ\1c\14»\9co¤æ6\eH\96§ý\18Ç÷L´Kruìj~\8e\10ÛÜ\1fδ¹$\92\1cajSsD\93tê\13M\95!oh~\ 2M \915\19@\88!è;:\9fF¬R±.&©Çì¥ú¢óI³s$-Py²óA\7f\10!þ\1f\0\0\0\0\80g\82ÅþÿO~é\1f\ e\¾tϹ-Ó|ä\97\1fü\13ojñùÅéûS\9fð;_tþñ?ß\86Uós«¦~ä\83þè\97Nì}è!ÍÏ\1dÕr\8bëÊ^ø\96ÿÝût\95÷§8\82c\8fú¡O\ fý¹n\8c;Ð\ë\97\1eýü?\er\91\9bù¹c¦Ïÿâk~¸\7fÞ\85<?ÌÓ®ýÐ\ fï8pG\8bSðY¶»nÊ\93¾s\9cÂuëÆ÷·}úÙ\7fÒæ\17°:\8fÀÍÓznß|ðßöãMòþ~ÓzÞøÚ\1fiûSÛ8\88\9egþz]ÿIßÿçíýXìê¹\83¦r8ë\vþÃ=®Áºåó¿ÿí{~öÁ¾,\ esÊ÷x\b\8dkøÃ\8fmìq\r&\r±\ 4÷µßj4^àÂ\17\9dß¿gí\90'ÿÑ©¯}ëçßZ\87y\ eL_Ös¾ÿ\9a¼N°Û¶÷eeÈõÿø\9añ{gßõÅ[z¬D\1aráï7ÍÁð3\ f_4ÌsÐҫʲW,\89±X>\aÂÕ¬V\8e±èãCV\9e¯àª¶ìtyýý\roüj[\96rèñ\ 2ÇNåò\99\97mèå\92Ã0'ÁEëÆý\9c\9d¯à\9e©\fç+¸líØÆfç$(Ó~¾þÒ\93z\1c\85ɶ\7fïài\9d\eî<í°\1e·a\87y#öoë<Y^¯<ääÇ\86\98\ e××9?Í;°ù\81×ýÊ\10Óaz\99ݵ$¦ãð>¦Å\ 5?Ì\8f°n<ö·\7fb[ß\17\97JÿÞ=k\16¿·åÀ\1e\vâjßÏK§y\afçUès\vü¤¼Ö\7fuÓ\7fêq"f8\86÷Mq7\9b\16níû\12ÂP\ f}~\ fm\83wݰ¡Ç{\84\1c{|ÉAëÆsg6öä²u\8bë\\1e{rÕÚÅeËçxز\9by\1c^1sóÂ1\1f\1eæq(=Fæ\82%Ëþkß^v¡\1fß¾Ó\1c\16³±'óÓ¾\1c·pÛ\87úuÊ\fq7\17\1dËóµ\ füáG\86e©¯óý»\99\8fáøi{ÿús÷¾´_ËÌp\8e\1d³Ïâöv\8eg\91zØÍ|\fë§öùï÷<v¡/\8b\85ù\18\0<ÓMùÅM칿åB\1dC2®çew9Ë_ÞbJ\90\e¡%qÁSߣ¶´~7ãåö2éäâò}¹\89©rGRu\1evï\ö1Ê=c.6\15cu\ 6ñ`c\92ÛZ\8d-v1ë=Oñ\9a¢Ü˶\9cöËéMP\8fç5Úói\8c5EÿÐ\90ç}Ì×ÿTõ_¶\þÙ×6±}Ñ,ôe\97}»í¯\8dò÷JJ%\ f\9f\9d\99c|\85¾Ò]åÊÏ©øU»Ééo\9dÜ\8cë\7fk
++w\9båh4ü:è\r«\8bU\8e»\14\9d\ ä\9a\93\86QWù²N\18/7\ 5rø¹öÙâ¥Ê5\8b{\8b\9dNR=Z¬E÷m4Î\ 6礼\Ô¬ï>é>\16Y{\92\9b\0\e¢µQW§iÜ£Ôºì¢\86`\87¤ÍHcÊ£®©F«¥©Aàò¬¡9ì¥\8eZöwÍÁ.û©µ¢¹åcÒcÔÎaÝ=\9d_A³ÙË=\9aìe±ÒÌdß\8cÜ\ 5ú¬s2È]¤F\9e×*;à5\92ÜTù¢v\1dËQi;\95Ý\95\1aó©H\ 5x\r{÷\91jÉ\14«w¶ÒzªT¥¬OÃߥ\8dÈê}\19êH\ 3ɽ\86¦·>i/ßðV\1eq\8c\14[_.;,ÿÔ§\119{\96Ô\7fõIÛ«ÕÚjÿ\8eQC\95s\95\93¢J«\1fç\96\88µJ\ 3*%õ\7fkL}ÖûJ98§\89í}ÕªÒy\ f´eË\9b½¶¤¾ôô\93Vï\92¬ÁÉaèûm\1dÅHËORÕ9é\11\e¿d\8e\85\95æ~¨AóâWZ;\8e\aÐxþ ÷öÒ"úsÈ
++ó
++HãÕÈ ¹\a\96\8a\1cö_JW÷)¶û¿±ýÖÔb\1e¤åéÃ\9e\9cZÃg¥(dõYûò\93 FG\ 3ÈvkØÅ\9c\ fí\9c\93¢oßM«_ÛX\92k\8a\9cÀFÏ[¹Ê\18mª¦Õs´FÏQ©Ï ROÕ\92¥5K]\e©s+M+ic\94}ðr\bF.YRm\81þ\7f\0\0\0\0\0\9e\19\16ûÿ×>ð¶ßZ¾t~î\9aÖwü;ò:ðï\ e;fèÇ\ eósWOó\81\1f±ãù[z\9fkóÃøó\väõÞ¯þà\1f¾\842?·~ê·\7fÖ_?ïÏz^\0\13WÏ=¾d\8cÿj?ô[\ f}Å\97L1\ 3ßÜë\9c\az?r\ eKç\93×ïm[8ü\ 3ÃXý¡¿ô\89¶\95û\91{_ªö\85ÿþsξ¿÷#ûa\8cÿ\86¶/¿.¯\13^yn\1f«¯\93\99¶e_\9föóÍ\vÛ?Ö\8f7Ça\füÔO>Ûÿ|PÛÏmò:cûOíÑû\83ÃÐ\87~Å4Oûg~iã×vîK}bI\1fìò>Ñ'\97ô\19.ï£Ü4Å/\9ctù±\8fôø\88l\r\r\1d\0\0\0ÿÌZ?sIÚóëÇy˽vÂû\1a\9c\ eâ.)ØÖÁêLÒ\1cg6\17]\1c5\81\96sÕ¹â\92ÓiÔ}ÑîO«1\v®\18\9d!ÝÕ\10åÎÝj\9f³«¥êÀp¹\v®±Í¦n\83\8e\1f\8fA×ìCt¦\96$\ f\1d¹\ 4Y[Òþ{\9dÉÝæ\14Æþà¢\9b·.ÄR´ÇYþÓi\8e5ù\9fÎå¨sÄ»Ö×*ÏF1È®h\8ftÖð\ 1o}\8dÅÔÞ¥-{(\e²QG\85ç`kJ^;©½±Ú\97\Cnýç²\1a9&?ô3O±,É$££ì\83\ 6¾\16íÇ®\9aÌ\ 56D\97¢\ fV\9e\1e²÷Fö®\ 49B\13¼N\ 3ßúòå)@#GLÍ1Ér)QÙï\16Å\12²kA\ 5®Í6/;§óÆg\9fµk¹õb§hÚ\10|ý\98\1cfÑ(\93\9c\\90º\90ç*¯\9dìÚ7¯a0ú Õâk\92Ó8\82ªÓÚ»êk«\13ßs\7fµyèkÌZÞÎiÏ´M)k8\8e\91RÕx\18\8df\90\83°Ù\ 4Ùv\b\1aÉ\125T§Ö,µÙ\ 6»Kqj¦=\rHðÚ&\82K\1aE!\ fl¹\ 5LÛ\92\92~Ä]Ä\9b<¥ýê-® É¡\84h4¢C\ e¿ÊG\8d\97&,5%\8f¾UÃkR\8b\8fpÒμÆôhéj®AiTÒªdï¤ùË®hFÀ¤M)J1I\8b©Y³\ 1´Ê.\9a¦AsùU\84Þ\125u`\96
++HQªDö\\1aH2ƶ¤sËs1Ðÿ\ f\0\0\0\0À÷>\9eÿ\ 1\0\0\0\0x&X\8cÿ\7fÍ\97Êß-_:?·ÿ\94_ì\88\1d'¿ªÇÿkÞ»;Zìú©ò:ðökNí±ò1ÏÏÝ<åTÛ9oß\15»ÈÛ·G[Ï\rò:ø\ewü}\e/`4oߣS^º\ 3ÿôÝ-7[\88:\8eà\1d-~\7fv|ÁUºê\96+ëà{\ fkù\ 5Sªòþ\8dÓüt;çó;¼íÏsuý¯Úï;=\9f\9f\95ý,m»Ëç)\9c\9f;¨½¯1þ\87>ùÐ9íý\9aËê¹ýÚû+çë{ÿ\94+m6_ßí»\99£ð\9aÕã±o¹ó-\87\fy÷\86ùý\ eX³ø½åy÷.\9bÊà´|f\1f¿à£íã\ 2VMyÍfÇKÜÚÖ¹rN¾\9eïíÝòzãW~ùwûX
++3\8c\97xh\9aÛð/?ö¦\9eW0\8dã\1e\1emßÓÊ:û¡½ßÙÇD¤!ÿá\rSÙßph\1f÷ i9úX\8a\83Ú±\1f%¯+Ãé÷öe)\ f¹
++§ñ ³9ùnnß[9ïÞû¦¼\89³ó,ÞØÊlåñ\19×\19\8f/ì±éÁaÙ°ÎKçÇö|É>ç|¶/«eé\1c\85+çùëã3ôüxý\8dçÞÙ\97EÛ·wÉÚ±-Íæù»\7fª¿3\16^ó\98^Öï\98òÒÍæùÛÒÊeå<\7f=7â;åuâ\87Þxÿ°¬öcØ>íËoܲeÈå\17s¯÷£§y+gs\0î1µùï¬;yaÈ×7\8cM¹}j\13³¹üÎlmé|=W>pÎ×\86\~Ãñݱϸη¾¸Ïõé²1½Mì?\95Ëæ\85Cú8\99ì}_v@[¶I^'|ùèwö<\7fÑôý¼~Ú\97\r\8f¼úùmY\1dϱ\8b§öùý\alëåR\9dïõpÇ\92ù'\97\8f½¹g79\0\17çú|ÿ-G?Ü\97µ)XvÊý8;ßåõ»\9cïR¾7µëåù\ 1\81ï\ 6-ï\94\8b¦å\83\92?U¶\ 4«©¿\8a\r1õ\H\1a×èmÒð_S\8dNÚlÿÉcrs\91?3.g¯yÝ4Ǩ|Ö¶\8c^Aþ\88&cR\8c\1a\88l5\80µêlÌ\1aøª©Ö|LÿH¹®ä/VJ\1a\8c[d\9dÃüROU~º1÷Ôâ|Ù5iج@\16ùaÛOÑ\9cT»\99ûKÊT\v^\9bI*ÒBì.òuí*\7f\9cüÕÐL½©ºÐó\1f\8f±Õ¾\ 4ïäÆF\83¨Ëbγ\9es®ÊÁ\84 ³qI5\97¢iæ\8c¦2\8b)§jjÕtr:5·\86ek\1e=ij²E\rwÖ,}RFºÇÚ\125Ñ\9c4Y9t©\8f°$ßÝJ9Àv\95»PZ\84\89²\99´B.±¥yö\96æ\ fÔ\13«Ç<»\JÏÓVª/Öç$g\87\rÁ\9a¢\91áÒ\12\8b´\18Ù´ÜôfÙ\8c¶y«éä\82ÆÆ\eù\94üïRå\ 4\v%j\13\90ÿ×ÃnaÓQSÈ9\9b«®A
++F*U\ 3\95K^g&×Xpk´\98e\97C\90ÍkPþ?O<øÎ¹Û¤\82t2öZ\92\86ÏKã\94¶h¤\9a5³\9eÎ\0îu¦x)ZY\83\94Z\91k\864÷"\a/'¶×Øl£ %¥ªt\83RµòÇ;\9bX嬩\9aUNn¸ôl\96V\9cc+h¹\98Èê[Ã\96í\ 4+'uÔ\13ÀhÊA\1d\95 \17:MÜhÛ9]ô¦,i\82¿\98\92^R²ßMî»§l®øVNr¶®%)Ôá\ 4zéÜ].IY\81\\9b\92\ 6 ·}^\9ac°\rå\90b\90ï8s\1dN½jI\1eA¯5¬íLsq\16\1d\93\90\96äéÔèû¤\97bM5¨×Ö\99¹\ 6õü4riÑ\ 2´\9aÞO+@Z\87\þK\95Ó2ëp\a9/¤Î¥\MÐ\99å¥\ e´Î¥(ôÒèô\f\97\ 6f´t¬æ\98,ò\ 5i¦zÉ\ fI®æ\9aë°è\95H¾P4ã¥\ e\1a1:úDêVþ\90´ki©zñ\95æ \8fwr!ÈòÇDZ\86ײ\92F(g¸^{\836$i7\9a6R.¨:\91¢\9c"RÒºÛQ/½QÇ\84ÈI¨c\ 5´½µ\v¡\97ö¨C
++ª´<ùc×Ï¥\94ätÖ\93T3GÊß\19?\8cµ©²®\1ct<CÔ\15ëµ\92þ\7f\0\0\0\0\0\9e \16ûÿ/ºþô\85åKÇ<t{\ eË\87¼wô1\ 1\0\0\0\0ð] ÅtÅ@ÿ?\0\0\0\0\0Ï\b\8býÿ7ýÃÙï]¾tϹ㧹æÞqØ\ 3Çõ1»IÞ\7fß4>ÿ=û\86×\rãùWÍ/\99Ïï\88\1d\17þD\1fóîâüÜ\ 5í}Í\17pèí×¼¾}>Dy\7f\8f6¾uvüÿ×§q½\87ï\bwöñÿÆÏÏݺ׸ÝÃÿó³Ú8áTL\98\9fÛ·}~v\9cÿ5m?\8fÒõÿñ\8fÜÞæ\1d´5ÏϽb\1a«»t>Âùa\1c²nä\97\7fþÐÇÛ8\7f\edý«¦q¸\87î0\9bÛûÉäÕs÷LûsÖ\17ü\87\87ù\11\87qîONs\14Î\8eñß:\95ßì\18ÿG§y\ 1gç=<vɼ\87\87~¤\8fÕ·¾\8f\93\9eoëüqy\9dü»g<<,«}lùõÓ:gÇø¯oǬc¡Ï\7fðü}Ú²\98\86qàÇ·ïm\90×\95ï:ù/û\18ÿ\9aû²÷ïf.Å\e[y<\97â\93Ó±\9f{Ç)¿ÓcJ\íÇ÷Ð\9aq_ÞðÕîìËü0öúø¶lå¼\ 1\8bq*ß|Ñ\90\87¡úÐ÷óö¶LÇÜ\7fîãÛ¾Ðó\ 6ÄØ\8fý¾}Æun\8aç=6\8c\9d\1f\8e½Ï}©mäÉ5ç~©/«ÃXïc¦¼\ f³ãã¿ÞÆÜ¯<>þ\92)§Àæ[6\rß+C¹\1c<\8dã?ãÑ\1fø\17ÃøøáØ?5Õûæ\85ÿúÂ>ÎÝ\85ÞÎÂ\94ãâo\7f}ó_÷qî6ô6qt[çµò:þ\8b\9füh_\96\87:Ú£Õ߯Èë¸ûnúà0\96}Xöø\9añØgDz?¾vlKÿjõk·÷qçy\18so¦ý<ná\9aµ}YÉ\81\v-\0ü³ÚÍX]\97|v6Ë\1f[k|ÕQær_åKÒqÞAg¤r:¬ÙT¹»ÑQÁ:RÖ\84\96® ä\9dÆ\98ïblîJù\vt,ªNªe½w:\87U\1eÆä\876\a´ÑI¬jû[Üdz\17\97k\92Û7Ù\1d\1dí\9dS6E\87ç&\97m¨Yo0\9cæW\90=36Ö`¼lKn?kmãp³æs(eÉØxÙh\96}\92\ 2)6\ fã§w9®Z?c\8dÎå%_\v;ÏsVkÐ é¢ìX\94ý\94=
++Z\92-9\82N\97¦)\11bÐì,:Ú;D/·\88Q6+û«Gnjj\13©éì^-g\80\14[\90\ f\e\9d¹NG\87W£Y\ 4ä\83Z^Ig¯ëé\1aäÖÚé ÷ Ç#[¬:ø]ö¯\846ÔÝéDw\9aI!ɺã\92ùä4\83@Ô\91Èã¼{Q\8eJ§<ÓéÞ¬\95íÉÞ$Ù¨÷ÑH\83©mÄp\90Z2:bÜT©D\97M¶:Ò_ÚCÖÁì:¤YK?¤\9c\83Î\84æ«Üؤ Y\0¢Õl>¶:\9dÚO*\k\>Ý&±«\9a\ fCÚ@\94:\94\ 2-Ã~>]ç\ 2lõ^5û\84\93²Í\9axÀÛ°d\99|XJW\ eÓµ¶\92KÎNî(C*EÛ¹ìu\90\83\8eZ:¥h:\11§é 4«\88´y©J=í\92ì\9eæ\1cÐ\84\15\9a\8e¤\9d_r$+äºèç\9e´âªÉ+¤A\ fsìe§Ù#b\b:ýÜX¦Ëæ[\9c¾ÿ]\98ÿàé<¿^Ñ\82ÐTaí\1a!ë\92]\88cÎ\96¨é+4ùJË·\90¤ñ\fé+äºØ\13\9f\14}·\15C\8c¡]H\93ìeÖsZÎ\16½zØ¢Y\1a¤L´\9d\95`\87:×Ó¾\9d½ò¡ÐÚ\85¦ (Úú¥½\14}"\9aò$HE\19úÿ\ 1\0\0\0\0xFXìÿ¿êûß»cùÒù¹W´>Bí[<âÛG|{Ès\1eæç\ e\98r±¿ð-\87\7f»÷\ fZ;?wéÔÏ|È7\7fìïZ¿½µS\9eÿÙþü\ 3¦~Æu¯~ö\9fêûÑ\982?wÇ´þóßöÒo´÷\9dwóC¿ùåò:öÞ\ 3þ¡çùw²þÛÖ\8dëyãk\7fäÏz>\7f\9d§àú\15ûóWÏ\99öùÖϼðÀoõ~{\17{_ù\93Óº¾uý\19\9féËòÐ\97\1c¦\9cÛ³9ýo]7\1eãù\vçö\1cû\9aà±-\9boǯ}Ðß:ò\84\9e×^\7f\emË^±÷¸\8f³ýý÷/Yç×ÖöeeèK¾yZ6\e\vð©vÜ+Ç\ 2\Úúo5ïû=\7f°þ¯ú²\14ûö\9e·×x|o}å\96¯\f±\0CÌÂÕmÙÊýýûMýö[\1fyÕ÷\róA\fùÛ÷\9dæ,8wáhß\97%Óûí¯\98â'¶Ü{Óº¾¬\fó'\1cÛ¾·\9f¼Îùë\17¿²/«C\7føüTG7}dS¯£bS/ÏõmÙÊs\ 1l\9fÚólNÿÇW\8fûyúÂå?Þ\97ÅÔë}ßV\9eÚW~üÝ'\ eó\ 4Ôan\85\8b§8\81Ù¹\0®[7Öûl¾ÿc[½¯\9cïÿSSÝ\9e±°åÀ\1e{àj/³ÞǾrNÿ'Ö\8cu;\9bÓÿÌé\{ë\91çÜÝã\vò\90Gÿê)\ 6d67ÿÁSÝnZxô·\86Üü±ooßéøþæ£oêëLy\88\91xbõXÖ³q [Ú±¯\1c\97°~:\1fîyîÆG{þ}\1fû:/"¾\0\0þÿô?Ñ\87iSñ!\95\96SÞyÓúϵ\8f=Ç\9cÜnrÓ\97\10tî\81Z³üwJ©õ\7fùÒûë\82IV;ãµ\a¸jo\9evV\85àѹ\ 2´/Oþ~'¹Î;oµ«¾uÀÊ\1fuÛn¾´çÜU\9dî ê\1c\0^³m\97Ô\12áË\92ÒÖ\15uö\13Í|í5Ͷ\19zz«i¹á\93u\1aT \e\18çSxzä\awú\ 1\17|Ö\9d·AJOoh¥ìZùÊ\16åNB{q5ìÒh/¡k©Ò]+\83\18u\86\ 5§9ÂKÒcÔ\ e?\r6\90\82\92½\96\e\8d¢]â.:Í\85/ÛÕÒ´:G\86öØJ\r%íÝv½Îå\10Zÿu\91»V\8dú¨¹ý[\8fËÊ\81æUCÌ\86Î\84àZߦV\9a\86(Zí\9bµ:\ 5Àª§t^\8aåùäwêÃÖ<ñ-NÃkl\83\19ûÁw;o\84æB\1f>#\aØBbR.Eçü¨Þ¶V¤¡%-¾ ö}øÇ\98Ëc§yO\\91R\88~ìÃÕÙ
++ô\ 4\88%ö<kOãX\88åñ\ 4Ó|\16Nc \8b\eËù»)>F«T\eKÕ\93Q¶-\17\bÝtÿß²\11«Å`ä\r9Xç«ì¹Î\ e£\81+ò\90QZ4\87^\0ô`dó²ë:\ 1\85FEHû\90\13Q[\8dkóÙhÄ\84\ 6\8aèÜ\fÒîõÊ©3`èù¯q5ÒþêXÎKçõX\1eOð¿\15·Eÿ?\0\0\0\0\0Ï\ 4\8býÿ[Ozë~Ë\97Î\ fý\82:nÿÀÛ¯9uè×Í«çÞÑÞ_¹\8f|K[¦ã\98·>ö\9cO\fý˾/»d\1a§ý\9beë0?x̽?ôâ)wÀÆ\85W}dè/\1cæb\7fÏ4×üò¾D\0\0\0\0\0\9e\ eZÎ\86Xk\ fô\bQ\13\\f1 I\1ea\97Æ¡ì*&ËÉ\13rÖÜ\ 5\1aæS\8b¦\10\bFã\ 6rõ.j\fH)VCP¼Y3txÍ)P\93\ f-Ç@°\9a-À\15ý¤oQ\0Ns\1aȺéÿ\a\0\0\0\0à\99`±ÿ\7fï\7f8ë\1dË\97ÎÏÝÖúÝu<ø_\1cwØ\7foãm}\9aòäk\7füÃ;\ eÜÑÆó{ÍÛ\7fG\e»;;>ÿýíýåyûWÏÝ°ÏøþY÷\9d|U\1f3oì06|Úö©¿½í\81a<ý0\96ù\8a¶>\8d?Øÿ Ó¾ÔÇÅËÿµe\97¶e+\8fµ?|Êã?;\9eþþ)¦á\93W\9fqG\8f[pÃ\98d3\8dI\9eÍ\9fßsÝkY\øÃg=<ä¥\1fÆ·\1f4\8dñ\9e\8dw8ª-;R^oßë¤>V;ÇaÜøÅ»\8cwX=w]û\9e\ e¼ÞðÈ«\9fßÇG\8fs\a\¿$\86âº\9e'¾ºÜ\97]3Å^Üòc?·ÐÇN\8fã÷\1f\9a¶wÒåÇ>ÒçsÈmü\ e\0\0\0\80g\8e%ýÔ«V\98\7fÀkb\85\145e½oY\ 4b\f9&Mô \19\a4%Fj\19%lÉE\93wdë\82³¥\8e9\ 3\96å]Ðôru\17s\1aèèö\96ò£å\1eÐ\8d%y~1¹\8dt\1fs:<Íò\8ch\ e\10ýR®¥M\80á\869NvÕ×/Û\93r+Å·î{Mèfz\ e\0Íh1Íß¡Ós\ 4S\9cÏe̱Pä¸\8dNé¢ ¸d÷õa¸åÅ\902Òåò\1dyz\96Õj\1e\b\1f¼\96)ýÿ\0\0\0\0\0<\13,öÿ¯þ\7fý««\96/\9d\9f;vê\13ÿÝÛ\7fè\8f[?¿\8b~ìçïùü\7fíì\96\9f¿D7?·}þWåuØã¯þ\ëç\ f.\8dùÿ5'À\11\8f\9fÕúä5â\98Ëü\ 2y\9düÂÍ\9fíùôÍ\90W}[ÛÆ òÚr÷\93=ÿ»\ fC^ü»vÓÇ¿~\8a\e\98Ía\7f×nrØooë<Q^'=ì¯éùØëûrû\94ãý;Gnë9Þe_z_ýUSÎüÙùÞo\9còÛ\9fö¹?°CÎõÔ÷¥Ly\12V\98ï}\8a7¸è¦\93{ÿ¿\8eüXµs\8eþ\7fc\7fòÁÞ\8f\1fZ®P\0\0\0\0»×úHuNõh\92Ngïz\7f«ó®d§ÁÎ!Ê\9bÞh"²ÖÿSD\18\1dW\1duN\b\93\9c\vÁhÞ÷Pd-9[\9dûA'¾×Ù\18bÕéØ5ἬA§ª\8fÑÉ×J
++&dÍ\ 3/\väÁIsàçÖ\95^t^wíc¯±è|\ 6¶Fﲯ\93¼¸Zm\9fkÃê;6æì²\89q<\8eìÍÓx¾\0gbÑí¥Þ\13]îFþC>'{¬ó6d§ó\0ÈWªîi5ÖHy\19Ù½ì´ß:iáë\16d\97[\9c´\1e«\1c\87<¦\951\7fÿJ1\ 5)x_rÒ©\0JÏ\85ï\83N.!ÿå\8avågy`«Þ\ 4)h)T©n\9d\12$èD\fAC\ eª«rزËò¹©}Èg²Ö^\95\ 5úÀÚêÄD»»¹#L\94\87¸¬i\0L«W\9dRDã³\93×OW\9d§BJ\ç\aÐx\ 4©÷¬\ 5Sd\17\92´Ð\10eÅÚç¯3$è\ 4\ 5±êAÉóµÕø\87\92CÖ\89\ fªÔ§\97\96 U¬s \ 4+ß\92\92\8cY\1akÑIIZ;\94½¦ÿ\1f\0\0\0\0\80g\86ÅþÿßøÒÏܲ|é\9esïÑ.ï6Öüò\83\7fâMÚ×\9c\8b[5?wÌ4Wú\11;ö;³\8fy¯~~îð©¿û°?ùôëZß´Iu~îÖöy\9dGàÐÛ¯y}{?Ä8?wc[¿ö¹¿àÛÇ\1dÝâ\b¬æ\v¸¸Í+®+;ÿm/ýF{ßy7?wl[\8fö}o=åÐþ~ôòùG×\8c\9fÿà¹\87}»½\9f¢¾?õ±/\8d;\98\9f; }^ǻ߾ùà¿íÇ¥ûY¦õüäYG´¼\ 6:ÙäüÜQí¸®×²8éûÿ¼½\1f\8b]=wÉ\94×à¬/ø\ f÷y\10¬ëq\b[§Ø\89\13\8fÜpw\8fm\buèß\9fÊï¼\85Õ¾/K®Ç\ 5¬oû 1
++'ØmÛû²Rû²\eæÇï\9d¿pþÇ{N\84P{\ÀºÕã¾\9c}×\17oéËÒ0Oû~m_V\8e¥8sÝX¦§å3{þ\ 2\1f\87\18\8c+¦\98\88ó\1eqf\88³\18ös¿iî÷Ù\18\8c\87¦<\ 4Û\16\ eÿÀ\90KÁ÷<\ 4OL¹\e~ïÀ3z¹D\97zN\84÷Ï\8fû2\e»ñõV\aï\96×\e¿òË¿Û\96%3Änô| \eäuå»Nþ˾¬æ\1e\9f1¿v,ÏÙ\98\8fUSþ\89-÷Þ´®/+©çY8¨\1dßsåuá\e¿6äuH=¯Ã\ 1«ÇcÿÜÇ·}¡Åg\98\18ûñÝ1åR\b{lêñ rðC~\86©þN_¸üÇû²\98ú~^Ö¶÷+ò:þî\13÷èËêP\ fO®\19ÏÃÍ\ f¼îW\86Ø\14ÓÛÒ\ 5S;;íòs>×\97\15Û\8fï\985ã²S\ fÚöÅ\1e·b\87un_;.ûèª7~¦/+Ãñ]Õ\96ý¤¼Ö\7fuÓ\7fê1-Æöº=~Íx\f\9b\16\1eú`_æã°\9fk\17\97ÝzS_\16B_ç+¦v6\e'cV\8fe¶ù\96M=OF\18\8f¡Çå¬\1c'sÙT\9e\e\17^÷\81\9e'Ã\99þ½-m\9d\9b´Ý\7fùèwöeqX¶~ÝX\9e³94ÚÛMüëÏÝûÒ\1e_c\86óhÿ½ÆëÿßóØ!\87F,ýØ\1f];.ûW«_»½/Ë>òG\ 6Ø1\1f²ö¦h7ÐnúP¦ù¾\8d+YûQl¬Á\ 4\9d¥]ÿ\82ǨÓ4\87jmÕ\99Òµë¨\14'\v\8cü=ðE.îUVkbÖ\8e0Mɬ30·à¹6·rÖ®$SdQ\19Æ\9cêTÑr\86Ëß\92\10C\9bÿ\ç\98.I{\89ª9ÇÅý×?Gòç?y\1d\e*G\12êÐWçª\ e-\rÚ\13\98b,:Æ´\98\9at\ eú,»Vk\91\1dÑôÎ9ÄÖÇ\17µCÐè0Í6ßµÎn\1dZ\1f¡ö:ÉÞùªs§\87q<¨,ÑyÕå`µ_²u[9\1dU*\97åd5ß\90-ú®vÔI é\8cñZ2¾f\9d\a[\8aWgÜ\96[\f£}\8f>:)Ú0ÎG^L\965¦èrÒ¾(ãǹ¿\93öd:;\8dg\95\ 2/ÃþH\8d$Y\85ÎE/\7fÛ¼OÚI)[\rZ_:zØÉ\1eë¡TYjdsr\98Ùfíg5ÑÈÛµX-\9b6}¶ :Ì×ù¬\83rå\ 6Ãè\81\16¹ùj]\86¾M(/\a\11´gOê&ç*U$ë\vEêØH!\1a_¦}\94\ 3tÅ\87áß\9a<[v.\95§ó\1cëÿ\bóÍKñ\94ØÆ\rG§%Tüb\9b\8dY\8aÒè\0ä,\8dnÕÊc²}ÖYÒ[³Ñ[\19=\17Ví®ozé8mY4&)΢5\1eb\1aûO½î\8b\19Çv?\1dç]÷mÚtíJ]5\8då\96êÖ\84êÒ\ 6\87ú\91\86§#Õu\87´?Yn¸µ5jDzvÎ\96\³\14\9c¬I{\95\9d¦i×\13!×^k¶´+PËã\9eäÜÒÓ[.\ fÚÖ\8c\96´ÓsGÚ\96&ê\92\13ßH\ 3rÉè.HÕë1Ø(\9b\8aVËÄk:xiX²NÙ))vY\93\14\9aÖJÕSÄ\18¯ç³^\ 5}N\1a¾\10\82´É\9a¥\99KÕH5Zm\1f>KÕIý;í\1f×\8b\96\9eEE¯ËÒ\96åúRäb#W¹¤©ì5U\9b\9eØr\1aI1U]\83\Ìlë\93\97Ê1{½\ e몴niÿ²>Ù¼\9e\10\9dÉ÷¥^åþPjt(O95t'´ ²\ 6\v´Nxmé¾È\7fi?¹|C\8eKC&ä\0\82î]ÕË\9f^q\8a¶\1a)\ f)?¹\9d\93\13Å^¯'íï\88n!Ë:åïG]õ\94Å)HÛI¾å'\90ëw»\16É\99áôZëÚ~Ik\96\9a\96K±´cýÛ"-@þðÉ &×ÂÖF´\85KkLr68\9d\0@
++^.\865ÊõY®\8d\1aFR\;VÝߪ§\Ò\f\ 3Ö,ùû´<Î\85þ\7f\0\0\0\0\0¾÷ñü\ f\0\0\0\0À3ÁbüÿÿçûÎùÙåKççöo±Åï\95×m\9fÝÿoú\1cu)ÌÏ\95\16\93;;/à\1d+ÆÛ¯\9e[?å\v<oá/^ÜcÚ}豸7쳸ly,üCKæëûéË{L{\1dâÁ7´eWÈë£/?õ¿õXñ\90z,î\13SL´¹zã\9d=\1eÜ\ f¹üú\98\0\rÖ=ûþs¯\1d\96Õ\1eß{Ð\14Ï\7fî\1d§üN[ÖC\ f§Xñ\95c¾o\9cb¾gã\97¯\9böåG\9es÷\90\ 3Ðôu>:Å6¿þá·Ì÷ò-¦Ç\9fo_2\97ßòØæ}Û²\95ã\97\8f\9fÊì¸\85\83>ÒÇ`Xßc°\17ãò\8f[8úÀ\1e£ìZ¬#\0\0\0\0´Øu\9b\93\8eÏÑ8úÿÁ|sÓ<\81¡xy¯VM¤\18\8b\ e\8c\88)÷15ÉÄ\9cjI1x\9dêN×\1as±:`ÉV\1dJjS®:\16I\87!h\9aC\e½fËËI#ä5\11_\eo\10mðÆ\97jLѱH:NÊË3\90\8ekСIÑÊ\eUöÏÖ1þ½\98R5Ñ¢l z¿âø®\9dç\18ÌIG\ eèÚkÖÁ6V\9fÀ\92\95'P\17u¤R,Ÿ \9fÓÁ\1fr¤Æêà\8d¨\83XbM:ìÂ\9a$\87\12³ó%kzG9Ú¢#\9bRÐ\81GÎe9\ 2y<\8bò¾\91G1Ùz\90\87Ѫ $½Ñq+:<ª\ 6×sR\96ì\87cÙÕ8´\95rYNy\11½\ e\b\91\ 3oeár¦ÿ\1f\0\0\0\0\80ï}<ÿ\ 3\0\0\0\0Àó?\0\0\0\0\0ø^°8þÿ\1fþM\1fë¿ÔüÜ{Ú|W7ÈëàoÜñ÷:^<\98\9cæ\87±÷³óöõñå:gÚ\81¯Úï;m\9e<cÍê¹Mm=:^ý\r\v\ füV\9f'ÏÅ>çÛú¶lOyýü\r\9b\17ú\18ÿhú\9ch7¶í¬<wÛu{\8fëÜúÈ«¾¯/\8bÃØùãÛ~üº¼Nxå¹}N»\9c\87ñøGMs\14ÎÎùve\9bûKÇêßô\91M\9féãÿmê¹\ 1.\9e¾·áÎÓ\ eëó³ÙaN´«w3w[Ùk\ç\93kÎýR\9fg\86¾ì¨½Çòúþ\ 3¶ÝßÇñ»an³+¦9Ê^³ý±=ûXý\10{¹l\9dæ!c®1\0\0\0|·ÒqåÖ%\9d¹3·9&m\8aOÓ¹\ 1m\b®îjþ8[]\1f£3~:gV\98{Ñë¤r^§ÃL9\ fsÄéà÷âuJÈìeQö9y\13\ÑÙ/\83\14\8b×¹Þd'\93\1c¸/%\97èL(:å¨\ eö\96}4:\81©<?D§G\17tZ9\13¥x\92\1cUIÁX\9d\19R\8a Ç6ñ\9f-ò}\97u\9e<Ù\8e\ e\8a/ÑÆ\9c\8cN7Ø&\v5mR=«ÓdÊÿ\92\82M: gLI¾\11s\9fÏN\87Ç\9b\90½Î\95©Ó\88æøTÍÏjSñ!É'\9eÆóuÊNÈ\ 3c\90çWm\8aR\aR(ÆË©
++¤ \19§y tF¿ ;!§êd\9dR\85:Ý`\8e^ç\19l\93\ 2F§µ ÿNRåòå\9ctZÅ ¹\12¤\0å\1cÐqÿ²w9Ê\ 1\1aM\15\90³´õXå\18åßÒ|u\1aB3ÌÉ)[Ñé\ 3u·tbEyP¶ôÿ\ 3\0\0\0\0ð\fÀó?\0\0\0\0\0<ÿ\ 3\0\0\0\0\80ï\ 5\8bãÿ\1fú£¿·|éüÜãm\9c¹Î\17\7fÄ\8e\v\7f¢\8d\87·.ÎÏíÛÆëÂ\17\9eøâ¿éãäk\9a\9f»¹\8dY?U^\87Þ~ÍëÛ¸ô\10åó\9fjãñuìü\81\7fúî/´<\ 21\94ù¹\83Ûú\7fU^\87=þêÏéû)8YÏ\1dmý\97ËëØ{\ fø\87ö~Òü\ 2ïhëù\ 1y\1dò\9d\17lÖ÷s®a~î¾i^ûCw\98ö~M&\8fù\ 3tìý·®?£\8fç79ô1ô\aL¹\ 5N°Û¶÷c+5¶e\17¯\e×wþÂù\1fï9 Bíù\ 3\ eÚkqÙO_Þ\97ÕÒ¿·j*\97·ì\7fþ\97Û2oKiËnÞkÜ÷\8f=ç\13mYH¾ïË]û\8cûi®Þxg[&\8bz\8e\80릲\9bÍWpIÛÏ£äue8ýÞ¶¬¦Ü÷å\89)¯Â·®ÝÚò*è\18\96\9e[à\8ei_N}ìå¯ìù
++¢ëù\18>Õ\8ea_y]ø\7fo»»-\vÙôcÿú>ãñ}æ\976~mX\16û²÷OusÆ£?ð/Ú²X\86\\ 6÷ï3®ó\94_<ï/Û²TlßÏçM¹!6<òêç÷\1c\b¦\98¶ì¢i{÷<wã£}\99\8f½\Î\9c¶÷Ú\aþð#\193äjØ>åGø÷{\1e»Ðó#Ä\128á\ 1\0\0þY\8có\91\97ܦ!×±öÑ%[tª÷j½\8b!8\9fäf.ê|ïEÇç\9bjC)Æ;×\86«G\9d\9fÝGo\9cË^\9e\fb0rÃl\83sA§\91\97å6Æ\5y\97\8eì\97¯Ç\18t\e.9_³|-Ö*\9fÕ\ 1ëÕè\ó>:\1dínKß¿¥óÀ÷ñì1Õ\92\8bÑ1íUg£÷zÃì²ÎRoru:\v»lA¶Vä(¼ÓtcÎ\15YK\8a\9a·«Ês\80ó9É65\91A¬9¹*Ï:V³\f\94\1cä©D6W\9cf\13ð:¦ÞË\13\87Õñâ²é\1c¼)!»Ú\86\95[×ÇÃ;£3Í»¢;\15K\1aÇyûÚò%xgõA§å\1e¨Æ:]í\92²75µuHÉë\0÷8ä%°1I!Dcsÿw¬A\87þg«\ 5à¼OÙe#Ç\19´\1cL\eN\1e}vE\1e;tÂz#åâ³\95G\ 2/{gäí*ÅáuÆ{#Å\1e\8a\94´\94\82Ñ4\ 2RÃZy%\16-)yÛkeJÅ\84"\15\165[\82\94¨¬)\87\92åûFVïË0Ͻ\8e\99o¹!´P£\8e\9cw)µ|\ 4FsEhÑj\96\ 4Ù\8cÔµ\rR[F
++8ëØ|M+!Ï\10NÓ6H{Ñ\81üVëL\1f\fCѼ\ eº{±j5ÊÿɳVk\b²¤´uEi\89Z\11Õ\aÙE3d\f¨F\e\9e¦ °ÉÉQF7ì§\1c¬´\r#¥%\e\1fÚ\96V\874ã1g@\ eÁÈáë\17KÎý=)Ò,ûî¥\82["¹]ä\9aÈR*²£I\1as\7fvÕÏéI5Ô³´y9\i°µø\96¯¡Ê¾Ê\99æÓ²çÿ\93®;ü%³Ïÿ=ÏܳõY÷â#¾Ñ\9f\9f½\9f\9fÛ¾f|&=è\8f~éÄþ,\eä¹ýø5ãs×\vÞ|È\13ý9ÖÊçׯ^ù÷\82£Ö\8eÏ\85kNøÑ?jÏiÙØù¹ëÛsílÞÁ\8b÷\19÷çá\1d\aîhï{}ÿæ5ãóóºW?ûO[>BcÊüÜû¦çÀóßöÒ¶ÿrb¹ù¹«ÛûÏÑgñS\ eíïK3\9e\9fÛoÝÊ¿G\1c½f|æ\7fÉ\8e\7f÷ùö~vf~î\98i»ÏzÃóÿ¸ý\1eQ\8d¼¿eõâï\11W´gè\12b^=wÛ\9añ\99ü\ f?¶±ç:\94JíÏò÷LËfó ¾gï]ÿæ°ßÚñ9øg\1e¾è\85ý7\acú³üÖ½§ß\ eî|Ë!òáÙú̶=ÍáxÞ#ÎôeÒ\ 2Û²£¦çõo\1dy½òÐ\9f¯\98\9eÉ¿¹×9\ fôe9ôïm\9d~ÇØÿÃ\eúï-Á\ e¿\ 1\1c5\95á¶\85Ã?Ð\97É5£-Ûcí¸Î\13ßÿ¦\a\87eÃï-Wµ²|§þ\ 6ð\aëÿjøÝ$öí]3åkü½\ 3Ïhå,WåÔ\8fýÒÕc\1d¿õ\95[¾Ò\97¥¡Ì\1eßgüÍáü\aÏßgXV{Yß0Õ©\7fÉð[\8cüÁèë¼f7ù(\1fÝg¬¿Ï¼lC¯?)\96^·OLÇ~îÂѾ/K¦ÿ.t|;vÍ\ 1¹þ_\1eß\7f3ʵö2Û:\1dÃ\86\8f¼¹\1fCé׿Õs\17LÛ»èúÓûöJ¿.¬\9e;xíx\9e\øÃgõü\97Õ\ eÛ;x͸½\e\ eí¿áȲÔ\97Ý:íç\9b\17Öøá÷$×\8fáê}vý[Ó¥»É\8dùþÕcy^²Ï9\9f\1drc\96^ÖÛ§örá\87Îiç\9b\a\87ý¼\7fÚ\973\16\ e¿©/\vC{9~º\ e\ü\v§~¥/\93?Z½½ì³ø½×¼»/+C^Ðþ\e\9c\1eû¦xÞc=\17g\1cêýÉ©Þgót^±÷X\ fwݰáÁ\9d\7f÷ºdú½ìo>ú¦þ{YÊÃ÷¶¶z¸V^Ç\7fñ\93\1fmËJ\1eÚË]m_4gèq÷ÝôÁñ÷«¾ì\8ei_>\7fÕ[¿Ô\97ùØë}Ëôûãq\v׬í¿mÉ\r\ 4·\95ÀÓáÙfù=t\7f/·\9cTz5\95Ç\93`b¿\87\97\eüv\17\99m¨-O\95ÞÄõ\9cgQó\86¹"ë\92Ë^Ö\9bN«_Ó\8e\90\94\8cÕ;}Y«\IåqIn-åöZ\9f|\KÁåÚ½«<óhÆà$ë*IïMÛ}¼f\8bò\9aV*ÊeXSbé#\80|Cî\99õ.XïN\93f\12\93û\92¤ÙZ.3¹Ë\96Ç©Ô\1e¡ôÁ"ËWÆcë÷«²7í^V\1e\9bô7úáY#Ê\9fj'\8fKEs\9fé\83\89>¥É]\86õEþK\9f\9däiJî\\9dÕ§$¹ù\96;åª\8fu©¥\1e\93ç\r}6\f²sF\1füú½q
++íþVn\1ej\1d¶/\7f\18B/·\10ê\92\1cló\82Üü\9b¬¹Ä\92YR'S\ e7)Q¹Ö×0Ô\9f<fÈó\9fÜÒËJó\90{Ìh:°$\7fë\8d\÷õ\99\7fÖK5WM\94¦Ob\1cävÇkeÉs\80Þ»»ÒÊI\9eù\82&"Ó'¡¨\8f\19Iþ\80Èm¸&dÓ\94j^«%j\8aº¢\99ØôÉTÞ\95\82³úL$\7f»¥Þ5é\9df\ 2Ó\12\94µe©Üb4c\99fn\93]Ð$uò\98&·ÿI³\96i&8Y\89\1cuÕ<rR.²Eù\80\1c\98ÕlnÚ*\9c&8Ó\aey,Ëí^åiú¬kõ\99ñ»4G^k'¾\9dÅòPéôaW\8aeÕ.ó\0j\8b\90§_\93Çß"\92Ñ\ 3\90*\92gÎj}¨CN7=\9dål\97SÝèC³<\90öÜ{Q?eZíË'¤mHËIU\1f1µµÊÑê5!è#º<6êo#R|z ª\9aËÎés°Ü\80J3β#AöKÚ\8dì¶\,ô\19ÀFÍP§;TûSvÑ,uúiiEU/bÒD\93|&h\8b)c\9b\92s&É=¯l*¦)O¢¬VÎ\ 5ÙÝ\1cÇsRÛ[\967¤ ¥¢gÕp¬OÓ|\7fY讦,\8dý&\13\8clQÎ\ 4i\97z?\1eÆg|Y]«ïØ®Sr\9d\8fz!\95\96Õ
++Ò\8dÏîrlZ\82ÞÿãýN&\8d6èµ9×ÔÚGÑÆ/%a\88ÿ\a\0\0\0\0à{\1fÏÿ\0\0\0\0\0<\13,Æÿß}ϵ\9fZ¾t~îâ)~ü\88ÿ²Ï}}L·ÆÕ\87)\ 6ü\90oþØßµ8|kóü\921îG<~Ö½=N^ãíomëÙ(¯C¿uíkÛø|\17ýê¹-\8bñâ×\8eãóÍ\10/~ô4îý¬/ø\ f÷eÖ\r1Åm}\1a¿ý\86\85\a~«/sq\88y\9fÆ½ÏÆØ¿b\8aSÞúù·Ö>æ?\rqÃ}LüÊqægNy\ 4fÇçß<-\9b\8d\17¿`ÚÞìØýmS\fól\8cöûÖ\8dß\9b\8d§¾z\8aEþæ\ 1§|¹/ó¡ÇE÷xx\8d)>þî\13÷\18bmßÏ\v¦ý\9c\8dÃ~ÏT\9e\9b\1fxݯ\8cqؽ\1e6Lß\9b\8dÑÞ:-ûÎ\91Ûú:}\18ò+¼c\1aC0\e\17}ü4.ã¢\9bNþ뾬\96\1eû|õ4æäo\7f}s_V¤&z¹´u¾Y^gl·×õenh\13ïX\8cAÿâú÷öe=ÎJÚËnr\f\1c°\9b<\ 2gî5\1eßl\1cö\86i\fÁk¶?¶g\8fÃ\ e:ì\a\0\0\0ÿ\vv\11\13ïÛ\98v«Ã \82Ü\[\1d\19â]îÿ;É=®\86f\ey#'\9dxÝT§QÓ\1a\80.7Ç\1a\r\9e\8a¼\9ft\80\85³m0zÖ1\ 1Æz#\1f\89Yc§5S@ÐÑ\ 1QG\8aX£ñÖ:b!\97àtÜ\8dÆÇWoë\18û]\83\ e\9cÔÑâòì3ÆêG[å\86´\8cc)Æñ(ãø\94\95ÆpËZ£3\1a£®#QVÍä\1fpµ\84¨3»ç¬Ù\r¼\1dÇ©è\98\19\eMÒ¡\r: åi4^h\8c9\1fÇ¢K y³d\\93®_nÏs°qʹ \ 1íR©hyÅ\9aõÖÞ´2Õ\11*:XÅ\96Ð\86b¸\9dÆ\ 1I\15ÊÁ¥6\94FJCCðuX\89¼¡û®\83M¤RõÈBÐwtüK¬Rà.¦Pe¿j²QÚ\86\8edÑæ¢Ã;|Èe7ã÷5å\82\94ý°ßÙiéj©JË\eê½Z\97´lÛ±ëÞìf\fÑòq\10²\13R/Ú\8a¼oÙ+\92Æÿ{©D\17\8c´àÚÆáøTµAkº\81¢'\8b\91útEGzÈ\ 3\8aÓÜ\ 6Y\ eOÊÔkݦÐv¯\15¿\9c9&é\80Xúÿ\ 1\0\0\0\0øÞÇó?\0\0\0\0\0Ï\ 4\8bñÿ\87ü\1f\9b~iùÒù¹{¦\Ú/ÝñÉWõøçPW\ fóí\1c\7fÿõÝä\87\7fhÊYþ\9be\98\93N\83;¨\b\0\0\0\0\0þ\97\8ds¢,\19C\91\8a\r3ó\v,}þÿÚï\97¿\9d}þ¿=¯ëXó\83ï=ìÛm<\7fªeõܧv3nÿþÅe\a\9dö¥þüo}\1fO}ã´ló\8b6öe:±ÂªÅyîõ7\85Ó¶¿ë\15Ãüñüd\ fMû±þÀ\13\1f\1cæ\81oóë\0\0\0\0\0ð=öL\1fsÈÎ\98\96\13Âæ`ê\92Ü\ 2)¸ÜòWجSR\ 6\93\87¹Rmmù'tbѬok\92 M\1d \13F\13ÿ\ f\0\0\0\0À3Ábÿÿ\96\13\7fì%Ë\97î9w{û}@sª¿gßðº\16ÿïªù¹=ZÞw\1d\17pÄ\8e\93_Õûÿ½\9d\9f»¬½\7fª¼\ e¼ý\9aS{¾û\98çç¶·÷\7fU^\87=þê\96C>\ 5\97æçn^;®çÐ\1d§\7f^ß/Ù×Õs\17·þþËäµùC'|v\18_`{^ùMí;+ç÷¿fí¸¿gßõÅ[Ú2\97b\8f=x¼\1d\8bæyÿ\99\87/za\8fK0¦\8fY¸µ-Ó¸\84O^}Æ\1d=÷¿K=\1f}\9f\ 3AÇ3\9cøþ7=8,«}ÙûÖ\8eëÜúØs>1Ì\19àû~nk¹ø\7fM^¿ÿ\9c³ïïeá\87uÞ?\95ë¹w\9cò;mYqµ\8f\91\98oÛÛ¶JsÜÿÔ\90Ã?\fûù\9eµã~Îæð\9foËN\94×I\ fûk\86<ýÃ\1c\ 5[Ö\8eÇð\99_Úøµ¶,äØ÷墶lå|û{´ü÷+çÛÿTûÞµò:þ\8b\9füh_\96\87ãëó\1eè<\ 4ÇÝwÓ\aÇ\9cúÃö¦¶sÜÂyïí˪%o>\0\0ø\9fÕr\8b'¯}bAþ\87\8b&'\97j\1dòÆ»js\92{P/÷4yÈ·-·ªÅj\1apãMÐÁ§ÿÌ{¹{q5é2S\8dõr#g\8bü\97+¥\1a\97å\86©Êç]Ötï^×grÐdîASµWWM¶r[\985wwÏÅ>æ|o\8b4\99w\1a÷iå|îcnt'««=Éx\88¥ç\1cw9kBpSä Ë\90w¼å\19¯UnFå\8bÉÙèB IöS6Õ\92¡Ë[^S GM{_B°)Doå])\ e+\a¢yÍkj\89ôåf·È\87\92¬-\aù°)\9a(=E=tM|oM\94;T¹Í\ eÎé\12ù~ÔÂ2!\84*[¬zÿ¯;\1d\8cf\8f\97;Ö\944k»Ü\fç1\17¾\95g\aÙ#Ù\84)Iþ?XÝo)mÍb\1el.º8ê$Xº\r§Yû«&A\97\92\96rÒüø®\98Tõî;Ä,å&Å$\1fÑ=-R¦F« ÖuÓA\8eY×ìC\94Ê,I\1aF.AC\8d\8bN\14P¥>r\1aóøÿ\93å[o¹ì}\95Ç\8eV\82²\13R¾º\ 6)d5V«ù÷\83æó¯N
++ªÆ"%(GWu\9f\9d49\97«´2igR\9aIZPÖ¶\¥¡JyÚ(ÿ'õ%krZÌ®¤$mU>\13\15ÈI¡Õ\9cä3A÷¶¤Åvä´Êd\ 3Òà\8a\1cX\92ÿ\94\ 6\144·¿\93\1aÔ9\0\9c4\e-f\e\83TG\94\15H\1d$\8dí\96\9d\94vä¢N\83 \87+E\18³Î\89\10¤èd\83E\9a\9a\9cO²\ ei)Ãöt¦\83$û]\87¶ï¤±d©|«1ßµxÙT0:\aCÖ"ÕöQ\8a´ü$\15T³\96\8cì\9b\vU\13õÇ ç\89\9cÌ)º¢\9f\94¢3YJQ\8ey<ߣ¬2ëé¤E,å&MÇi h½fÝ/+-JÛ»lC¾\9fåÀ\9cÖrLQçôª^ÛCÖ³G' \88U/\14ò|h5\87\7f\91*Ð\93B\1eÃtf\aYµ®I\9a²|K\9aIÌr\19(!ËE@ÊX\16ôëM\9bGA?ª\ 5,u,Õ*Ç®e\9d¤\8c\8b\9cÎÒ(¥\9e²T¯Ô|rmÇ¢nBªCÛ¤Ô\96´\9d¬\95ÕÚ»4aHÁÊ\9e§h\8a¶åhbÐÀ\0©\17-2]\91Ñ\vZѪ¥ÿ\1f\0\0\0\0\80g\82ÅþÿÿçU\7fwÚò¥ós\97Lãîÿâ¸Ãþ{ë«õ)Î/\19ÿÿ»·ÿÐ\1fëûÁE??wÇ4§ýÃ;\ eÜÑÞ÷9Í\ fã÷\9f+¯\ 3_µßwôýj¬Y=wõ´\9eÿë\85§ÿ·Ö\ fn}îýË=\1f\80ö\91o¹ó-\87\fýõÃ\9cí·Mß\9bí¯ß·-[¹ÿü}SnÂO¼ë5\ f\rù\f\13ù\a\ 1\0\0\0à\99å\9f8\ e¢\16ù\8c)©8\97rh\91#Ã\98}\ro©u\8aWrÑ\84\16?\13R²9Åâc{fÕ÷ª\89vI\f\94«1:YA\96\95k\10\88\8bãçd%\1a` \81\fEÿ\91,ãÿ\ 1\0\0\0\0x\ 6àù\1f\0\0\0\0\0\9eÿ\ 1\0\0\0\0À÷\82ÅñÿW¿}ÏÿcùÒù¹çµ<îï\95×m\9fÝÿoÚXú\9cÂüÜ\13m\1c½æp\7fé\8eO¾j\18G_ç\87±÷:.ÿ\17_óÃ\9f\1eæ\vÈósëö\1aßß9_À±ëÆõ¼dÇÏÝÙæ\ 5\88ÎÎÏí·×øþ¡;Ìæ\96/ \99¼zn~zÿü\85ó?Þóû\87!\17ÿmû,.ûéËû²ZzNý[§eÛ\16\ eýHÏ\17`}Ïq\7f[[ç\15òúèËOí9\bbH=oþ×ÛþiÞ\82\e\ eíyómµ©´e×´ïé<\ 4ß|Ñ0\ fAõa\98£ }ïÿ\94×I\8f\1eöÎVn¦\ eó\ 2\ß¾§9\12Â\1e\9b\1e\1cò\13¸\9e×à\9ei?O_¸üÇû²\98ú÷.iyó5§þñw\9f8ä5¨¶ïgÏ©¿ò¼\0ÛÛ:÷\95×ëo<÷Î>/@´=\1fÂ}S}}çÈmý{>\fǰaïñø~ã\96-\v}Î\80\98{Y?>íç¦\85½Û\
++.:׿wôºñ{¿Y¶öïÅ\98ûönoßÓ\ f\9c¶ý]¯èËÊP\9egî=îç)¿xÞ_¶e©Ø^\7fÏkß[y®\81ã×\8dëÜðÈ«\9fß\96Õ1OÄ\ 5Ó\\ 3\e\17®ëûY]îË\9e\9c\8eá¸\85Û>4ÌQ\10\ 2\17\ 5\0\0\80Ýjùóm\18óÈ[\9d\fÁÕ6G¹Ó)»lÑ\94ö^'%O!U«iÉ«IÞÉ\r}ÊÉ\ 4WÎ\ 3`|r%yÍÄn5Á}vQî6]°Ég#·²En»½Õ\19ÐmÑé\väî]g>\b!\97\94\82N)Pä_\9a¢ßɺ]©U\87qÛ*kpIn½]ðmlµ¬Yîà£KV\87Ië´\ eqÚ÷a,uÏ\19\9få°²fh·5ë\88në\8a3IÜÎ\1a¹1-ÅÈÊMv\9a-Þ;cK\90\95Õª ã\93¦õ·&Õ$·¾Î\97,\87%;X4±»\95rÈ:è;\e¯3 DyßxÙ\1dME¦\19ñ«\96\97\8b²EÙ\80\1cdÛ\9flLÛ\7f-.-£\12\92Î"a\871â.hÎ|)9Ù\93\12eOdÃ)÷ù\15\92\899Õ\92b\90âÕ½Ð9Ùä\0¬¦Í\ f>J\19gÙQÍ\86ïu\16yk£×,ù9µ¬òN\9ejä`¤\10\82\97=®Æ\14-\95 ó!È}¶¼\1d¢N\aaå\8dª³\83µyée\ fÛ\9cõ.%Y\10}-Þ\ fe;Îs!ÿ\9dô`´È4s}ñm*\8aþ¿¥¤NÕ`ä\r--_\8dܹKAêÄ\ 5Îz\9d\1d"\15\9d¦A'·Ð\86fjÖQùÙXoä#R~:tß&+mÆI\99F\9d²C\ eËiÖþ\4e~Ò©-r\95r\eç\82\90f\15ÃwÙ¼\1aã+êÙaL;÷ú¼(Ù÷r6IÏ\8b \8fÐ~Éçwzþ?ç?\7fõ¾Ùçÿkv1ÏßúöÌ5;Ïß%Sþ¿#¾}Ä·\87çÐ0?·uÊåwØ\9f|ºÏ#('ÇüÜ\ 5kV~þïÏ\90ú ü\93g\1dÑò\bj\ 1Î\ fóß-ÿ]`~\9f:\ fß¡O>tN{¿æ²zn\8föù\95ç\11¼kÊmxêoo{ ÿ^àj_vÙ4?ßì<\82\17MËfó\12öy\ 4\8f\92×Å/ßô\99¾,\98¾lë^ãöNËg>Ü\97Åáùý\865ãñÎÎ1x}+\8bwÊë\9e?XÿWÃ\1c\83qx.Þ{׿]ì7Õݹ\vGû^GÉôgí+Z¹|T^g~æ\93qX6üÎpÏÞãñÍÎMøè>c9\9fóÕ/^Ö\97\95Ø\7fG¹cÚÞ\19\v¯ywÿ\9d¡\98¾ìÑé÷\89Ó.?çsÃ2;ü\96°÷ø\e˦xÞcý7\888ÔÃñ{-þÎðÐ\aûo\10rÁjË®\3\96ç]7lxpç9\roÝ{׿3|jÚÏÍ\v\87¼¸ÿ¦å}?¾\9e\1fòHy½}¯\93îïËâð;J\99êï\v\1fÙðåa\9eÄáØïZò;Ãë>0Ì\93hú¾¬këÜ$¯\13¾|tÿ-Hç²iËÖï5\96õ\86/®\7fo_&\97\9e¶ìÒ]Ρ\b\0ÀwÙ³âª]ä±Zi~»6WWöò(e5I\96Ü,\97U+Í\1d&·Ôò\8c¥\93pùPå®;és\8a<\ 3éí¹Ü¨'[¬>\ 5È
++ä\ 1Rîçå¾\Ö \ fvò ðt\99\8bk\9c\87M\9eÜ\8c¦\v«ºQ90y\1cô:M\9cÜJ\15yömÝHV\1f7²ÜÌËc\81<fhOO{HHY\8e_n\94å\1e"éC\90¯ò\14\94\8c\14M\92Cª:\9eÕçg}º¬UÖW|\9b#.êT\87²\976\19¹»·ZÒ9è¤y)Èפ\92ô¹[\9eìåØeïå>Q·)·Eã3SÒçA}rYõ\94Ïå&{«\8fÙ²+¡èc£>ÃI=I\99Y}|\92-Ë\93_\bE\9e9¥6¬>¸Ú¢uùÙ¢<ê\ 6\9d_OwL\1f\9e娬>È\19Ù\95(÷÷µ´¶ \ f|z@ú\v\82<Pj³0Ò<¥j\93Î\1cØ\9eÇõ_ú#\82Ô±>fÙ\96D|\9c\931ËÓ¦Ñ{<m\0C\19éã³<´ë\94\81:½vLæé=\1fàÓì÷\84ö»\81\9c\17ENuÙ\8c~sÕ®\9e{w5ï§ìAh¹ò´Ú¥UH\930U\9a\8aìOì¿]U)NyîÎzNÄ"OöN\13úIÃIrÀ¦Ö"G«Í:\87Ø®GQ¯/z2ûÖ\ 2´=è\f\97F«X¶e½ì°4è!/\9f5AK(\8fó\80J#\rz½±ú\83\82ì\90\19ç\ 1Õ\1fx¤5ÊIéÛ\8c\96Òn³NE(Õ%m^.P:Q¡\9c2r\fÒX«þ6\15ô\876?~_öV*Æ·SJ;º{[\93ý,:E¡\9ccR½\85ø\7f\0\0\0\0\0\9e\19\16ûÿÿ¯òó\ f._ºçܦ)Fú\1d\87=p\ïGM«æç.hïÏ\8e\vØ¿õ\83^ ˾ú\83·¶8ÿ\12Êê¹ãÛçµÓùìûϽ¶õ\ek¬Ï*íç<¨-ÓxñϼlC\8f£ÏaèW}O[߯Ëë\84W\9eÛûÌs\1eú\8d÷\98ú\8dgcó\8f\9döû\8c\85c_9ô)\ f}ôgNñðÏ>dË\7fëÇä\87±\0\87Oñé\9b\16\1eý\1e\83n\87~ÿ2Å0l¼û¹\1fï}µÁ\17\1a\11\0\0\0\80ï\12»\19\13aK\8dÙi¤¼\vF#D\92\ 6\8f\18\93\9d3Ŧl¼7%ÛlB\8a&\ 4¯\11ê\1a¾SkÖ\8e{ùXÐ\98\80¨áì\1a6\1e£NÒn´w?k¨~JÉ\96\94Z`{lq#I»Ä£ÑIêª\r:LÄø\\\8a\1a&P5\9c"µ9í\
++Æ»Ô\ 2\ÚØ\8cä\\vÅ\89r\ 4N¾\1c\9d×H\a«1\vI¾\9c\93:+^\94£©Ök<\89¼\17\86\19ýt¨EÎI¶S\8blÃD\r\957Ö\9a\1eo¤Á\f=F©!¹\16·\11JlQûR\ eC\fSû¬l,Zï\17ÇÃèC©%¤\1c\9enãJèÿ\a\0\0\0\0à{\1fÏÿ\0\0\0\0\0ðü\ f\0\0\0\0\0¾\17,\8eÿ\7fß\9dw\9d°|éüܪ)¯ùKwìû\86\96\83¼Ú<?÷õ\96\9b\ÿã\90oþØßµqþVß\7fÞ\94S\7fë)\87~Cß\8fÑËûóm=¿*¯Ã\1e\7fuËÿ\9e\82KóC^\0Í'\7fÈw^Ðòùç¬ó\ 5\98i^ºgýõóþLß/ÕÄÕs[Úû¿&¯\13ì¶ímÌ¿\8eRYÕæs\9böõü\85s?0äó·}ìþ\93Kæ\ 6\>o`\1fׯy\ 4ÖÿËã¿Üs\fÔ\9aÛ²+÷\1e\8fóõ\97\9eÔç²Ó\94°mY\9fsàuòÚqí\99\ fõ\9cö6ôÜô«¦r\98ÍM¿Ç´\9fÇ-\1cô\91\9e×Ý\92G\0\0\0\0À?ª6\1e½\14c£·Ã\1c\eÓ8u\13S-Y³Õ\9b6ï\86Î\9d¡sek\16\7f\93«N\1dQCÔ¹ëJ\9bþBÓ°9W¼ÑÄô:4]Vé|Ö\99ðtB¿XsÒ)\a\92ÕÙöJ\ e:=GE'ÍÈ\9a
++@g<\bVÇô˦sð¦\84ìj\eúo]\1dò\12xÙ®N9°jÈßoS²F\aðk\ 2ÿ\18L\ e¡ê\14\82¾È¾è$yÅ9_\8a\97C±:y¸N^!\8fk5e\9dùO'ÍÐÿLÆ/\99óq\17s\8c$£Ó&$ïJÕ\19\1aB-Ã<%É\956\ f£ì\84ÎþW\9dMÕê\8c\93C\8e\80\10tò\866\93HÎí;±J\19\946×DL²,e\975\vBв6:»\88\97\87dWt>\12otp¾\97\ 3\94ÇEï\8cf\ 4\90b³:\aA\9bâÐhÞ\ 1/%md±\95c\91½O%\16\ry[þS\8fQ§5\90/G«\8fÓò\bîsÐÙC\8c\91Õû2ÌÓ±ÓóÿÑ_ùÿ~röùÿ\82]Ìó·mÝÊ¿\vÜÜ\9emO\96×å\v\87ýmû]@\ e~~îÖi\1e·ÃwüÚÙíw\81\12Ýü\92Ü\7f\ f\9cö£;úó\7f\ e«ç\ e\9eæ\9eÿ\8f/;£ç\ 4´Rlíùùâ½vý\9c\7fÝô¼þͽÎésúÉ¡÷ß\ankß;]^\7f\7fÃ\e¿Ús\10J±´e7ï5þÞà_²ñÎ~\9cÆõyØö\9bò\ 5¾í\ 5Ã\9c~Y\9a}[vÙ4ÏÜÖG^õ}Cù\fsÞ\1dÓ¾w½¼^^6Þ7̱çz\ e»Zù\9c×ðöuã¾Üô\91a{Ŧ~|\97´ý<J^W\86Óïí9\ fSîûòÄT\96ߺvëð[\85\ fýw\fÓöó\14yý[{ö£}^Æh\96æ5Ôã{ý\8dçÞÙ\7fÇ\88¶\1fûb>ÄÙyô¶í5.ÛðÈ«\9fß\96Õq\1eÄ÷M¹\19¿ÿ\80m}\1e½*m\96K0\0\0À3éÙó©\9e\ePg'|:ç\91³òt'ÏÔÓ<u:\9b}q:I^Ð]±E§Ê«:µd\90ã\96o¦¨óå\15\9dÇÞèÄoEvV3ëéÃ`\9b\830ä<\96kÒ§ê\14äi8Ey<©úYùo\9dUN3ÀµgC\9d\81N§¡s&ȳnѹ\14³ÎJ©3ÖÉ\91XÍòçäßN'A\94÷J\9b«oU\9fÓP\9e\16ÚÜymVK#µ$E\19¤ ôÀu^:¯\87/+7:Õb\90\ fÉÛòmÙ{Mÿ'¥'%[¥\Kô!ÉW5Û\9dNäé]¯»"o\97\1aús¾NÆ©se:Í;¨\138öß(JÒ\19\vý0Ï\9df\e4ú;@ÒY\1c\8dÓ'DÛgR\94\a\1f)\ 3\9do/ÊóQ6¹2é\93º4\ 5£õYlð:Ï ×y"u~B_u¢ï¶/^\9f\98åùH\9eÙõù]*`ù<\83Òøäa=i\ 5gßæ÷Ó\9f ¤â\82þ*"Õ§\19ù\9c|ßÇâ«6"ã¥Mæ\90\82ÎêX\82\94y\91ÏiK\93¦\1eu6P_¤2\8a´\ 2WäaZ\9eôµ\82ä©ßk\93\vVgû\94÷´ý;\9dÜ0H3´5K\99\17\9dgÑK\9b\97OË?\8d\9c<R\81^6+M8Ê\9bAg%\94\7fÈ\1eë1e9\fâÿ\ 1\0\0\0\0xFXìÿ\7fð\85\a>´|é\9es[[\1f¯Îy÷\9e}ÃëZ?¿\v«æç¶¯Ö÷µ\ fþ\88\1d'¿ªõC\eoççnX;¾ÿÒ\1d\9f|U\8fm\ fu~îØö;\83Æ\11\1czû5¯oï\87\18çç>µ\8bq\ 4=.àDy½àÛÇ\1dÝâ\ 5¬\93÷\8fj\9f\9f\1d_ðÄÞãû\aß{Ø·Ûø\82TËüÜ\99S¬ÀKvü»Ï·÷³3ósëÚûÚ?}à«öû\8e¾_\8d\95÷7´ýߨûùk_ÛÞwѯ\9e»ª_ûä÷¿ö\8cÞ'o\8c\1fúÖ×\8cetÖ\17ü\87û2ëzßú\86)®`ÓÇ6ÜÝ\97åaÞÃ+Ú1ê\\89'¿póg{\8c\83±}üÀÅÓø\81\v_tþ\83}\99-ý{\ fMe|ÞÂ_¼¸/ó¡Ç\ e\1cÜöeå¸\89k¦²;õ··=0ÄMÔ¾ì\1dKÆN,\1f\1f±ï4Fãg\1e¾è\85=¦Â\98\1e\1fpcûÞ\8fë1üî\19=\8e!ØÚ\97\1d4\95ñ\17\7fÿ\84Gú²\14{¬Âü\9a±\ÌÕC¼EÒ\96¥Ë>Õ\96é\18\8fß\7fÎÙ÷\ fñ\16©ïËá-6båx\8b»ÚöV\8e·Øw͸/³sE¾gjã?{×\85/ëËBéË\1eZ=¶ÏÙñ\1fWMu{á\87ÎùÜ0þÃôeOLçÇ\19\v¯yw_V\86ý<zª£ß¸eK_g\88y\18\8b²nÜÞg~©ïçâ¸\91kÚ÷\9e-¯Í·l\1a¾W\86\98\91'W\8få²aûK~´Çi\98aNË\1e3²ò|\97[¦ócóÂ1\1f\1eæ»,½\1e®Ù{üÞ)¿xÞ_öeÅöú»qíØ\96ÞúâÍ}_²\19bbîX²Îÿú¾Ì\85Þv_±dÙ!/î˼ïß{´óHy½}¯\93zÌH\8e¥·Ï˦óû\v\1fÙðå>÷¦\1dæ\b=³\95Ùµò:þ\8b\9füh_\96\87ör̺ñ{ï¿åè\87\87ëQîutÇÚ±<OºüØGúµ-[Ã\1f\ 5\0ß#ÆþÁe±´\9f+gã\821m>+í\88ÜÍ\`cÿ\9fÜ=Y[c\bÚµ\9aúºäO~ÑÿÖÎ\\r?M®õÕ&oÃ0\ 5\98\97íÆ(+.ú®¬ÚÔ\18CÛH\92õd\9d\ 2¬Vù¬vöi\ fo\92?
++θ\12Æ8eí·Ô\ eKë½F"ç<İZ¯½\85¾\ 6gJ\92ÿ\ f¶\1d¤3Iû\92m.3Ñj§¥Üë¸"ÛÓ.U_´+Ô\16ù#©\7f\97«ìi\95?ÂÚÓ[«|¤Tç\8bü¥\97ý\94?é%Ê\9d\8b¬P{\1a5¦RvÊ®$\9d\eMã\7fuÊ/W³Ü¹¦`ú~y\9dÒË%Y\97ór\83âL0\83¶&#»¡ÁÐ:=\9a\rR\92ú\8e·\1a2-Ç ;\1fªÜïT)0ç\93FZ§â¬\8dY»ÀËbÝ\15Ù!9(ÙQ\8d\16\96¢ñ½\9fV»\88]\95ïë1ù>?õð\1d)Ü*w`Z\ 5¾\1d\95ÔAÖðm§ý·¡ø Áݺ[EV\18«ÎM&¥XêÐߺS\1fm\95Ò\91rôC\eð:ó\9bÖ»\1cH)m¾³¾?Uª¦j\9d89 oË\r\8d|\15\8c¼åµ8bÐHê\10´Ó^»oå\9eÞY\8dc\96j«)Éÿh½ïò¡$kËRlÅh\rI;\95Ö"¨Ê\aµ}¤6#[m}À.:\9dx.\84Pe\8bU\9fOª\86\88·éæ\9cV¨6H¹ëÌqlÇr¯¯=Õ\1a6 ß\90\7f¤Öæ¥ÙI\ 5KQJcÒ>å,E3ÕîâÄܲ.\89¯\97ÒI²B\r\ e¨í\9e{\85¹á¤ú\8bN£^¤>ÒØ¾\93\14i«»\9c´d}\v\85\90\96íÍ.ãù¿Ûú¢{üBj\17\9dª=ú¹Õt?>=k´ï]>`¥\1a|\95ÆÓ>ï³lYþ!\aÓzõ\8b\91\1a\92ÂÓð\ 2\rÞ\90ÓHNS©O\8d\12\89òI©9ir¡d]¯Ælè\95HjSC\aäì´}{F\8e\KÁè\8dâ°\ fr\9ae\8dÕ\97ST\8e:e9\eµIH3(z¶Ú*ÍUÛMÖ©ø\92l3UY\8b4!]{Ìz!Òz\92\16YB\19Ö)\85¡WR¹.Ë}³\\ 3ÜÐn¤Àä\90ôú\19õ©ÎhÍ\ 5ùÏ$_\95bͲ#)èT~E£\13¤öjn\8dZVÓ\ 6\12Híù »ÕÂ'¤ÈµöÛy\96Ûé_ôÚ*Ç&»_
++ýÿ\0\0\0\0\0<\13,öÿÿù\1fÚ\8b\97/Ýsî\80Ö\7f6Ûÿ¿ªýnÐûÿ/ü\89ÞÏìâü0&ü½òºí³ûÿMïÃKa~îýS¿æ\vßrø·\87\9cwv~îâµãú\ füÓw\7f¡õÿÇPæç®lïkßø{¿ú\83·¶÷\8b¾ÿ\8a¶ÝÙü\ 2×í"^à}íó³y\aÃ\94¿à%;~®õ?§èd\7fÊ\92÷\97Æ\vl\9fÊáðÿü¬Ö/\9b\8a\91ãÚºv<®\9fþæK[<B1®®\9e{ÅÔï8Û\7f\7fÍ´®³î;ùªÞ×n\86>e³\9bÜ\ 6óSÿýç?|VïÃÖÄ\11mÙ{¦±ÿ?\7fCï\8f\95ê0½ïô\80%ëüéËû²Zz\9fëú¶ÿÚÇû#Oèù\ 4|\1aújï\98ú°·-\1cÞ÷%8ßûÓ{¿¸Æ\ 4l}ì9\9f\18úö}ßÞ\96©_ü÷\ e<£Ç<D\97zL@Ï\vðny½ñ+¿ü»½ßß\f}µ=^@wèìûϽv\88 \18b%\9eX7îçl\ e\86'Û÷VÎ¥°µ}oåÜ\8e\aO}Ø\e>òæ¯ô<\vÆöe\97î&\aÃÍSý\9d{Ç)¿Ó\97¹!\aå\ 1\1e´OùÂ\1f>ëá!Î`\88 8v\8a\87\98\8dAØo\8a!Ùpçi\87õü\fÖ.ÍÏ mû¤\87ý5C\9cÁ\10+ñ\9eµã~~çÈm-\86Äù\10z=¬_7ÖÑI\ f\ôò¾,\ em0Lû²)\9e÷ذl\88\ 5¹u7±\ 4ï\9b¶÷Ö#Ϲ»/Ëc¿ÿT.§}î\ fì°,õeG\1d÷å\8cG\7fà_\fy$\86ø\99=Ö\8cçÐE7\9dü×=Î \96^\7f\8bqF\e\17^õ\91¡ß\7f\88=Y7moãÝÏýx_Öû;¤\rN12Ç-Üö¡~½1CnÎ\1e#£ûòÚ\aþpÈ¿i\86º½k\8a÷¸å7þ\1f\7f5.ëûrÙt\rû÷{\1eÛÎ1oã\10+ñäêÅí]³¶/+¹/{ßÔ&\883\0ð\8fiY?~ë\8bÕþe«=\96«\16û\ 4M¬µw\16\86XÒι¿Ú ^[Æ~Po5¸QSS¥\9c\87¾J½Ì·þXy[þ\12>µão\9f\86¹ÈlÌ-\96 &\97d¿\83\14g/\ 3ù{\94µ\97Ms\80Ù>V:\vM'&ÇXòÔ_\1f²\8e\16n±\91müÑ¿ð©ºÐóW·>A¹§i1\18¥\8d)ÖÌÖYc\f\9cÓ\91Ù6iù\16ct8¸Ô\81f\0\93£\91Â\ e)Ê\1f7\r¾Ð^ø"78:J<\ fÁ\17Q»ÁµË7J\93pI3\8fI\8bÉZ½I÷²u\88Çv\8c\9a[L{ÐeÝÃ~®Ôo=µ\9b]ôaJe\996j;è@~3\94ÓÊùÒÆ1û¾uÕju\8cíM\1a«\1c£¦Pëñ\14^ö \98Ö5?ÄXH\81ç¤yÒ´\ e\86÷¬frÓÊrr[2\96«4Ð,íHc\13òÐO¾|\8c·Õ\8c\0NûRu\18\7f\96¶\98§cÍ^\ 3<¼\9f\8e[S¹ÉáiG&Z«¾ÇÈì*vFO\87V\9fR\8cÚZ´\8f¶æ\96o@7§\11\0QGÃ\17¹\9d\90Ç\a9©dï¥E{},\b²\12iÃZ\8brhNj¦(ÍBÚH\vS\95SZc+RH²r'Gí\8b\9e_ò¾Ô\81\8eü\97ûòZµÃXÚ\87&(\90\rȹ°êi\9c'¡hï¹\9c¾Ú\ 5\1e¤4duQjPNð\9a5\86 J½IUiihÚ» 18F>¥Q UcPJÔð\eù\7f¹Ô¹\96\ 2!j\8c\89k÷þòQ)ÏvÍÓSÅk¦ \8d\99±z\ 1Ó\b\f9\93\8aÕà\9f~-Ò@\99ä¥dr\8b,\18Ú\99\\ 4¤\ 6\92\86\98\94\1eg \v½îO\90\1a\91k\87T¾\86=h\98\81FCh\e\95«`jAQr¡ª-\80ÆU/\9fón8Gd\97v\17Ãó\8f\1e\87@ÿ?\0\0\0\0\0ßûxþ\a\0\0\0\0à\99`1þß_wÖ³\96/Ýsî\8a)ßÚå\aÿÄ\9bÚü|ÅÉûÛÖ\8eï¿óEç\1fßòäY\1d\17pó\92q\ 1Kó\ 2^1ÅÉ¿àÍ\87<Ñc»_\9a\9fï\88\1dû\9dÙc¢«¼\7fé\14\97~éÑÏÿ³\1eO\eÌüÜý»È#¸iúü\9a\13~ô\8fÚûÙÈv_1åøzxÇ\81m~Áàs\9a\9f;f\9a'ðü·õ¸ýè¼\9b\9f{b\8a\eÞy\ÀÑ{/¾¿t\À\95S\8cõ\11\8f\9fuo\7f_×sñ\14ÿ\7fÛc\a~³\8d\v¨I>\7f}{_sÔ;éûÿ¼\95[,võÜ\95»É!¸i\8aE?ñÈ!\87 \rué¼~=\17àj?äûs=æú\9e)ÇÞf\7fÚ\97ú²<|o¿iÿfÇ\12ô1\ 1+\8f%Ø2\1dïl.Àíû\8cǰåη\1c2,\eæ\ 3¼x\8a\eßÿ a_4 ͪ\9dsÐ\9d¿ðîa\9d.õý<`I^¯íËʰ\9f×OmmÛ¡\1f\19r\ f\ eqê\97MÇþɫϸc\18»0Äq?ÚÖùNyÝó\aëÿjç¼\84[w3\ 6aÃ46äÜ\85Û?6Î\1fÙ\8f¯ç3\ynÉ\83§Ü\91³sKö\\87+\8fk\bÓÜ\92g?´÷;û8\834´\89wLã/Îùê\17/ëËÊ\90\ fïÉ©ÍÏ\8eA8j\1a\ f1;\ 6áâ©<ß¼°Æ\ fsKº¾Î>¾ä¨Uÿ«óN^ÕöEÇë¼ò\90\93û8\ 3ë\87\9c\8cW¬\19\8foó\ 3¯û\951\7fbÿÞÖ©\.ü¿·Ý=äA4½þî\9aös6\87àESÞÌÙ<\81\aMmiãÂë>Ð\97¹a\9dïoåùfy\9d±Ý^7,\eÊú¢Ö&VÎ/xÇ\9aÅu~è½}YÍý\18\ e\9fÎ\95Ùq\ 6\eÚ¾ü\8a¼\8e»ï¦\ fî<Îà¨i?\8f[8hø\9e\1dÆ5Ü>\1dßl>Ã\e¦¼\92·üØÏ\rã\13Ƽ\99\97Leý\9aí\8fí9\Oc?§÷X³¸½\9dÇ.\0xjµ¸áP4\14=È\9fü\96xVãK\8bÆ\85jT¾\ 6¨j\9e<\9d+Ìk´v0ÁËÕWcá}ªò^Ð\84]\1aõk\8cÜôÈÅIþ|z\r÷Ì\1a3\1fj\9bùÚjʯ\96¶OV\e\8dܦ\98d\16Ç\ 1<Õó\87é\e9jÔ°KãügµÍ
++&7%-\96<ù>¯V\f^C\99w\91k°ÍÃ%k^Ì¿¶s\1c÷\92ã\89õ)ÎIèä\v\1aè\9d¥°l\8b\93^µS\1c¯\97½ª:0BG^´<rÆJÙdÓ?\13tÿ\92\91ê,ò·&Æ\9eW/k^´*E½j\88{×y¾CÒÌeF\8bÆÉßë,\7f\97MlS}Gͧ&\ 5\9ddÝRâr\a¤ù½äúsÊéaÇÒÒ}É%ÝôÄxq1\87à.b\9bw\15\v¿â\18\90]ļ\ få\93ü.rªizE¯)\e5jYs6Ö\9e\7fM\8b^gÀëmBË^ÛªÆO\ fùî\82\8eÃÌR¬\1a"/÷tÑêlç\1atÑØEnp\93\86ºW\8d¸v:\95 N´\9euÜ\89\ 6Õ\97\16ýÜæ\1aL²}\1d8 \99ï¤Ô\8cî½Ó¹Ù£\94¸üáÔó±ÈÚ\93iÃX¬V\9d\ ev\91r\95Ò\96³A§,Ôó¥\14Ù©\1cuM5j*¢\81úQ*nI{\:\86à»)'ââù´t®A\8d0O1,].{.E`¦ñ\15QëÑôÑ@RlL\92ì\98og\85T·4\19M])§\9d4U9÷\8alU\1a°Fè˹\98å\98äI0KióÏ9èÕD\9ab\e\9fl£\8e<ÐÄ\8bU\aöH=êè\ 3ý´ì½\14¯Î\12X\92\ e\1fÐ+`\19\8eE¯WR×>ë0\14«Cx\92\1cIJ}\f\8b\95C/:õ¢40ÍvjuÀ\80N=èôÚ)'\9a¶\ 2Ùg\9d¸2ȵC\a\81hEik\89Ò\fe×ô²'\15ª£\9aªì¤>ÂÉ%G®\8dZ I3\84ºÝå:üß\9d\ frW98uh\824gi\18ò¹iüQ»¢.>ÿ_\7fÄ\95Ï\9d}þ_¿nåçü˦qû\aýÑ/\9dØ\9f¡t\1cþmóãóù\81·_sê\90\9f=Ï\ f9Èõó\87ýɧ{\1e\ 1\93êüð¬©_úÅ×üð§\87ü\ 2òùþÜ0û\9c\7fÅ\9a\95\9fÛ\8f]½òóù5ÓsËÁ\7fü#··çp[eýûMëùɳ\8eh¿\vèI$Ï\bÓ=ô\1f~lc\7föÕaRí>ùèÕ»~\ e?sï]?k_¹vñ\19vù\98þÃW\8f÷ó³9ù\ foûr\82>Oßýä+û³o\bý9ç\82é÷\94oîuNÿ\9eÏò3§ß\vöÿð\86Ï\8cÏÅ}_.\98\9eûßúÊ-}Ì{LC.\80ûöÞõ3ì¥Óó\98ù\ f§ÿe_&§V_gûÞ\ 6}6|×Éã²aÎ\81«Ú÷>*¯3?óÉ8ääOnÙo\10³ãï¯Øk×ϰ\aÞõóæíí{ÿ§¼Nzô°wöeÕ/\9dÿ`å1ö¯híd[{þû©=ú²0ü®±ø<}ñ/\9cú\95þ\9c*×°þ\9cº÷¸/oÿ;/.\95!\87ÀnÆæ÷¼\ 4+Ï\ 1pûôÛÔì\1c\0\ fMÏ\7fßYwòÂ0\8e~\18×~U[çùZf\1f8çkC.ÿaÎ\81\9b§y6fÇØ?¹z×ÏÌûîµëçâÛ\96<O\1fwÓ0þ~ø\9dhÓt}\98\1d\9b\7füê]?O\1f>\8déÿ×\9f»÷¥ýYÔľ½Ë¦öòoìO>8<Ã\96ºäw\r}Ö>îË?ø\81~\1d1\9e1öÀ3ã\19ú)\9cW¼Ý+í&\a÷ø\9cóÝvo¿Ë\9cÛIG(;;>Ï\ 6Yë\90C h\ eýÔG§ê\r®|QïÄuø½>´¹>\ 2]\9eO¥\1cuF%¹m6ú¸àt,kÒäÖ\9a5_\9fÌ\86±äµêïn>Ô²Âs\84Ó\11ëV
++¥:;.\ f\ 5¡jÚ\15ù§)\9an@ÿ¼[-Fù\8ef%\97â\93;ß\96P_ªPjXJÐ\95*\8f\a¦\r_ÎòÜ\97¥VäS:%\80Õ!õ:2ºVY\9f<\83è³DÔ¡¼)ê½»\ ed×çw¹\11JVJ[¾¦?\1cÈã\88>QêèuyôÐ\1fgª\ e5\1e\9e}|\7f6Zi<ýò9̧1ÿRPò \93uln2\8bÏ^Oéï\17r\8a\98\10\8dìcûÉ å²ÙM®\83\98c±mzwyÚ\1d\7fë0:Ö[\9e\87å|\b>\ eÏYK~ç\90\8a\8dKæ\88¨:7¼fq\90[ç6\1fC\1d¾#u'\8fzZrQ\1e
++{§\92¶½¢C«\8df¯(QÇ1ËCRµú`hµ-Êó\91þ®¡¹í½\8e\80ÖlèNSÂkÖt)\aM|/Ïû\9a\r£è'\9c\8ec·òD¦OVò\80WÛpw©R)\7fÿOý»\9bþ~dõÇ\ 5MZ0ÎA°\8bßdVÊɱ<o\87T®Õ1í¶ý\0"ç\9d\9cÐÒÞô\87\179í«lV\1a¿\\9d¬þÞ"Ç -Ík&\rír\95\95JÉë<Mr\80¦êO'©èo\92z~èåI\1aµ^Ù\82\[¤I\876W\81\9c\8bR\fRur6V}âÕ_¾\82þ|¤åï\97þ\ e'OáýßÒ॰eW]Ë\99!Õ)[\96o%¹>û6\99\874\8c\96çß¶ßj4ó½NÊ }_zQ×4ÿI\9aº\14¹×$\1a:+Ãô{ÓÎsR<Õ¿iºÒGÔ\87X¤±Ky\15m|A\9fùÝ\90éÀµõÈI#\8fðrÎH³ÈúÓ\92·^®\17rw\9aM¡èD\13r2kæ\8a¬§]Ò\83Ò\1dÕ9[¤q·ßE¥ Éuµè\14\1eN³zȪ\8cT\81i×2y\ eÕ¤gN\7f-\91\16iZ\86\0ù\v\12ÛÕ«]\93\8aþ\9e\91\8c¦Á(ÃïpÄÿ\ 3\0\0\0\0ðL°Øÿÿá\8fþÚ×\97/\9d\9f»g\9a\ 3|ç8ü\87¦÷w\8e·ïý¡Ëóö\8f1Â+÷\9dß<Å\8doýü[ë\10Ã>ô¯^³\18S~ïMëzÿq\19úã\9f\98ú\1fgçX¿c\9a³~6ßø\93í{+÷?n\9f¾G?"\0\0\0\0ü¯ûg\98Ëbù¸\9aåcq¾Ûbµô\b½ÎbQb.C,\91FnØTu\0Â4¯ÅJó\91¬\18££1kK\9fÿ\8fN\1füO³Ïÿa\9fñ\19{çñü\e¦çò#þË>÷\rs\84\95ù93}þÐ\1dfs\8b«O&¯\9e;~zþ\9f\9dOíy»\19³»-[y\9cl\99¾·<\1e\18\0\0\0\0\80ÿÉß+v56jÊw°\8bñ*ã|\96\9a#@SAéx\ 6ûtÍ\89@ü?\0\0\0\0\0Ï\ 4\8býÿW_vÐÙË\97î9wÙÔ\9fÿ\8eÃ\1e8®÷ó§Uósï\98Þ\7fé\8eO¾jÈC]ççVµ÷7ÊëÐo]ûÚÖÿï¢\1fórk2±\13ßÿ¦\a\87|ìµ÷ã?1åÎû½\ 3Ïèc\ 3¢K=¯×â¸\81Í/ÚØóêUg{lÀ¦¶Ló²\85=6=8äl\er\8bß¿÷¸ìí\1f=ýÁ1ßYÏs×s\99¯\94Ó\f\0\0\0\0ðÝ©åÕÔþvM\©\1dì!\871w¢\8e8hók$y¢L-ä?\9a¤)1[ÒÀ\9a4ø_>Þ\86\1eØ\10CÐw4N?Vg\8a<\ 6\87j³¯I³-&«S\96\15gmÌ\9a\e¶\f±øµ¥\99´%¤¢S\ 6\8cùA\8dË\9a¢³\ eù6Ç×?eîI\9dÝ¢Òÿ\ f\0\0\0\0À3Ábÿÿÿû¿?²~ùÒ=ç\1e\9fæ\8dÞyþ¿«¦¹ÐwÎ\vpãÔ'\7fÄ·\8føvï\93¯a~îê)_ÀÎóÿÝ?õï\1f{Ô\ fõùÿ¬sóüï:oøå\v\87ýmË#Xu~ÁG§yÝ×½úÙ\7fÚæÿ3\9awàê¶?'Êë\ 5ß>îèö¾uy~\98+\s\ 4l=åÐ>_`ôòþ\r{\8dï\1f|ïam?SªeõܾÓücg}Á\7f¸\1f\97\1dæ;+Ó1\9cußÉWõ¹ú\8cís\9a=1}ï컾xK_\96\86yËzî\83\95çñ»xÊ£ø#OèóªëX\8e¶ìê)¿áìüöf¯±\1cfçø»fÉ÷\ eÿÀ\10ká{\Ä~Ó÷>yõ\19w\fË\86|
++WLsÄÍÆh\Õ\96i^Ä\8f=ç\13}Y\1aæÕ»®mïÝòzãW~ùwûü\7fc\8e\86\83[¹¬<§à\1dÓ¼ñ\9fyÙ\86>×b\ eCÞ\87Umþ¸ëåõò²ñ¾aÞÀ!¶ã\9eÝä\92xÏ\14÷1;oàþÓü\7f?{×\85/ëËÚtËÓ¼\81GZi~ûÒ\96\9d"¯\7fkÏ~´·éqþ¿¯Oq0§/\þãòa~ÃuSYÏÎÿ·nï±<Ozà¢\97÷e±ôu\1e4\9d[\9b\16ÞÜç·\8f~\88yyh*³ß,ÃÜ\87:\aЪÅùñV\8ey¹lj\13\9b\17\ eéëÌÞ÷e×OóSn\xÕG\86ü\eÃÜ\877´e\9b´ý~ùè>\9fb\89¦×íãû\8c×\86\r\8f¼úùmY5¥×ѱS¹\1c·pÛ\87\86¼\1d\819å\ 1\0O\956\ 6×è0X¹?):M¡Î,8Ì1gÚ\X;ÍOWõ#1\ 4íy+r\9fTtÊ8\9dO.\16_}Jz_\9bB\ erWVc-!z£3ÆëX[/ïh7\9c/r?P\8aܹ\96ªsÛ\ 5\9dD,9\9d½Ë\ 6¹-ÓÄ^Áéü\92Nîbä\1cåï«·Æè¬{ÚM\17¢Îõ%ÿ45Wo²\97ÍF¹#\907\83üÓÉ?\Hvè'´®æàÂÿ\8f½ë\81Ù³ªî}\r¦oi\v85ÔÙ8ÖV)m\85ûÿ\8fÁ\ 6Mqh
++BW¤\94¯Pæ'-\94R$d\12æ6²\11dB\80dÆ4\19Q\12\16¥(\ 2 \ 6T\144\1aQêR \84ÿȰ¾+PÀXædÖl¿sÏ}î÷çýúmÉ Cz~ä\ 1ú\9cç¹÷ÜsÏó¼÷éý\9ds\\8eT«ÐC\1dô¨¨Ä¡\ f1dE5\15i/Òx¬§\12e<ó\94ÌLaùaK$3Å5;:\15)[\98\83\ 2\99\8a¬Q\9e4ôE;¥eÓ0\8f«\ 1ÿº×RÛÏ>mÝ/E;\ e\8aQU3\17ÐfL!{\9fu¢]XM% 5W¥G\9f\19S\9f1'1Q½@E\9b¢T¥T\93K%AX©K\18i£U%J2×Åg×Z\8c\18¢\r%o\1a\95a\v0\85 ¡«wØê\19fÚÆÅ\15T\Ñq)>\85\ 5\97¶è\11\7fT¥P¢ÃE8\8dQB\1fJ]\87Ŷ11Ã{\12\95÷ÃTù\916\84\99joØPåCR\1eÓã\13ïÝ\ 6\a-°â¥ÑeÚ\e\8eú5©\1f\8f\87\82Ê]&xD
++]mSï(\ 2ÞÓÄSg\9aòöq\ 4»\82;)\1a;eå£\92\8e°\ 2º\85 0·\18*\9c1Q\99Jº>\925¼¥`uú\ 2\962öaÎb\9bç©k\1fvG¢Yµ1(
++b\87Z)G*Å oÊ\91\9e\17|Ùy<\1a\18?Æhé\ 11Ô$Y eª\9f \93Ó\9b!\90)Mq]OùýhÓ\9cZÀ\83£ËDRÚAÚ\82Ïe7\9e\ 6M\9e\80W\ 4&\9b\8c]x\ 3\14ºï\14ü8¦qz¾\1e5R§ª\13\89/\1eG)í5%*Ô4\14>\8ffýø<\ 4P"¸Â-Ю=O\98\1f\18*\aÙÿ\17\b\ 4\ 2\81@ \10\b\ 4\ 2\81àÍ\ fùþ\17\b\ 4\ 2\81@ \10\b\ 4\ 2\81à@À\18ÿÿùÇ\17ï\9c,í÷vî§þß¼qç/úP9¯\8dï÷î-|áÓq,Ø~ÓéÌÛö±ß{Ǹëß3Ê\9cí\9cû=UxÉD\94>êÕ÷þ¦ðüµÆõ\97\95ë\87ùüÇ\95ë\87ùü÷\16î3qÏÿñ;\7fTøüÚ¢ý\8d-\1eaûºÅ%\8e\80\98CýޮƱ^²÷º\92s09Òó\88VSð¾\97\16¼ZÎç ú½Ýåzâ£Ï9õmÿRâ |\82\1dV\97ë\89ǽdßîMå|\8eiVï\86Ù\9d>ó·\9dÅ\1cu¥*?\7fMËw8\7fÑ\19\9cÓÐâ\9f\19c1\ 6¤×\96ÁU\vYf\ 2ß·¾q¸7\ f¶ßÙqé\99o=zH§ß0_~w\eÓ\9a[Ï{\81m¯4·yß\9cNÿM/>}%ËRåà_YÆp8\8e;\96¬}¹ré\ 3óå\97\95ûþ\11Ç©{\962/\å\1a\ fp}á½SÍÆ\93\1f^uP\8d\ 1¡R\94\90=Yî#þú_\7f÷|æ¯\9b\90X\97EMvø\91\eXF\84¡"\9bßæw\98K?¿ÙlÝàg\v\99Ûnj\fÅ£-ïäw?ÿ±Ý5OeÍ-yÓìÎ.[ïYñ\\95E\1eßÖ¹]\9b'\rV,¨q)5VàØæS§^³òù"3±äö\10\b\ 4\ 2\81@ øß¢Ä&\10C¾\94\1c3\94Æ\1a+\18æñ\12í¾Ô/'\ e{ôTò;%\9d\93\v\95\9f\1dsô\9eVßXØ&ë±\86Q \8bôH)À\9c!\96·&:·Õ9RU1K\15Ø3%)óN\11¥\98â\12\12]i\8dR\11
++@\8f\19\13øðÁ\98ÄÜf£\89\eM\19Ï\88\v\1e°\92Ò*YjÃ\1a¬\93C\fÊQÒ3Ê6f\83A·\99"\r¨hY\846\9eÖeÁF\95\93IXJZ\1d\1d\95\81§\92êÚRýôì°\ 2\v\ 1K;b\gG©Î°
++Ì\ 6_\vd\0\8d!h\13\88\98í,s\99q}±\9fKT \1dc2%¨\93¸Ðè¡q\9e\1dÅ\88Ƭ2Öj°AÀ÷\84Ï\148\91°PÎ V\feXÖ\12ó\1a&sÞ¸H\ö\88;R\89\1e(6\rÊ*
++\9b (\10§½¢Ù\82\96\91\86\8cu| \1d\12UbS\85\1a¯)Ô\84\bôÎxªÁn-M\rÑé11.EO-eOeâK=8\8fï\84ª3\ 6\19\88Á\ f\91S0k²¥Ü<ÿ?\95¦£0\ 2\85\13\91Ú-CKQSq7Lf2\ 1+kJ\1fG\ 5ìiâT\8eX¦ê¨´U¸ÄG\8a\ 3(q\ 4øoö\14\1d\ 1¿\81\8b\10ó>bt>\a*_\ fu1\89]îº\12\8aàm«i·¿X\eÜ\92;Nü\1f`\8cÍX\9d¿\84ùN\81¢b(4Ýgݸþ\99Â'\88å\8fÇ\80\1e,[mB\99ú\92)a'hÙ2_\9fÒôQIA(\87»\94\1dË\ 5ø\9aǶ°ýñ´Ñäuýø\18\13ü5Ã+\1c^&ÊgÙÿ\17\b\ 4\ 2\81@ \10\b\ 4\ 2\81àÀÀØþÿÂëæn\9a,\9dÙÛQö\95)gÚÕ\879ÎÛg(ÿßqe?öf\1c\v~³ô\84\9a'ÏuûçÃ|\81ßÎêÚ9ú'\87>ÉyË(oß\8eò÷\ f\94ÿî²\15ï¹\9f÷Y\1dí·\97ë\87y\ 1?lùÿnÙþ®\1f\94óÆÛ~Ýo§ë·üÕ1Ì\v0Öô{7µ\q\13y\ 1w5=ß¿÷3\8f\95óÑ ßÃJûÃ|\81\91¶\9fÿÖ_λ\9fy\ 1Ê÷{û\ eîÚY²W+ûÿAÅY\95w0õþÿ¼\96Ãí[w®å¼w*\84ñ5\ré¾U\1f\õ\10µËu\7f|\1c7à£×p\8eÁ.¿[¿åî{uî¦g\997\10k\8eÁÑvß\14y\ 4\9b=\87k/^Þx\ 3\97.\1feÞ\80\ fµ¿Tî\9b:çß\8a¶?þÔ\9dçîbYÇ)øB±#9ÏÆç\8f\7fKå\87(\96Í+cø"\8eS\96oæÜ}1jnó ¶\1f\7fÞ`\17s\1fRô¼\1f\7fïÜÎ\9e¿ÛVsâ)ëØf·5»üùe§VY¬9\eï+²©9\f\97ÍîüuÍ\ 3g,e\ e\ 3Àº\14ÙÔù\0Çx.g\r\96}\87ù\r®æ^\ÖìrÉß\9dþ\ 2˺û\9eiópÆ5\9b\1eaYªc_Üd§/:ÿiæ>èʧ\981{¬¿Ñ\ 5\953\91y|·5_º}Æ\86\87X\96*\7fãî"û0\8eÕ/\8e|¥Èèï g\8cål¤yßyÇ\1aÎ#è¢g]ö´\1c\83ëî\19a{ºNÏííY\18\19\1cÂ<\foLÍw8N69§á\85-¯æ\19\8f|S³,\ 6ö³»Êø¶à¸èÆM/sNC]ýåú\96\7fpd°çKUVsn\8eÎîÞ+§ýý\ 5O±,insß4µAw5~Ñ\13·®ù·\9a\v±úîâ6·k\a\1f¿±Ö\r¹\10w\1fÜ\8daíÃ\87\7f\9beü÷Áx¦K\9bSçP¼½W\1e»áÒ\9f3\aÅzöÝ]³ºþN\1a\p-˲f{^Ü\9e£\8fízif}oz\96ÝÕÆ'ü\14\81àÀFËù4qß.\ 5¼.R¦\9c]®;7Ý>\95ÑÙ¦qu³ÞH¹¸4\96bݾ]PN9\`¼Ï\94÷
++?]N\97ý/ô\18\823&Ä\92ÛvÜ\1eßë\95Ë\8d2¹\91Í()\9a\ eÙÛ\9c\8aír¹\13ëÙ²WH\vCE+À\18»Úd!¡¹ÄúSÎ0\18=v{\8bdJü×AS¨GÙá\92§½À\98b\86\91(©\1a´×:'¨J{¬\96v\111=´×K\e\96Î\99`h\ 3ÖÓ\16¥§bc\98\1c\a\91VXoQÁ2,!lL´Í\8e9ñ¼Ï\ eõMÄäRÒ¶\92S0µý_Ì^\ e\8e\927c~\ 3¦Ë@/Ú<ÇÀa\18\8dÕC´V%x\87Ã\f(gq\99Æ\ 4R]²Hê*ò\1eÈUÀµÔ\93)Ä\0\8c\8dL\ 5ÛkÚÌL.b|Ê\90é1\ 3X;áL¦Ë eÂXà\8f\18\1eÆTöÉËdgâ\19\ 4Þ\83¥Ü\84´\89
++\9b\18Ø*F?îùP\94²-ÀÓª¿C\1f\8dgD\19ÚZ\87\87`u«\8aQ¼\85éig\19\8d\9bL\89öÈv!XÒ\ 2\93ª)õ\eÖK´{\rØLõáÐ'åÃC\a\98 ª8W\8c\9205\96ø\16\99\94ÅÈa O;ø\18GðP]Ñ®´\vä\7fªËa\89~0w¡r4àÌá\8dËÍxýòTîoïÝQò<¯È\80p\8b:\97!\14bM¦L\86±´ü?æ\9cÄ¢ÝÍ\98Ì\ 5À»\ 5¯)\85÷\b%¾ÄôÕçUe<OÑ\91\7fyz¸ºÜ\8d8Ýq9:\1e\ f¥ð#o\8exßøê\7f\99Þ-\94@\11nF¹\ 3q_Í5Y¼$\98ñ<\17¸\85omjâ aZðâ%²\88-sG¹\e¡\ 4\86j\98½\82v vä70J 7¥ó²ÿ/\10\b\ 4\ 2\81@ \10\b\ 4\ 2Á\81\0ùþ\17\b\ 4\ 2\81@ \10\b\ 4\ 2\81à@À\18ÿÿÒ?þ\93%\93¥3k=õaþÿ\8e\96?obþ¿Ñ9Ýõ\8b¾\7fÅ*æ\9a»Ðï½RÎ\13ázáª#\7f]óÿáü\9aÂÁ&®êÑ¿?ú÷5W\9cë÷ú\8dÏ?\91ÿ\7fIã\1f?·wÁÞrÞF´sa«í¾à§W=QÎ{\97ú½ëZÞ¸9\7föÎ\9f\96¸\0Eq\aïh\1cç\89y\ 4\7fÕòÅ}uóÒ¢\8f\ f\94\17pwãYO\8c\17ØÓÚßpâ»K\@.ñ\ eÇ\96¿W\99\9c/pVoOãr\ fÇ\ 5lmmýî¶N\16»zñMöå\85g>Èö¶\91¹Î»Z\9dùá\98\81\e\1a\9fù±o|\92sø\19[¹Ü;¦ÉC¸¬Íïp\1eBæâ\9f\82côá}ËYæj¬ÁA¥ÍÏáxô\9b«ÿ\95ç?x\96Ýׯ0\1ck°£åâ\e\8e5à\18\vºàSÏlÞÆñ\ 46³\9e3¦É\89xIis\r\8eë?ÿ\89§X\96#ÛÓµù\1fÎ\89¸½øÀÔy\ f\1fmÏÃ9;/ú\0Ë\Í\v8¯ôw\1cõçÎ|\9ce!ò\18nj~5\1c\87pWã¿\ fÇ\1a\]lý \1cË\8fúÄK,³5¯ãåmÞ\87ã\ 2vOÃý\7f¥ùà¾\837ÿ\9ceÙñ}ëgwÏ×0¿ÿ®b3âÔ¿ó¨Ñ\a+\87¿Æ\91¬i<öK?¸éáÊáW<ö=s»û~}û¹,Ã\1cq\7fwMÃÅWÍ\a×\ e\8e¿µrñ\15ûË\rmþ\86yúÌïß\86ãä§¿w;Ëb\8dMÙ5\8eÃÿµkY\96#Ïû\9e±\98\8f§Ww²Ìýí\9cÓùÄÛ\8e8ÿ\99"˦>·+\9b.«\17¬â1d[}iOËoúèák÷T\99ç±ï\9b&Çd¡öOÉï\17\b\ 4\82ÿoü\ 1æTk\1c\ÜG\1cúhé"k§\8a\8fø¿ÖRÇÏm´ÓpÎ\89þO)×T¡\88\13»\97XØÙ¸\80!àZ\8aËÀ\8f\ fÅ\fèb'ÊæF!\a:\ 5CIþ\92rP#{\15±~$Î4®\9a\86K\xÆÄÈW\14{Fá\ e¬ÇøX\ 4Ì\9erÓätk\ù©r\89\95X\ 6Ø\9eÊÑS\a6À+\åY{ÊÍ\16)GYèâI²§Tmð\ 6\8cªðèëy¸Kæ{Ê\í\8f»Mts8\1fåA\8cn\\Ji£\14¢W\ e\97\e\15JE{Î¥H¹\13\8bþ!\91\97éj\83×£fû~ë³cªÐ6\8cãRn¾À±5\16nj)û\1eþ¥<¦\17\1e\13Ð'ô£\88\bô©m\8eDΧÐ\ fÌ0\ 6R\88èä£\11\97£?<H\181Å~`1hü\ 4\1e:¹«1\14y\93£\1fÏkÇÊ\10Ï\1d¾' \93¦é\f\18L(9ïÐ\8aÇ\1c\91Û'Z>ã\1c\ 5é\90I).\0Þîé\894\14OB1E\94M\10ö£H\ 6K!\ fx\báÀ\96<\18WiC\91\ 2\98J\ 3÷RðxÌ.F\19µÙ\1fw\9f\ 2
++0+dZ\ 5·Ãã\10§åîwy\aK\8cB\f.\19ôá»¶(p\ 4\8fhõA<_x\11P0\ 5æ\bv\81å]LÖÂâ\86¦ÍÒ0<¥OLÎQ0\b,
++Ï\82\b\93\81¹Q°\13\ 5\9aPTGñL\a\8fÇÅ*\91Ù\ 2\9cJ\91çâBz\a\84\12}T¦\ 5\13\ 3ÇÁCì\1cT\87ÍñÀàALN\91\15ñT@eÊ\ 6\8a¶Ë\9av\8a¸\8f©â\86ö\97CtƸ¸\ 1\ 3y0É\96ïµñßÿ£\ f|ú¨Éïx¬_Û· Éù[O%\89%\15\b\ 4\ 2\81@ \10\b\ 4\ 2\81à\8dû÷µÖ\85@\893\92õeßUøÿ\ 2\81@ \10\b\ 4\ 2\81@ \10¼ù!ßÿ\ 2\81@ \10\b\ 4\ 2\81@ \10\1c\b\18ãÿ¿ðÛ·ï\9c,í×8âáz~_oñÌ\13ëí}¡Õ8\9bX?ïÉ\16\8f<>N~||ÁÆÇ.Í\1c»\1ejM´]ãêÝM\8eA¿{\9cìåÙ,K5®ýÞiêÝý°õ·yÇi7sÜw \91¢Øîvßäúe\ 2\81@ \10\b\ 4\ 2\81@ \10¼Ö\98®\ 6ë¤Z -¶?k\\19½¥\14*jLÖå»hù?\1cåÌÈ\94\98A\976dÿ_ \10\b\ 4\ 2\81@ \10\b\ 4\827?äû_ \10\b\ 4\ 2\81@ \10\b\ 4\ 2ùþ\17\b\ 4\ 2\81@ \10\b\ 4\ 2\81@ðfÀXüÿÅû^ùÐdéÌÞÉ¥~5Õ¡þÜû¶\9c\âöµ\9bÑï-juÐ\17}ÿ\8aU\1ccïB¿×o5\8fÞû\8eõ\\ 3=Û~ï\88¹ÝõGÿäÐ'9¶^¥~oGË#°ðÓË~_ê\+û½'ÛõK\7fôã\8fóyÊ#Ðoy\ 4nÙþ®\1fÐyg<ÚÿU¹\9eò\ e<·wÁÞrÞFèswkgÁO¯z¢\9c÷\ eý®ou¹'æ/àZìTË{ãiKø¼·\11ú·:óïßû\99Çè|\88Fõ{W6ý?ú*·C¥7û½Ï\96~\8fñø\aïÞ^Îë\1cgõvÌíìyöàÙ/q>\ 5ã¹Æxj6\1dÎ\85°²õ¿e°åÛEf\æ|\a£s;\9dÏ\88ë\9fã\\b¾Ö\81?¬è·
++Ç\ 5Ï\eŲ`8ßÁƦû«s7=˲èXöJ\91QAôO=³y[\91\ 5\9bY\97Ë[\9e\84Í\83íw²,:®I?:N¶Â\16Y\f\8ak\9a_XÆðE\1c§,ßÌzÆXkË?Óò2\9c³ó¢\ f°ß¸Z\v}Nó©ó\ 6\as\9bTy¶Èæ7»\9c5X¹\9ckÙûĺ¸r\1fÕl\1fñ\17¼Te¥®(ì2·ó£Ûglx\88e)p\7fó\8al&\8e\7fºgtPdÎGÖó¦f³\87®Xû2ËbÍ;1ÒtY78ÿf®e¯2ërɡݼ\8f\fö|\89eÚ³=×·ñ\r×¹_Yd\7f\84ãÄg¿u+?\a*ð}ýæ/\1fyäñc¸F¼ªmnmzþÍÌ\95\ 3\96ùää\85'\10\b\ 4\ 2\81@P0>\96ºÖI×N§\12\8b\1d\9c7)G§=\9dá:jTâ^'¬]±LsXØ[®³n|T¥.¼Ò*é0\16\87\1d=5ç´I\11K;ç\83â\1aîÆ%\13s@\v.\18\rA\fQ%\93\15þ\18µË\91\16È&âË$aÙ§}vÊ&¬íµÉTã>*\85»tÈh'×\1a÷Îgôa\8c*qáÞkåÐw\8e¶«#\8fsT\1c>æ¤t6ÙÔû|ôXtj\f ÊúÉ6ñÊ\19\15\r,\11j|ùP,yw-\9aÅeQu\7f\9e\14³n<\86\v\9b*(\89\ f
++\97U°ÊÆd\82·)«\f\93\9aPô2\ 1£5\ 1\9f\1dè\1f\9dè`\8cÁZ\eËfü\ fnÆ\17[\bPØãS,àæ\180 \8cÌÇä2>sbƸ\83Ã=\19öðdÉ\88ï\ 6L0úPÞ¸\0\9bjú8¡9ÊX:\93\1d\ð\86#écÂ}è_c6¼¶ ÿ±1Âj\1eÖ6\1a\9a8ç\ff;[\85\vMÂ\a\vzÅ\a©ÁTc,Éè1\1fP ú\akmµC,\9a\ 6ÓÉ\93Ã\1f\È\99å\16_\ eÚèhu7o
++N\97l7\8fø2\f\98¯\0M3ìh]NÕ¾ð2|\8fÅXïS >\16àh\18J\9d×\bca@Vöÿ\ 5\ 2\81@ \10\b\ 4\ 2\81@ 8\0 ßÿ\ 2\81@ \10\b\ 4\ 2\81@ \10\1c\b\18ãÿ?¸üGÛ&Kû½K
++ÿøf\1c\v~³ô\ 4æ«k×ï\1d·\1f>ÿHã2\1f³÷{Ç3_Ùå~o\ 5QÉg\1c\86ã²\15ï¹\9fùÈNõk|\ 1_\7fØÙå|Ö±ß[ÝÚY¶×=À¼}eû½{ËßW\\88ãÚ\17ßþÃr>\11\9f\7f´ñ\9d¿ºyi\89#ðÁS;¥ßkp¬|ü\88ÿ,¼ý`pþü9]û\13ùü\1c\17@|ë£_ùäã|\9eâ\ 2ÔìîüQÿõ§ëJ]Ã\98a\87õ-î`b½Ãù-Ná¿\9cWÆ\9b²òýÞÖÒþZ\1cK~·íÄ\12Oa¼\9dÕ[?§»~þ¶³\1eb;+˵\ eç´±ýûÕçü\82eÞ1\8fýØr\1fqÿ/zß\16\96i\9d\98\ 3~Ý!]\9b_^xæ\83,³\91eWÎéæo8Öà³EFü÷¿½cÝ\80c\r¼âþN8´³Ã_<wqɨ*W}_ksô\81O\1fUe\95\8b¿¬Íçp½Æ5M6\¯ñ fÇùßXóP'c»\|ÈØ}Ënd\99±Üßqmìßûç³vTYàþ\165{®Úzî/ª¬ÆR\\dWáØðÂ?ܱ\rªÞwlëo8îáú2ö3qüÇ\1d\e^ìd\1cO°¸Èè_\e\9f?þ-\1c÷à\15\8fï³\8dÃ?úøwæ°,\ 5\96q\8c\rÍí\9a[Ï{\81kU*Íc¿°µyö\8bK¯g\99vÙØ|û¼Á.Ö3EϺ\rÈ\98lr,ÅaÍ\97ÝA#Å.\ 6\86©±\14Í?/úÚ¦G\8aÌè\1a×qÂ!\9d¿\1c~ä\ 6\8e\97°Æ²O\8c´ù\e\8e³ØU\9e©\ fãXýâÈW8\96Bé\1acÒÆ°nð3®Å\19\8dcÙH\93\1d|\9deÙDÖó\95\16×óèák÷°Ìz\8e\85YÜüì¤Á¢\1aK\ 1/äñµø\93áX\8aÕíy¸ç½\7fYc)lõ\89Õ->êc»^\9aYßk\9e\9f\155·ÓEb0\ 4\ 2\81àµEáÍf\1fMLÎàÇ#X\1d°\8eÃϤ\8aÆ\10\a;*\8b5HÔQ¹à\95sÄÔõ\ eK¤\9c£É ?*Æyb^ç\80\1f\ 3\85\17´§\85\82Â;\Ç\18µ
++!hü Óm\85\17n¢sÊXt\84\13D²Å9\®\J¸ÄgG×@\13M$müzâçÇâ\97\92(×\ e?)P3\12ÿY\a\1dð»d¬\8e\19*d\83\13 ÷¨è\fV´X\8f@qã³&F¶¥5\8179\aHRi\vZbAIÜ_\a=UƯª\8a\85ÃLôrmH=t`ØF\85Dî\9c\83\1dðÓ\8cu\10F\9eþ\9b½ë\ fÖ«8Ë÷Niùn \88\ eU\ 6(D $ÅýýC~\14\ 5G\ 61\10
++!!!I\a°¡ \ 4\1ct\18ë\8f\8ee\86X0¥c;\83#:\8cÔi*±\r6\95\8c¨ \13\85q2cÀÐF\1a"MÓKÀ\14hÃXÐ >Ïî\9eý¾{¿ï^ÿ\91\ e\96}§'å\9e=gÏî»ïîÙó½Ïû¼è\96\16D6ã¤T\1aJT¸N³1¸\ 4\ f#ì\9aç\vÞ8hãBê\9ftPaÊ/&,^Øx8ö\80Ö@I\19\83l\89ö®Øwèt\0Kn\ 2;\1c\ 3ó\92)Ü:cn2\96;Þì\f\94\89ͼ\161\bðÿ\18_è\11C\89m\86&Â\9d0w\85\11F¯\14v\17^Za\16Ø¢C\1d°
++l_
++:à\1eh\1fCbr\9fÐ#'½³A[Wp×h\et\1e ×\87¶¡Ê\81|j£pÙ£â\ 3\ 6\8f\99r¹q[\89\8eD\98\8276°ïQ+AXº\8f\96hx\93\0âÉ|\15\1a\ 3[2ø6B-è\ 1l#¡ÓEô\16ýUÂáÚhñ\0o0\9a1â\1aGÃ\91\16V\11\8c×\9eêJ-Ç< Ø<ò2\fq \92\9dÐsô@òc\87\90y\8c?¬4p\93öZï\ 3v_Ü)\1aX`ÀrÍ1ç´ã\1cPª\8eyäÃ\15Æ1\95[¶B8/Ñh1E?\9c]\9c\0\98YèMÑ\vÆÊ$=\13ÍïðH¥q7:/\921D\acG/U\9aº0vcxFÃzlÄ\94\87Ù\e|Aêè$ã\ 3$SÆ£\8bè\82ÓÆ\17¬¿¢"p¶Ë«çµ±9ö#R¿¡\8b\95\80ZBj'ÿKÇhÆf\8c\95ÀÚÁqÁ\14Ä\a¯\8fc\83±$\98\8d\165iS®Å¬\rø\88Áøc\1a\el£9\8a\98\85AG¬8\f?ð\98í\1ec\815\ 1\13\92Ë\83ÀU\92`\7fåÁ\97\13Ñÿ\ eÝ\ f*M\aÜdp¹\8f¬ADذe0\ 4\969\8d\19\ 5Ëâv\1dí`4\0\16"L~,\17ÍÿߤI\93&M\9a4iÒ¤I\93&M\9a¼+¤ïÿÿäÊK¾1½ôÈñ¥ÉGG\9fÙ\1d\vö-Ê~~\87ó÷Mð<ýewÿ\88Éü|\8a¼\80GÌ\80\17Ø\99|h,üÀÇæ¿\9eý£R÷Æ·§z\86q\ 1\vÓsé7üä%?ùD©ß÷Æ\13%]ò\89þó¢\ 5ÿ\9dÎkg{ã»&ºóSyû6÷ºö/<ô¹\eÒù`U¯ø\95\87ýö\a+OÛ\a¿{Ü\7f%¿½\96¸þî9]=g\1dZ\99ð\ 2Ák\¿¥ú\99§úùÃDwþ£¿üSé|\14ZöÆ/>ªÓÃïýÎY¯\15>E31~0]¿\ 1ǵ\ f.þZá\ 5\94ÅÇ\7fTצaÎÀÍÕ/{ÅyK\9fÉ~|\13³\1fø±\89®Í7ONèâã/Ü\7f¯W\9e¾õ\937eß¹RÅ÷zqºo4gàççôï\9bîÇß\9eÆþ\1e\1c\ f\9d³,ã\r¬qÙ÷º½êû¹\87oÜ\9fÇ?ØìwÎ>Ô¥8îûÔ\92çrYô¹ï[SÿÈáwåû.\7f!ûÇcéß\ 5UÇ\8f|yEÆ\ 6\ 4Y¸ñ¶T|ÊM;¯þó\¦bîÃáÚ÷aÿ¸Iº¦¯÷¶-+'KYȺ¾·â\e\869
++\8fHe\7f\80ãª\83\vîLóDD\9dû°¥ú\96\97>µ|Aö«Ë¢ë\8bRÙ:\1c«ö_xDñ¹\17<Ŧ¤ë«qü\9a¼!û²¥-\18\8dçÓó\88ÃXöò9ç\972\95ïëcO~óص_Ëe1ä¶ì¬öºlÞº½Ù\1f/\vWä¼zß[çË÷iSp&gÖu`ÅäöG²¯Þ\14|Ã\9ec»9ü«\7fµî\99Â\89(²M,¬|\9a»¶.ýÖT¾ÄÝÕw¾tÿ\aO.\18¢\82û¸gN׿U\a\8f{O.\v\ 5ßðZÅ>,ßÿ©sKYÁ\14l\9e\85\83qkZ\vÖ³\9d\ f¬}¥p0\16\1cÆ\869ýû.þR)\vY/'TìÒ÷\1eº1÷Ïy\93Ëö\1fÓ\95]ýÉ\9b\9fËeAf;Û2ÑÍõÛ\1eYòí\\16CîûØÜþóæ\9f\91ñ\rZ\97ûê\9auÍä\83\9fÎ|\90Ñ羿zTµ¥½Wve1\8fû¶cº¹ò£§¬{¾à"\8aÎæMtú\1cæ\91\\91êü\f\8eE{\1eùBW\96Û¹£b-\16MÞüé\\16˺ÔÇZLÇ7Àv{ýû6\1d\95Ë\82Ïe·Õ±]ôÂ\8f=\90×öì\17iÒd\94Ló©ÑõIØ\99\8d1ØH\ah ×\93ö°±È×X$ ¯¡ÇÉDúz½Â*'´Â\9a¥è\18UÊ*\8f\ 5\93\98)\13\15y¦¤ð>9þ´\8a\89\8e*j«°\87\98\89×\v\97Êä\erÒÙ·\897ʤ÷µ iUL¼µÉ\17'ÙÅüî,ú\98î\7f\9e\89\eJÒ\ 5*U"y¯µQè2\1a ¼\13\9eUª@o¸A\ fd$ß\16½Ï$âÂ\16\88Ä[tV\92JÌ'\97¦C\83#ßHÔ\8còA\vg\ 5vK\8eÞW\83±À\v^à\rB_4.\b!\ 6\83''N*ru¹@\ e,ÃEo\90k\8c\1aÄåh·"Õtõ\15\9aô\14\11\ 2ÆS\98¬\ 6R\85Á\10¬Ç\9f"9ä\f]ítº\eTC\97>=\91ÊG²bYm\1cn%\9b\19\1dz:ù\9ea*\8eÜ\äÇò\18|«³îéz\83½à¦è;ÿ5¶A6ù&±¯\19âZ£CU9cc\7f\0Ôl\1elO¡OX\e¡;´\98ð\ 1Ks\88xe;eè\17\85\11â\1f\8c ºè%½xR\11\v\80Í\ eÌ\9a^{ã¼7ô^ë\18Ð\10C\ f\1fzÅ\81\8e\19i\10È\86Æ«\933\996¨\ 3I\86aáÞu>ÍHï²ÀÈ\90hr\84)úCÙ\1cº·Ñ\v¨\95CIr6\15aM0\10CǸJoh< \1d£Ç\1e\8dóÊ\1aKl\9eÓ^$\\81Ã\9dÉ\r\råÁ\84´Cë¢1Ä5Âîé\81\8ch\12ªAÝ|{¡+D\ 2Àö\1d\1d\95FÏÄ[\86\r\9cÓÉF$ç:\96\ 1Ø\16í\ 4c[íÇ\v«\88ù+þy¢\13¨
++Z²4ªøoÑ:L?×\8dÓÿ#_<F\ 1sÇç\95¦ó_\9b 9=#\89\ 2ñ\ 6F\8bÉ\89§\b\ 4q\98\1d¨\0\86\8b\ 6\a\ e\ fùñ$q"\ì,ÆÍG\a½ÒÝ\f¥Ò_oùåÒìæL¢_\19V¤\ 5 ú`:XÃ` \8aØ^ú¯ñ'\969röa¬dLs\a7`Ý\10\89¦\ fkG \95`\84\1df/ÔE¬\ 4\fÔÒ\92Ñ$N\ 2\178UeÀS5Ö2¨\17Û6,}B\93äPãª:¾Ù'ÏJð\ 4®3\8a¸\1fnáó¼\8d:ËX¤°°\vÞ\87\a`¹IÏÓz\14\86c\ 6\8c\86¦¹§µ\1e#\96lÉRG\91ï\19,\181ʹ\87q£\11Ãv\ 2k¿\8a\v\1f\97ÙÂ>¨\12\1e\ 5sÕBa\92OÂÛ\89ä\85\1a\93^Ä\fÃÁ¬t\>9\f\9ep\vÇ\8e\13ðB\13Æ\v-=\ 4\86\vB'¼ïÞ P\95#0ÉÚ´¢Ø\82S à\ 5\ 3A¨\84£ãùø\9fv\15\8fÓüÿM\9a4iÒ¤I\93&M\9a4iÒ¤É\ f¿´ïÿ&M\9a4iÒ¤I\93&M\9a4iÒäÝ }üÿ\85_~ÿ£ÓK\8f\1c¿¿bÏï<}ýå\ 5¯>Ö\e\17éw\83e8NݱiYá4ó½ñà ÷ILèi·.|³plÉÞø}\15?<\95\17ðö\84KÝ\8aãÌïîü~âó\13Þõ
++\8e\97xñ\17\ f\9dz(\9d×<¿®â{§âù·\ fðùýzâ\vtVá¹[*f{á?¾7a~]\10\ 6×Wβ}ËO>\94ùü<Î\1fLíOxþ\8f\9côx:\1f\85è\8dß\91ÚOlí©¿pü[\19Ï/q>㢧óùõÆwW\9cÿÏ_wvª?\1aò\ e>Vy\ 4Ï:|`m:\1f}\98\18ßQqÙ+\1e.8~ácÆç\9e\9b°Âä<\rÚµ96\80A\15©ì@\1a\87Ñü\7fO¦û>\87c±\\971÷2\14\fü\9aªÇaüÿî\8aÙ^ö§ëö\95²\981¿\9f\9ctÿú¥ë^Éeºà¹w\fÄ\ 6ÜU¸\ 1\95+\1c\86i\9c\17ã¸þ\99Ãçç2cr[n©u.÷«_Ìe¶ë_Ò×\9d8v\7fõÊof®>gó}÷T\1e¿m_¹ù@.ËùI'
++\8f#õù\97§®Êú´Êe\9côê\89Φ×\7fký±¹Ì\95þ½Z±ìâ÷Wv±\b*÷a{\8d\e¸iò¢\1cOá]áÀ»»>ïÚÓ¯ù·\1c\e dÆ\96çØ\91\vpÜgV>[8÷|îÃ\86:\ e+'7~¨àø]nËáTF\öåÏ\Qb\ 3bÑ˺Ú\87k÷]ö\99\8e\8f/·sç\9cnîÜþ»Ëþ=\97uq\ 3OÖx\91a\8cÿ\96Y¸úvÍ\82ÿ\7f²êìÇç_ÿtÆãë\82ã\7f×ͳ?\ ek27 µ>\8fÃ\9eÊ}¸üë_\95¹Ì»\82\81\9fÛÙÄ[G/)÷\85\82¹?P±åÃ\18ÿ~|Ðo\9c\91¹+\95\17"×¹p\0ã?\9dS0ó)\9e\87ã·æ^\95±óÞ\96\98\89Í\15«\7fÍäe\ fd̽*ñ\r9®écc\8cß\90\9bK\99Êun«±DK_úÅ\932\1e¿ãÃ<¡®\ fÃ<\85÷W»~ô\8f~é\9bSñø»êº5ÌEøê,\\84\9bëºÓ0÷MÞmR±åJ\13\7fî\824£s%[\ 2y\99¨Y\118/\13¨\9c(kÂB5V'\95Ùã|t\ 6k1 ã¬\15Êa\1d\89.J§x=ÿ"\11Y®3hËÌÞ #®IÒä¼KøÔht ¥\99#¬XzM´ºQA+íÉT«\89}5\1e+\e\9a\12\82\ f\ 4»\ 6¢½\19Öà\1cã\15øVfõ^\10\1dOäsÄ\9b%2K·\11\92\fn\8aÀýD0%±d\11N\1eÐ\17a\8ctØ7\91\14KpýpR\11÷Í@\ 4É&â¿Dd#ø2r¸Ãz]s\81ûè\99\8f\9b1W\91¸caD\80"|d÷\94d\1d¤\96Ó2z¢Ú5\99ù"É·,\1ae\88)G\ 3y%!Ö\1eoå¼Ï!>5°\99\ 4"3\16ÂÉ@82Y¯,^QÚa\11´Ä$\aIr¿È'1¦#uÉvXn\12\85 c\ 5ÚM¢8\1f
++\16v&®:\92û1h\0\ 3o4\ 3?\82\1eÉ\11ö¶ò\91E¾\9f\19 \82Á\ füÃÉQùÔGÅM0*\834\86Ð,\11ÚýØ\ 3G\9c6¡ÙŶñ&7è¢'l^\92Â\8dDØÎe\9d 9P#Ú\1e\18z\89s\ 4}\13R\12ÿ µì\19#E,ùî\9c4\1eú$®YS\aV\12È\89äNhp"úa¨Ä?ÓJ\1dDÁ\ 2Un/\93Ý[\99\10ñ"\ 4\8bº=ª -!\87TÃ4Sä\ 5Ç\8e\ 4\88¸Ï08¡äMÇö\8f\8cq\9at\81\83yç;\8c6\94a\12ÛY ñ\19\ 1ð´)M\ 6G#\fµÅð\15MüºK¡)\81`j\ 2À¡d\8c\rL\9d4jDÞÇ\14\r\82f:nu\88óçÈà1N¸²^\bv\82vm±\9d%\9b"vE\82hvCÛõP6îå\84¤Æld$R }¤\10\1ck\8e\906\9c¬)\\86Q/!\ 5\bÑ´\18[J\>ÞÒ\98Ò\89/1Ç \ 4\8e\8d\13TAèsÍYh\15us\°\7fÄ
++á±\1e\18F\14\19\82ÅÓã4\9eN\12?-\94HÖÎ8\ 2ÌB\8b Ì0\ 5N#\18<\fÀ\ 4<\19ÆH\12J¬\ fByí\82\ry\19¤"<É)a-¸ÙJR¡[ÔäMð\8ckBõèH\19/Ö1ÈùÇP\ 2\19\fÕMµX×ç\ 4\94\1eËN\9a{\8exw.£Âb9\88Áwñ\1f\96ä\97°Õ\14ôÒÙ6Z 2ö_§ø\90\8e\7f\92±J\9ciT\85-×\ er\13ê\14\17\82®sB¨(\19\85¥1\97Ó\7fcºK\86\r \86qÀªt\84Ás\85b0\r\9e\14RÔ\ 2M\vVe8Õ 8"ü=cÓp\89%Û¦â¸\1a®Ô\f\88à: kÆH 2\96r\ e2Ö'Â,M\17ËÁñƤï¸\ 6Ù\1eFª\99bÿ\1d§ >»D¢\ 4ítÇo\ 3Çø\12çs\8c\92w\føÐié%izÖ3Æ\99\eTÌ\96\14\15Öÿþ\7fß\9f]¿oú{³Wö\9bÜû\9e}è¤ës<tÄw{ÿ{õÒ\vÞ\9fãó1i{ãÏÏÀç\9f¿7\97àØ8¹ ÅÛ\e\18lo|¬~kN\8dÛß\7fÌèïùÇê\1ewj|þ Ç\8eþ>ß]÷ÒSãíwÏÂ\8d\7fy-\eæ\9c¿7Õ÷!öå/V½XÊJüí'f\89q?Pcs\87ãØEºï2\1c\87¾¸ú@ù\96+ß:\17ÔøâáØê×úß\17CñÓ\ajÙp\8côÎô=3:\ ezi\8dé\9d\1e³Ü¤I\93&M\9a4iÒ¤I\93wÜï\9c?hn\94é1æ\1d\97þt\9e\12þn*$ ÁøË\11©èSÖ \86á\vþtBN\ ffáð^ø\14ÚïÈìÀ_?¤u>àûצ,\15dù°L/\152\97Ã`L;ZçLý\1eÎy\ 4ú¿ý\8eæ\8c\98\91+e\86ßäHt\81\e ;M\9dX\83æ\9aÈ\9f\11tÐü½5\90²B\93Ñ%\11?\ 4èM[Ov ¶\93¿(ñ·\13í\84¶³Åî+§ùC\14\ 6\ 1w%M\90\14!8\93hL oÅ\9f|\13\91\ 1\7fEµä_1)}Gðc#øH\ 69/*7BÃÿ7iÒ¤I\93&M\9a4iÒ¤I\93&ï\ 6éûÿ?þį<=½´7~Kò\15\ fãÕï\9dÅ\7f~\7fÅõ\ eç\96ÿ\9b\8a_\1dÎ-\9fó¹\8fÎ-ÿdÅ÷\ fçz¿=ùºGcÄïHíß\82ã\9cpÍ\9e\82Ù.9Ís\fÀC8VÿËßÙRV°×kævý\eæ\96ßP1\bù×W×û\86qà;fá\88ß:\v\ eüÒ\8a\ 1øð¶\9b\9e*xnYò«Wìü0¿úg\a¸Ð§ã\9d·\r\94Mç\1f75öâª\8d\97¾\94±Â^6¬p\93&M\9a4iÒ¤I\93w\8aÔØ\8fw^\1e\83\8ai/yBFÅk¨H׳5\86\91\vÁ0
++\80\91\ 4^j\etLÁ>\fBðÆ\19f\8d\bÆj<=ÁÂ\19hb\19Æ \83´8©%ZBÿ®aÀ\aCw"±ÄÌ\1cop\8e±7L;\80S\8c\v\8a\9ah}\19\b\93ׯ\92g\9e9N\88H\17^;æ¢×\16'ÑR¯\98WÁ8ÆOEÂ\ 5\18!Å\88\r¥\8d.q\18\1aõS\1fÆ\89\14/4\13_>º\13RËE?~Á\ 4OÌ\7f?Ρøï9:ÒE\ 6\9aL\89÷(\ÿ\19÷o\14¾/£s\91 L¢ò\18\17¦"Â\9fLØ Óg\964t½£aLàà\98\89!\ 5é0ëGäÈBo\8eÀ}(,\85EAÛøê\81\151ã\ 2ÃI\98s-¢¾ S®\rk\1c\ 6Å2Æ\ 5£#Ù;Ï\0-\18\87§ËßÑv\88XàÈÃd\18\88\12mP\1dÎÿ\9d\10\8fÓüÿM\9a4iÒ¤I\93&M\9a4iҤɻAúþÿ;\1e~ú·§\97\1eYò\93Óq½ñÌ\9f»1ñá\ 55Ö\eÿ|:?ÌÿwK\8d\1f?í\8a3¾Wø\ 2\¯øèéS>ûͳß,\f¦W8Ü\88\15Xð\ fO\\96¹®\ì\8d¯©\9cbs\16\9fü÷é¼\17\12õÌíê\9fÿÆOÿGâ\11\90ä\17Ø_9º\16\1e2ÉGn¬Ð\83ü\7f§þÓ]ßÈçMè\8d÷ÒõÌqÿ\817\17]\94x\a$ùù6Õú×\7füg2\1f\81Òª7~eâÏÚ\88ãÒgOùÏÄGàxý«3ð\vÞ7·ÓÛ OÁÄø\99é÷\96\r8®}pqæòã\8f\96cÉÏ_sÏÿáÏ®\9a,¸ _x÷ês®Û³äþ\8c\9b\102Çó\1f?§+»þ©[ç\17ÜDá\19[]9ÝN\9c·<ã\11H¼2ÖçÖcCo=qý\v¥¬ä³ßQù×\869ù2×"/xcîÚÌ\ f¨}áò[Qñ"k^þ\89¿-X\8c\82q8\90ÊFã4\ e¦>¬Äñý\1fýNæNð\85_n\7få\9e\eæÝÛÝïû³\8f\1c\9dË\82Ëx\8b=©\9dÇãXûí3Î/\9c\v\ 5§ñä\9cn|n8pÌ\9dÙN]ámÛPû°ö;{7ä²\8eÇa×ÑÝ\18½qú5y\8c¢.üy\a+ÇÅùó\97¼\9cm\\17¬É\11Gwú|ã\94«_(e&\97}"Ý·n\8c\1cr\17\16\9e?Sp/\97×y0\8cý¸¥bM\96o\ûõ\\16dÆ~lª<\7fËæÛ\9b¹üd\19¿]\95\aoÕä¥çç2[ìå\88:\8fVL\1eøBÆ\93t¼t¯W.Ða¾\89mUg«\ e\1e÷\9eÂ7Qt}âÑÝ}+&\ fþIá\9b°Y×gÎÂ\9f·¥ò\186\1cJ\93&M\9a¼ý\928Æ\8csLN\1e´u%~4ù\93RÊm鸴\eÅ\14õÌoí\84g\98/]oØ!x\1fdô¸\86\11±dñÓ¤ ¤×\13\eµèI¾&\9ds&e\17·dÚ\12\8a±«ÎÒQ\8b÷\82°\89\f- L'\826\92ó\85\18\98N{\16ß#I\18\ 3½r\9dÿP8<ÚG\e¬\ f±»&Qö1\ 4ÙYOòE¡SzmlÙ\14YÑÈmf¥`,®PÂ8Ò8\ 6\17<[EV6\1fñ\ e¥/\19\7f+*\ 4çBÊ\91\9e¹µÐ·ì\8f\14\f\bV\11mF!\ 3¨\13£\93\96|\ eî\80.\9ctx¯*6\91¡¼è¨\fôÒy£L0FÑãIú»äïã\9e&\91}¡$¤º,Ý\86d-Ô\fñ&á`\10ôV2¯;Ó¾s\90ð\05À}iɪhlÇ£7\90\1f]\92\92W2û|JF\1fÒ\864Å\10§´÷Ný\80yõ4\86ÅE#Rèuç/-yÝ\99\ e\1eJÁsLæ²NcMÊN\87\86u}\13"qo\1a2Ù\18éË\85Ñ\89Ùø\ 3¡LO®<iñd\83ÞÁn\´\96Tp\8c\94§\vYf+\83MDX1\1a\84*\18c/¬Ï\19àS6û`BìøDcäI\81A \853Ðx#\93\7f\9b§¡\87Î~I\ 4H¼\ 1\14fB\18\8em'ÿ(ý×ÝõØêy2\ 62\96]\9a±ÿ\8d[ï\9dÂÿ\88ËÑ@+dǹ\1a²æ À¥\ 1ÿ*N|.3X8ø\f\95æ\1e*Dû\18$ï18Ú±]\98Ý"ÂÒ \r`\80>\96\ fB\19 aôNc08¹5q\ 5&ñý N*CÀ\ 6\14@\9eÓ\88¯\8cH\eI\94\86\96X\aNÏ@
++\ 5\92æÙL"Ê\99ãuZ÷HÏ\87A\13¤^Mä\9a\9c\e\1c\ 5ÒÃ\8eÀ@ð3\97ø\ f\8d.G\82Rh\11´MÉ5\10K\1e9V%W ±Êq(É\85ÀŲr'¼M\9c«ÍÿߤI\93&M\9a4iÒ¤I\93&M\9aüðKûþoÒ¤I\93&M\9a4iÒ¤I\93&MÞ\rÒÇÿ?~ÆÓ_\9c^zäøñ3àÿO©¸ò÷~ä¤ÇÓù(ÄD\89\v\18\9dW~WÅúß°kÌ\15\1cðk\ 3ùè§ç\8e_Ssø\rãÍ\ f\ f<ï\95£rY(üw\9bjNÀ½_YüÒT¼ù\86\81\î;\1eîðæ\19\ 3ýê1ý²éxó\8bj\1f\86ñæ9çÞhÜøýõy«&/¹«`µKν×+\97â0V{¬ÖyÕ¾ÛÎé°ÚYg禲ѹÕï®í\1cξb\96Ü\80·×²\11XíÚ\96\ f¿xk/s\ 6v}XZûwÍä¢\9c\1f\9e\89NSÙ\1d\ 3e\9b3\ faT>ëú±ZgËKÞ¤I\93&M\9a4iÒ¤I\93ÿK\99Ê\1d\98âI¤U¤ï\vÞ\10@/\86ðü\8aé\11Sü\93\b\89\15ÑHguæmt\ 1_i3Ä\1a\råÜ\9b\16£2\18[ScPÈ\94(÷ø:²vZ{\19\8c"\r\83\1a\fs%z\es¬\91\88\9e\ 4\83¬Ïh[êö\fÔ\11ÁÈ\1cÏ=C|É\94ïÿ¿~åðãÓõÕ+üòü\8e\9c÷?ì]{ÐÝÅYÎQ\94óåBhÅ\8a5Z\bXB\ 2aï\97\16\90v\82R\ 6Ò@\ 3Ä\90\10*P\ 2¤\ 43¨\f\83\96\19\99B[\ 6Ú*\9d:Ãt2\ 3£´P\b-
++-PÀ\89\ 332J\87K!FÅ\10>B\9bré\17\94J\10\9fgw\7f{¾ä|'ÿ8hjö¡\aúýöüöòîåìîû¾ÏûÈgOÏghãú½\rÕÏÿÐ\8b\8f|3\9f\9f¥î÷\8eJþ¼Ã~û×Wÿà#ß9teº/ðôÿ\1fð\ 5|ì§Ùß\9e®\15Ý\19uj?ù9Õÿü\8dë?õBN³Å\a{}õ\89~kêÌÛO\97ªü^½³\18\8eYpJõw\7fîÎó^Íw\13z\17\1eý©ï-̤û\87\8fÝ\90ÓbÈçì%{¸Ó8¥úu¿uÜi\9br\9a+ÜüWÍ\1a}ßñfm÷æ®z:¥Yåâ¤óùÔw\1a\8b\92ÌnÂçÛï»àù|o¡]n_öÝþ
++>§\1dÿéìëï}çG^ã5\¾á\9cìï\1eò\18\1fëí\981ú¾ci½Ó\18\8e\83\90ã.\9c\85Ï\1fÈ\v¶\97X\a%>ÄQµ}W;ä\99Â\13\11rÿ=\å9ì\9b\9ey\e(Ïu\7f³æé\12\aAä6\9c\9fÒèG¾ò¡\15ù\9eÄt~òÇÎ\1c}\87²µÖåÊã.yºÜ¡\88Ü\ f\99[\803hÝ-\97¼ZîIÊ]H\7fæè»\90×f\fÒn¿1§E\9fÇÄÕ5þÅ©[¾sWæÂ\10%æÄÌ:æ\1füüÉÛr\9a)ý¾½ÞÙ\9c¼õ\95ýS\1a½µRÚáuL,\1e¿mFNÃZ\97ÒB»{ihhhhhØwÎ?S\9e\ 5Ò\99ÈX/cô\9dϽ\8däD\ f¡ø!ïîÃ\Ï?Z\19i5é\ e\82Ãÿ\fùõ\9dT\82L\08ª\ 4&[Iª\a\15\95
++Êá?t\18'Õ\82\fVhêÂÈç\10Y\ 1-Y.¶Ñ\85Õ@àà#°³\94&ñF\18欱Á\11\91tëÊ\87D\9f\10ð-z\99KïL©?)\12\18B\fÙ\ 5K?}\1f|Ĺ\8f|ô\fN\8f\9d¥ k¸d¤{\1c\95"]Ï\19¤]\19ÃPìôw'U¿%é\ 1
++1\82T\ e\9eqᜥ
++\19\ 5Rý[:¨gÎzG_s\8f\16
++\9cât\f>×\ 3\8d'i\0ÊQ(ßû\11¼\ 5\f\ 3/\14é\15\94\rÞ\97>°2Å\r \19\82Åi\94þôé¹£\v¹\15\fP\ fÑ1Ä\81H\15²\1aÍ&³?k\13IÁÁz»DlOOy:Ö'J\ eÈ\8b§ÛhIã@©;ä\8d\97q\9edÐ\0\9cN\ 3ÃÜÓW\1cÏLñÆG\aá|éPN\fdɰtu\17R\8aÁ8êb\1e <Æ\1cðäDp¥OÈ0AïøØqr`KM©0î@\90näù\15Õ39\8dq\b t9\18Ïh=YD0FÐ\878\ec¨\916\0#J³º\96\99£}\86ã\8f\84\1cØý{:ö£µ\90\ 4ÇM°\1aUBeQcäDƲI1\bºr\12QE\8d51|îö\0C\1d8\1f\82ß\8b8S0\8d\12\17AL-Æ\10È\1c\19Z7ûÿ\86\86\86\86\86\86\86\86\86\86\86\86\86\86}\ 1\ 3ýÿGÍ5Oí\9eÚïÝSyû×^±ðõ¬O׺ßûój{¾åì\ fLd}¾7ýÞ\8eª\8bÜ\95÷~ç\1etè\a×wÖ¾°vvÖi»\98õ\977×ò×½ÿ¼¬\9b\8e²Øâ?¾\anôÍõ½a\9doÖ\89N»=°¶ë¡ßüÃñ¬/Ízò\86\86\86\86\86\86\86\86\86\86\86\86\86\9fM\8c°3°\8c°@~~ÍØ\aF\89ÿ\ 3;\12+}¶?\104{q8\7f
++O\ 3\ 5Ul(\90 #9 (¥iÀÑÙRì\1e{`\94ÝI\8d+Ñôÿ\r\r\r\r\r\r\r\r\r\r\r\r\r\rû\ 2\ 6úÿW¾tѲÝS÷ï]\96ü\95©·¿þ@óñì#l¦õ{\eÓ½Á7ð\99ûï\vNÊv\ 1Òô{sjlñ\85\13g\9eXì\ 5d¿èÿ\87í\b6Ôøíó\1e]pVÖýKß/~çüþ·\17¾]üÀ\91ÿúêW~Ê ¿úhÖÏ+Õï=^}Ã\8f\998ð\93éyd>ËRþ\8cÉ~Ãø\827øÜDò\17lLí:\1d\9fCß^¼\88ÏTø¾\18ëò_óè/ÿ\1d\9f;©c¿wpò¿þ2>\vvüN\8aµî\8cB>kƺr\8f\9eø£çÒs¯D¿·5=§oõÂ\1dçmÊÏ5êù|çü\89sÒ÷\83gþOT\1e\84Ï}fþ\ e>\8fÒ\98±Þe)\1fò\12¬ûàÚÌu eáÿÛYë:Ìg°¨ÊuõsWÆ\9cæ\8a\8fýöÊ\ 5p\9a\³5§åXªc½\90ò\9c\9a\97à\9a$³ß¢<¿¹*Ûb\18\19\8b¯|ªÿÔ\\8bç¦<§¶ïX\93ì-¾\80Ï\85?úÜ73g\81(¼\ 4ëû]ûÄË¿\9fÓ8ú\92ßþô.M\1f]Ò¼P¹.ýT\97©ù\fö\9bÞÕó\9eùË_-ö$\85ûð\9aY]ß\<>=ó>F§²]È\1dIf'às³9gSIó¹}\87LïÚ·rËÇ¿\94íP¤È>ý\ 3¾\86»§]ødæoì¸\163_ÃGñYúã\15\7f\99mTDáʼ-µýZ\8eÑÛ/|¾¤\15\99\9d4ÖÍ\8daÛ\96\83öÀYp]åàXµý½?_x\1fu®gæV\98\9a\13ò¨éÝ\98øÉÝ\17å<\9d7¹\1fnNy^Ì<·Ê;2\9f\ 1Z\9fËKõ\Á~xiѵ9Í\16N\867ë¼Y<¾hn\99Ç!\977g$\9fACCþ\83äC©|òWÔÖ å\82v*Hº\94:.²ø\87:\18ã¢wZj#C`än'\fþ`TëÀ\90îô8µA!\aïU\14\8c\8c,\1d½>ñ\82ò\8cb.\8c3Æ3ö2Ãd[¼\10\18u\9dÎÄ\82^É>\ 6ç\8a\8f¯\ fn
++_ÏQº\96Éz¤ô¾\146ÇܦBÉ MÙo\96¾ËF\19Cïaüp\ 6Æ\80gpk¶Û»(b\f\81\ 1Ú±\9c\e´%Fì\93,²Ph'\96Gü\9e:l\90ø\88¡¿½ÁV 2\8eµIe2Þ:c¬³v\83\98à\9d\7f«Ò\8clï,²`lyå\95±\ 3\9fW\ 6Ê\86<\92\7fxÀ\17L°:ú\14\93Ü\99Ô7\91ÁÔ\1d#ÖË\1aS\1d¯I\ 6S7\8e\91Â\85\92Ø\17I\86̦ã©Ñ\82~ºÆâ7Ô\vOïpå\DºÐ\82~ÈA\1aÊM\91<
++\12@'&\12 Ä\83e£H\1e¾ÁË¢÷â\96A`\18`£Bá°.\91\81®BÇYzD\9bäÎ\f\9130:úZ \83ý!}Û%ãÏ{ªñ\ 4\1aå\90.Ð*\eSDp\f lp\ 2Ýfebæ\921\18¯½\86Ø\ 5\9bâÐ\97x\12ù5\85^S\904Ý\9bé\83Ì\r\1fݦ\95\8b\f)î2g\18:\ 6\83QÐ\81:¦ßó$G\8d\820V©4LR\b¨_p&¹%ÓIÛà)D&Sôn\8ejH\8fQÌ\83\7f·b×c\98¢Þ\9e#HHJ\83Ó\89¼Í\8eîÈ\9e~î\18oVÑí8¹-s\8b¥0¥ð\9eåïuÄì@ÿ9c© DÍÐä\88=³¤\1e3@´\90\fdKÑb"Yæ¤0\8e4'5Æ8dÀ \99ÜÛ¥Êuòh%\97\ 3ÍxìÈ)hjPé2\8dÉ\82I,0qH, ={\93QÑ©\83E\19\9cDÔ«b¡@\v\19»\1eË\87ưV^ \r\86m\14ôÆÆPãôÁ¶\ f],Ðf짽失"¤¡À¬°ðD¼HÕ,G(\92±I\16Êk\17l \14¸è0 ¼B\89\18=\ 2k\ 3éÎ,ròè3¼\8f\89+t\98Äñ¦8kÑ\91ìÿHòïį\80\1a(ª¨5I\ 1Ð\83l¿v(\vÝLÿpö\85ÆÜ×.¹}CúÈ\1as\ 6ãAC²ìZÏ>3\f\14¯é\ 4\8fuÎ\84T=®\a\1a\13§øÜï¥|\ 2*¢m\G%ýßÑã\9azt\89 \92e7\99c/ëôQ\16ªh'ñð\8dâÎ\e¥G\9fÚ_^r]į\ 4F\97&k\ 3ÆUH\9c\81\98ÏøNZð\15\9f&&ZÆ î(">Ï¿\ 5\9cu\98\12\¿°D\88À\15\ao\ 6¬§\18\92è!\8f)Æñ-9\8c\fy-\ 4¾\85ÿ\8f\ 5Ê[®\a\82¦ê\92?\ 1\82B°\\9eÙÉÌ\ 1?\122-\8dX\v#\87LL£\87\8b¯`Û!\ 1IB\8dÂí\11\9aþ¿¡¡¡¡¡¡¡¡¡¡¡¡¡a\1f@;ÿ74444444444444´ó\7fCCCCCCCCCCCCCCC;ÿ744444444444444ü,`Àÿ·Pn9n÷Ôý{\e\12ïÙ0ÿßæô\9cä_\87\9d~ÄO\12\1fZ\88®ß;)='ÿØ\9f\9eüþGË÷ÉÃ\97øÅ\86yøvV^µy\7fûk\8f'><\19ñý¥éùr|æ¿õõS\13\1f\9e²ºß[R9ÚæO\88\95é¹\13~¬·1}\7fj\9e¼\1dµNÃ<yÛkÚéÇ-{:§\99\989ÑV'\1e²©yò\8eñ\fÏÛ|æú\1cÏPÈÌ_¶ºÖqíøÚïæ4\133ïÙ\86ô\1eyÝ\9eýë¥ÿ¶+O^¨1\vÿùÞ\8bry.ØÌ?·fVWÞù\9bî\9f\999í\82ËiK*'âýwx2÷\85t¹}W§÷ÈÝö\83ï®ù§ÄÁ&¬\15)í¶\94ögø\9c±}Aæg\13Qg\8e¹/Îêêbö[ñBæ_4*¿·¤Öó\8fï>'§¹\18r\e\96ÌìÚ¾|üÄ»2ç\9b\14\99\97oiå\9f;uËwR\9a\16¢ÔóØ\9a¶ø¥_º%\8f\e¡E\9b \r\r\r\r\r\r\r\r{%\12?§³¦ã\8c\14d|sÑ)¥pJ\18A\8a?<\10\91¬\8aø(\92îYcøDKÒ\ 3*\11\94%[¡×ÑIrÈ\91UÐ\91óÒz§\8d\ f#ù\13GrjZ\17\8cD\92\9fV¸ä¬Ó\93x/I ¨|t8r\18G\96N\14äQ\8d(ð§ç9\80ÄÑ\8a|o\ 19'vE\1d´\95RÅÈü\ 4¹íPE|×h;à\9b³^\90\ 5\14¯\bìÄ\a|\9bÂ\91í0Ú`}(\sF(%-CÆ\99$?ò*2,\9c\f\86L¤N\96\98oJ(I^7J\86|\9aÎ8\ 6B\87ì\84CYN¸LU\8aº¡udIu\9a\f\8d2Fí½²h\eDî´\17\89·ÎáÍDo\19,\19î´\8b¤95<S\18ìó\ 3\84`H+\88¦G\15b$A$\ 4l$\ 3Õ¡ótîgt\10dB\9eÇPê\89\83\87³ï*ÿ'ÄBÖ>i \f#\90\ 5úʹÜÿ\18*ø"Æ\15Z\18ù.Éñdðä`ÕÈȲPÅx|ÁQ¸\89\v\92,\84\9aãÓÊ\18dÐäÁ4,\9d\96$Ý\948czÔ\10EaL\94Ø|\18L\18Ëä}e\8e¶ð\11Bø¨\86·\ 1õÁxÁ`ÏÏ÷JîÉÉçÿeÛç|y÷yÝï½6»;Ï-\9cX÷\91|\ 6V¶ß»µ\9eG\ f\7fä³§çs,ÏóKFðöç38Ï¡W/ú\8d¿/\9cÞ¢ßÛoVwnÿÇÅ\vþ+=ÇBÒÝ/°Ü£&nº ñó\a«ú½\83S}\86yø\1f«¼ú»òð?;sªû\82~9ßò¼9\7fç¶KÒóèÃXï²z\96\9eóõUù,-DáH_T9Ò?9¾åk9MÙ|¶½¯ò®¯¸·Ü#\b\1fóÙvÃìÑw\f\8fUù^:>¦\vO¿ÊgéÇg\8f¾c\10\atõÿ½\97/?,óô\8brÎ\1eÄBX;þ\85\92¦\.oÛ¤´Wgä4,\ 1ùÞ¢¶ý{·®z"÷©*\üWÔø\ 4§\7fõ¢\17JZ¹Óxb\ fÜÿ×\1d0úNcGåy_ýÃ\13\7f.ßiX\91Ó\9eOýv\10>\97¼xÄñ9-\96~ØPË[ú\8bK^*iE\9e\ fÌ\1a}\17²¾öß\ 5Û\ e¸6§¹ÂU¿½Êåâñ÷æ4LâÜ·õ®ë\13W\9f\91ùö\85/ý°9\95Ç8\12g¼¬o+Üÿ%FÁ´Ù]=WØK_ÉÜÿ¶pøßQË[1¾ñþÌá\8fU+·}vWÞ\93\9fÍ1
++\94ñ¥\8fî\98=xïâ#2O¿\96Yf\eë\zgæ\99ã\85ÿðô\1f\92ÒÖò~ì\96Kr\9e$\12Íc°¶ïòûÏ|±»ÏÉåm¬å-\1e\7fìörgSò¼oÖ íðr\9f\83Ñ\94Ò\1e\9eôÞ¥7æ4¬ï)íµ:\96þdÿSÆóZ\80\8a¦´9\93ò¼mFN\vÞ´-VCCCCCC»o G»&ǺM{»tÖ\97\fÅ\9e÷\96å¼\9d8×\rã\rXì\ fñ_\1cà\18\87\ 3\ae\9c \ 2ÞÆ\19\89<ï\81¬ê8X*\ 66JLù5\8fÿíØïdõ\ f*\85dÀ)Y\973¥ÅÑ\9eAOpú\15\83öugmlºxÎu\82\81.\18\eÂçx \ egÈÀ°\v\8eq.\18?B\e§É-oT@»Hh\8f]5òö\fÝ\81s#C«\18^R\18\1cB±W\8dØè²\8e\8cC J\\88\143CF1(\açxϰOb\ f<ý8Öh\97xô±ÙË1+P3\1dc\97>ê<\9d¢V\fî\96 rÊ\1eÝ\82\ 63V\82
++vr\7f\8fâú¯ñLR\18\rÖ¢\94Ë#9¶\98\12\9dÆ\ 3sÔ9öÉÞ\18ÿbò\1d\16\8fýzR»FÝǤ.äØs\93ÇMÀ@\bÑ4ûÿ\86\86\86\86\86\86\86\86\86\86\86\86\86\86}\ 1\ 3ý¿?øå\9bvOÝ¿èÕ© ¼aÞG.¢>Î\a5ß;¿Æ _{ÅÂ׳¾[ë~ï\90\1a×{W{\81ÇRìxê²ç=ºà¬\1c\ 3^ú~ïúIß?èÜ\1cW="\1f\93ʽ\11\9fÇ\9e\99\93ü\v\18Ųß;¶Æ§ßÕ\8eà\8e\94ÿ°\1dA?é\13\7f\17\9fù\8fßö\89ôÜX<߯ê¥_\9e\98;\91ü\11´§?BÏQ\13&Å\957V >"Ý\93Ü\80Ï)\9b\ eùÏd_à\14ê¿>éN©\87?ò\9dC\93}\ 1\8d-ú½\aFø5<<«\93çѯ¿÷ô\KÕï]\95Ê¥Þú\17^<8µ+D\81znOíÚÀwÎxÏ?$;\ 5\ed¿Øî\ fûA\QõßÃö\v;S\9b/ÃçÌÃV>\93ûFÈ¢w= \93ß°ÿÄê\19]\9eÃþ\13wT;\90ÕÏ]\19\8bý\82Èi7WÛ\8baÛ\86§Ryûãó\17\1fZ5^Ò|Ö\ f?ßïÊ[©Ïþ×\9cæ\8b~ÿ\9e\99Ý{\9f¹ge~\8f\1679ÏjÓ1l\13ñfÊ\93_øý9k³Í\80\96%Þü¼\19]_]ñáb3 \8dȾ\ e\87\8fur9Û\9fûrN³EfO¥1AÝÿ¥?T"§uí{xzW\97Õ¯¼ïÁb\13Q|+²O\ 6ÿuß·/Ý\96Óò½îXïñÚ\7fß\9a»*Û\8aXår\eN©u¹òøó\7f\94Ó\ñ»¸¦\8e\1fqëòïg;\v]ì\10Îß\83ïH¿æ¹ì®\8bs\9e!ÛË\8dõ¶\8duï}ú\89³¾\91ÓTñ\7f\997½ë\87\9f~pyî\87¨Mnßöªß\1f¶\97X\93ì\ 2Fø\9c¤òè#tü\91gf{ ©\8bÏÉu3º±4l÷\90}\88f¦´í_+¶\r6\8fÁÍ3ºº\fÛ6\6£[\ 3ÞøÊÊ\17\8b¯\8a)¶\14Õ>cùøâl\9f\11L\19g\eg\fÒn¿1§E\9fevÐôNfËþei\97\16sÿmKý@{\90÷\1c²æù\94\16U\99\9b\9b«Ì\9eý\95åÛs\9a¶Å\8e¤ÖeØÎb[\1d×\ f~þäm9Í\94ñòÅj\ fòÕ\87\16½\Ò|~oZçoÿ`Ó1y\1d\15Ef7W\99\rÛg\_Ó~}ìÔ9ÍkÛ~H\eöB$ý\91·ÉV\97Ö½Ø[øN/B#O\9aÅêiE\7fè±³14¿t\ 63OØ\81ÎEz,ù2\18\86Õæ\12a]Ö\85\ré\11±\17\91Ô\ eI\13£Ry±ÜS\9ciïT`þ\fj^u8´é44¼E\1d\f~P"~\18#u\98ɬÓZ©£§\ 1/Õ\92( ¿\ 1X\ eP1´Æó÷'Ð\88\96j>ÁåE*[ô@Ò;Ú\932Îø$\1d¢¥©*\8dlÙÈ\12\8f<úh\95\bØøPKWäãñ\8bÈ|\8cp\92\ 6ÐF!\7f\9a\9fÒ\80Ù\18|\95vÝTÿQ- Ò\f62t½Â\ 3êÈ\84\87\18\821*²\89\96vÎ\9aå\ 6gU\8c\ e)!åe©Ý\13X7u\92&\1aÁ ÕØ\ eÑBÛI\ 6:G\9bm±\a¦f\96Áë\ 5\83bg[kk\1c\83i³¥\9eJÚ¤Ðd\94n\1d(Xä)±\8bB\e%5u¨\10Cgk\94M\vÝ\10´ó\8c/\8fî\8e4\96\96%v7íÀ©´Ó&:\b\9aÚY¬\8a\96zA\1a¼£\85\8e6\91\18\ 4èV,\8a\90\ fí\8eÙu\93lÎU¤U·r\18nh(\9ao\ 6}¡\19\ 3\9cu.crw]å\9eôÔ*Ø(\92\12<@VÓ¦Ô\89K\9aE£S RO\1d°³\92VÂT\ 6S9\19°Érɼ\9c\9a`H\ fCÞRC\9c#\9bc»DËhÏPò\ eC\8câ\r´Å\96Ø\80I
++\ 6\e8KKj\8dB\fÆ\8fTN$3o\89ML 18äJ{y1\e4MÃ\ 3¦SÀÈCN\11µ\8dT #\7fL\82\1aÏÝàw\17\99rdóG6Íå\98l°ÿÇöû>E¥w\8ayY\ e\0N \8fÉ/\93
++\±æX\f°\9b°\90BàSGEºµ´"Gó0\99=^Ã\10Äw5ÕÿÂalbpB<&íyFØýwzpz¹bØ\89N\ f\8e\89\83ê¡\ e2R8\18-\ 3ÿ\ 1ZóKÇÙ\83\rqÉÛcZáè\95í\0h\ f>BG¯\92\91=þÄ\8aÀÕ\81æ\93tÊ\96\13Ïc\80A´Q\95u`¤_\85ð\90¹g\868Ô@F\10rPtú\b´c\10\ 1Û\ 5Le\83ïq AüX 0P8SióÏ.\86L¢\83X1¹1^¹\8a\86@ëvg\9cç\0÷ì)t\19\9ec\19ÂàB\9fÒZ r\80b¥\934\91Ç"Ôµ\81]\81¢¬Oë\97H:\7f\9aKcø«êC±\9bÍ\88Â\98à¶ÇpâÐ)ÁÑj\ 3ÿÆZ\14(c\8c\ fgXd \99\80\8d´îà6\10âH\ 6ûh¿ÆÖÝ$±bj¢1iQ¡»\v\eűÀþEÏ\87½Ñ\87£éÿ\e\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1aþÿ£\9dÿ\e\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1aö\ 5\fìÿwôþjîî©ýÞÕN~W;ÿõÕ&õ\98\89ï\9dXlKcÇ\178Ìÿ\9fùÀh·?ý´\ f<\92\9e{!û½'*OØ®öö\87×ç»òùeþ3ÚU/ÜqÞ¦ü\«~o^åZ\9b{âAï${x!ÅXïÍ\9aÏ0\17Þ\ 3\ 3®¿;\97e»o#\8b=n¶ÿ=\a\9fÿ¸çÂ\1fg{j_øÙ6W^¾O=µîCÙöÙ\14[ò¥)mj\eæ\9b«ÌV\8d\9f?7óÁ©\98ß;¡¶ë\8c-\97\7f¸pÅ\15ûûgk\eV\8e\9ftg±o.ö¸;kÚ0ßþS\938Øvµ\enhhhhhhhhhhhØ\9b0\99×n¤ÿ\9466ûx\91¾\9fþ$Îz-b\10\1ai\82ì\83ô\1cH\9cøV
++r\v
++%\8c\vtoqÁK+,õ\99µ¡\r>þV\f\0\80g\81Ä\87fà\ 3\16\91H\8f\8fD®Ç?\ö1°J$o
++#\83ÓbÚ»éÃ%é¯\84:;²M\16>F\8dZE:\13Ð\vj7>Àä\ 3à\9d¡¿Ð\7f³wõ1{Võ¹ïDyZßB§]p\13\11\90H)\ 5Î÷\a"cZ7$Èg\voKKK¨
++ý\0td1N³f#\8a\91\0\8b¸°Í\192È\ 4Eh\17\12\98!Ð\186Y¨[\11Pð£\92R_\8aÔªT3\885ìw\9dß¹Ïó¼ïóôÝ\1f\13Dø]ñF¸Ïs\9fû|ÝwÏÝßõ»®Ðåt\føtLùþÿÜÃ\9fxqøûÿô¹£¿ÿOo\1epSuþ¯j߸\v÷^X¾ÛS´¹76^~\8f\Ô\a÷\1cù\ 2ç·\aú>ÿX9\7f5¾m¿rö·«¦~Õ wí\9a'î¸ø§\9cëm«\ eú¼\19¾ÏO)mFnò\95\9b.\9c¬Zî©æ\81\1f´ÿo÷Sçö¿Ï\17qÎ/-;þv_Ó¾ÏWí~Ó몶zý»\ 2Ö¸\1f~eËë\1dÎ?æ¼ìÛè8kû}\9bùÛ=V½ý+\ 6ò\8f§ç\18\1fÕôá§çç
++\ 4\ 2\81@ \10\b\ 4\82\97ô\e\95¶ÞîÿúN¥\7fqô\1d\a3\0ú\t\10¡p1Y[\f\12K¾8
++\1dTí\9dÓP\8c×t\16IÝðqËZå\80(g4Á&(YPmô¹é\92Jø8\f\1ej\19\ 1â Êë\ 4\93\ 3HË\17¯=ã!þ¯\9cs\99îH?\80×bIa§Ï\17CU\ 5\b\eÐ\87oì4"^\96oé\11^\r/·Ï¨oc\b\8dX\95\8a\97 4\a`\1d0Ò3\80j¢\11\86ç\81ò\91¾o\13ëRìÏûÀ@*\ 3ê\0ð+Ð<\ eÅg°H2\14e\vZ9ÔT8\13Æ\0±,\8f¿h\80\12
++\8d\83ÎQCÞ\ 2ò\ 6°\v É\82K\84£VÆ"fRfÜg\ 3!\8e\fÉ\96dUð\10\16\b\98\95"N\90àKè \9dB?H)'Gw\16þ¿@ \10\b\ 4\ 2\81@ \10\b\ 4¯~È÷¿@ \10\b\ 4\ 2\81@ \10\b\ 4¯\ 5ôùÿo¸ïø\ 3§\97ö\ 6rÖ\8fß{Þû*ÿ_÷ª'Üp^ÀDó\87:bí1Ï3/_Óyö\82\ 3ïþøÿ<øûÌ\9fW©7ö³æ\vxì¿\7fãLÎQ\ f¹W}¦\86õ\ 2f5\8eþ {ç]TÎgø\bÎk^W\97\9c¿°´Ç{Kç\17\94óþ}O6oº\85{¯/>kÉy:¿hdþÂì±M\8dÇÿËk>ÄþxÊW¿³Ç\9b?Þ\8a»'سMÅ̹û'5\80\8b¿\7fÞM\9cà ª\17Úü\96S0ìW7¿ù\a\ e{ÒÝ3Þµå\85¹ëvpYtìËödkË}·¬ÚÆ\9a\ 6¦æ\14¨Ö\87sn¼ô©Z\96¹lS\9b·aOº\8dÎaOº+K\1f>KÇ\87\9fýÌWy¾U½ßîæ\93¶arëÝ]\8e\ 6×yCù{§Ít¬~ä>Ï\9et43¥lA\e³aß¹³J\19\ 6à\83»\ eú4\97\ 5Ãcý@[K\13\ f_p,ç¤\10JÙ)Íßð\85ÃÏ\7fºê2Ô¶l)egÒ±÷¶Õ»8ïC;ÖWx°\93á\9c\90Mãݸ\píºïpYÒÜ÷\89Rç{èXò\93\15ÿRÊ\9cªm\19ô²Ûõ%.ë¼Þî\99Û/{\80ïç\Ík9µÍÑ#\9fZÎy&.Ö|\98]ãÝó¸òþ\15ì¹çº¶\1c0Þ=K\7fpÌ\9aoUï<Ëù)W\8cwãòâøy\935¯¥öýÞÒ\96Ñy-¬ÿ\81:\9fÛ|éc\\16ëuKZ[>¹ù§º\9c\17\9e¿«\9b_æ¹Ï|¤Ç¾\9e©Ö¹eÀWoº\96Å®\81²3oæ2£¸\7fëÇûeÓ½ú¾ÐÖÄòÇ\ eùZ-«Þy[Û;iØ«oEË=Zrä9OU?¾ê\8b¸³ÝoØ\8foÞ\80æÆe×qY®ùL\a4ïÏÓvî9°z\97ÂÆJ \10\b\ 4³ªW\99 Jç\102H°ÙÄì2R\1cé?U\8aF\17ËX\r\9atTÑÒ\v=\84¨s2\85ÜL\7f\fe0¤é]N;OÚ\8bdãcP´C\82'\V\ 6N\88F'¸\88åLõ%8õ¥à\1dÜݼ¢ý\v\12z\91O\ei\v¤Cpt\19Là"ý\8b±\11ö\86\89ö*¸§O¦ó\16Ë*jp\8f;\1euTÞÀõr\86÷Ç\rï<ÛFåòjï\92/lî\10U\97ó<Í/\8e9è0yV°\99\8bÅC¹xäÙP¼àt°a0'8\83¸í´\ 3y¸ó\ 54ð\95+^sÑý\ 6¼\ eáÈ\f?IúYöÙEgúm\85\a#M^PÞ:LBçO§Áf\87q\9a£I°\96ùÔ\81þxL9:\1a\88ÎK\8f¶<N\17\ f:Ú÷ÑÎÖÚ~Ý£|+\e¿Ü\83\eOóiÁ¨Ï1ú\81ëhÕÀA\rÞqؾjøÿÁ\7f2Ó\1e1§Y¯DßËß\ 6g\9e½ÿàZ
++'¾ºv\8a5"\92 t\82\81`IÞ.ë\1aÆ\8b´w\8d\1aþ\8b4Àų\ e9òpâÄ#X\%\r\9e)\f\16ý\84\ 6\83nUÎ÷}-i\b©½ÉÛ\1cK®?u\96&1¥î9£a§ £þY´Û;\1amZ´\18cz°\r\92\1d\12õ\1a®\9e\99j
++X\93ÖG\1a\8c\0ßDxhÂpÒÒ\eÂ÷û8Â?q\84\7f*=\15Ôh§\8a$@÷\1e ·LJ\9cc\8f\84\ e\1a\ 3\15± éþ&ºê%Jõ[z)ÑÈ;G+\99ºFu\9bD}Ôð\0µô0Ñ\12µè<\r\ e\96\92¢_i,JxC¦ò\14Òÿ\1c^@H4ðÈ\1f¡'1£\ 6Eï\8f\92cA½¤¥J\1d¡\91À\82¥Å\9dè\8dJ\e`\8d¥%ñ\7f\81@ \10\b\ 4\ 2\81@ \10\b^\13èÇÿ_\9c÷ðIÓK{c\8f\97¿\1fXFÇ\91[o]ÆqZÄÉw¶8åñ{\ f[ÃqØ\9c{cûÊyÄ\ 57.>ì¡\1aãR½±\ 5\auõ,Üzë¹å¼ó¾ÓùG\fõ«[ÿðëEÿßxÛ\eÛÚê\9fê\v0¿´ç
++:®ûÉ\9b\1f(ç\93K½±Gçt¿\9fê\17pÕ\9c®þ×_tX©?fEç\1f\98ÛÎÿè-\ f±\1e¡¢öÜÐbº\1fþÀ[\1fb\1f\ 1ð\1d\98¿°\1cíÿÕm\1f(çK;O/ñEÄ3\17îÛµ®\9cÏ1Í\1e»¡ô\17\17]4¹ã\8bU×Ðsl\91¹
++£¹\ 4w\95ú@Äø·»\97³v¡
++\81㣿hm\1eæ\19\1c^ÊFó\fvµ±¼|rÃÍ\fj,úöÆ\9b\18ÖX¼f¼\7fÝå_ã2Wù\ 2¬±x6\1dk\1eÛwrå'T\ eB?vzA\ý\f\97yͱá«ZÜøWï>û»\\16\1c·å¦ÆO\18æ \8c·øýÇO^ó,s\10B\8d)ÏÈAhZ\90\8f\9c8Áã\19\9dçñt-\1e{É\8fß÷{um×Xô\83e\1eFó\13\9eo1ó\89;×r[\92ª±á-sºy\18æ.\9cÔbÃk'wÞ]u)ý ÿ\ 3ævå;\97ÿ\90u)\8dæ¶ÜÛÖÄ\vï¬k"Ûº^V\97²Sèø\82»\90Ç3\87È÷;µéD\9e»q)Çö!-RʶµçôÜ{6<ÌÜ\ 5¯y}>Ðbí«&O?¹ó¢¨¼\8dr\1d|6VøËöÔ²ÌmùÅì®\9dÿxÿ\9aÊAð\91ça_)\eÍO8¼\8dË\8aÉ\83ÞÁ\1c\ 4c¸Î£\ eê\97=ºr\17ê¸|b\ 6^æ\1949¯oëzØOãɹý²cø~ÑZ\1eÏ\9bætÏú0wá¦\19x\ 6wÍéÖÙÄ\8fÿì0æ\12¨:\9e\13\ 3þ\1d·sß³\89\æÞسa\ e¢6·\8f\1f²|w-«\1c\92kÚ\1aüÓï|÷\ 4~\a«\12\87\12\b\ 4¯m ¾\85hê\f1QÚÊùHï6g\10õ¤×m@À\©h\8cJ: bRÔQ¹à\95s\16jb\ eñÅ\1cMN\86~æJÌ\12Òc \8bÒm\10ÑwÞè\18cÙÐè\14B\11!+1=\84%éÿ=BÆ
++ÑÑèukËp\\98¶(ª\84N÷\13\97+q8\1fs¤\ekº\a\14\97½U\8e\1a¯lÌ\96Zkhk\914Â\91\96:\9e\8d\838\16ín\82uÑ;\85ð¸
++Þ$üÒ\1aêº7\81÷Z3Äõ Ê\85îÓÕ\88\98\97s\91\ 6\8aÎE\vmoü9c\11]\85\94\97£{\ 6Ew\81r\175\9e\ 67£U\88Ï"\8ej}Ø\ f\a\80*w\95; Z\7f\7f\a9\13Óy\a-þJ§S\89¯R¡ E&\8f6f\86f°\88Óå\0Á<ð\13°Ô¨SÎá\fºBc©\92ñÁQK,uÆÓ\18C8- @M}¢éM5n\1d#\r\14(\v\ 1ìKåk\9cwZ|yT\8c\97úb]HÙ\15>\ 6ÆØ\80\8c`@\18\0\15\ 3qh\8duch\9a©\89åé\88\99&QÃ\95Ìz¯\10&64æ\9azE¿Ç\7fAH¯{>\11ʦ\85CË+Ó6\89v{~&Ý9DäSÇ\ 514P6\18\1a\91h§éÁS\13ü 7\84\1eIE\v\8eÚçK_hÁ\14æAÔ.£OeãÚ¸)xÌ!N_\9e\ f\9awW\1fsLs!\ 1$\9c\rXiÞ;¬u\ 3¢@ÄcNÕaéÑ+\82Ö;=s\1e˧q:è¥\0Ê\ 2È\94by/\95>2\97d\1aßå·Ây\0\a£\8c?d\0i%\r¼gh\85«\´\ 3-8\f4\16\83e\1e¯Z§\r=\81 $\ e%ñ\7f\81@ \10\b\ 4\ 2\81@ \10\b\ 4/7úñÿ·½wÑ\13ÓK\ f\1c{²å[_»àO.-ñódfõj¼yX\17\80=ô\86ù\ 2ÛZ¼ê\1dç\1cý\å\v\84ÞØî\96ë=U\17àÖæÓ7U\17`}\8bùMÕ\ 5Ø2À\17øü\aKþ\7fò¦7¶¸Å2\8fÛû\17%Î\19¼Ñ]ü\7fX\17à¤\96ë>\95/pÏ~ø\ 27¶\98õgþjá/Jü_;׫¹ÚÃ|\81[ÊùM\18Ó¥¿ÿ_å¼OzöX*ãðy:ÎÖëw\96ñÁßÂÏB<ï\96\81øýû¯å8|\97O}kã\12|äÐË\9fæxº®~\86WÌ\10k_RÊæÓ±îGGsü>æêgÈqÕÏѱt÷±\9fæ¸q¶\1c\8fU-N½oÎ\86\1frü7×¼ï£Z<}bçqo¯sYã±\97\94û!6üOé\92\9agî#Ç\9bS\9b£\95\93ë¿ÌñX\959\ 6:¯Å©Ïÿ\9bË~ÀeIsß\97´8üÇ\8f^ÉuF¥¸lcã\v|ïÎ\89§k.y\8dûß[ÊÖÒ±j§¾½æ\92W\r\ 1ÕÆz8\97|Aëû\137}ü\87¼&ç1s\8d\7f!1W\81@ \10\b^\9dèbî\95·0ë¥\8eU»¤\ 3íÏ躨3Ákãi×eR\8a\81¶\821GÚÕZ\85´t$Yëä¼q1s\865m\a\13b\9eà=\ 4e\15\88\12)9j\8cW\ 6Q\\e"6j\96v\87\88f&ª=(H\ 4xj\ 6ª\ 3UÁkj\96µ OÀ\e.%p <jÊ\1eÖs)#\8dZ©¢9\90\ 2í3\91Én\9cE@5Ù\91^å\ 6Vßt¥.\8dW&¸\905lË2üãhäB\fÊ\19h&\94\9d¤IÁf\9d\1dÝÏFj³ó\11éßô\ 5PrË\ 3]\19\1dx
++°Î£ÞÀuÏÑ Rk\ñ{Ë.#6NuCéÇi\10\10¨\ 6\ 4|!ë\846z\13\82\ eÙÛ\9c\9a.\ 3bâÆ)Õù«\8f⩼\94|\13^k\1e\f\12ç«ÞÁ`Ìÿ\95¦M@WÁë>gðGB\b\88ãÓ®Ý\8d\8aõ£\1c\\81\8c\ 1\8dÅݰö\8fÚH+Âwº\17#t+hEº\12ÙN\br\83o\0®\8d\ 5³È)\a6\ eìñ@б¡Xß%ð\91\14}0\9aD«\95Ú\e\112\87\r`.J\0Ôó\0¹-ZèXq!ÒS\r\82gáU8\97˳Hc\855\90©o D\råiEá\19\8a\bÃS\v!ÄAÏ!-\ 1Dýé\8d@Ï\9c*O\ 2xJ4»ô\85KK\98\86ßÂ\11Reº0ÑèÑÓ\8aI \85«@´H>1\85\ 4\8dÁÃ\ 5*\b]L\ f]ÌÎSM\114$ê\10UoSÇ\97ò4iôdëª\7f\ 1
++\ 6ØFq\94\9e\86Äÿ\ 5\ 2\81@ \10\b\ 4\ 2\81@ xõC¾ÿ\ 5\ 2\81@ \10\b\ 4\ 2\81@ x- Ïÿÿã\7fØþÐôÒ\ 3Ç\ em|è«\8eÝq\ 6ó¶Ã¬\8e\87\7f\1d\1d\ f~ûÐç\98{\1d\ol~áV\ fëù1?ú\1c:\8eøõ\19\8b\v?_\83o\7f@Ó\9f[ðÝc\7fÍ<ü\9czc»\9a\86Ü\83{\8e|\81ùöAÍ\1eðç»lò¿\8ff\9e¼u¬#ö³R6\9aC¿e\ 6\1f¾[Û½\96ýóú\1dU\1f¯j\9a]=\83\96ÝÎÖ\96õ\93\vïd½:]ùîìµw=\1d\9bßµì[¬Wç\ 2_wuéóh½º\9b\1aÇ\ݲüa.³\86¯{´õáC\8f~ôDÖzs\95뿯i\9a\9d\9cc«\ e\9cá¶ìjs²ì¨õÛ\99³¯k\1f8\8f\ 3\9afKw\ù®Në\8d¹ð³\ 6¼è¦k¯=Úr\v\86µ×ØOo´NÚ¡M\17qX\vmA\eÏéZh\ 2\81@ \10\b\ 4\82ß=\14_µ\18\92\8eÚÃ*0Â\ 4NCÊ\ e
++\80Ð[SIû\94\94qô;$:\18\8b-º3Îç\Ô$\91b UÈÁûhl\8aeûkR\ 2\8b:¸@\95\eÚ/Z°¼=\9dW\96öñV¹\0·º\8c\1c\ 3ãé\8et\83ìÌ .^p&\82?îtD\1a\82\834ZÓpó\ 6Ò\86)ºâ]WûaèæðsöÙQýÔ£\98Bö>Óo :\a©EÍNp\86
++\94\ eP|\8b zuÊ\17\81Hê9²2\92Kù\95¥ 7Eﮯ³Ù×\99Dn\83Î\99f'ù\84d\14\1fb\11¾3\81úF_o\81nK#\81\94\8cH\ 3£\91#\0q=ït\80\ 4!Xù\16#N\r¢º\8c\8bÁ@\ 3Ód[Úë\8bzfÊÔ=¬\14\aþ>}#`\è?\91\89\92!\90Ikh¿ú ú\92tʦW2o\7f?Z\81E<´h\8bÒÐÒ Ú\922\82\ fMµ\7f\ fBÌ(}\8eÓ\18\85Ðå§Xz\1eT¢õE\ 3\81|\1a$\97Hü_ \10\b\ 4\ 2\81@ \10\b\ 4\82×\ 2úñÿmg\9c¶aziolM\8b+OÕù»¢éÎ\1d±ö\98ç9NmolßÁýßÏ_ÍqèLçW·z¦êðm<¸\7f~зïûÍOkÑ\7f¼¾øw\85¤\oì\vå÷\88-\1fóâ\11+\8b>_Ìt~S\8b\9bOÕí\9bhº\83ï\7fá\84\9f\17\1e\812¹7vxiÏ)t,øú[·\96ó:ÇÞØ½\9d\v÷^_<ö\92\83~áUýú\aôÿfW\9eBá\15|ÏÞÁ㣫\96Üâ\16Ï\1eöÏ»¦ù\f\1ezÇÄ#\1dw\80µä®ic²~r\11ûõ9c9F~j\8båÿë\91«Ø\ 3Ð\9bÀ:zÛJ\9d£y\ 5+Z,\7fÃäVö\9e\vÑUO·r\1d¼Ù~p÷¥Ì\9b\b©jå]Ùô\16ÿò\88\15ÜÎh«ÆÞÏÊ\1cÁ\vnÉ\eÎzºj\bfîãm\9eÖýdûÕ¬÷ØÕÙk÷ûè\1f]Ì\9c
++Ⱦ\94²«JÙh¯»E3ð\1fn\98Á\ao}ã#,Ûó.ö³£Aã1»¤Ü\ fÿX¹ãÌ¿e\1f<¸\ f74ÎÊÒg쵬r1.9¸ëÃÇþzÙ³Õ?Oñ¼¯\9eÁ[ï¤6\7f\17\»î;\Öùà=Út\10WLîú\12{äu\9en[Æ»uüȧ\96³\9f\9d\8bÕ§qcãp¬Úý¦×1\17#Õµôø\fÚ\8a«\e\17cÅäî/V\1f<Ï}8«ñ;\9eÛ|éc\\16«Î#ûI¾\9b\8eOÎ]ú$ó;|ª\1a\893p?X\93ñ6:ÎÚ~ßfÖV\8cu}Þ3à\83÷\95ë¸,GîÃÆö.\98ؾ¤+Ë<\9e··q\19öÁ;¥qwn¼\7fñ3¬×X$\95à\ 1ØtMOÛ¹çÀêSê¹\ f÷¶¹]zíé?.e&já¡\b\ 4\ 2\81à7\ 5x®Åì\8dJ\1eV\82¦jvý\7f=\ 3[ìÚA5Ð[G\17ÇêµF[\18x¥¹\ 4 ¸¬¡\84ÇÞrJa\83f\83U´¯\80~Û¬N÷\8c\9a\92\ 3m\8fé$ÔÞb\88*\99¬\8a7 ËQǨMD8Ø*U"â6Y_Ü\0\aÚ\82Æ[\84è\8b\7f\9eE\14\94öK.ê\ 1\1fC\13ó¥-ÙSå\ eþ\94\1e¦mÕûm\94ÿ\1a5$j\bÀUM¸WR\1c}\94\1f\9f\89Ô\bìQt7\1f`D(¨´\99¬ÙG28k\8b²c°\88\1cÃð\ eF\8b Ú\8f 2|\11ê\8e´\99\817±\86{g\82\90_(¦|´;ÏePàe\a}¼\1a'\86¿]ð°è£\95FSí=m \83§Ö\a,!ÄÏéfÆé\14\13¢ÃT\81C'«Þà¨8;µÂé¦\91¨\8a^"\86\95j¡Q¤\81/ý¥I¦5c
++¯ÀÀ$¯\88\jÇZ\81´\91s´\baÌGsí\12*Ú£Y[\844é\94\85|&\8d¿\86J¡\ ep\11¤³\10xDl\9d¾\er\b`\13\18\1a«¢\1eH\83âèÇÔZ\ 3oJ\fW\80@¥\82×i(N\9a(\ 1\91\0\ 3¬\1c-\ 1ºcÆw-Í\ 1Ô¾iû\fÚA\80©a º}][£âê`5h¬\exV¦Â9¨ã\ 5Z\ 3µ§Ó/TNÑRR>À\14\95ÆØ\r¬á\ 1-G¸q\82=R´\11é\11 \95a!®\98bõz\1cÐ\1cÍxìá:\89\194\96ý¦K¬ß¥\0-Lz\Ê\a\12Þ)\ 6\91\7f_Ä\rsí\8fÄÿ\ 5\ 2\81@ \10\b\ 4\ 2\81@ x\r@¾ÿ\ 5\ 2\81@ \10\b\ 4\ 2\81@ \90ï\7f\81@ \10\b\ 4\ 2\81@ \10\b\ 4¯\ 6ôóÿ¿qâ7·O/íÕ|ó»èXðómÿSôüU\f½±ÓK\ eð°Îÿê\92«;¬ó¿¤åé~i\ 3ëüû\80¼ú]åï\1f\86õÿßRêA\ eîÖ\95\v~YòùSȽ±}-§~0?¿ÓÍÇM.\9aÜñEÎÃ7\9es\84\9fo¹ïÃ\9e\ 1\13å>È7ÿû\13Wq¾¹\ e\91ó\80\97´Üéáüý\aÆûeï¿\96Ërâ|óÅoìúú\91C/ç¼x«k\9eº\1aÐ\ 4øé\e¹,Õ<îõ3ø\ 2ÜSêü;:Î>y\ 3çÌÇXóÆ7¶<ç\89;×>˹öJsîô¬\96;½aÛù_æ2S=\11\96ÌíÆx8\ f\7fÛ\9cîºá\û³fð\1apïçn\ZÆÓ¨X}\16\9e,×\9dGÇÉÇ\9c·\87óðKz\12ÚYú°\9e\8eU;ß{\0\979ÅówcÓ^øÄÁë¾Íe¹æ\9bß~p·Þ\86sôU\9b¿U\93§}¶æÚ×\ô»\ 6ÊÖ\1cɾ\a4\81¥l^ߣ`çqoç|zU½\r\Ëo\1fεßÒÆeåä©wÔ|úT½"æô˾ÉÞ\ 6Ñ8ε\9fßÚ²|òÌ\9b9¿Ý¨º&\9aæÁòÇ\ eù\1a\97q\9eÏìªÍ±\ 2kâéÅ\9fæ2_¯c\9f\85Ñ9ó§ÎíßoªÏÂì±\aÇ»µôçú=OÕ¼øÄ×¥¦ùñ¶Ù\1fØÉeÑòZÚ×4\bÎxúÍ7sμ²\923/\10\b\ 4\82\97\ 3ûÉÑ\9dIãÝd\1d\ 3ô½\91\87=\90W\9eTT\9aj º æÍ\7f\96uùº\16iÌ\90<¯÷4\1e\99úÎÛþo2]þRiÅ\97{ú\90\90\ e X\9eµË´ST6&\13<¤Ó3ä\ 4 \93\ e\ 1\ 1\a\8dð@möEs?PÛ©Ã\9avæÈ&\862~ Njè¸\aº\98z\9cMÉÚNÔ@\ebÖt\8eÆÏS¯\15$ôc¤ý\9eÏ\89î¡<RÛ©{*õÛ¦Ãÿ²w¥±vU×ù]\89\88k0µÛ2t°\92\8aA6¶\81=\ f-4n\v\8a\91\1c\82Il\83ã\81\14(.6C\90\13!D*\94¢Ê\ 1\ 4\89D$~Xª%¬Ö\f\ 1#¬BC\19*QA\13«q\82\ 1\e\1c@à¼:Ì`\87AÐÒõ½ï~÷½{\9fû£eH¼>å8øìsö°öÞïíãooù`\92u=ms\93£C¨}¤\11z\9f\92st\10Ë\ 1r\ 5\91\86\9cs¢\ 1Ò0}DÐ}ÎÔ5o\95BH3Çt#\82Ûá\16¤Ñ#\19Äæ@G\ׯKo!\9cnmÀ4XCoçª\8f\ emv\17¨Ü)H\10Ð\84C\85\9e:Îòìd\12\9b#\99\92ê£úÉÚ¾\ 4hcF£Eä5ÙU!ü^\95Àq_ëõ\ 6\8aî©oÎ\9bnþ$Z
++\9f6m\ 2£0×!!FßY_uè#v\872\93hSL¦Y\0\81\7f²TN!Z²_¤aB A\1dßѲ"S(ëh\81\91\15mJ1QÍ.Ñ`¨&\8bõ§bäÈ|O£¡©¥ªiùÓÊ£½B«\866P\86$\0BíÙpô\19\ 3ý\ 3\16½PP\ 6ð\89\16\rÙÖjÔ\ 6Õ\ 4l\98¤yÎ\13}K \13\86f7@&\83µ\18x,©ì0²hÂ\8e§?iO8²n0uÅÓ¶ÁÊ Ys\ e\82\14\916±Å\86¡\83el°«ÈJdJê\81ÕX¡\99ö\e~\10\91)ð³"»È¹$\90/\0
++\ 4!ªª\v@oЦuü\ 5\ 5µ/åëº\85\9e\18ý¿óØ5Ô\8b\8fB\17Bø\7f\81@ \10\b\ 4\ 2\81@ \10\b~ó!ßÿ\ 2\81@ \10\b\ 4\ 2\81@ \10\1c\b\18óÿ\7f"Îxqbi·³\9eý\88o£ëè·ç̯ùí\·sf_\9e¿þ¼\80×4?ÿc¾>÷¿JÎ-{yø\90Oì\90\85\9fûW¾\1f\15Ý\7f¸ù"\9f´wú×ø~Ö\91ÚmùñÆÇ\17Lçç/£ëÆW\7f÷\11¾\9f\êv\1eiñ\bk\1e=âß8\8e@ÛÜíl\9f$ïà>ö¹^J×ì÷oý"îg®\7f[ëÏì½\8aó\væ ¨?op=ðo\9eýÁ\9eÕ|?Ç4¥3¿ù¦Ï¸ueÉ\8f§Tõ\a¿\8cß\19\9e\ep{ëï²{Ï.yüTÌ¥ì ¶ù÷éZ¨×\94||:U\9fý\1dÍ?{ç\9dç½^â\ el\8d\1fØÕê|pãÊm5o`\98\98#nÕkG>PÊ\82ùθNäñ{ö\9e\85/Õ2_ÚÛÝüùï»ç\92=¥,\85þ¼\81hÏ\9e°ô§%&Aõòê±]\86Ç+\94¼zÃc\12\8a\1fùðü\7f_ikn0îà¾öÞû·®ªq\aÖ\95yØÝâ\1c\96?´¬\94¹^ν;¸l¸¯ÿƶv\96\8d^4³\94Y]Ê6µ¼\81Crçµ\9c\89\83¹óÎmeKþö\92\9f\97²¤ËØ·öùå\9fq\7fõõWeì[\9awn¸ò¹²¯¬/ã;¨\8da0\97ݦVç\19£\9b\ e-e):ùÁ'\10\b\ 4\ 2Áo4ØÏÛª\0\8fû\9as\fNäÙ\ 4N±æ©D9\15áþOGÝlLtt!\11\9cóÎá\ eò¢ùlT2\1e\11\vÑf:ê\18ËiÜ\ 2üö}\f\96\13ë\ eÉÿæM\b:dúkâüpÃò\90\19¯MÒ!Æêcn\82\8b±Ï\9f~dB\1e9v\8dgßmªX;8Z»¬\9c\8e>7ßv\8dè\aþÓÊGês\8a5\ f^\86Ã;\9c¾\9dU%\8f]\7fÎ5\9c´£\89\89\8cààõ\1f\ 2=\9b\94BªEôQY«R¤\83.\1d\91\95£*\90\9d\ eçsj*'6\9cG\96D¤\96Ã'\91÷8\84ÃQ\9f\ eÀQ«@æH!p\929Î\8f§|FÚ9\843ø\14ö\e\93Òï\9b\1f\15Y¯\8d5¦þ¼\8fFÛ\0[k\1dl`\1frä¾K\ 1\1eá\88å\88½¸\8c\9awÑ#µcrQkå\ 3b(È\0è±CÜ
++V\ e>1\10zA+\86\ 6L}°6¢\7f\96zOVÉ9iÄr\182½\88Ð\aca)tD\99hCò\bh0t\9b\83.\fµ\b\ fv\8f\b\8aLÝ£ú\\8a\88v êmêõ/¨ È´\81¦\96\8c\93i\1dej\12!'\88L\bÈl\89EÁSB\ 3\b\8e\962}?Ò@©vj*&øï#Ê\82Ê\15*\9f9êÃQSè´ál\88´~\91·/ÚH\83³øD\8b4·Hà\97ñ\98ñH\aH\ 6\b´ìè\8cÏé\ 6Ù\89?#l$ØjK\9aëþ|\97TCF\10\ 2f÷Ó\1a¯#ü¿@ \10\b\ 4\ 2\81@ \10\b\ 4\a\ 2Æøÿk¿½íæ\89¥\aW\1e\17üá5s^8£p a¤Û¹¾q¸³\1e\9d³\84¹X\ fÞþTæ®o¤ë±'g¼UtÎ\82ëv\16Lâ\17°¬q¬s÷:æ\90\9dW¶Û\19i|çÔ/\1cñ#Ö\vT*u;Û¹~ðß«\96Ì~\93ï{Kí®k<çx\9e\7fWã~Çë\b®jý9ý½\93¸\1eÈ{t;\9bùypáG\9fvø\87Ìó+¦t®æç×ѵüö\85OV}A]8Önã_\aµ\a\8fåþ\82\97þç{+\9f\8d\7f\ 2ä²+Ú\18ÿþ\98\15?«º\84±pÈ'÷é\ 4^|Káù\8d.eóúÊ®;¦h\b\9aP¸à\ fú4\v'ê\vv\7f«×Þ\8c;Ï.¾
++NW_\85s\9b\1f\83ÚX¹ü`«\8eÞá\8d[_»yE\19C\8aU\13nzÓÃ[ýê³ëJYòe|¯´±\ frù]\1eû<ºÖ»\15OW.?\16\1e|.¿\a\8eü©\1f®y¦pùÞ\17\9f\83\19Ü\97%t}C_ðJÑ\ 2ôªØåÜfÏ\ fOYSt\ 2«ímþ\ f\83º}ó÷£Û·¡iÞ½\7fñ/JYNÅ\9e;úøúÓî*|½®\9a\85ûx\f\17¡½Ýú\8eªéW}?öµ½3¨ÍWôþ¾G×\19»îÿDzOz\1a\90û\9aVåCÇ}s´pù¶\96=6©6\9f@ \10\b\ 4\ 2\ 1ø^\15Ó\98n\9eÊàÒc\82¤\1a´ç\1c(H\9d¬Ö\1aÊs\9e\8eP6Ð!Ä{\bËi\10áY»\94\945\86å×|h\9a\84ãy|æEé\18¢\98Ww PCîé\9e\19¯\1cß·`W=\v®Ñ\91Ì\99Èr\88ôÙ\0áhè\b\82Qw1&\9dÁ\85j¸\1dx0·L\8a\82\1c¦\ 2\eY®1Pç3N\84&C².Yê¶JÐ}ôÊ;\b@&\ fYA\83\8a\14DÓ\12¤Þ&è¬Yí\1d÷Ñq-*%\9dà_\0i=\ 3\9aV[Ъ^\83Gµt\88V¸Mg[²\ eh\7fx\13\98\98a\rÈÿÑ«\86ίT\13<n'ÑÏ+Zt>+n\85&£éáQ]ÎÔì\13A\86\83\81\92± ·!;7\99\1eád\1a\96ÃtýL´\8eý\11h\14dÛè¨\11\16ü\86m¬b{8\1a§ö\89\få|¿ö¢V1`D4\8b4\15ÌYÃí"è\9c<F\9eè%ú¼";E\9a]k,´\v\1dU\923{Jd(\1eª\90i\89Ec1v\a1LL¾\ e.PådN\ 5yAªÈУo!êR°9;°áôµE-R\ 3Ù\99\9eß\80Vø\80I\99ll]Nãü\1d¨>ÇÊ\88 "\89\81¬\89µoá\95á\94Ã\9aÂr²!Ó=^*hYÁ\9841ô©e!Ë\193¾l³\85O0-\82àØ¥\85eû\ 2-ù \8a/\aoª\9e\9d<z£ "I&bKRm\99n°·\80Ï\9aÖ5\9c+h\87Ñ6T\99ö\ 3\r\9cì\91±)T\84àa¶´Ø¡fIûÌEø9äD\9f\ 1\ eÊ\8f´â0ðlÈ\10´ºá%\80§Ùq\82VQ° NÊ\ e=\87«\89ðÿ\ 2\81@ \10\b\ 4\ 2\81@ \10\1c\10\18ãÿ¯øÁ\1f,\9aXÚí¼Á<æ9t\1d½uÓ9%\8e\eyû\1eãûÌç\9f5óÂûæÐíìi¹è~rÆ\9cÿf\1eÒ\ 6ß\9cõ`Üþùíùñ|þ\ e~~\90\87ßÜî\ fƪ/àº\86Çy_ÅeÃøX\81@ \10\b\ 4\ 2\81@ \10üïø$ô\12&Ñ|Ð>$\aWàêÏ0\99\9f\84ñ1GÄÕS}ðäõV9ꨲ\11T¾3ðl¡î\ 5dO\8c`á-F\96!pá\9dÒNg\15¼Ix\12R\ 4Ñ\9bPtÛö§³0\89?ÂÇé\87\90\13ú\90àJ\11¢ã§\85ÿ\17\b\ 4\ 2\81@ \10\b\ 4\ 2\81àÀÀ\18ÿ?å¨wÖL,ív¶2ß>\18ç?\95ã\8d\aõüß\9d\84ç/±Òàùg==\87ãÿCÈtÿê\16#þÂW?·\97ãóctÝÎ\eMËþ3_û,ëÿǬT·sÇP¿\80nçæ\16\87>^\9f\7fzëÏâc\96\97¸}$0\18a\1dúýÄØ\1fÔÚ\1f\8c\95¿¯\8dåÊ?=ÿåb\93\90jì:\97]G×\85/\7fç\a%\8e¾\17¿]´\14 ë\7fÏ\91\17<_|)zñÛ\1fLíÙáñ?>»ÄÊGWãè\1fi6\1aÔ¶ßÖúyÕ´Õ%æ]çTbÞ¯oñþ\97ß¾ú).3,û\882nïR\94ݲúõ\1aó®J{3ö\13óþ|Ó_¸ù¡S\7fYâÓYú\95ÊÖ5{NÔ\9a\9fÒy·é0,ºa\ 1ûmX\13µ\92\r(\10\b\ 4\ 2\81@pÀ\ 2üi¢Ã¼UPÄO>;D³CËÜF:G"\b\9eN¶Êd\17µµ.\83C\8eÆX\r\1d\ 2çL0>\18ã!íïA¨ºl £®U\8cP2pÖd\96[Ï\161é\16íÅ\1c|\7fìûDÍö\89±÷)ÛD\1f\ 1\ 11úÎÑQ\1aÊò:\9ad3\9de©Z\e½ÉÐPÐ\90»wÔ\ 5è)\râ×D\8f¬\b`a\ 3¤þ\11\ 3\ f\9aÛSÏtD\84·RÔ.· z\1c\94pfvX\19ú\86\0ßí¨ù¤"óØ\19º\ 3\11Áá\ e¡Ý%\81\16çF0\1e\1a\ 6Ð\7f\a§L\ faD\ e¯\15í\ 12\19Þ\87ÙÈ$9d\r\92Û¦\91\9a+\82¦\80\ 6ã0Hº\ 2¬K\7f\ 6ú\8e³\1aY¼\p\b»O\9afÂgÌ\ 2ÒTѼq¢\0o4$\ 4\9cb¹\ 5¨\1c$\ fù|¤\98@`\7fð\10¾W!û\94 EAök:\ 2Á»^¾\87ay\1a&ãô{¹\10\86é'Xx\eÀö:ë\94 ó\1f>\11¿\ 5¬\aÄÿ;ª\9ef38úÖ¤Å\83¬\ 4\18#L\87: 8ax>\83Á: \19§:5´\1aLR<WÙù\bõÿ\9cé\11²\82Å\92PÙÓzLÔ ÖÀp¨\99\16µQ9\ 5\1d0Nª-$hR@K Òü\8c\bÿ/\10\b\ 4\ 2\81@ \10\b\ 4\ 2Á\81\811þÿ{û®ýüÄÒng\1eóÄ·ÑuôÛsæ×\1cö®ÛÙ:\ 5÷Áõ\9e¸÷ò?+¼ºñÝ>Þ|Á¼ß\7f´pÀÆt;oð¿3@G`öÖM_æûÎû\1eÿ?èG0\95¹ò-tÍzsÛ;ìG bèv¶s=ðG8úG×=Sò\ 5À¿àä¦á>^ÿ¿Ûò´\9fðæï¼Ï:ÿÔ¡nåÛÑÏ\v¿ø\87?.~\ 4V÷ü\ 5PÿyÏØ;ëx«nûƦyð«ëÿêÅR櫾üÔ¦\ 5\7fÉèOfV-\7fW8óÍÏ«v^\99KY¨\9aõû¦ôú±Ü~õ¹R\16sáögMm}ÙµxCñOPºpí;Z^\86KGO¿¡\94åê\83p8¿\a_\88¿üåÚ\9a\1f@U]úµ\87öÆðÞa«_(eÑ\95÷^á÷ðÀ\ 5Ï_|kÍ\ 1\90K?gñØÏ¦kýµ\8b\7f^Êr,cßsHo\fö\84\9a; *SÚû\80Çw7]ç>þ /e!\94÷^\99Ö\eßùOß?µ\94¥\9a\eaÛ\94^ÙÅÛ\96ÜVô%ø\9f8©ì»ûÉ9ðFÓÈ\1fô\95Ø57ö/_½¨\96ÅjÏ\87\9b\ eÅ{\7f´ä?\8b\1f\85u%çÀ5\'\9ccVîþ\8b\83J\99«öÜÂ}\19\9e\8f`:¯ hù\9fùÄYõ½\}OÞmëuåèÜû\8bo\86³¥½\ 5\87ööÄåÿ´æ\89¢c\11UYK»§ôÆðøß-}½\96Õü\ eÇ6ÿ\8be£\17Í,9\ e¬®>$\87ôê|ëî¿.u\86èJ_6r?\87ç*8¿\97\1dG--ãËÖ\97÷\96\1dÚ\9b÷\9d\e®|®ø\82X_lýn{ïo\ e^Ps\15xΩ \10\b\ 4\82ÿ_ô4Ä\87ä\ e7\99~Ï\81\13íå[\ fÑsþt0V:\87\90!²\9eMÌ.ãÇ4ý\15 µé´\91-ýª£_"QE\8b\ 4Û\ 1\99²9!<~}ä\90\9d1)\a:_pºê\18\14\9d&\82¡§@ciPjPçÎ\99êK\965©½\ 3ÛF¿#\83¢\13\97\ 6×\1a\1dHªàè5\vB\95þÃØ¨\ 3²k\a\ 4ÅfÐ¥¥ï\19D^ Ã\1a¸È\1eg9!ç|T
++2ñ4,\97²\1f\19\97S\1e\ 1¿HA\1e\fÇóR_\¥òд÷1Se\81£qUöÞA\vß\ 4C5\83ÊËT%âl\13¢\80\83µ\1eCrºöÃ\82\97ôÈÖmBèËS\8fc\eõÑè:\ 6ÄáB\8dÛVv²¾\ 6Ké|JPl§?\râ\8e!\89_³x\83²\ 6ͧ½£ÎBÑ=j\8b$à\96l£r0P]O Di\10`Z£ÃÄ"L:ZEO\19\10ç}\©U\993\9dÛ\1a»LuÓÿl`®Rqþt\9aD8wæ26ä$ÏN1õÚ\9f\93þ×(G{´ @\1dËM@\93ÍûÃ\86\9e\9e=5\1dà/\0izd\11H\96ë*ÿ\1dè\ 5P¨
++Ý\vHä®h×$dX\ fÈ\84\0Ö\96f\ fáÚXWÔK\1a\18f-¯\81\1e¡Q°ÏB \9bÐ\8cx\ 3\1a]!ç\ 2í\1a\ 56ÚÓ¬Aï\9d6bvÕÎ\1fg\9c8Í\ 1\8dÞsa\ e}?WhI¡»\8aSÐk\8c:"×\82£ñ"Þ\9d¬îÈh\1ejôd\ 1Ï\96\0YOV3\b²OÔÓ@[\8aºe±A±4\87ø\\fË?\80}\87õ\92z9\10>¢¼\fð\12!Óå\14°\ioà-GÖ¤5ï°_Ñw\9a¸\80Ji\93&2\a~tÑ£d\ 2\9a7\151«ÆÂ @¡\97ÔIOK&À]"Ð\90ÀÙ\e¸#°ó\bM¢\82¤?\96\8e¢u\e|¢½\8d\1f¢\1aµ\19\98%A\8fÀ\93éàd\91Ñ ZçôSQÓ¤ZöQÁ\8f,¬~Þ\f\89\93ÒµÜ\1eØ÷p3èýÜ 0-ýÄð%\7f\9bðÿ\ 2\81@ \10\b\ 4\ 2\81@ \10\1c\b\18ãÿç½½÷µ\89¥\aw\ãï\9fî¾Tâ¶ÝH·sÙ$y\ 1Ö·Üæ'þû´]\85\83T©§#0ÈçoiÏ\8fçó\15ß_L×\r£s~Å÷³£çÏn\1cüéï\9dÄù\ 2\10\12Ôí¬j±î\9fùÅï1\9f\9f²òÝÎ\99íþx\9eÿúæ§ðþæ\95%¾\1fé\15G\98¯o¼û _\7f\13\97\81'Þyçy¯\17ÞÝVþõ»\8dϾ`û³\ f\95²àûùóá|ýÆÆK\ fròs[ÿ\au\bÖ5\9f\835£s\8b~\813\95C\9eßÞ{pãÊmµ¬j\rÌà2\fäÒ\17/\9dVõ\vr\19{ñ\97\18®_°\85û9Ü?à\11~o\ 5]ïl¹ðÕR\16]áÖïh\÷E£»ï-|}ôý¼û<ºÖ»\15OsY\ e±\8cý&\1e\1f¸üo=°¦ðõ&¤2önó\ 1XôÂÚ?á2ëSéËÜf\97e£\8f\14n\1dÿØÉeWs{àÁ\8f8þü\9fU\8eÜ\16\8e|s{oùèñ\85?\8fÖ\96¾<Æe§ /\87-z¾\94ùª³0«½·tô´»
++\7f®«\7fÀ±}e_º¥rëÌå\v\ 4\ 2\81@ \10|\92ø\94Ŷӱ\19þ
++\11G%OMf\1cú*§9Ôÿ#DKGX\17è\9cî#\b\eÙí\81:\81LñÆ"Ã:\ 2©é\ f£\H\ 62í)j¯Ø¯"Rß\10\ 5Nß*\9eF\9cè\1ddVÏÖµv\e§êÉ84\124\ 6~V#n¼dtW\b\97\a\1f\8d¨p\84æ#¢Û\84\90©\!w} J\1dÈa\ 3'gMß\rHÞÞÇ×RÿØ\7f%$öQH\81lH\13\ 1n½çc22\89\7f\v\a×Ó×\ 6{K \12Ü{G3\bW
++D\8d'ët`/\19:{'ã³\8eÚ8LFõAÑÞÀ\1d'Qc)à#\ 2í£¯ôÝ zý«: \8eÚ&SÅ@Uów\ 3ûR\ 4\eú|*ÀF\aãè\81:Gô·ô\11ëïÿZò÷ð \ e¬K\10\1dÛ)ÂÑC%\88\rÔ9\9fè/ÔïÇ\ 2ï\93d°/\1d\9c.44\1a4v¥wd» ÈZ\1e\9b\ e~'
++\v\ 1{Ãp\97}\10þ_ \10\b\ 4\ 2\81@ \10\b\ 4\82\ 3\ 1cüÿÈ\85ßùÆÄÒng[\8b3?qïâÓ
++Onu·³µÝ\9f½wÅNæÛ£ÍS:ÛÇbº\7fúõãkìy*\9cô\1e.\83vÿ³÷,|©pÒÁ\17~u\1e\97\rç\9dOnm-\1d½ýÆÂ¡æ\18eò\ 4\ 2\81@ \10\b\ 4\ 2\81@ð1 úD|\9aüf\9a®\85u!@ #Y\1fzþ\17)dê!T\17\1c|T¢ÏZâÿ\ 5\ 2\81@ \10\b\ 4\ 2\81@ 8 0Æÿ\7fá±»\16M,ívö5}þ«Oýì\8f\8b\8e·SÝÎ5\1cÓ\8dàæãß;îm\8eÏ×:Òý¦\170>\9e¿ÄÆ\ fêðoçøèÍ([ôÛÿÁñù>é)\9duüüp]ü\7fáw\86Çà¯ßO\fþ\ 2~ï,º.yɨâ\9b\10Lñ?ØÑâÂß?eáÓµÌ\95÷nn¹\ 2\ 6cé\9foqè«^;ò\81êÓ`K\øM-îýâÑSmÕ¾W%\ e}Óa½÷\ 65ìK.\83y#Ãbâ7·~>õÃ5Ï\14\r{ï\8b\7fÅ®¦1°bô\86ÏW-úªµ\7fU\eÃUÓV?YµèküúA\ç\11t]ñís^.qö=\rû\19ü\1ebð\8f\9aya\89ÁGÐR±\v·÷çt}åÕeÿPâì\95.ï\1dÛt\12>\9cº¸¼çSÕ\9b\7f¸µ÷»W¼X´è{Z\b{\9a\ eÿ\953\97\97÷¢R¥l\ 6\97\rשßÀíÝJ×\99Ï>xw)\8bu\8e64\1d\81\87\8eûfÕ¢·Abð\ 5\ 2\81@ \10\bÆ\ 3ºóƤÂ'&\10\92AAÌ?\8då\ 4ø?Å\1e÷åª×\86J´·ý1î½xò\9c³CBt:Èjo\rÁ¸\98¬E ¶å¼ò(\84Ü~B\ 46²3Ð]o\11¥mMÖ*\a\16ð§\ 3;uÏ!cEtô°BætDlge ¸¯\95§±\ 4dOG\ 48UBCBrwç\¦\163ü\9e³æT÷\ 6rë.\ 4(¯Óa?úªKï]\0á\8bÌ\e\9cÕ\0jë\ e©\19,º\r\8d~d²È\1eÝÖT/\98à\8ct\14\81ÃÄm\88ÿÃÞÕ\aÛY\94÷Ü\ eÖs\93\0qÄ\ 1+3"P\ 4\12q÷Ýo\ 5Ê´0~4\86ð\15C¼i¢ E¹\18e\98)£¶2S¦`eøpÐÒ\91R¦0\ 3\f\bØFñ«b\1dZ¨\93v¢\10?Jj\11ã%Ø\bÚh\v\15Çþ~Ïî»÷æ¾'÷\1f\vÂd\9f\99Ã\90wÏÙw÷Ùg÷¼çþ~Ïï¡\1fî\92¢\93r\9f*ÄE{ÑÅß\9bN\ 2¦§=~.±8\816\96?\80:\97p¿\88gbø\1f?¤0PxÎ\18
++!P9^Ê5P\97\0\9f\88¢ß/ùø^ax\98N\8c\96
++ÿªcµ\f\8c\13ëfø\10ÍñDô\8eµ¦ì\81Ö¬gÀ\1a\15\984ë#\18¦õS*!F\f*8ö\94\1cÝ\1dS Ü\822{Ñ3 >A n\17+&PÄ\80J Q´ r±\8b.\8f¶c\10\16/¡Î\ 1ë`8¹>«© \1c+\v0À¬\8b¹Æ\81WVÁ\87XGxEÞc1~§\9cg\95\80\18¤NÕs\w¡¯É2·\ eÇ8-\0\86\1fK´À7NÆ\8eEAXàG3b\v\81j\8b\1eC\80aC!ø±è¢Ç\80ÐÖ\8a¤\ 3\8bU\81/MÓÿoÖ¬Y³fÍ\9a5kÖ¬Y³fÍö\r\9bÅÿ\8fÿÚݯ\9dßúâR×\9eàêeGmZ-ø¼¦þ\7f®ù>Ôÿ¿£âÿ{êÿ\8fêõåÿx\7f®# |\1aM\1cRkÇ\7fjËË¿*|\81Î\99ÑÄ\8a\8a\11?¾ûðÝrݰ^À\8d|«ð\ en¹`ù/xÝyÞ7J?Wâµòß\ eû_^÷¾ÃõÃ\96öýlY\7f´Ô\11\b\91÷}`Ôßwn]\0\8csqßÿï\9es\9cÜ\97\7f0\9c\9c8¹ò\11N?aí¶ÌG°\85\8f0-5Ù?\8e×izzGn\8b¥VýÆZ\8fþÃ\9b3\9eù\17\eiÛOî5¾&ÀaÒF\1cümaãã\99\8fàJíøseNã9\a\87T\9cÿo\ fß\90Çé:\9fñúí2ç«ñúôëÏþFn³>÷ù¡\ 5j\ 2¬¬ú\v\17Ìl¹§×öÏ\9c\83\K`¼îÿ\99Kú>Ïûá)¿QbDe\8eÃjé\93¼\8f×ÇuÛ\v7¢Ë}n\1eõó\er#²\ eÿI\8bÆq#®¯µ!θä¬Ì\1dPAç±\1cRuø\87Ü\88\8bÅg×àµzÛéû\15nDñu¬\1c\8e\r3oþhæFÄ2\87K\96̶<±¯APüRy\1a\17~vz[æF\ 4Uô,jL®¿w*\8fÓF\9dÛ¶,îãå¯ây\857áB^¿£Þ\9fS3»nȼ ]¸-w\8fú±¬\9fyã\9d¥-æ9\9c¹´\1fË\7f}úÝy,X£Üvò\92Þg\17}qÍ\ fz.FáÒÌéó_\8eÈ\\8c®pbÎ[ÒÇçÃw}¬Ô<(kty塬\9bY\95ë/ð¯æÒö\15i\9bâ^yìäËr\9b+~9TÖh<\87ã\8aº¶ß>xÝ.iKÆå9<´¸\8f\97·<úù»òÙ¢|\1eç¥Kúµ]µý\8b·ôm¹Ï\aêþ[5sdù\9c6±})4kök·ZwÚ;\ 2+Ö͹6\ e\vëky\a)7î¥\96´¥¾4Ë\83\e\9c2\91@\98óA
++"w^áM\89åèMbÁêÈç\17\1ca\9a\12Ó\16G\v¾Ç\12k¼\13ÞdAuí¨×MQkb\9aÔ\ 6g\8e&S*\95\89I©è\1cAAÜKEÅ\Pê|;\82Z\89,5b;.Y"}Ak\859\19âh\81é\9eVc&
++M¤1\ 6\f%yª\96+Ajp\ fc:\85§()\87NèTÊ\8a+\8bïD*[+JJ\e¯XÔ\1e³Ô¦\13½s\16¹'ê\175\19\82:\84d\1dzÂ\97s î\88îM\9cãS¸\99\ 3Ö]\8f¿%LBp8Ì\ 5ß$\84´02ë|Ö\ 6ï¬b\9dô\ e\8fGTÓ6LIÅüÑÔ\\87'=<¨=\1cIx*QÃ\eK©1\ 1)´D´¶£\8a;¥È\89\8báMX\8c.%\8f\96(}áÆDg#\\8dá+x\96\89®\1c\17\87¡ ¸Á\ 3n\16ëó\18_ÖQ\87S\88ý«\18H©!þ,ê\8eK\ 1r\1d{\1cX{Ä«\8f\19[DSÆ÷¼'F\9e¨\1e\1f\ 4\89\9eõ½3,]\9eUäµ {\ 6_Ã\8aªõ\84\8c\13\9fá\18\f\9dâÈTr\111I_$¼½£?CJ&\18"¥Ö\87`©^ÏJìä°btDhqß\94W+z¯\rßM!ýD\9cÚD>HX"\95µÆ:ã\8aùÍ\8439ôà\19YʨÙ\98¡\9e>\85ôYÿ=Ám¡Ä\ e!\7f8/bZÁí\ 5\83%¤K¶\0\1aðl\80-h\ 4¦ÏÿO7±L;b\1a\e\8e\95è eGBÂ\9eì\81(Õå Å\12øgØbC\ 4ê¸ã\v\á-\8e¨1ñ}\1c\ 6]\97X¸\9ek\rça\aª\80£À%OØ\1f«\8fí^æÔ\91\85\808ïõî_HÜ\83_\95\8b\ 1'±B\ 2\ 3=\98Òç³]Wa~}\ 1,8æ\8e!õë1¯~ý¸z\bè\8dÇ\89%\v\ 2S\8c<W"\1cÏiá\80W83\11(Üö\81 öp¶ãÂaìØOr^c\ 5,/ñxC×\1aËË@e\8cbÀØè\1dW°÷\11\ f¦\0Gp3õg%®{Ó\7f7a#&2 È\1c@\9cá\90E´àÌÇO\ 3\93¤È\0I\0\ 1?¼¸³#\82F\91]Á=\8aEv<Õ\f¾\87p\11\81\80¥ÇÉgéT\96\fH<a©\1c`q\8dç\11Î\v\84¸e=\ 2\ 42Nu\1dù]\85oKl\84Äó\8f\11®°¢Ô"ÀZ\19|·a¦ø\av\82nø\7f³fÍ\9a5kÖ¬Y³fÍ\9a5k¶/Ø,þ\7fö\r«\1f\9cß:9qqÍǾð¨MßÏØ¶.uÖ¯®¸ð\98\9aö\15¯{ÿ¡\9b\1eËøuÎa\98\9c¸±â\83C<y\16;|ÏÌbSðÝ.ã\8a×Êý¦\171ÿû÷
++NkK\9dõ+j\1eþÙO¼þÄ\82ïv¹m\8b´\8dÇ\157K\ek\12¼ä°é\×=u¦Õ\16hÖ¬Y³fÍ\9a5kÖ¬Y³gÇzü\1f?½\92ðB\f\85\ 6fù^TEè\9c\15\8d7á\1eiç:e\83Ñ\9dò\ 6?H\83{¡ñ5È\ 1S\9a36J9ëU\17gçË\8fhÝY\17#Ù7øoG>\12þ·C\ f\98\84ê\84_¡\15\99\ 6N\93\9d\13(Ç`´I\8eô\a\91H\88Nyíµ#%\0\13Áì(ÿO\ 2\aÝ\8c\916ü¿Y³fÍ\9a5kÖ¬Y³fÍ\9a5Û\17l\16ÿ?à©[\9e\98ß:\9a\98\92¿\ f0WyÓÅÇýDðxeÌhâFÉ«e>ÿÑ÷/\7fkÎ\17§þÿ¡5\9føUï9æ©\8cíkæó×ëG¼\7fÅ/J®\1eM<µ¸ïgO]\80\15\92S?¬;p|½¾ø´Wþ\83\\ f
++ý<"××àuåÌrÉó·ÉúÑÄ\97j\9eòyo=VÆï\9cÁ8¯¯¹Û+v\7fü\9dr=ºn4±Kr\9eOâ¼¾ú\8a-R§@'¼\7fYå \1c~ÊA¿Ìz\ 1Zõõ\11\86:\ 2\9b%\97y\1d^Çþü¶·ÈõÎ\99É¢SÀù\9eó°¹3ûS\17\rûsåÞ\97ãµþöÓ¾\99Û:\9dó¦·W>ÅÏ®xWæa(gsÛ.icÎøçïY\975\ 6\94÷\993±£r4Þ;3\99ù\14º¯ypqÍ5ÿË×m\98)m!÷yÐ\81}ÛP·àK\95kñ\8eÇ/:"s;Táa,ª: \87\1eYê60·OÚ6/©mw®}0ë\16h\935\14\8e\96>Çk\13¬\96µý(}ü\9f\1fùT\8e©>\87ûxés¼þ\80]@càrÉ\89ÿ4^\e\1fü²+mE\ f çîsÏüÍÕ\99»ÂZ\9cÒ¶µê$¼sç\ 1\97em\ 2_Öï¢\9aOþ\9e\99\1d\99×\12\83Ëc\99ªz\13ë\8fZ\97ýÂ|Hi{¨jD<}TY¿dÊÚ^²¸\8fÇ¡ÞÁÒº§\86z\aÇKü\8dçÊì¬Ú\1av¿©ï\97¶â\97[«ÞÇúGO½&ë\1dh\95ç¾r²\9fßP\vaT×ýmW\9eÿÒV4\r>wÀìçæë$¬¬z\e\ fþÙº'\8bNB©å\91óú9\96µ;^óÊ¢%bòý¶×±¬\9f9æÕY\9bÀ\98ì\97e5æ×Í\9crWÑ&(s\7f¤\9eg?ûÄú\1f\946\9bûüJÝ\9bë¶\1dü\85¢[`²?·\8b¯Çs\88\9e\99£wpûU¹-\85Æ!j¶/\9bä\10ãÈ\11ía\13;\81løÝ\13q¶1m\99X\86ç\81Åüþ\8eÙÞ!ðË\16ïaF8³X\8dî\ 2\13ø\99Å\9c\82\bh\vêÂLVÇLaÕ\85\88\a\ 6§"s}\1d¾\12\ 3þ'R\13Y\ 4\99)x\1cS$t"9Ç6v!yÜÅò&Ö\ 5\1fTì\92Â?\ 3õ|t\10ÙiC%g¥]²ÊDäñ\94ÆèFKv¶J\8aY¥Ýó´\1e4>Ë\8csÇ$^\ e\95ßð:g\9a+c\8dJ"Ü\8dï\94 \82ÀjÞS\a\áñÌy¬\87e\8e.U\ 6¨<ÀÒ?1ãr¡#zåDÌ:õù 7¦Xvù·Á"X¦\99S¢\eoK¥\16µ`uèñÿ#oYÓc\82Äa)S\1fw\81
++ÝJ4 \98bë;ïB >¹Ñ¶\1fë\98|çyùÆ]`\9el2®ÿ·Óø¶\80«Â¢ç$?:c\81.)Yp|¬¯å\1d\8cu¢3ÀH!¬\18\99tll\8a}î¾z¡á¡X~ì\19Ü0ñ0ÀNH6\19J!à\11\83\8a\15X|\82Â\18"\ 2\95\19Ð\18\1a+XIÇxäK\1c\1düà)\0\80eÄÖV&ȾÆ(1\99@\19w\85£#¡¿hD\a\ 1»\82ó\80\v\15FÈ]\8e#+z\1c2\16\1f3ܸ\96úò\81R\16\11Ï\87¼'·e\19ós\85ÓÊÙ\85\85òÁSã\84\aDê¼,#>Jùz Ää¹ \81ú\e\1dEEpO^¡\8b0\18\1ct\88UÌ\10ë\8f\91\18\81Ù)§\80\eSæ¢ÄNbí¯NÄHXÄ\80C[ô<ÔR\91±âÝ\925¯fkR`ä!r(²_\13ã!ö\9a\16èÞÎÕ\8aÉZ\15\b4\99\1f<?{-kvà\90¡TGä£:Â\f±è^p9þ\95CA\9d\95D)\17Ï\13Q4\16\1aþ߬Y³fÍ\9a5kÖ¬Y³fÍ\9aí\v6\8bÿ¿cé\8aoÎo\1dMl\14lk\88ÃgMqêÿ\1f»åÖ3äºunTê¾\ fuûï«ØïÒ7¼ìk\82·+Ö\ 5xJú\1fêö?Uu×_³û\8f¾#×C\87û^Wñö\17ýà\10\19OLÊMN\>\8b;ß¶!cËJ\15lùbÁ4ß\87×\9a#Ög\]«¢ï~QÕ\85ß4sÁM\19çîJ\rûGj\rû³ÿfúÑÒV4ñ\97íß·}çÎs\9eÌm¦à\96+¤\8d8â;\1fúî½¹Í\17\9dö\8dÒ6\1e;Ϻ\bã5ÿ/ªøÿÓû\9f\9fÇb\82Íxç¡UóÿË7oØ\9aqõ®Ç&+F|úuïþ~iK¹mj\ 1\1d\86ã«fü\a_5\95ý\19\8cÊ÷;³bÄC]ÿÏÉçÆcç'Õ¹\ fuýß·\80îCÆ\8fOZ4\ e\ 3ßZÇù/L?\9c1pçò\1c¶×ú\ 3C,ûÌ\1aG\17ÞÞãÕZe¬w?i;\15¯Ý·mÜYÚ\8a^þÑ5^6̬ÈÚö\9d5ù~\97V\1eÆÁ¯þÃ\8cÇ\130\91¶\9dû÷÷ûå ÓßÌm¶`ü+\97ö\9fûä½ç\96z\0.ÌÕ½\1f\8f\81ïZÒÏýeÇ\9cû\8dÜfJÛÝ5&>pÂùYóß\85²~?®ñù¶o}F\976\9fÛî¨|\99_.]Sê\ fÄ2÷¬÷±\89>»éü'K\8d\81²î[êX\865\ 6n\\9ba\1d\81gj-\8b3\1e\7fÿ(·õ\9c\82\9dõs«f\1e¸½h÷\97>\97.íãúÞOþþ÷öÔõ¿º\9e5ß¹ñ\ 3ÿ\91Û\8cËë~]Ý\ f\7fÿçoÞ\99ÛD\8a¹Y³fÍ\9a5ûµYæ¨d<\92ì\14
++ÔÏÑÛg\1dyC¢\873\96`vÅ<\8dJi\8cîþ\Ì8k¥ë¤½NÑâ»YðÓ.xò2l\7fï ¥-yÖZ{³\90î9Ë;\18\83g?4I\bª²\v/\86Eí\83ñ\9dÔNðÔè'Á\87d\12¯YÏ\b\ 3õRQ]¡kKÞGÇ\81\ 4ò\ 3Rê\bóëÈ\8a\vÞ\18G¨¾ê½w&\ 6³\06;¿>ºÑÁ\13\946RÊ\81\84S5ëO2\19\88\9cZí1\91¢'ï\89¹\87.âA2\ 4\93b\98åb\8c©Ç>¶\16É\9cú\ fã0ê\\97^iC\ e/É\1d$â\10A¶\8au\r,90\ 1cõ\b\ 5\16.À¸]â\94H v=\v\8588\0·¶\92\ 6\8fç0¢ÐÂé 8\9cÐ\ 2ß)\92©]\8c²\96x~\17|\9fí\98\19É-½~=æ\8f\1el\82K Î[\85G·Äò\f&\1aÌ\18÷\8d\1dú\8fÆ'LƳÖ<\1e¨°B\9eµêYÙ\9eµF\8cÇcV©%R±ôù\9c©\8cÛGϪ\13¦Ä\19þ\11\a¼\1dDf\ þȯ\ïàyV¿\845A¸gù\11þ$Ä6\88ð\18>\18±]XÜ\ 3îæOSìARB´1X/ͨÀ\097\f\88\1dR,!p\17G¾\ 3ÓäÔB\10ðß`¦!"ÂqW\87_«\rÿoÖ¬Y³fÍ\9a5kÖ¬Y³fÍö\ 5\9bÅÿ\97Ýö¦?\99ßÚçÿ\13\83;n÷\9aSJþ¿\1eM\9c¼\17]\80k+¶¸§.À¥r}\98ÿ\7fyÅ)W\9eôòû3¿ ëF¥Æý0Ï\7fså\ 5¼v÷²·ËõÄþï\10\9ct3ïû\93ÿ#¼\ 3EÞÁû&ûû\1eóôoÿ·\×|ÿÖ%ýø÷ä),\9b£\v`¿.×\9d¼2®Íy\1dþµ\8f>\9c¯Û8\9a\18É}É-¸êG/½O®G^¿¸âõ\9b>øÚ¬;Ð\19Ìëê\9aï|Ë\ 5ËÅ\ fÎ;\8cçÖ\ 3fï;W\8f`ë\81ý}WüÓ\8b\ 4sõQÙÑÄ\96ʳزþhÑ;\b\91º 9§\9føí\ 3O\1cþtæGx5\9a°õ¾\1fùð±?\15=\ 2mÑÏÍr}¨S°Cú\1f¯E0\9b#þö\99Go(m.ãÜo¬þ\1eê\14\T×ú¯\8fø\83\9cãÏ?8æ>kÛé'¬Ý\96Ûlá\r,«¾?gû\9a\e3\9fB\95<÷»k<\fù\e\97Lö¾\18ò7vÔº\16CþÆ\ 35\1f\7f¨}°¨âÎú\16\ fÉýNÃëÜmÏ\9c\98Ûláhd^ÌïàµæS\e\1e/Ú\a)ûìæºöÓ3+n*\1c\8dÂ)X+}\92OñÝ¿;í\87¹Í»Ü§\9aì×aÈÃ8Hæ0^ßà\8eÚç\90£q|íóí?Z~}æh\98^£a\ 1}\83«\ fè×è]\ f]øºÌѰÅ/\1fZÚ÷9äad\9d\8cÓñ:ëqskië2Æ\7fc½ß\90kq}Õ\ 19ãs\17|=·9]ê}Lö±tö\91ÓßÍ\\v]x4+\16÷mC\1eÆ}\93ýº\ fy\18\8b*¿áÂÏNo+:\ 5ªð\rê^\\7fïTù\¯}pyå\99\fy\18\e\17àSLW~Ñ\a^\9dc°\vªÿ\Ýã\ fßµö±¢aPx4ÏÌÑ>8õ¦ÜÖ\95q^W5\13\86|\8a\9dõ<<ëÊ\95\12g¦\v\92#Ö¬Y³ló°=\e \f%Á׿ç\9avø:&\92Ê\9c|æØ\a\97tÆ\17Y\ 6Ý\99\1eÏ\\b\9f4\9dò\9dñ\9dõjA̳Ç];\9dLÌõÖ\89\15\11dë\98©ªµRÄõ4k×ã1Ä\ 5f¹óA(y\8b\ f)<»9|Ãù.t \1d{\82\93\9aÿbÂú¢Y¼´`\88]`Ö®·®ä£/\94ç¿·º÷\ 4Ã\8c\8a\9e*\ 2|ä£{ò\1c<õ \8cu³}<\9bùÎók|¿`sÑû\9cå½`õ\89\10!£\ 1ëkYü¼Ç¯çi«\e¼\ fÃW\92þÝ÷í\rFLå\0\ 4\8a¨Cà\19ÔDO¦\81e\90ÁIt\8aÂ\7fTp\8e\9a\1c\96±\80\r²h\8cN\ 6\1f§ì<~\ 2\86æeO9j `Þ\86
++\ 4)\8415Ö\ 5ÿU\8a2!X"l\87ò\9e¨D \84Yö\fteÊø\9f/ú#\1aËfy \836\ 4b£\19¯+1Fó\ 1\9b\8dÛ±ãþóøt\f\9e\12\v1ûÝ0xðÌay;Ez%SÂ-5\914=\19 Z{!b\18\85ÑS¨\83X0ÆÑ©â£\84c!D25¨©ï©\13\12±\9c¸%Ç\86_w\88U\ 4<\1e?ñÐ@\82\aO\90\88\aG¢ê¡\10<\1ce\1fø\13\11ËÈ]ÄÌ}ÌK\ 4É8}\11\80p\12wð0÷Ï|^\aUL\82'áÀû9g@Ö&@ÔQfÃc^
++\e;Pc\ 2^D¬\92ñl\145M°\91\89èGì,\16 \88\94È \N\8a\ 3 \1c8 8(¥\19´x\16C\94yÒ,¼E\94ò\8cá¢\8bp\v\ 2\91>\14Ò\80¢B\ 6\86®e3köFÏ\93\1a\81\87/\841É\19\89\83@hx&ò;\99Ïs\8açËw\ 1\ e\8aD\82\10Î\8fâÛ½rZ\1aþ߬Y³fÍ\9a5kÖ¬Y³fÍ\9aí\v6\8bÿ\1fõ±¿xÅüÖ\17O¨\9aï|éòGWeüÊ/êqì!/`T5´\8fûç\ 3·\97|å8\9aØ.¸Ô\10ÿ?ºæEÿé\9b\7f+ãÿ\9d\r£\89ä\9f!®~\90`mC\9dÿÕÒÏÇðZþÓ7H>··\1d®?Rñü=u\ 4Nª|\847=\9dñyþ\19f4qGÍ_ßSçÿ\90ª%¿ô¬\97ü«\wQON<Tuò\87Úû˪&ÁÏïî5 BÁ\1a\ f«ó\9eº§àÝ*¤\8c[O/\80\85?Só³\87¸õ\1dUÏ\7f\88[_Qû\1cêò?5G\ 3áÉ%¹-\96>s.üex}û3g~oOüùÚÊ\ 1ù÷{Þ½#ë\aôùü\ fT¿<øºµy,Á\966»\80~Àféó\13x\9dvâ\ 5\19'\ f¡`©ÏT\9f}èÀó3v«E\8e¸r\v¸nSî½O\14\8dù\82õïª\98èÔÌÎ[2>k\Æ=÷\93>ÇãºWTí\8ba~ýAu\ eS3»n(ØmÑx¸¶êF\f±Ûu,CÝúûäs'àõÇû\9fõHnse~×\1fÐûz¨[¿YÚ¦è³ÇN¾,·¹2\87\95\12/×àµjû\17oÙ3OþÇuOÎÏ\85\9f\9c8´îïU3ï½*·¥ÂÿØQu\1cV=öÒ\9bò\9eU\ 5\97ßÑpäfÍ\9a5{\ 1\19±So\1dË\96Xíj®õ¯\ 3\17ÌùÁÉù.XbÁ\8e X¯ÙßcÜÎ3?×I"t³\91bª3\810Gùpªd\13ñJ\84p\89\97y\ 1á©´Nav\81t\9d&lm\12y\ 1\94c§\96¹Ç\87\ 3\99\ 6ÚR¿\9céÐ\9eX]À£dVsw¬\ e\11XM E*ú;R3ð\1c«JÞ·£
++¿ÊÕ\15´d¡\13LW¬\ 2 ¨\ 4.³±\ 6_\97©³Ì}\8føvT\92æ¯uÇ\87Ã\90\b\r²\ 2\85õ!XV\ 30¸\97!\ 2í8j¢\99)g-G\8e\9cïNÚ§ÄÂé&ò!\84\8c\ 5ßóP\16Âþ÷\86\v>[5#z\f\9f í,ÚÎ\ 4ød#«\1d¹¹Zì{ÃÉ÷¦M/ ïÞQR\0=Æè\9cÃ
++"\18à\12¦~3¿_\94\11pÏH¦ \96Ѳ\80FÏy\98Ç\ 1a-\10D\80\97<tø^Æl²¦ü ¿?RÆ\1e\8fM}í å<ü\18\95&\9cL\95{\ 4WÇ\15!}@øB\18¬cý\84(4\ 3>Þv¬7Â\ 1ÓFs8¬Æ\80EÕ.\11èÇ\96ÁÓ\1ev\1cB\82E\16àQ\8a\ ep;q],94Ø^.`u0 .ÉÖÐ]áÚ(Ƶ\8f\9c\97åÃfå\17Á\85\99«\14\85ÁCj\11Æ\8d¥Åöó>×§×\8e\b8+} ̸¦Ô ó³\93¼wøZSÁ\81\eØ3¯\9d\8bK^\ eN\ 6\84\83Ã#ºð/°W\18\15É\92\8eD\ 2¯'\1a\8fí\8féa=ÆéSìv\aza
++¾eäâÇHd.>\8b)0µ?`¿Á=\91<\9f\ eþÀ\ 34½Ha\ 4\922\8c0\90ÈG²¢\95ÀZ\ 5\18\11¶\ 6WLbßI\1e¾ætu@gð\9aa¹\ 3t\97x#a^Ä\0\97:
++o\90]ñ\7fì]k\8c]Õy\9d« q\aÛ\84&VB\84«6N\8a\rvÈ~?Ê£\ 6\99Öm\r\ 1bÌ`0&*\ 4\9bÚ\98PG²\10mùA[J\11¸ÍCHu+ÔZ©\ 3\ e\98Æ\11\ e\98\80\10\11\96ê*¦8Á\10\a\1c\83¦¦5¤` HÓoío\9f}ï̹3ý\81yÅ{I7Ág\9f³Ï~\9e{î¬õ\8fj¡u`¡ºÀº§+Ð\0K»YÓ³\8aö\ 5n\83\f\0\ 6²\11¸aÐ\93\ 5F^\10\12À;"`g\8b´hß¡:Ø\18XÌ\99¦\1d@\eÄÁr\82\1aå-j\8a\16i7ÒóÅ
++\81õ\89\ 4\vͼ6y\ eÆëJ\86Æû\8aTþ¿¢¢¢¢¢¢¢¢¢¢¢¢¢âp@\8fÿÿë\a7Ì\1f_zdçÓ\85¯\1cËÿï-qécãüGÊù'\1d\9c~)Ç\ 1GÝí¬-\9eÜßÚñ\89\87\13o¯,\1d\7f(\1dGüï'\7fqöü\14÷.áÿÿJñÂ_~Á\89\1c?o5\1d¿x\82xø©%§ùØxøë\vÿ\7fâÁK\12ÿ\1f¼¦ã\17Oë\1d\17K\13\9fï\84\1fî,/±ßm>\7f{âg\aç\118¦´÷\9aãWsÜ»\94\81ùàE%FýªÑaö¶G\1cR*»aJÓ\9fvlûÕ¥ííØöÛ\8a\ e \1dÛÎÜûà\1c\ 3\vR\198í7O=\97½ôñ·åTöPO#p×Èã9F=Ç~ïIý\e\1c\87>R®Ó\9fYò\18söBñý8ßÁ¼¡AÞýW§¶\@\9f/ËË\ f0\9foEÖ$\14íD\9bë\ fE\aÐöîß\â´Ûqá{ÊÚ\6zÙÌìÏ\1fùºyå~í¸pÖ\8a\fÖ\16l+sÛÖ\16\8cLë\95]9+ë\a$¯¥ÙÅ\7f í³\7f{ºnp\øôI4\ 2\97¦²Á:\0\91æopþú5e\9d-\19ÝÄþüQyæóg\97øõ¶\97þ+e<Ï\1e\9d?3{w¤\98ÿ\8a\8a\8a\8a\8a\8a\8a1¹Ç{±ÌÂÊâoÐ\8e¹\9fÈ\17b¼'\ 4hr\ f®YZªÁ8/-Þ|¥\8bá~ aU 9+:<)\84tQ\83\8dD,²°\9e3Ø'¶2\98\10\87\ e\ 5\9fÎ\9e\ 1Æûw\98«eO~mì{á§\9f=î'Ò2\14\9f\82·éSÿ®Ç\8fÓ\182ï\8f\9bÒ*SaL^\8a\18£¡×CT,-lði)Â\19"\99s¤ñB¡\81K "æa\92\ 1ë\ 5\8d¨z8:ÐÔ;ú\8f¤¶Iók\14MªA&\ 6h",ì\v\1cÈm\ 1\1f\88ä¶\80\88}ª\84ú\ 1\11\91¡vÐ\1d#ÄDQ¦)¤WgZÆÎ!±\84£ºíÿçÁâ\ 4d4tj\80=
++\rK\98Ô?b²Ü\e\8d'\8a'h\bWh\9fùæ\9aA±ø&¹FЮB\82\v\93\\1e\14äJ4É\96Öe²j¡\81A:\ 2Ø\18Ð\92\82Ë\ 1í`j\11UF=\86é\ 6]J3&\90ÀC³vb¢<\13\ 3¼$\8aö£òÿ\15\15\15\15\15\15\15\15\15\15\15\15\15\15\87\ 3züÿ7þiÆÞñ¥Gv®+¾Þ7\1fc>\97ãóé8Çi\83p¼eöé+\98oWCÝÎöâÿ?çû\8fòù\ 2<ü\82Âÿ\8f\8dó\17Å'\7f¬?ÿÜ>?ü~\1fþK\8b¿ÀX\1fþs&Ò\11\14¯ì±:\82Ù\85w\1f«#X\93Î\9fG\9fÙ\ f\1f·#é\ 5d¤ó7\17?î±¾ú³\v\a:VG°°´sù\93ׯÌùgn{Cº÷×ès®\Éqó\92=L\87;§\94\ðí\18þ©éºÁ¼þ)e|Ûñý\9bR\e\aûÒï.~öoLûcÖ\11h\9fËæ\17^xåè\89w7z\80\9c{>\8dÇ`?û\87\8eê]7ÞÏ~}\89\1d_þâÇ\1eÈ:\ 2\9dcø\v×ÜÖ\11,(u®\1a\9d¯³\9f½è÷\9e\1fì\190?õï+ô9ÿÀ\1cæÄaÞ\9bÊö\17/\89ÓNX̼¾Lv¨ð`8º\99\87?}`%óóÊ\ 5æ½\7f³\8cõ[Gz\86õ\01s÷¬\7f9\83>\8b^¸ø\e¬\a\10Y³±§x\r´ý\ 4æ\17ÍÆ²\ 3\1fùPÖ\ 3díż¢-ik\ 5ö\94qY:ºà®¬\15\b\öHYûm\1f\82\91£\9bû}þù/u¹,d\8d\ 1ë\1d\ 6ë\bö\96u=òô¢[¹,æy__ü\ 4v\7f| ë9b£\85\98[ô9Õ\17 ¢¢¢âW\aM\9c9\88.\87¬Ø²ð]\83|Úa\f¯|t\ 14³\82;\80w^\ 4\15EòÈ7Ñã\v\!
++>Ð\eNb¶uÐ6¹â§|á:1¨\85g\9b ^<µÉG«\ 4¾¿@»\r\rMÆÿ\râÐ$ò|OÀå5ñêC}ñáï\ 4\1fo1L!ÅU[ê;b\87=\1c\14\fî#R8<½Ô*\1aN*\15J¤Q\90ÞÂhÀ
++:\1c\ 3"ñaG\1féÂ`\1d\1cÓ\91¼\9cZM£¢]°\81SCh°\8cHjnà,o-MD4ôÊL/\85È| h6i\90ìÐX?\ 6¤\86¢WX\99\ 2¢\85rÆE K|\183(z!vô®FÃ(\91çAÀ*ÝiDÁC\1aì=\92\ fx¤ §&E\84R;ºÒ\eØL\806¦&\82q6Æc\96Mò\87§a\87\ 6B#\ 3FDD9Zb`g\0Þ[\ fÊ1OëHÃT\ 1Î
++"ùµÓR¥5H\9dL]¦®ê\88´ï\ 1t;\ 4\17àû%uÚÐBÓ)o\0è\7f-Á·\83\90¶ï|,:X\7fN\18B׺ÉófÐ\12\93\b G¢\82Ì\7f·âéßf\1e\87AùK&äÅÁèC<\ 1Û|ÍûÑÓÌökCLÒA\v\18jÄ\98ó\8c¼_½=&Ï¡A3\aÅ\br²@\10\8eþ§\a\98¡e+ñ\1c£\ 6¤µM+\9f6,\9a«Ø)@ù4ÀÔ\ 2\f\82CWp<Ï\9fÀ¾R²ÉÃq¨óºTþ¿¢¢¢¢¢¢¢¢¢¢¢¢¢âp@\8fÿ\7fì¥\13®\1a_zdç\86ÄÛµyþsJ¼ôÂy\9fx4Çþ\96|õàù\9e?8ó`âçµwÃ\9d0I¾õýÅ+¾Íyo)üzÛ\9b~y©säî+ÿ\9bó\91\vÉ\9cédñãÿSÊÚñãë
++\ f{þ¾5'çXï\1cÇ?RøÍÇÿrÉϲW|nË\86R¶æþÅìÏîbಥ\9dm\1eöú¾\18ê±>ë\15\15\15\15\15\15\15\15\15\15\15\15\15ï=&Ë\9d\11µãÜ\ 5ÂKx.4Z\f:) Q\83S\ e\ eaÂöbôûõLÒ*¡a(a\92V _\v\93\0\19l_N\8f\894OÐ\81(¨\1cbH\89BÔ8Nã[Qãÿ+*************\ e\eôøÿ¿ù5y`|i·scáÊÇúöß\90â\87á\85\7fë\v\1f}$\1d\ f\88Ã_W¸îþxûáN(>\ 2m\9fûE%Ö\7fõèïßÂe10?αë\88ë¿ê¿\94È~õÙ;\7fa\89\17oûÕ¯,1Ó×\9ev\19k\ 3¬ËurþrÔyþózcæÿ\15Ç)o\9c$?ûd1Ó\9c¯`P\9eõ\8a\8a\8a\8a\8a\8a\8a\8a\8a\8a\8a\8aw\và\97\8dÖ)k½\83¿\ 5âûµ\81\91\ 1òÚ\a\18î{d®×Âà·\8e\94Èh/\857\8eÎ\81q\97\8d\89ÌF®\0e\92AÖ\ 49+\9a\\f\13ÅÿGøÚ{\ fw\85\888v\15³\87B\88ÖÓo)£\94\81Ã\82s0\7f\10\ 2)\11\90¿^h-\82\97^\18g\851Zp\94{\88Ñ#S\ 2\9df,\D\90\1e\0i\ 1¬¥v;8dÐÝ|Jà\ 6º<%
++°\89O\aß.RV\ 1/¥\rÑ£3t@[!£\85\91\85\ 3Nc¥\fý\8f\rZ¡ÙtCI\ 3èi `]¡\11Ùo\9c÷ÆÃ7$\86\94K\r\ 6\ f\12\19»@¿ÓÕ*À\85\0gÃ\1c\ 5\1d§ipt\8e\89Ê»Ðè\ 3r>\90\89¼I\92\ f\bõ\9f~}ÃmÀÃ\b M\10Ü\ 44Ò0h\1aYj<\8d%Ò0Hc\fü:"F\vî!!hç\91\83ÂÐLÂhCÖøÿ\8a\8a\8a\8a\8a\8a\8a\8a\8a\8a\8a\8a\8a\8aÃ\ 3=þ\7fÖk\97=1¾´Ûùj\89kÿÔy³^æ\18ûèº\9dÝ\89ï¾\95>Û\7f4ãeæÂ\9dévÖ\97|è\9f=xÌ\17\12\ f\1eáç¿¶øç\8fõáï¦óÿ\8e>s^ù½\14\8bï\8c¢ú\97÷ùê_òdòÛ÷:v;·§ó\91\8b}æ\99Ó\7f\99üö\85\14Ã\9dÛzú\82\1fëä\83.á\9d8\ 4n~{ú\e\aü\ 5¾{ï\12ö\17À\9f\84R\19ç\r@»®9~õ³ìÅ/s¼ÿÕ%ÏüR\9d=õ¥\8f¬/àxÿÁz\86G&ñé_\97ê\1cìÅ¿²\8cuÛ\8b\7fá$^ü7\17\8dÆ÷6,Û\99ýösn÷ýS\9a:Ï»mų¹,rÙ\814.\97Ðçç[®x!\959o¸\ f;'ñÛï\16\ føU;/¸\83×\84\8aýÚ
++ÌÏ\96\13Ù#\ 1\16¤|ݦ4Gð¿\7fâ¾\95?f/~kÙoÿ\88T6ا\7f[Ñy´½\1cÞ*sÔörØ=¥¹ßç·®z\8cˬäyØZ<'Úþþ×\95±^6ºð´Æ\ 3\82Ûy}*\eìï¿3Í¿ÂXßyÅÞ\\16¹\9d»\8a\17ÿ®-#Ï\8eõ\8eX^rQ\ôÄw$ûû{Ç㹣짥£ÿþ)ÞgÊðý\1eJ}8\15}\98v>ßÏÛ<.#i\àÃñê×\97²\1fE\90\86×Ë\8cÔ\96oÒç\9c§¿w\ f\97ù¼^\1e)û¨íï\7fÝ$þþ¯\97uöàßÿáOûõ/4ÖS\9b:\7f÷\89§>Ë^!ÂÊú𨨨xÏ\91âFé\v\1e\9eñ`\972\9f÷AÊõmèì\12\e\e©\rôº\98\12r'ÏuæÐ\14µFZg\9c¤\9b{j=r{¸¼\vº3\bA0\80R\18X©+a\1cl²©\ 6/-½¨háé\9e\12\f¥¢\7f« \ 3]\ 3æ/jÓ\8bË\9d \7f:lÙ%\82\80\95§º\86zç\1f
++\9fð\ 1y\v´¢ëµ\83\89¹×\9c\97À#Î8\9a¡\î\r²Â\9bì\8f\8fÔ\ 21xXÍ\8b4~44 È/\ eÆ\16±Î2\1a\8by\vô\8aL\97{\98\8e\aM×\81m´\91\ 6\9bZ\84U\10ár\1fA8Ó{(\18J\11¼ñ\98\ê\9bÓ\12³\80\9a\10\ eM¯\ 2tkOÓ\17\8cW1Ù¾KÕ\8b\8d¦\91´È~®\12Ñ\8c\7f¸\94ÃÝÒ«\8eL©Ò½\95ýã©-\8d¹\vÈ2 \85ÇÚU¸\ 5\9d\18"-Aê\8f\84S}@f\ 6'è%\1a\1d¥UM\13f<lþ\15\9cûÑ\14\13ÁE#ã:] <\15ÐùÎ \99ÖÒ²0\96.\bh\81\94\9cà\0Q×αÇ}¤r¸É{\ frZË<î´\ 6m\9c\84ç=ä\1eï)g\0V®³4\19\b\rÇz³ý±àïÇü\r^a\17Yc\90\ 6 Ùã´ý\13[Oí7M\fûD9>\ 4æÆc¡ÑÖKù\ 1\10ª\8fl\b\966\8f\bTQ\10tS\81E³\8f\9fo\86*¦µ\v%\ 1$\ 1ô31:K\9dÓô\b\88\ 6 ;\ 2\9e\854>T¹¢\9dLÏ5A\15)z\90H<A\8cÃ\ eCæ\ 1¡\90P\80n@\9d/ks\N\8añþþ4oÚ%}\ 2-.zæÈÜ\97AZ\8b&\97\ 2=ThY[\89eMõ\akiUbKâ9AÏZè/èá@\1d¥Í\8dl\11Ô*\83ÉF\e*ÿ_QQQQQQQQQQQQQq8 Çÿw§zl|i·s}âîî ÏÌ׿,ȼºévnL<!øÅÕkOz\89\8fkÝÍü!øÊ\93\ e^s:sæÊv;[û\8eO¿\94yáHç3çÝÖ\11ìJüå\16úÌ~içÏ\93¿\80ð®Û9¢p\90'¼ñ[¯¥ã\12ú\82\ 3¥=ýy\aº\9d\9dåø\8e¥³_åü\ 5.v;s\vo|ÅYÇý\eë\b´ìvÌ´¦\9d'\1e\14KÓq'|ãý?X_\10J\9b^½ù\8ḇ\vk\98\87Ý^¸ëóN\1dù!\8f\87É\1a\82O\97:\97?ymä2'¸Î·úò\1e¬¾\8fõ\ 5&óö\vJN\86/¼0g=óï:û\1eLÆ\95ßÞóDhå!\b©ß\83¹äýeî\96\8c\9eywæ\92³\9eaí$¹â\17}¸wÝ\9d\r\97ì¹\9dÓË\98ýúðYÏ1'ì\93ÏBEEEEEEEEů.2\ f. )6Ò\e\eR\88´V\ 2é×Áê:¤\95GÊö\14\ 2®\82qF £\91Ö>i\1e´J\91Ð"zë¨\8:\17ê\ 5\95\bè\18é\9cÄ\8cJëé=Øxí!óÀ«»w\16\8c¯\8f8MYÈJ,ýdPÆH+\93l\ 5r\14\17Ág;\9dùÙ(Cærß\16ï\9a¸ßè\rÝ\f\ eò\8eî\1e\8cQAD\aý\82wQPÓ\ 35\89~<aX a±\10Ü\b¤\9dOZ\1a(g\f\ ey(vèW\90\8e\ eê\8d¤\990 ¦cp\186z¯öÐÒ(h\1c<\94Át\8dÐ4>N¨¨\ 3µÏÒ\98\ 6È\11¼ÔÚÑ\7fx\9f\948\b §*£\84h%ÊèhF\82\83@\ 4\12 :j©ëÑË à\1d\80\98rhv ì¡ÆzG¿¨P\e\1c\aR\0º´\ 6â\ 1\88b©\114ÞÎÑ\156éS´¦Ñ@\88<d.ЩÄ<N\13øÜ\ fõñÿÙ÷Þ¡\9e@}\93ÎY\9a>\b&\84Î|ùdÞøR\ 5:`uÒo'¾Ý*\8b\18û<WP:к\140Gðù\1c\9aRLVhâ÷MH\1a\99Ь\8fAú\85÷\9d&¡òÿ\15\15\15\15\15\15\15\15\15\15\15\15\15\15\87\ 3züÿ_|å\82¿\1d_Úíì\19Æÿ·ùÿ\19I\17p!\8eïØx!Ç\87[ßíÜ\98þ\9e\90ü\ 2¾4÷\17\1c\a,e·3¿Ä8Ïùþ£\9fããàá\17¦úÛy\ 4f\f7õü˪9©\1eëPÿ1\89onû\ 5lKç#\9e{ßE¿\91ø\7fï=µs\7fâ\99Ûüÿ\96>\7f\81u\89\97\ f\ 6õo-ù\v¶¿8ó\8dt<:Ñͱäm]À¶Ôß\eé³ôÎs\7fÄã£dæÛSYâéG÷ýc.³Ì\9bß\96ÊÀÓ¿¹y\19ç.\80d*ÛUîuÕè\ ff±.@\9b\1c\9f=Ü+\eÖY3\90ó!¬\99$ÇÂüÔ/Ä¿yê¹Oå<
++9\8e|ná÷ÛÞ\ 2{R[~\87>\8b¿µìù\\96ãÁMáð·~ûªý\\16\1cÇÉo\1fnú÷¯3\97±îÁ*Ç×m+±é?¹wÅsì;À¹-\87;kÓºú:}Î=m\15ß\ f\81f©lg\19\97+G\9f»\97u\ fÞrÿDêÃ<ú¬7\97pÿ¢ó<.Û§4kãÍo.gÝ\ 3þüÉc\9dÚr\ 1}¾,/ç\98v\ 4Þ¤²Íe\8d,\e\9d{?{\ 4\18Íý»úè^Ùe3Ù#@EnËÜÒ÷·\8eZõ\f\97EÃqò7Lâ\1f°²xQ´=\ 2¦\97y¿xôhö\ 1°JñzÙ9ܬ³\8b\9e»é\14.\vÙsag_>\8b\ 5I·¢\9c\fÜ\96\rÓzeã½\ 5Ìp3Gmÿ\0Öu\fÖ|°.h°·ÀHy\ 6´½\ 5\8e-ý;{tû\9dÙ? \8fÙ®t?øi\9cµï»w7Þ\ 2ÜÎMåyóÀM\7f°\9fËL^g\e§5×\9dý\9f\1fýçT\96ÿ\1e\QQQ1\b\99¿á\9cÉÎ:Dÿ6<\911*N\12ÛûnûX[é{±¥¨=ÅE\e¯\84\88î\ 3Æ*ÄYS\99Ï1¯\bpG\1fi4\10ʬD\9a\ fc\93 w\13/\8b\10|°i\ 2ï@4O
++öÜ\8e\1aHïfH\97M\17Ò\88\1aï\83\8c\9eÎI\81ë\16VôÅ*10\88Ë÷\892¤&Ù\88o\7f8\17P×é\ 5Õ"\bÚ!ú\9fz\87\97\14Я
++\15 \18§ÓD\v\99yE)\fÞ\8c|\93ï{`Lò\ 4¾\ 4\87Â\ 3ÀÓ\94÷¯]\8e5§R Ç\ 6ZM\91Î\15\81æ78\13hæ\11`®@íÂ\ f\9e\16\85·\88\82§^à\16Áó\1cx\9a{\v\12\9a^\9a\83¶TL\vYhOËÈÒ@\80ÓE3i(=\9cÒ5V>^Z(ôVc\10?néÝÀ v\1dwPÎGÙ̯\v°\8cH\ 1ÿQ\1a\84\9a\vð»´*C\14ð\ 5@\86õ\88é2\88\7f¦AA\87%æQ¥é£Þ+PÅV\81e\86³Cr\9a\88ÞɨÒÂ\ eÔ?\8d{F,8Z½
++ÉÚi°=v/-?¡°\19\1cBæEx_û `\e:º'\ 1zrdß|\11i\8d{\ 3¿
++8ÖÛæ9dÒ
++\164;4\94\86ÓÇc8¥F÷m²\14\80\17¿Àá¨M\90P\b`;ÓÈFìD,\10º\14¬4\8c#tyÎø\0ºßÓ\1e\86\97<=\8fhÿË\94½\9e\1e\8e\9aFÒYì"ª\11O\ e¬\10\9a<\95¤\ 1Ö5¼ý\80xö\ f\92×\bÞ"\1dÔ\1ay¼é¡\95¶´ó!øwXÛQÖ\83¦\81\15ôsKbí((LzkÅÒ\97\ 1Æ\84\96\14m²t| .¢òÿ\15\15\15\15\15\15\15\15\15\15\15\15\15\15\87\ 3züÿ\8a}÷m\1e_zdgcñ\1f¿aξ³\99[tt|y\89A¿eöé+\98WWCÝìÿÎqþ\8bÏ̾\0²\9bãçQøÉ+Ox\9d9_©»\9dµ\1fî\9dßï\v°£ðÿcu\ 4¯¤ö\80#ýÁÙsþ7\1d×ÎvsL|Û\17`wiÿÜ\83&yÀ\e+¨þ¡\12\v?6\1fÁ+ŧ}öS¬;p.\86ngjêW[_Ðã²Çê\vØ\9b}\1eêyø¸\1dIG #Õ\7fõpSÿX}\ 1{ø\8fÏkÐíÜX¸ä±>\ 5=/ö3þè¤Ô\1eüÁk¸sYá\82Û\9a\83e¬Ûº\82cÓx|\8d>çÊ\95ÌÉ\83Í\18êyÉ£ï\7f¾\85}\ 3¤²\82¹ç\8d\85Ó½|×Ó\ fr\99³ÌÍn(c¿zôgSXs\102\9f½¡ôkÆ]#\8f7\9a\83ìa\90ê\84\8fþîï,ú)\979Ëm96\95£Ï='_ø\1f¬+0\8eyâ©E\1f°jtǽM>\ 3æë/M}\18¡Ïú\9b\16ÿ\84Ë¢ç>ì)^\10ú3K\1ecÍ\81P<f\9b˸|ûc\97ïå2\9dùìuýû\8dÏ\91 Ò:Â\86:9,Ù\93Ë\14·eoÉ\9fpÙS÷Oå²\90óQÌ.¹*Öl¾d4k\1c\ 2·eo\19³¥Ç/á|\14QI¾®\97\8fâ\8b»®ùm.3\81Û²\7f¸Y\8bmmÄÂ4G\8bésÚ \8b_dý\83ÎíÜ4µYÛæ\88\8bY\8f MÓ\872·mmÄ®²^Ú¹\156\15\9dÎÇg]1\9au\13\9aû·§¯Îñ\9a\8aùS\9b¾ß3tÅã\Öh\1c\8e)ú\8e\7f\bYßaç:ç\17\rÀ²\ 3\1fùPÖFäu6½ä$ùåÔÅùº\905\akút\13+ï`Ý\84\88Ü¿ýé:hi^¾gÅ\ f¹Ìçë¶õ]wÂ,ÖThÍc=·ÜoÑÌó\9eÍù\13$·ekyn¶õ\ f\8fLmúÐÖ?|µ<'Ûy\17^/ëúÉÛ¯}\86Ë´åûm)Ï¡?\91g<Ëþ\e&¯³ç¦6uþÙ\91\vG¹ÌfÍÈ\9e>\9dÆÆ)\\16¼©_¤\15\15\ 31\9eÃ\9e\80·\19\13[<Î\9b½É«í\94
++Ìý¨à\15^|\8cÕôøLÉ\85\ 6pèÌ-\e\11\ f\ 1oG\8f\0Ã1´p%§\8b\fXOº\144»2\9eN\v:¦àa-\9dñô¥\8cLÚ\81Z(BHÝ\81C½\ 5{®\83´t\90º\1f"ò\81\e\98ì#\14\18´-½\ 6\80|£/\1a\87`]ïè\10â\8cÁ\90
++A\ f\ed(§\978:\eüVô)Ë8ÝÖ*mé \ 1kFÿPÆ¥|Ú\ 2Y²}´Áò÷hÊ\87®@ç#\199B\93\8dð=îÌ\ 5Éý4à»!_ æÐÓ\8fÞjÀ/ÓÛ/½à\bëé\90\86\9f\86\ 2\11¸Ð¾R\9f$(o£¡9\88Î\821\ 6ß\ fûv\r&\19öòÔE0®ZÁ·\9eÚ
++²[\ 4D\ 4\83÷\ 3CO\87¡ø É\ 4ÿMËF&Í B²\91T\1d\82\91&\ 6\19&ô\88\9aÆ£[\1aa£sÊ;Çù\a¤ED6"\90ñªCÇpS(&ÿ\8f½k\81¹¬*¯ÿm\88Ü\19f\ 6\941Ò\84R
++¶\ 3\ 2²ß\8f
++\94R)\8fNy9à8Î\0\16¨È\f\ f\91\18c¤%))(\16°µM\13Iú\80\84Á'D\14*\ 5L3I\89\9d´c\15E\8a\802ü\ e#\b\14jEhÚµöwÎùïÌý\7f\9a4¡"óäÌãì{ÎÙï{öýÖ^\8b\9aìh.d30jÌà~@±Ð\86\96AVns\8ex\87«¥ñ+¢k¹¡J;%¯\8cMÜ\1d\9e\0W³uÝ^èÆGAGô4D'\83À´½ÞµÕ\ 4\9a\83\81e<\12í\93Iú@ëÑ\ 5\1eÏ¡ûBf\9fD\eò«\99¡U|¥\18 ÎÆ\1dù8\94 gd´\ 4ªï§^7}¾xçäá\eÅ\81ávù|-ÔÞ'\ 5\83_Ü\18\ 2^Ú¿çÓÐO\1du\85f¦SÀ\84§\ 2ê9³»\90ÔáÑ:Y|\1f\1c{\0޳ɱ¨¶;\87&\90¿ÑШDÓ¨
++´\11 b~E-\95bY[\18KµÖH÷øÂÚN\8eÕÃ\11\8aúÀ³IÙÀ«GäS3cÄøTW®\85öº÷Úð\ eã0\ f\¦¦F\80÷ï\9a[[1>ý2>\ 4±\ 6nÕg\9fÀ\0Ç\Cã\8a@÷ø\80Znv\fX0¡àh^o¸©Ü£\1ffÎG\86;ÙI\ fâÔá8DQ
++´´óä(a\98'\83Î\900ªÄÒÀ·Î\81JAO¥#\18¦\84\1a°\1có\99ÕÍQ\8f¢\95\9e\83Õª\fÃÜq\12Eϵ2&\rÝ\100 \v\93ÑyÉm \8f\ 2ê\93Ó\1a¦\1cäÞ\92\8fãÐú\95.h$\13¡«\93ISÉ\12@u\92QÑÔ\1c\18öG§\f¼3f\eG1\ 5º*\94ÀWîB\8eDm¶\ f¡ç"í¤!@Å\ 4:8Ä®ÏÑ{\83³m\9eè\976qÜ;;è\10,àuÑ<\13ð(ö×4áu!ß\158\8d1V(GáÈ\1eË)\9bBû\8aD®\br\99\e½È\93£\82\1cÖ@\85\0\92zjÕø¿B¡P(\14
++\85B¡P(\14¯}èú_¡P(\14
++\85B¡P(\14\8a]\ 1süÿ\ f\9eø\17S¿\ 5ìÞé\9c\91Wüñ½\82èö¹03\1e}|\ 1\9f?ñá\9bÖ\ 5¼¤ñb¯Å±òÁý\7f*¼zòÕW¶ÏÏÏW?~ÎsoJÏnõÀß_ý\85\v~(<iÓqi×\ ezaïúÑÛ\8eê4Ý:>÷\95\83?Þ\87\8f\/ÜÝ\98;\ f¼ë[Ú|ºf
++\85B¡P(\14
++\85B¡\98ÃNû\9clÌ\8d\8b_\93KÜ\12c¢ì¡\bM¯ÜP\80±V'×ÑËÎ÷\9cøWP;ï\95Ô³\9cOÓ\90»pªC\86ðq\eD§\93ʰ\96äûФ\17ièGKÂàÁø9&Ød\13jÌqÛ\12\9fïp\82Z\93\14\88§ú¡£\13!7\8eµ}<Ü;\8cÕ-
++\19Bi÷\8aÜ\ eDÇD\1f¸»ªÛÙPMÓ\96M\96;°"\1eà4þ¯P(\14
++\85B¡P(\14
++Å®\0]ÿ+\14
++\85B¡P(\14
++\85B±+`\8eÿ¿ýÇ7\1c»sêî£û\9a\86ô´Îÿn\8dcÿi\1c\aüø\90ã\85·oÃx´|Ðð>ü¹½ÞÓö\vÔ¦Ãß~g¸\ 4ÇuOí½©éð\97PÆ\9dV8ùøK\8e{ã×\9a\ e¿18¿iÐÃ>ô¹??¯\9d/Ñ\8dGW\ e\1aÚ;êó?0èá\9fðÂáMÏ\9f\12¢ãÑ\rCþ\ f{ö\r/¶óÞò>MÇzg½ýE£mÃþ\80}o9Kté\8déôÂ7\ ey}ñÖ>-\aÑ\90_µ¸O[{Çêû»´*\1aÝç\ fe?ãÀuß\92½\12Æ\8a\9eö}{ö×\9dvdw\1d5\egæ´ç¹ÿáüï|¸JZê¼é·íÙ×ûþvÃ÷eo\84«\92\97ó\a\8dî\8bg/þ\8a¤\85Úéî\ f\1eóïÎg?!\9aü±ËË\96Acý\9e\9bÎÚ"ºû®Ó\12¿¡Ýs~Ý}Ñë\9f_[ÿ\9b\fËq¬\7f|ÅQ²\1f¤võ¹vqß6çm[v\95ìáHNÊwü å\7fÁìÖ;:\1dü({?BËçü\1aù·\ ezïë\9fzøjI+Q4ò7/ë¯{á×ÖÈuÕwí·eÏ>íÅ[:\ryã\83äó\88ö¼?Ãqú\93\87Ⱦ\10S½\·²ås~ýü#Zùæ×Ï\7ffY\9fÏé=*\87\ eíð\91=×\7fKÒj\91çí³¤¯³Õ[\ fûeÙ¿b¼\94ïÍÃuÓ{[n\1föÄLëàß:¡Y\7füçEÏÞvzï\87.îÇÕew\9dñ¸¤Õ"}bà !ÿá\15â\vá²é\9e'û\86\8eÄqùÒÓ\1f\95´Ø\95á¾aïÐ\9aÙ\93Ä;\80n«-Mü:nÁqÊÃ÷Ü&i¹ë\83\9b&®ûÌu\92V³\94A<\1c>\81ã¤\87îºyR\a_¡P(~\96è¹%%\9an\97ÚÔ²\8bãDúrºÏ¯2\rz1\12·eðÁ^H\8fÝúä\9bþ¸Ë\85Yl\1aÖÆzkÈ£\8dt\1d2t\r\b\86jç\81^\ 49ãá!Ô\88\92\84lc-d\0ãk\81Ü^\8a\8d#;>\94\14LhÚý\14B\8fÍ\17\9c\85«H¡\96<n[c)®kÌÔëvdÜâ
++T\9c-ÆÐÞ\80\1e Æ£\9cÙf\13R4\ 1ù¡»8=\8fðX\14\18\1f\v\8d/KkpZ\1aÄÈ\97!* #«\99®\ 2ThOÍ$<\ e:ó¯\8cþ}k&T²¥íC!\89×̼ÒÚòd\ e£\14ÆMð³Q\88h&½ \fÕËKÅ\9b\v%ö]B÷±\ 6YQ\ 6W\93I\195ÆNâÚ[\8a+ ÙD\7f©x\ 5DN\ 3Z\bý\14\8f®ìÀ WæÀf¢;ú\10\1dáC 7R\bM\ 3½\ 6Ô
++«·b\fÑ\91\80*û¨\96\84×1\f)ñÑH>ý\9cùÉ/äG\81n\96i4\10\ew=Úö7\a\ 1ë íØ\f\9ezß\8a }y¶\86\8cW\9e3-W\19\13\0\86\14Iê8á1ßÔÈ\86K\9c\8að>\8b.\88\8eP\90+rÅ©m︸Él*Oõø\902\1a§XÇÞä1\8f\91xϾ\84; \9b\1dí\84^\87O£t¨~ǪK´1©.§Ò\95µ\rÖ\84y\85Ôu*íÇ\18P\11\1c Tå/\1e\8dÑ\9c
++øNO\92{F9ÙÉ:/\14ö\1eÜ\9e&\156\97\99\1d´ðQ}¦ù"\84À1\87Rào4MÛ\8f\80\1a\8e\vpòé\81\80aXQ(n*hÙ'Á\1fý&cBJ´\81@&s\9b2Ð\92h/Ãi\17Åe} Î
++}3*Ê\81t\93ðÙÚF<;3\8d\10\+\8d¨Ù\82é+³M\9a#\ 5æ\1e\8cë\ù1´paÇÄ\f\8d\1e\89\1ab÷c·Â4\8f:I~fÎ\ac\1e¿\89\1aÛ\9c\8b\1e\94ä»\86S=úmíë\1d_\17\98\ 5|ÛÎ@³5£ñ\7f\85B¡P(\14
++\85B¡P(v\rÌÅÿ÷{ÝqiçÔÝG«\86xþ\95\87|ÿ$\89\e¦\99qç\8fM\ fì+Þ¾ß?uþÑf<Ú¿ÅC\19\83üÜæ_ü\87\16çwÑ\8fG«Z¬p:þ/ñÓ?ÅqÈóÇ}»Åó\83K¸ÿ\10ÿ?ì¹\ f6Oö\14\9d\1d\8f\96\ fqÓ·>\7fNó2çÏ$ã\91i\9fç\1f\1fý÷<ßâù6\84E£-í¹WãX÷\99S¿Õé\vZ\895®^Òçi:.¿×\10k¼hö_VH\9a\ f\12\87\>ð\0þêÀ3ÿµKË\12·Þÿå4\v\aîÂtÌþè!í;\9f?çiIóQ\9e·ï\10\9f½xö\84k%\16\89³>0<ïܯ¿ÿ`\89ç\9b"1æ½\96Î]wÍ\81\92æ\92ÄK¯l×\9dÊëî\7fIâò>\ 4¹§h+þ\ 6ëåsg G\80?Ù¶´qk/ò&\1eþâ©Û%-E¹nÛÐ\ 6w~ñ¢m\92V\92äeåÀ«07ùºp\ 4¨$Ù|Ê\17÷}ÉüÉ\99=\7fÀI>\9f\1c8\ 2ço?ö\17:=I#ñîg\86¾yáìÛ½¤%#u½²\95o~Þ\81ø¢³\f«^wÊ\ fº´\8es±ÛÀ\17yÏS\87Ü ü\ 1ß]wÉP\9fÓ\9c\84¿\Ößóö·¬\91ö«¶ó§?h\8f¾\8d~ÿ\9b\97þº¤µ\9fn\91f\96õuö\8e+Nïx\a¹ë/ÂÿØ\80㬿µ[Ç\1f0\9d¯ýP\9f\97~f}\e7ÎÙ®ì-û3§á8ý ¿±Këêú \81\ 3qùÝ\eäy.\15)_\188\10oZñ^IóÎËó\8e\1eÆÃÚÙM\12³\ f!ÈóÎ\1eæ\82K¿¼Ax\a!\eé»ÛZÙÉ\81XwïZ¹g(¶\8bç/êË0ÍWØwàqLó\15>ÔÒ.æón\ÿtÇWèúĪ!\9fÓ\\86#öèóùÎ?ºè»\92V¬<ïÑ\81o²föä\e\85[àº2l\9eã\l?n¿\96Vû1¶yÑÜu\9f=PÒ\\96´ÕïÎÇIX4z~Ißîw\7fìÄm\92\16\92Ôõ%Ãx?iö¢ë$vsÖÖ=æÒÞ~\80Ì»®ëKÂ\9dà\1cò\ 1{ÌcÝ\9cÜñb\8e\18øQ¿´èw·JZöRöû\96ÌÝsã\1e\92V²ÔÙ\93\ 3oä¤\1fì}£è¿\8aϰB¡\98ÆÏ ö¼\83~\16=Ûq\ 5\8dÚ9e\ 6ÇP^r\ e_\8d\99¡{ÌkT\88ʹØ\9a--£\196d\84Êe\92\r\18Ù«Ùçf-N\ fì\8aÛ\19FDQ"o\90ãÂXe4±\ 5âK¤ô\165¥Hl(\15\856öU\1a{d\849¤RC\8b\ f\17Ò\1a0 \86J¾\0îPI\86ÀÙPMÀ[FµÂÍ0Ñ.àÁ\8d\12$<\8eñuÏú§Uz-\99jc,"òíIêÃe¬N\8ay1ú\1d\19?.ÚÑ\98ÞÑ\97\9b\ 1P68&^ç3£Ñ\95Êf5'\16/YÆ31%g\ 6\99ÑC\18\0f·`íâÕÌ£\1eLÌèH% \a5¾\84uu\87Øh\88\8cS\17Ö\12s\91sW\86\84&(|Lb,ÓT\83÷@\12\10ð\17\9b\13\8dÎ (¾\9c\fÈ\15W\17²^\13>\13\1c2\8eúG£9´\14JëÌ\\8còÿ\99ï!ÚqÈ\10¥ÐÚ\98 YÂû\14\ 3=éq×¹ú FZëh\1d_%\94Ö6\13÷Á°\(ÎÊ`C\vuqU\92\ fp-uïÐ\ 4\19]!/\1co\9dl\8fª6\8cR\97X)Ô\86LXvxË`2\8aH\ e\b®ôè \9c\e0+ >És@\87 \ 1\83\16ÓJäû)zy0\94\92C²r<Û£\90\16\11]\8c^Ú\83MPL\r3\1dwÇòYÈ\ 6Æ.Ëç°¢èËO\1f{\8cðħwm\8aQ$÷ñ\f\9f\93\82433ác\1fÚ\98Ç\béýíÑG\91;2.\90éj\e«\b£\v\ 3(¢\83á\ e\18fÒß\9a\92^äÜ\12,Ç:*°='s,c\88YjÚ±\e¶ü9R(0A\ 44;§(üé8\ 1qºÃ\ 4Æ8<\8bLâ\84\8dXÑ`\0f\96#Q+\ f}ÅTT\1e©\ 3$Ya\86`oÊ\94)L\1cú\19\13.Ë\87\8a\1f8=Óº~xR\914T/[®ã&ÌÇ;ð¼0¢¸\19gz®\86A¯æô\13c\15nTd\9b\17VKõäTaðp\8e#\97Ø\91Ôáä\e"cvv\96Lu\8c\ fCz\15Æ-j\89\83Íò\7f\18á\9d¦"\87q"Á ø\98º¾J\8a\ 2
++\8dbRp0jü_¡P(\14
++\85B¡P(\14\8a]\ 3sñÿõ_~ü};§\8eGçOøü\9dq¬ÄϽ\1d\8f\9eÙsîü¤ÿßê!\9eù+\17\1cü\13\89åZ?\1e}u8\7fð\v¿úã\16ÿ·6/\1a=ÐÎÏ\1f\9fß2Ä8§÷Ôo\eöÍOÇà_\9a\88\97_xc\17g·\92¶að\r\9c\8eÁK\1có*\1c\ f|iÕ÷v\8cm\v\1fá6\1cg\7fã\9eØÅ\9aS\17»\1föé_¸å\9d\9f\96¸°«rÝ\9dC¼uz¯úÆ\97Ù\8f~ëPöé=àsqè³fO¼Fb¸¥\8b\7f>?ÔËK\8b/|Db¸5H,O¼\ fç\8fÓJ\xþ8í'\aÎÅ;\9exÿXör\97©xë\9aÙc¿ qSÛbÔ
++\85B¡P(\14
++Å®\8e>6N6\ fCÎ\95d\9cêr\rÕ\93"\83×ø\92\9dmòR\96\92\ 4ÙdÏ\rç\89;Ç]\13\12H9Tª\11¸BS<\93|u1'ã\19s¦Ë\eI&¤\eyú¨WܯøÆ\8f\89¤up¿y2XÁY:çåP\92M)à2\1f\13µ\17¬Ã"\8a!b¬møÌX\Ï\91X\80?§áÒH^Hϧ\10\9e\84\89\8cfÇ \9eÀB\9c\88\9dcä\96*\v$z\ 4dØw\1a)ÝÞþ\9d5(È~4ä+tZ\0½öÈ«\85\a\85*Ã?\ 3ª5\94ji\83Hãû\84ö§\12\81\8d\19í\1a\ 3ÖZ©âI\96¢,d\15»æí\17c@7`®cI\14XAY
++WPþ ¦h)ìá©ìÑÔZ¨\88aI¨@\egÖ%\1e\85²¹INKû7=\ 4ùo\8dÿ+\14
++\85B¡P(\14
++\85BñÚ\87®ÿ\15
++\85B¡P(\14
++\85B¡Ø\150Çÿ\7fî\96³·í\9cÚ{\83\9dÜ¥wZb\8dO®P(\14
++\85B¡P(\14
++\85â\95AÛ;bS²&Tnw·6\ 6\93C¨\89»\17\8a§Îw¡D©/ŧf<X,7wdº\eÒKÒqS ÿLÆG\8dÿ+\14
++\85B¡P(\14
++\85B±K`.þ¿øê§\8fÚ9u<Z²\80þßC\83\7fÕ\81§øwѵ«i<:·}þv\1c\a=»å?\9bÎ\9fÉ8ÿ\93A\97nÉqoü\1aÏGcÊxtJ;\7f-\8e\95\ fîÿÓæç\97\\1e\8fÆ\83çÖaϾáE\9e/Þºñh·Á«ê-Ï]ß4ìJ\88øüÑ\83¿Õ1ç¼õ¹æÿ\17Ú}\9aVÞ¼×é¯ÿçv>\16;éyuÑì"ñ\8e£NÄLóØ\1a<¯~ï\89Ë:ß<Óù®ÝÙîGoµ\8b¶;#iýu\8fNè\ e>½\87¤\95ÎÃïÉáy\ef\ f\15MBÚ§ÌÌùíñ\ 3çm[v\95Ôer¢W(>\84Gã¸!\9cù h\ 4¦,ÏÛ<´Á´wÜ>C\19Þõ£·\1d%ú\81ÑI\19N\19´\ 5ÿûÈ\r¢-èC§;xÄP\86u³\e>-\1ei¦J>7-\99K;x\85è\0úÎCl\9f\96v\v\8eS\1e¾ç6Ñ\ 1Ì\9d×Ù3\83/Ùª\ 3N{L<Ò¼\15/·C\87v»÷S¿ó½\1d=Ò\96Oø\92íèu¦P(\14
++\85B¡ø¿£Ó\ 4Ë\96\96i>Åîÿµâ\ 5ºÒè\8d/\8e¡\84ä\ 2ÝÜj¢#\19}ø\98\18è \17\82¥c¡¥Ü\1a\92ðRH\95´\9aèÌ\9diÄ\88\ fQ±.\a|Ø\14Ê\9e¥HkÁd+>H]¹¦°æjs\8bt\91f\84&\84PñÄÊõFµÍ\1aÐE\9a¿¥\14é\f\87{Ç4³\83§ÞÎÞt6¦\12l4í]sÐ \v%;,J\f\8déè3-¾~\96\12l6W\14+Óû0Ed¤\ 6\9a Ò\1d±ä\9aSÄ\e{¥\ 3¢+ÖbÝAgD*æá\8aR¨Â\96«ÇÓ\8d7\14Ã+Ô}£d\1cÞô\9dOÙEª¶yêì\99B÷Jc¨îf--\10éUç"½Ù¼÷¸MHxBa^#ïT#«ªyhbÝD}»\18\90\1dQÝË4\8fk\86\8c´¶ólª&[\87\95Nm\96\89\16ué,\960t\1aM\8c\10\17ä'P6Î:\94¸p±Ñ÷\83\92\9b\8d\9fwLO\96^\8d¨\7fO\91:\94\ 2/ç\91Jxx¬s¦"\83\85\9e\84¼\85\8fM»Ïfo\9aÿ\9fC¾S\fÍC3 \13à9è\11\1eá3Û×\15\8f|¢¦q\ e\11ÐU\f\16\ 6¨ï\12\9d¡4!>j½g¸;çÖ;h\80j,\8d\ 3³\89\15+!ÚG&\9am²[R¸Ï¢\7f±\0ô«l\992ì\9d\11õÝD\12-ïF×ÁV ¨tÏê@\9b#\13¨)¬=Q\8cæ¥Ju>V+U\ 1-\17GM{\10Ù¥©¨\9f\99ô>¤ô\9eu½\1eb0\fÆ\8b+);\8b5\8d1\8fÞ\86n\90ÑÉ\ 2\ 5\16}DmZÚN\ 6\1a0Zú\81Òó\94£ M\82ë"}\0\91a4\7fj¦\96H)í^\91R\82(\ 1z \1a\1f\99÷\85¾©¦yÆ¢x\Èâ\ 1n.\8f\86Þ\9e\18Fè\99è²\92O´GÕø¿B¡P(\14
++\85B¡P(\14¯}èú_¡P(\14
++\85B¡P(\14\8a]\ 1süÿ¿ùÈ#\ewNÝ\91ÿ\7féo
++OÞÅqç\17?Íóß§\9d'\9fûæ\v\ fù¯ÆóOäç?9xÈ¿õùs\1a\8f\9dì ñè¡áó'¼pø³\8dÏo\]4º³ñÂ_\8fã\9c\87Îøëö\g:nû^C\9e.\9e½P¸ôÎYáËïÛ®»\ 6Ç{\7føÑϵ´ÔóÉg\86=\bw}aí7\84go\93\·|¸ç\ 5³\8b}dzwâq/û\ 1Þ\88#ì¶Vøë68áÄÏ\fÜýuß?ù\13\9d>¢\11nûK\ 3\97~íì¶\9b[Zð1´´ñP¾w\7fûK¶¥Å\9c:^\7fK#_þ\ 3ö\98Ç\84÷\1e\8ap÷7\ e|ù?Ø}嬤Ţz\8c
++\85B¡P(\14
++\85â\7fCã´\93\ 4\9fS\99ØGÑøá6Åä\8a\ f\1d¯ýç\92Ã_BN.¤Z»2p/\84\8d&1K\À5þ¾m{^lÍLC&\91®Ì\ 5%±(¨!ç?´lÅd3
++\8dü\19n¿ÈÑUî\95ÀBÒ»@*¿Á§ðïRQ\90P¢7(y²!\16._M\88¬nÔ@å\1dLx¤åv\8aZ½÷¶zÇå#êÞ\94\82ûáñ¤ö·vB\81-.ôÝÞ\16o¼K5\98\82ú/f¦ãô»\92\1dj;\86\88\ 2ʦu\9ewÜKP\ 3ê#\15n\11è>¿Ãúÿ¡\7füÐÔú\7f÷Ñ'\97õëÔ\8fï\15NnëM\17fÆ£Ë&~\17ØïÜnÿ\7f\1d\8f¶.í?\7fÀ×®ù·ö»\0ªa<z }þ\12\1c×=µ÷¦v¾ðüW\97õkëÍë\ eú\ f\9eÏ%aýÿ¡v~w\1c\7fwÇ\9aYÑ\1dHIÖã\9f]Ú¯ãO;rõýò\9bD¨²æ¾zXã¯óï~DÒr\97vÊP\96ó¾ùð½ò»A\8a²þß¼´/Ïôþü\8díº7áxø\8b§n\97´\14eþ\93¥}þ¿{Çû¶Êï\r%J>·´´å8Ö?¾¢íÁGV¼äå#{ö¿\eLïù¿}i_öËïÞ ûú]*rÝõËæ~SØt\97ü¦\10\82ü.rÓpݧî=W®\v\18\b-mÃð»Á7þxÍÓ\92\96;m\82ë[\1a{Ã¥7®\974vÚ\96ö÷Kûë.»ë\8cÇ%\16¹nÕð»Èå·\9dùX\9f\16'~£a]¯¹ÿM_\11=\0tç\96vüPöÕÛ\8fÛOô\0L\91º¾bø=èî\8f\9d¸Mô\00\80[Ú\11Ã=\7fûÛ\ f\1e.¿}\98®ýÎ]¶Ðï"\8bFo\1eúØé×®Ü.}8·1 P(\14
++\85B¡P¼
++×è\16+·¶\8e«1q]\8bÕº\17}\ 3¬\1d±x\9cÔA(!$\87\85uÍø\e+&îÅÏ\ 6KJkSu¡Ô~=op3\97C\88XV»ÿaïúcö¬Êsß\fÇÛö+TÃÔm\9d\16\14¥?¬ç÷\8fÁ\18q5ë\Õ\ 2-´å+à\80Ñ@¡à\16CÔ¹f\9a\8dø\ 30\13³d\1di6²U`(¡\99,2a\ 6#Nbp¨\13DeP?
++"Ã\14\11f\8d»®sÎó|/ßû}_â\1fL´÷\95<\84>çyιÏ}Îó¼Ïùîû\W0%.Yêε°1\84¨Úº9s\8b?\96õX«sUT¿ãÉA\10}Â\ 2\9f{ÔQI[\83r\99\8fUkr$0èÖªÏ_»òpø®¯\7fgÀ\1a\ 5kÿ¨FÊ
++\17\9bÂÚ\1dKwÓêŲ\90;ï¹.ÎÊ¡Å\ÖÅX\1f+\1d\8271`Ùm\94mõ`9ê±\96Oè\88SÁâ\92H³\14i\v\92F߬U)ê\88Õ\85WXi\93]\82&Ã\12²\19à2WöÓ\93\8a\82\14\14p\933\81\vx\1dc,\8bQ¬ØB!¥(\7f?Àj±lÓ§^qs¿'÷¾Ï.º®\ f\19\8by\9d°@oÿ\1eáH\80»}fß\13|\85\95;F0á^²;Ĭ±l´\9a4\ f¨\91\ 1rÇ¿`¸L{a)\99,`¯ã0\ 6C\1e
++²\14$^\81Î\93\82 Æò\a\0\8bA\8c ^µÞx¬þ$ÿ_ \10\b\ 4\ 2\81@ \10\b\ 4\82Ã\ 1Óñÿ¬Þ÷ÌÌÒ#\eÇüxü\7fc\7f~Õç¿PÏ«\90\87\83\ 3='ý\8aç\8e\7f¦Äùµ\8eÃÁÝ}.üê\83×^Pö\ 5$o\86\83gËõÜ\17°â§Çn+ñÿ\98ÝÂÁ\9eybüOÏ\93ÿ\7fO\1fç¾|ÙÎG+\a\7fý;ÔÂÁ\95}[Û\9f|ù¿µ8¾¼÷Oõ÷Ývë¥\ajY
++5&]÷",Åñ\9ecÛ¾\81hU\8dsWîþkqÜúò\v\1ejem¿Á®Ò\1eãñ÷ýöæ\9aÃ\10]Ë\r¸³ôïã8N=ù\92ÇjYÔõ¾½¥\8cù\ 6ûVÖX½Î:Ô>lï9ñÏ\9eºêw\e¯\7f¨}\98(÷}\14Ç\86¯\9dvD-˺ÆÀ\9f\9a'oà¡ÞÎñ¼\81}¥\8c±ómwL¶²Ôì\Ûk4LN=q]Ë\ehñø\r#Z\ 1ënne-\1e¿»¯s<o`¢øzv\1d\81\1dý\9cÛüí\8dWײ\9cknÀ³ýþ\92·>ü¯\9fìt\ 4ª-\ fö{-fæ\r\b\ 4\ 2\81@ \10\b~v\94\98¯vÑÇ`ºÜñì½&¹=\93ªGbÓ9foTò¤Þ7\8d\93?æàË=\8cxRÞI1Y:Ôzç\88£2f\9dL
++ÌâÎh#¶Øólqã.v^«öV§ÎfçP»å\1d)Æ\96\vO¾w\8doJ\8d²¬É\92OÎ÷òÿ\ 1ßÒÙk\ 3Ë]$O\7f\91
++HQ\eþKÛdÐlÂù@Q\ 4R«Ì@1³Ý±6JÆG]bµ\ 1Î2p\91!ï¿"Ï>#ö\8cTû\1c(\89\10³ÕÙu9Ý-æOJ\7f¬\ 2HÉO\ ex\13ñ\8d^}\14È)\ fOÑ$¬\91T°ª\ 4y½M0\91®\ eÙd\92ù3\16\1c\82Åÿ{,ÊÐsc"<\82N\ 1\16\161³\1eÿ\ eEµ!ÇÀÔt\8el¢Ü|`\1c:\ 64í³Áp±çtµÏè\ 6þ\8dn(¥µJÕï\96â\a\964øXG¥àt\11f0
++\15`L` cL=\93\1e\1fÕÑ{Ì\83·¨Ëat1GLR%ß 3A\0Vq\7f@N\8dí^en\13H\9er\10p\9ccÍÖave\f\14Ãê\85V\9fº &Gt6¸\91ü\82ê·¨\8aN\85ÒÌ\aXð\8b¦yA \ 1k£Çã\12u×'*:\18&ÿ/\98;?Ca2µ\99k1\89ÿ\v\ 4\ 2\81@ \10\b\ 4\ 2\81@p8`:þÿðuO½nfé°í¹f`ùØ\8bV<[÷·k;\1cÜÙÇó×\1c<æÜ\1a£Î8\7f¨ü=\81±Ö5_<úÁÊk§ÒppûâR\1f\8e÷¿å7¾Ðò\bâp°¼ÄtÇy\ 16\94ëÏÀqÕÔªÂ\và²\v\1d\8f íÙù\9eÊ\17è\ry\ 4oZÜ\9d\1få\11\1c\ e\9e*ö°\917üàe?.ç6\1dï\0íyÉw_ù¥r>+?\1c,-õ\90{ïî'\8f{®\9e\ fj8(U/ø\14ëÚôÒ/ó|öI\ f[ü\9fqç\95\87\ e\\Îç\98\16\ e\9eíy\b\96}â\9c\9a3 TÛûÿl\1fo\1fç68ÔÛ5ùé\96÷ b®qìO-él»ÿæój^\80±m\ fÿ\11}\8c{\16n\83£ºûÎ\8açÖ\\ 3ë[^À\8eRv\1a\8eK\1f7ª\96\ 5Scñû{[\96ݼ¹öÁéÖ\87åóð,Ö\1c\10Þgß°õ+5·\ 1\83QÊnêí¼äÞ3o¨¼\a&×öNXÜ\8dÕ;¾¿jw-³½õ=Ïâ8_Â5\13Ý\9yÅ\19OÖ¼\aÛø\19+w#ÇgË\93'\9eÜò%\9a-w÷9\11ã¹\14Oõ}xïÑ\17\7f½åR¤Z¶«Ì©·ã8ø\89s\ f4ÎGWýy×ÑÝØ¾âõ\17Ö| klm¯æ¦0¯cÒ_Zí´>×:ï*}\7f\13\8e\8dß\9füÇ\9ag¡ZN\8b[ÜÙ9Î#y½¿KÛk{ÞÇÖ^\99/³ó:ìíëÜ:uc\97K\11«¯¿±¨³ó¥Ëw<Tù\19L\e\87»\97LßwÓkZY¬¾\1eNtólãq§Õ¼\8elu½ï\95ýópÿ\9ew\7f§ægX_ËR±Eø\19\ 4\ 2\81àðAÑËÖ$\ac\80\91{T½SѹÌ0¬M\96|`ø\1c4ÆR±<'|Ó0\16\8c\1f\ e\8dÏ2êÕ\e\8f_\18þ7àç\84õá\ 2×êõ¤ \8b\961G«u\8a~¦Î}
++Îóg\ f\97º>.l\93²\fY²\1dÆ,sÕFw\89bÝ9u<isí\89æ.bÅ~ \vä(ÓÜw\b|äGãNhWv\15Ǩb11\ 4jÈ£MÆ]a< Òðk˰\9dç§C\1aÑñ\9eÉgf\9b¾:C±Ìçd\84\99AlÞ\95ð\81ÄP\1fC½¦ªÔãW\15Å\ eý`\80<0\fÌó5öMy|sD\ 6çák\13ÝÏe\1fµU\14?§\84=Ú+Ün\19dîiGÏ¢Åý6SF=1¬\1eñEêY3m7>òÛ5Ñ\99°\94\v\0:Þ·½Ö.Æ\1aã÷jdÿ9º\8d\15M,Á|m\1d?\9a1æÎ\99\94"ãÍ1Çà)\96\ e«èT\8c\81ÇÊ%W\8fê\94\12÷[gLAÌ@\85\vb\82¯`\95b\94ÞX¸Ë£G\18*\1d\9dJ¨=¨2\ 50GX\9dGS^3\9f\0\9fºÙrڤıð¬){\86\8b1EQ?\1cSò\18\ 2ça\841ÊÇ\88\91\8eÓûæÿ?÷\8e\97\1c
++åù\fø¶¯\7ft?»Õ9pø1@pµñhÌ\11<ªtR¤A!0J\8eî[\86Ú-\1e \8dUUö\fµã\83Ú\91M/sF\85Bõ\a_:F¸µÁh%£[\1e\a
++»ç\ 3N#É\9d&\r\1e\9cè\83j×XçK|\1cnÄT\8dݳ\8aQ±sq\16\90ÎïEÆ\ 1\88G!¢íêÁ\91|\ 6\8c[Íqq\1cªÄl \951¯³9"¨Ýæ\92Ûb9)ës\8dIá%þ/\10\b\ 4\ 2\81@ \10\b\ 4\ 2Á/?dý/\10\b\ 4\ 2\81@ \10\b\ 4\ 2Áá\80éüÿcïØtßÌÒ.\8f\9dùÅ\7f¾o[ÍU'+G){¢ß\ 3°sê\7f\16×ÜñÔòÑ\9fêó}oYpá}5×9\15\ e;\81@ \10\b\ 4\ 2\81@ \10\b\ 4/\1czÞÃ\öÙ\18]v\1eO¯ÿ_rõqOϼg8ø\9b~\8dÿÆ\83KßQöæfòùßÔ¯ïG÷Ï/l<ÿ³ïQ\7fh\9e¿%ìëËÆ¹òoïõâÇ÷~ïîyûOßµ©î\7fVQW^û]ý~ëñ}Ì\az;gîU\16\b\ 4\ 2\81@ \10\b\ 4\ 2\81à\ 5X\93ÏÅSR¹H¸m\9f² \v\9eÇuÐkf\8cð-ÌÅ\vQÖùsñ{Hþ¿@ \10\b\ 4\ 2\81@ \10\b\ 4\87\ 3¦ãÿ×ýÁ\82Ëg\96\ e\akK\9c\9cÜÜk~²æ'\8d\aÝ\r\a\9b\v\ f8ÿó\9aËWÿ¤òyk=\1c\S®_\8ac×ÚW}©j;5\1cl(\ëã|þWôõ<\9fÏÿ²>¿`Ç\17~íó<\1f´ÍÃÁ¾r=ó\ 4\1e>ëÕ\ay>Æ\b{&\v÷ø)8NøÜoÞSò\11t\8eæ5Ï\1c\80ãÞ|ÌO\v?¿Òjáà«\85süJ\1cÛn<õë\95gßè\9a\8bpe¯U°Í\9eU¸Êµ\8e¹æ\rì\99'\87a²ç\9aÿ£Çþô5u?\84R\95\8b}{ßÏË\97í|´\96U®É\85\83}ÅÆÙ¹ô_ÛûA]߸ô\835\95ûýµÅγqühß\85߯eÑÕ:\8fYÜ\8d\83úÈÙߪeÙÔ>ì-unƱû\83gte±õ½ØI~þó\1føÌDÍÃHM\9b`iÏ\19\7fÑÔþO×<\8cèk{Uß\81~Þ·rkÍûÈ:Ô²Õ}®ÅsËÏ|´ñó»Ê\19\7f}Ïýî\8e\98¬y\18Ú5îþÛ\8b-\1fűák§\1dÑæ^Ó-¸f\1eNüS\96tun»c²æ\84¸¤«?÷ö:\ 2gíÿàI\95/?5;÷\95²Ùùò'úö¶Mx})\8bÖVÝ\82\ f\8cpéÏäÄ¿bÎ<\13ô½\9f\13ßxÅÖ'ZYëÃî~\9eßqü»¦êsdÛ\9cøX¯uñ¾#×·2\9f\9c¼Ì\ 4\ 2\81@ ø\991¢\r\9esJ¤K\8fÖåTâl$Ë\ eäf\ f>Z\95\93²øù/dÞÆXE\89\1fKÅ{ÊÞ\eåB"U|HQ{å½UTn×dÏǧ¢7É&Ü\13\93Ư½\9bÎË\rÑçöÿT `\80íâ~&\17
++v\9dPµóAwÚðshÂSFÝ\94°bQ··(ÑÚ\ 4cb`r¬\ f0ÏyíbäG2®¡Ú\ 2\ 5â.\82ð984\17\v!{Q)÷Ù\90Ð\9ebí1Y\15¼JÔ±Go\18·\f eh\84\15)\93RNø\82Ó\95C=\99\98\ 3ZqlÄù\18¢J&ÃE0É¡íX¤\v,\9c¢\94öÙ)\9bàI¸&WÞr¯h8\1cFÂx¯BáA\7f1q²sÌ9ØÚR\ 1\1e\8dv:ë^\eê#\14M¥Y´ÙgrÑS \ 1\1f\86Ù'\8f®Ös\9e¥%¶Ëé\80!mã\8eûjL·pºë\fs\1dG\87\fù\98\98õÿ\ 3¾\953\8cÀ\90¹H}\81"q\90èoüKc\86\ 4\13Ð\e\e(h\8fµ\8fV\99\82\f° Ë\16\â©&AÝzL\14Ì@x\b\1dÂÄwTgPT\84ð9PÎ>â\8b6»nN¾@ú\17\1e½0\18\99ðsÐ9\80ë\8bv\84¦´\16>µ\rU "%\bªm\18gÇç\8côú\98¼\98NÝ\98b¢ å\8cÞ9\8ar\95±Äzj\1e½\8d \9cr|ýxôl$~Ï×\11\87@a&ÚÌZbäs\897BâÜ£\86 &\82\87ÃtѤàèòáa®<¦»\83U6¨ìÙbT\8a\92*Fâÿ\ 2\81@ \10\b\ 4\ 2\81@ \10\1c\ e\98\8eÿ_váǾ;³tØb\9b7à8î\99Uëj\9c\»áà\9a\12\9fÜÂó÷ìÝRãÄ>\ e\a\93åzÆ\8f×|ñè\ak|U¥áàúòw\86ñ|\81SúØé\e\ f~öÍõ¼ËÃÁ®R?ã×\8bN}õ¿\97óQáúµ}lþ\9fïùõÏ\95<\ 2ãíppe¯=¾ýÌ\955\8fÀ[Ø\93úvÿé\92U¥]\1fhçõ\v»vW\1f¼ö\82r>y3\1clìõÍßpð]%Þ\1e¼A»5öÍúOx Ö\13Bf¿fÍ/Àù\12÷Ý\8acå\8f?ñÖr¾ØYcÌ\9fÂ1±é¥_.ç}Ò\v\aª\8féþðÃ\7füHõ³w5&\7fþDçÓí÷¿;×|\84 *ÿÁ]\v;»¶üý\8e\87k>\82i\9aòûû²q.\86ËúöÆó\11>pTwßYñÜÇj\99oq÷]Guþ\19ç|¼b¢«ó¶[/=PÊ\
++5\ e~¨ØÂ\vv>²óèRæC³sý<¹
++w\95:gÏUXÞëÔoüÕ\rµ\ füûm)[¶¨³ó¢©E¶æ#\ 4ScùO\941Þ\81ã\9cý¿×ò
++\ËÓ\18\96û\98ñåÉ\13O®eÞÔ²\a\17vsï\9d7^ü_¥ÌhU}¶¾Üw\1a\8eM\8fÙ½¬åiìém9gjõgj\99³Õ/\9b\8b?\99«pÅ_lù^-óml×öÏÀé·]ò\95V¦«-wNL×ù\96\ fÕ²Ôr\15Nè\9f\91³®êììò\1fÖ\95û\98Wð\8a×_Xs#øGÖRvûH\9dëkßOÕÎÕ½-ïü\97\1d_«9\15QÕ:\97õy\f÷ýeÍý@Y\9b\13\9bçÉŸ³\7f\ 6'§.ª9\15ÞêÚ\87\r\13Ý8\9cóÄË~¥åi4î\8eËz[Î|ÿ¥ßªy\1aI×\\f5ѵ÷g·\9c]ó-ð\9cÖ²óË3ù;,[²©ò\81D\9fê\ÚÓ÷}ëÔÛê\18%×q\93\94ñ\9bÄqê£kÿª\96ùÖ÷u\8b¦ï»ñêZ\96cµs×<y!'Í\93ß±·\7fnÿD¿é\91\96C\95ê\18]vTçëßZøÖýµ,¶<\94Ýý\ÚtÕúÇK\99\89%f \10\b~1Ñï\ 5¥¨µ¥â»·xe\97ÄÂ.^¬cÈøõ¶9XGIt[u¯5.Öóì\rM\8cµ1Ýn\ e\8dè\1a§Ô\8c«áýc4#u\19ï¾\1a\8f
++\8c#SazZ\87ÚY[TÓ\ 3ã^\fb[G!vꪧ\94\15\ 3Ô1ã\ 3\8f¹s\9aQ«¤UtE\ 6\1c=òÙd\15\19\16ÇuÖ¨\11ΪçÇRqIt\fë¢GÁû\94(×®rÀgJ\80'\14ã÷\fÒ\19\1f\19àÍY{í-c^0P;8#0\9aÎÈ<\95´\1dLÉ\f\96¹Ò\a\13KÌSG\86/\1düu\9fn,¾4>³¡\94Ât¿uV^Ï\927\90\82óü9`lNw\9aã3âÀu\9c\14¾ç\12Ãî48ÃÑ\19ýWEhÞ\9bàÓøE\85Ó\14\85Í\1dlTÎâ2]â\8bxË3ì©\18\ 5G¹
++¸6{k\18ø5\1aFiFöáp\1fuN.b<á\8a\92a\10ðÁP&/3\9e\91M|5\a¸\16\1e+±d4Å\1fP\1dR°-¾\8b{ñ\9f´Î>Ã)¦ö£Ó ç§\ 6~tJ\8c²$kÒ/\8eÉ YqÐ{íueUà¨u±ÒÀ\88<\93[Sƽôà\88\7fgÏ\ 3èçÇ\v\11\e-zë\18}Æ\88ÛX3q\ 3\rÁ±&\84\91ø<Æ*\18\v·\ 5\15m³i®¼\0\ 6¼á\vÚbyEÏ2g\1afiiÓG\8c#S |\82ã-ÍS\8c»ãÁÁ´Á³\89>Ánf%`Ü\1c\13/\8c+\ f¾w\98¨\f+\96Ä+9\85`n\88¹Ë#Áøb²\e̱ÄÔ\ eü×ð~¦\89àS\88sÈ\94|\15\f\84w\ e\ f\r&@Äw &\8fÅ:\ 5\8f\18\1eE\f!\a `:q<Ñ"\1e`8\8c 1|\85`R\94ñuJ9¯<
++1Çbjãl\99\9fÁ\88ýèü\8fX^`\1ej¾â\92v>Ôg?3d\8f×AÆ\8b\87\1dµ]®\ 4>!\ 3¾õ\99ÐÀwKÀû\ 1s\91/\19¾}\12<\b\1fX\95ù\861t\97+\8f\12ó
++pG*s ø3`\16rÂâ\15ÂY¢øêÃHböp²¢ã\11ÎGíA\95´\ 5<B¬\ e¾A\1f\98Sa9,LuÀ ¸\84n ¦\8coô̤\ 3¦û¨2ÆÌ+\80\91å)T)yï1Z\81\8f({\86\97(*úÍÑOè \1e \f,ª°\9dÏð¾Â¥\18%L\97@×\96\84¤\8c9˧\9c\13ÒÐ>çx\ 63Cc0\15ª
++\ e\95Á\7f°Û\96W;S?0p\9c.Iöÿ\v\ 4\ 2\81@ \10\b\ 4\ 2\81@p8@Öÿ\ 2\81@ \10\b\ 4\ 2\81@ \10\1c\ e\98Îÿÿê¾Í\8fÌ,\1dÕÉcùhn¯@ \10\b\ 4\ 2\81@ \10\b\ 4\82\17\17Ê\1e\1aOÎÒL\8eÄPöDIþ¿@ \10\b\ 4\ 2\81@ \10\b\ 4\87 ¦ãÿ×.ÙõôÌÒ#\aw÷üV\1fXõðÛ*\ fWÀù{ÊyrÒ}x©{{å\9ar\v\86\83½=ÿÖóõ\ 2O*y\ 4ãü\7fëËù}8NøÁ½?*|~*\86á`Y\7fý\8aç\8e\7f¦\9c×:\ e\a¯<ªk÷¸ÿøÐ7ËyïÒppM±g\9cÿïÐ\1c|~w\15n®«p¬\7f`ùÿV>?\83ë÷öüok\9e>ï\81r>R\8fp]\7f~ÅO\8fÝVu\aÙ¯\89£»úW\1e<ûþ¢;\18©SX9ÊÆùÿ\96÷¼{o:oMÑ/Ì\8eíVÞAÖ¿òÐ\81\8bËù\1cS§;7;/àÆyx\ 1\1fêÇmçÔ%ÿÐx\ 1u-ûX\7fßù_¹|EÓ)l<o÷,éü8Îý·º\1f\93ç\96\\¹\ 6mt\95{líâéöfò\ 2^Yl!\1fÝg¯?çÞÊ\vh\1a×Ù{{þÄoßzêãµ,øZçê2Ö×à¸åÄ-ÿY9\ 3]¨¶ÜÛëø\8dó î\9fGÃp]Ïã¸ù\93\17}¯j\18ª¦Çw{?·.¹÷Ì\ej\99ÉÕ\96cz\1dÆm¯ÛZ5!I\88TÊÎ-u\9e\82c·;û\81Æ5\18ë}\87zþÉÓwmªüw\94àY0Íá÷×86=±ªòÊ©l[\1f\16uÏÑ8/àÒ~Î\8dóô-è9àÆùö¶Ïé·lDßpÇ\r\957OåZçä¢é²u77]ÄTÇáÁ¾½q¾½ÛGî\9b©\99Xù.iËé\8f]>¬e\1d\7fáe}ß\7føñmß\9cz\98\15¥ìé\9e\9bò\9b\9fÜüh+óµì¶ÅÝ\9cØüøï¿ªòíuózO?îã:\8cçöctÇßþá\7f×wS§¿Yu;9î÷ïy÷wj\99õõ¾gûwËÛ¦.½º\96å¦!zg©s6~?\81@ øe\ 2ù¾¢sÊX[\14çb\9cæ&$?\15uÚ:ݳL\ 5;\13|\8cäÓ²ºã\7fÓÁ\86yxà´öd°Sä#\eå\ 6ì8Ø
++ç\9afëø~ÄoPn¼t\væá"\83¹Ùàw5tüh³qûák\84âh¦ñ·ás\ 1\86©HÎ.oíôuèP2®°\fS\89XùÊÏHÅ5Ê\87Q7\8dB}ÉRe\8cr{Î\19\eðCã©®\97¨µ¦H\ 6FmACm1ëçÓ £f\9a7¹è¡¡\98:p\ 6\9f\92Ê\90ôL+ê\ 1:ÜAn0Ê\93é\0\97âÃ\91\12sä\8b÷\vÚÔ¤_Ä\a\ 2L!;\1f©Ç8$\96ßK¥r\94¤R\97'\ 3¤â\98Pn\8d$c\14À#ï!éÚ4µÿ<\1a0sóýÍÂ\vhRÈ\9c\19ÔÔ£.\Dû¥oÖ\85@rÂ\ 4\1f4-¼¹4Ö\fe»uʺ\10¾)8?dMyÂL½Å\8cÙ\14\ 3¼\80\8eñ\ 3Ê\ 6´ \13haþ?ö®\ 6fÏê,÷M\98}«Å6\8eÉ~\1a\18PGG¡\9cÿsn7g·t\819èÚR ´\1f\14\ 3\8c¿\8f\96!NDc0\12X\16\ 2\8bûÉ\8c\9d!Bfql\9d\822\87\91A0à¨\19K\81\rÄ\8eAùè Ì\8d2\ 3\ eÔë:çy\9f÷ë×\1f\8dÉ\16µ÷\15ß\95ï9ÏsÎ}îsÞ7ÏñºïëöT \f\11Þ\85o0'JÅ%<Ye\13ñò\8a÷e8\1cÏ\86À÷G8\89Õÿ\ 4ÎC7\9eJ\98"\94ÓÃ\9b` Ä&ëËù¦Ç ϱÀ\ÀäLÛ#µ\fáORËí\0:zûª-8ë¿Ð)¤\f"6\ 36\1c\16~TÓ0P\8f\90R\91øvÆBá½\98rý\ 2ám\11\96\b¶\r\85)\v]\991\18\97*°¨^\84\8f³$ì\11~\15(\1c\88ï3\\1cðeåþg-LÖ_\8cÕcØj¦ð{GN\9eMXç\91_ÃH\83\84"\9bR\7fK°Ið\fuDsW\7fpº¦éþ´*]Jµh¦°Ra®\8a {ø\84ª\7fµþ¤Ã·\91¿;}\8dÆ\82eKÞ\8f~Ëfê\92b¢\85åA\13¥:Ñ3Ö\ 6{¯x\87s\12\9fã·\18\9b+ñ[Zð;\14±ü\85?wüQÃ\967\99\95\16\1d§\90\8d\r\94²Äï\bv\93D,Q0p}¢®8ÜÄ¢\97X8j©Ö\1f\v\13ø\83T"7\84á»fª
++¬®P/\12\8b\92¨g-4\ 2ß\1f\9cuñó\92½òÿ
++\85B¡P(\14
++\85B¡P\1c\f\18óÿ\97ÎþúM3[g\ f®¬\#9µëß±qEå¥-yþÉ\9e\83\²û\8c÷7^ÚÛáà\9a1Ï¿êØ\97\1a\87*i8ØUy;Ö\v<nëæÓ*\1f\16b\9cÓÕÉ[\8aÏUï\9aØÖxã`\1agwr?öÞ\1cïêÚFÞx"nø~Ç\81vm¯Ô6ro\9f+\175\ e4ÆÜÕÏêíÞ\9bËÜQÛÈÿ®}ôð¯v5À|ãj?Ñ·Ù¾zTçKD7\90B¡P(\14
++\85B¡Pü¯Cµè\8dsÙ'Wk%Ö²£\8eQHÁÇdyF´\85W+u\1ec`\8c\80KÎKÆcQ\ 4÷z\8bó¬a\1c\83g½ÉÒ×õÜ£\96jÈ\16÷eVû\93P¬°Jêôz\95\8c*p%×{c*¬<h»\18\ 2aÅOÃúÒÖ¸îZ\11\97k\b\81óA\12ìg\8cD,!\ 6Ï"¦5\92'alaHkr6{\98\96a\8f¤fO\f%¦ZÊ3\9b.þ#\15\9cã\95ÿW(\14
++\85B¡P(\14
++\85â`À\98ÿÿð\82\8f~wfëp\9aþÿ7\96/þ÷ÊÛû\14ç\f\1e©×\99¿{êÓ\7f³e\943kÕ¡
++\85B¡P(\14
++\85B¡PüTPu ²¡\9a\831Ö\14\8a\941® PW\85Òÿ.åà]ôVõÿ\15
++\85B¡P(\14
++\85B¡880æÿWÚÉ\1d3[ç\f.ª<ÿ§»ö¦1ßô \15
++\85B¡P(\14
++\85B¡Pì Ö)\91@ þl\89Éy\9f²Ë&D\96z0Ö ÉùèYµAÐj\9cqÁûÌÚ\ 6Þ\99hpY\8aeI\10g\8dàÁ\12\13«
++°h\87õÉPÔ Äb½s¸ì)rà"¥\aðp´,U\17ÑSf)\11k\fº÷µF\97òÿ
++\85B¡P(\14
++\85B¡P\1c\f\18óÿ·<±þÈ\99³\a÷÷uÖo\ôÞ\8bkÝûâf\r»:ÜMÿÿ\8a÷¶¸\0\17\87]]vêä/¼÷ºU\9e{HÃÁ\9a¾&û¢\a\16\9fÙ´üm\1e\ eî¬÷ÏÇçgW\1eyoÕ\11ÈÆ\ e\a\vkÜÁåøÜôâ\eïçõPB\19\ e&k?Ôö\7fzÝ\91»«=9\87á`Gí\87\8d\1fxõÄ\1fòz1NFú\ 5¬ß}á©o{¨Ö/0Þ\8ej˳ÿ3\8e9û±f¿éêÜ\7fª>³
++\9f\rÏ;Ój\12$×ê\96¿Ò\8f³ê³\17?ÓÕ²\97V+|Qï\93˦¶ÞUÛR\ e\96Á\95\87\8eÛ\96ùV\93>\99V[àªÚöe|ÞUÖ>Ùµ¹öÜ\82Þþ¿\98uá¶Vç ¤öܦ¾\16ú#w®i5ÍC\8eÍ\96\1fôu\18®¼û\8cgGuÙ[Û°×nXþÜ\eo©>wÆ\eý2(\14
++\85B¡P(\14ÿ#T\8d÷(\ 6g\1cq%ÛNs\1d'\1e×kÀ\8bx±1\84à\9d+\ 1oõ19¼¿[\1f\8b\97Z\fÞÛ\14rH\81ÅëK\88Þ\14Ü\87.\9dÇ\15g\13\9e±\11\17½uElÎ,5\9f
++K»\8béËz\96|\ fΤè\1cN\14¸ÄºñâÉ\0Û\92½µ>D\83»\99'.Y¼É\1eÃFç#.\ 6üéð\87\vÉ\8elÆ\8dx\9aÚù¸\ 37Ðâ\80ÿM8\9b¡»\9c-Ì\r,VO |X-\9968oL%¸aµ\ f,d\1f2Uö\rgí(aOc\ 4-1y\9cD\92ÄR¨[/Ñ»ì\ 5L\\17¡Ø~Õñ7VXÜ\1eW\1cµì\1d\é]Ì5÷=rÎÙÁ\88d\9aßm 8P\85$Ý:ÔkÆe>'¡[/x Y\8c\829\ 4\1f»<z)±>/1»\X-À°>@ÊÎ\16\83A\1cóëÉÂ\e¬2\16 aðÀ"\ 310N\1eÓ\17ôØ\15\19\88\82ÙqYcÄ¡1\91ý\87˲5 «]Râcu¼\88~\1c¦^Ð\ĹÄJ\ 58\81Z_ð\8fÇJÃ3Eªë`m §/\1c\95\11\ 6Ø\ f8u:F\1688©8Û|`á½Z\v\0[\12ÖÇ4Kù\7f\85B¡P(\14
++\85B¡P(\ e\ e\8cù\7fóÁ\8f¾0³uöà\a=\9f\7fÃüð¡Æ\15\87YÃÁ\83=÷<½.Àpð\89z\9d|õ\17·¾å¾ÊÛ»è\87\83\89z\9d\9cóq¯í¼´òð\92Ë\9cÁ»{^|ÃÔ7\8em<¼\ f\1dOÝ\8f}ÑãWKkKÆÖ¶Cúº\ 4gýéäÓµÍ9qµmißçäÔñ·t\1c½o|ú²Úçáøl¿cåó-ÅÆí\7f¬·ý/\8f^ÿh\8bQpIjÛêÚçgðYù\9e˾×8úl\9b\9d\vz[Öl¹ä\85ÚVZ=Ç9\83]}ÜÃe\ f\9fùçÍI\e/ô±\f?¾í¢©ÊÑ\e\1fÚs7÷q\ 6§]sz×\96ítÞ\9fó;gêÆ_m6¦6÷ÛûØ\85Ó¿ç7×6g]\8bk8¹\8f%8káäö\16K`»\98\87Y}\9fë§Î?ºµ9iã}¹÷ÙDÜðýÖ\16;_¯¨}¾\ f\9fÕ/N|¾Å \18ÛQßçÄÔÎ?km>¶ñʼÑÜ?Wº¹³þf[£CGsß;váS½¯¯>öìö\6¦ùsA\1dïMøüè3g·ç
++V·¶-ª}2\8eeÍó'\1dQÛÄ\94¶'>ÛÛ¹vêöcZ\ezmOõëðíÃ×îjm£9\84¾í\9e?þàwG50\9a\9dK{_?~óÕßim>¶µ\róFã-\9fZV}Íÿ\ fnóõåý÷ê7ìû\9eim¡\88þP)\14
++\85B¡PüTAÞ\14'\88èD\12þ;\eIÓë¹ïÁ©VÞ8\15\9bB¬¤·Ø \86´v..E_¤2ðx£ÅK&\8e\17Áxò»øïhm¶É9\97£'Ë\ fx\89\8e¡\0ø;e\97ðpN\96ä~\8e¹\ 4±>e±¸\16ð\f,01[\97sÂ8R0\ 6\f\ eÉàuÜ4ÞÜ Ã\0rc\96;n|ô\91`Å&1\9e<~WÓÞ1ì\80½åL\ 2ÛÛ\8e+÷.×@\84zN«±\ eIøW)\ es\r\18Al½Ï
++ uØkY±¾Ý\8bÁ3óßc`n;Þ\98¥ù\97,zåüM´ÓìÂ\98\19<j»u`
++½-\99\81\bLp\17\1fâ~õíëº\19\8b¥q¶\9boÀ\19ÒEC'I=ÃT;s\12[\8a\97\84ó\17¬åa±®kÆ¢\ 5¦ä'\9e\L\94ÞgXáÐ|\11\82ÐNXRùu.\ 1®¡\1fL\13Æx)pwI\8c\96à\12ã8æ3nÁ}x\96s\83!\89ËÏë]¼BJ\ 1ëW¤ª\0àùæ;\18á\v,\87\99Ìì\17\83£rò¶à\1f\9c\1fÄp`\86q`;p\19=×ÙäPÃ\a¸}±åp\88Ä\ 1\ 6÷y\ 6\98+ÿ¯P(\14
++\85B¡P(\14
++ÅÁ\801ÿÿÊço>jfëpð0)ÓÊ©n¼jIÍ«·Æûáà\94\9ec_²û°sëu\11\ß1otÿ\92×\97¼Þ¸i ÃÁÎÚ\ fyðÅ\7fÿ@\8b#0I\86]>=yÒ?øµ·>ÐÅ\17äá`Vígo]\80]ýýsOzÓ×y=\1aS\86\83Cª=KñYtßÛ¶Öü\7f+èç©\9ek=n÷9\8f×ëÙË\88cf?\vn[¿ÍËøÆÏ¾6wÔ6q×\9a\16\a`²4Nûwëøäÿè\97×Ou1 ¹qá\7fÛÏñ\82G¶ßÓb\12RlÏ]y\0M\81\a{þyrê¸--&\ 1µmblç\97Öl\eµ5;'{\8eùïn]ÿp\17çÐñÏ\vk\9fkðÙôñ3þ¹i\11Hgç\rµOÖt¸ã\17/xªÅ2øî¹Íu\ e\87ásé³Ç¾§µI7Þ8\ e`õϬx®k\93Öö`¿îW¼õ¼\16\1f!¶Ó7¸ö\0ñ\ 3ç÷\ÿ¶ëÖþË\9e\1a\ 6+Æ\9cý\8e\13\8el1\ 2¦ó˦>6dÝ·þʶ¶\9c\9a?·ö\9a\15ëv|üÝm¤\99ðdÏÙï\1d[ðZ¿WÖN½\7fK\17?`ZL·§Å\b|è\96ÖæL{n~}n\ 2\9f\95Ï-»¾µÅ®m¬\93±|jÃMmß\8bmso\9a\10Êõ+\14
++\85B¡Pì\8d\ foÜXBHÎD¼oâß\94\92!ç\9a3iwS\98lÝqÖÞ\a\17<^×I¯2¿»Ëùv\12£5\ 1oÏ\92ý\88§Ç[¶o\1cnqY\12\8e\fè\9c\99Ú9eS\9c\18ü\99m\90Ì`_G>·xcl\94`|ñ\11c\88TÎ×Û8\8a\ 5ÈÙ¸`\8c«öù\10ëØ&ÃBß\8f»?\ e\1c\86Øè%8S\12þ/ØJ|;\93\ 29ôÊEc\16x±f¬3^@\13þA¿xK\rÑò\9dÓ\15\9cª¨H\86)0j\80̲\14q¾À\ 2#ð@)Ñ\86\84\ ec`Ï0Ð\19)É&æ·£·Tp\97Ã\8cmNÁ\8cüdst¸±\86$À\11\ 5\8eÇ\e|H¥\90e\86U\ 1\8e\86å\ 5ëÀ¨\ 6\97\8aÁáÇ\16\9cq¼ Å\ 4\9f0¼É8c\19¦ý\17úGp¤;\10§Ï¥²$á]65F\9b¶`Ñr}O\86°Eð®=âäc\ eÙÁ\99i\7fq\19x÷\96Q\e½¿\ f-\ 1Î=\90ÓÏ®¤\18\vö\1d\9c*\89Úû9áN)0\9ebw9ĪI\10)`\809\ 5Ï,}Á¬%TM\ 3FY`gz¡3BÍÁO>ý¤òû\r\97\16ýcàèCÓ\8fëæÊ`\14\1c\81<ö\17¬Å\17¦\8bãPþ_¡P(\14
++\85B¡P(\14\8a\83\ 2cþÿâ¯\9dw÷ÌÖáàöÊ\a\9f\85ÏÑ[7\9fÕ8ß\98\87\83·÷\÷\92\7f\98÷dÇÍ\96á`¢r¡7áóàc\v^jùÙ)\f\a+ú~\8eÛºù´Êu\86\18\87\9d\ e?ùÑ\13wÏÿõz]X\17`i½\9f\ 4é;_ý¥\7f:\ 2\96×ÇyêÇïþô\ 5\95ÿ/Ñ\r\a×Ôë\7f\88Ïâ\97Oú\16¯§àÒppyåXoÄç\94'Þþoõzrèçä>ÏzÑ\13\8b_o×\ 5ö\ fëýkiç\8fo;µê\14Tý\82]Óâ\bÌÙõz2yÎÀô<ôyÿä¿Ôb\ 5¬k\9cÿX\83ÿ#\v66¾ÜÛ.Ïûü\9eÛÞøÌÆyMk u\9cø¹}M\84ß9jb[ÇÏ\8frÜk\9fKñÙ\14Îy¢ñì)·¶Ã\ eP+à\90¾Ï+þzòÑ\8egï8ê0wdËÄÔ®?i\9c¸íâ\16\96M㽿pSã¶%7Îÿò\ 3ä¿\1f¦yì
++\85B¡P(\14ÿ\aAî0\85ÈW>r¼v\94\17\9ek\ 6zj|i)\86<å\88\7f\8f$*³Ç[6uâkêq\93?÷\11o\951\8b-¼JòYbDçø/
++±gÊ\9f\8bà^OétC-xOι\8cÇÅÓ\99yò\8cç\94¡\82)Öø,ÞErä¥X¦Z{+\19=9ϱkR7m \96½ºÂ;½3&cì\16×K»\r3ë\93$ç|4É¡g²ú¸`Ä1߽ʸÛ\10Cà\15\8c`£8S\L\ 1'\16/\98\9cóÉ¢çD~\18îÁ°-ï\1e\962ªÀÕ\98\85\80\81\188\80?\9d°|;æMÉyk8\ 6©Zø&y\18é-&á*)\ f\9fY¦r»@>\9aYúð\95eJ>n*©
++\13 ¥Ô¾"ß´\99=î\ 3£\11:ö\9fyõh\83·\99\0\8f\ 1\Ï\ fûâ<\9cÁ)¦t\80ø\ 4~²3Ö
++¼@i\83\8eWo¹é®júcH²éð^ÇKc$\8fÞ\rIþ}h\aX\ 3\1f\97L\86ÜT½\7fx"R\7f+\91\a§\ 3Ä
++v ú¦\ fðxf\95û\82\ 3Q";\1e\ 5[\ fæc\9b2Ø\ 3\8bÂ\ 4y\9cýȨ\9b\92\ 3\97N¤8ì9.({bJ?ü\8d¡sð¦\84ì¤J5`UöÐýÏ%£ï\9ca\14\83\1a,k\1cØZi\0\8bà\13\ e;12\0ò\10\80p÷\19\98FJ\1e{½Î-ÃèÌA±!«¾\ 3£\86±Ñpf\8d8/Û\88G`\8d¡\1c\0\1c\rß\16¬1¾\ 6µZ\80dn\ flA|m°\88\99%\12\8a#Í\8f5\f)Sì 3\12\ 5_@\7\98\0\16+$V5 r\84q\14\84À\0ðG¯§ÀÈ\ 1Ç\85\9d¥ùÿ
++\85B¡P(\14
++\85B¡P\1c\fÐó¿B¡P(\14
++\85B¡P(\14zþW(\14
++\85B¡P(\14
++\85Bñÿ\ 1ãüÿ7üã\92OÎl\9d=\98Ûç\7f_»øéå-Ï?Q\17 Ï{_xïu«\9aö|HÃÁæþþ%»\8f8¿Õ»\17\19\ e6Õ|÷3ð¹qjñ\8fj>¿ðþ¦}O]ü£^_¾¬æó[æç_4wÔÏ\9eyþ\ f÷×OØý[UÏ?eg\86\83\8fÕþ\7f\81ã¾|Þ\13íºÇý+ú\9cø7<ûæ\87ªþ¿\988\1c\1cÖ×/Ø3\9f\7fn\7f}ÃÔ\1cßéûw:ýó«ÔÍ_i'w´¶"mVÿÜÆ©ËniÚÿζ\1cúq]\80ó¿ù\91w6\1d\80Qíù\97Çúþ\v×}§Ó\bðí¹\9bësÌ¡_\97Ïm\9aú>ÚV{þµ^7ÿ+wlØÙü_Rëók}\8d\ 4sëÚo6í\7fïÚs×ö}®ÙrÉ\vm}\8cíê ôu\ fîÞÒé\ e\14\9b\9a-_éý~ÉÔ\8e»Z[\8eM[`õÜ\91ï/}qûÇZ[ÓÜ\9c3¸²×q8í\9aÓk½\ 4g²mÏíìk\ 6\84C&\9eiµ"\82ks0u~gâó\9bö\82]-\9afË+½\9dën¼´j=8WlÓ\1dxª_ï³\16Nno\1a\b¶óÙ!½¯ÿãW&\1fkm!4Í\855õ¹ë¹\17¿páSM\1fÁtz\fo>tdçÙ÷L´9\84Ñxóûu\9f\98úùcÚ÷ùöÜ#ýºï]£`i\1doß5
++6õ¾^;µü\10Lëóøy£>×>zøW»6ß\9e;eZý\82\99Z\r\vz-\8a½µ\1avökô{³O\99jZ\r±\ 4ýqT(\14
++\85BñßDÍ\1fÇ»¨·9\18\8b7¥Òç\883±=û\ 1ê¬Û\8cW^[\82eJza\ 2»\19·ù\90\92Å+Uñ1u:ÿûÓ\8d÷,\97î\98\ 2ÞÙ\18r\18Õ\99·Ô×\9aVs¾Ö\89\8fÑ\16W\12õí\ 5\1dæ®\1f\e(¿\9fM)\14)\bMbÞ¸$x§\8f\19\7f\1aô|\96o¯ þxSÌÉS\fß;\97©_(Ï\8eG\99\ 1n\98çî\9a\rÔ=\88&e\8ehº<tt\83\8b!YˤzV\1a³LS·ÙøÀ\19\85\9a'ÎDyV\ 6p\89\8aøÞ0\1f<åBÉ\85Zm\9e\16EïX\89¾Óó\97V³Þ°(}1\12ƾ\8b,\81P(Èob¢\ 6\0\9d\18¨6\8fÕäÝ\ e]q%°XÞ0¹Üû\8cE¢ÑÌh\17)\1c-9X\8c\a)IO\v(tà\93¡0D\89\85\19ü¸L\8fPÈ °\9a=ü\9d³Àíè/`áHtïK\1cÛF\8fá\80\90ñ\8aÝÎ:ô\e\13ôk®=6\bm¬Õ\19\ 2Ü\18sI\12£ØB\85\ 6+\9eªý,sÀeÅfHâ±6E¨X\103\v,PË\82}W¡²}i\15DÎ'\ 5çR6Ý~\9bYs\0\vêJÝ\9bØ©.\15\9fXD\f&'\9c\aáAJÀÁÅ\82uÇöÅA\89\96&,¤§ðA.tK@\1f\91\8eÆÊ²\b\85P/\83;\a\ fÀ~J\ f\84\14([\10yh\b1Pg\0_8\16m0¬þ\90¥$¼Ý·µö¥æýS/BøUâ\13ÉÒ\7fÊÿ+\14
++\85B¡P(\14
++\85Bq0`Ìÿ\7fòÒßÿí\99³\a·ö\9câtþ\7fv§\vOâðúwl\Qùs\ef\r\a÷W.\91\鯫\96ü°éá{?ì´éÉ1\1e³êØ\97º¸\804\1cÜYï§.ý5Ë\8ex¨Ó\897ÃÁÍ?7º\7fOýÿ1GýÅo¹¯^¯úü\13ûÑÿ¿¡ç»÷Ôù_ÓÛó\81WO¬v\16ãd88¥×Â?á?Ù»Ö\18»ªëì[\11qÇc\ 3J\bH©\9b\18;\r~@ØïGxÈ¥&B\96cl°\8d\ 3cl\84\11.\1ec'ò\ f\ 4A\89\ 4
++\10»$U\89\94(V\8aT\ 4æQ\1e\85´´¤-©\88lµ®pÊ3à\16˸×\86`b
++ ¸@ÒoíuÎ\9eaf<ý\ 3\15í¬\ f\1f<sÖÙ{¯½ö>÷\9eãµÖ·^ÿø;å¼Õ¦ÛÙÚßÚaÎ\eß)üùÉQ\1d\847+\aþÍ_\9fófc\a×í<U®\1f]G`iõÛ\9f}Ùçß(ç\9d\89}\9d\15u^ÓîZžw¥,ûnçW_ñ¥½½?d\99ñ\\97~um7ð×+\9ef\19s\9aö5±\ fGãøþ\17Võ\9aX\86È~ä\9dým»\95¶\89;Ð1óx\9f¶9<uÝ^\8e;\88\8eýÖCq\19\ez¿ìgYòìG~ öù\973V±.Þ\ 4Ös~m·¾·\93ã\aBtìëwǶ{@ýñ%ÿƲlX\97\85ÕgoOmb\19¢2Üçâº\a×¾rÎï4µ)\14Ç\1d|§´{\10Çê'ÿÞ³,\ 4\9eûÕÕ\87¾~×\85wó^4M\1cÇQC¶>8w+Ël³\ eªÆ\98\8c\8es\98_õ\ù¹\8bØ\9eÄÛZd\ 3Å.ó&\8dU³a[\19\8fâbÎ\9a½ü5\8es°M\fÄîb3\8a\8dYö²ÝÆq\ eº\89ã8®Þ\97«z§p\8c\80q\96Û\9d;eH¶`s\13\1fÑØecÕst|\84ªq\1cËön:\9de>ñ^Z[÷Ä\93ß¼è\97Mý\88fÝ\87jY\8c®\1f±©Þ\7f×\9c¼\92c'¢jjY<Òß\8ewÁË_鲬Õóаº\13çÜϱ\fZñºo)º\9cHk8}\90c5²iÖèö\1aËðÜ\89\17qÜH¶\9eçwõÔV\17©I!\10\b\ 4\82\ f\v\1f\0\7fø¤1øõÉõk\8bßS¥lU´N\ao-ûuñT\91?d.{H\14\11ôGGDûC¾ø2_MUæmññ\17²õâ\7f´ÁV¿¼òºè\1e\ 29ÈS.Þãd\12ë\7fD\ eyC®{hÒø|\ 3&DLè\ 6æ+5ÜCGxìÕ\86\1cË97¾Ù\80Þ\13ÑÁ\aK\1eæ¬(`\0\96Ä_°*F\88x\88\81\11iXÌÉÚâªu¥\1c»±
++6ÉP\ 1\ f\10¸®úäÇ\88m ß\8a?=8öE\ab|Ç\7fmÍúaõ\12ª?ö\b\1cûØ*Aáù\10OÀ\89¸ÿcv\99Â1ñ«"¯8¦a\89ã\1f*`QM\82¶QçT\16\11ëïrÀ\v\ 5,\e4v\81Í\14q\8a÷\b\17\fU\0 '0úHÄ\f\9f3úK\96
++,@\87âaV\1a{ÒRq\ 2\\86ij,\13\9aQá\86\88\1fð\8cE\11\1cX<CcúÔÖ\987´C1\1dUæ\9e`äTÖå£ÈíÏë\81»\ e\8bå\9b}âRÑ%¥v\9fú\90\1c\85\eÇæ\9eS ·R°¶\89\ 3À\90\89¢»qóåTbErÄ\18¥¾C\8eJs\\ 2yñ]h÷bÙJô.\11ÚßñBBq\13Øs±µc âP\ es1X<ºË|Ñ (\86\ 2óÆÿ\94w\16\86À\e\14nqåK\18\85÷Úf*\1f\ 1kãc\ 1÷\90§°\13l\19|öP9\ e\9f(0\84¶¿¢Çå²9Åÿ/\10\b\ 4\ 2\81@ \10\b\ 4\ 2ÁDÀ\90ÿ\7fñ\8f~pÒHi·ó\õû\9dtåì·Ù7«m_çí\9ag=:\97ú@mó{}_ÚÇ~¶h½\18[ \10\b\ 4\ 2\81@ \10\b\ 4\82\ f\14%ÆAyC±¯\rß\85ůİ\90Z.\ 3â¼\10ÿ¿@ \10\b\ 4\ 2\81@ \10\b\ 4\13\ 1Cþÿu\vNÞ9RÚíl©9³O,\9aû\9bâË·Áw;óJ~îh¾ý\e*÷üÇ.ýtÉÏ\8fY©ngi½~λ\aÖ\95¼÷\1cS_gg9\7f\13\8e\95÷,y¦Ém×\1cGðã\9a\ 3<Ø;\859õ)-\87eE¯Kp¼õð\15\aÛ|ræA¿·ÈÆÎ'ç<fâð\7fè\84Ë÷p^¸mxÐo¯:\8eÎï\9eVd\94KÿÎ]k\e\1e{ë\9a|ù:ç\a']ñ$ÇB´\î·×|ëw'¯\7f\91eÙq>ò\8e:¿\81Þ\81;9§ºÍU~¬\8e÷\83\7fXÓpÎûÈz.ùò_ý«Á§\9b\lŲ-¥ÝØ\õ\9bÆáª_SóÉWöν¯ÉáN¬Ë#Ãr±GòÑsN5åÒ\7fñÙçOãX\ fÕä~¯í\16õ¶õ³,Eîó\94jëEû?QÖÖ\12\ei\91\rÖ9,»eá+,\8b%÷K \10\b\ 4\ 2\81@ ø¿\86\96g?ú¤K©\80èuÃ\13\90\93
++\94k\9e\88`ÞYãmÃ\7fà\9cÉcä\9dã*¢u ò\0\ 1/\a*\13\7fD¤¬oå\f±ó\13\99¼×\8aj\19(£\1c:&îû\14µWÞ[\15\892Á©\80\91\947É&´\89\89\b\ f\1cóW¨\1c\98w?§Âå r$\ 2\0â3p\14Ð}\84º\ 5Vgº\88(õ\9dU¶Î9\13½\ 5zÏ!Ó\9b\1c×*ÜôÆêqj.\1c©\9e\ 4ÛF§ú3M¡¤Ðë\92ïî (Qþ\9b\18¨è\98§ê\ 5Îk\171É\1cqM!\1dðD\1f`¢'\9d¦Ú\111¢\ 3âù'v\ e¯L©ø\90¬
++^%â§\80µ(G?$È0\bu¤\88P"9\8cLó'Ò\ 2zµ\8a&T\1e\ fKÙýx÷3X`üqº\14À0
++Ã\10áE*Éÿ\9a\862Ù@Ñ`\88\1aÄ&Z>è\ eÓaw\90Ý2^\ 4±m|θ$e¼k\12ëFÆ\12ãmU»¢·£\9e\83%2Ñ8@{Gtd\89êOäR&À ÿ¿@ \10\b\ 4\ 2\81@ \10\b\ 4\13\ 5ÃüÿÛÿù\82\91Ò£;¯V®ô-ǹóØ\17K<ÿ\ 3åüF\1cß>ø\89Ç\v\ f\7fr©¯óTñÝ\12±÷å{ÖßÕÔ\9eoøè÷T¾öÑÜêSJ\7fó&\8dÅ\91þê8¾÷§J;\8aO8<ýÂý\r\7fzÃ+¿³r\14\8cö½/\1c\87Ï\9cã\ eÆæ,\7f³Ê\96Î8ÿ¥\86_¼ðD
++\ 4\ 2\81@ \10\b\ 4\ 2\81àÃÁ8u$¢%G·µ#¹ýÛx\ 6*û\14©¼\84²T®"\9bè>\90z\1d#9þ5Ô\88ä{7\86¢,t\bT|A)j\9et J\1e
++CFå\82WÎYe0\12:È9R¯T¤Ãk*\83@Lþ\8a
++\1chª\ eá¼Ñ1FB\bd\ 2jVâ3Ú8\11\\18³öTº#¹Hú\19®s ).BÅ`BÎ\14¿-þ\7f\81@ \10\b\ 4\ 2\81@ \10\b&\ 2\86üÿ×Ï>ñ\9d\91Ò£;ûj=ô\e?·aqSß~R·3¯Æ\ 5|ö'ß<\9fsó]èvvW\9fûõ\v>µ½\89\17\88ÝΡ\9a³>yÉg~RÎG¥»\9d\ 3%\7füa\1c³^ßõV\89#P\11ý¼;¥í\7fÆ?m~¡\9c÷.u;\83Õß¿ãµ\19\87é|ÊAu;;j-ñ÷ó\v¬¨z^ö\82½\8fù\ 5´iòÓË\18cs\ f\1c_k\9a_ÚÛûÃFæ¹þøÖ\9a×~U¯Ï\16\19ý»J\91ÝZóá/Û½ü¶"3J3\17Àî¢#]px꺽Ef£ãvûjnþ`oÎýlOm\99{à±þÖ¦êö\8b~ÖÄT4uà»e\ ecó ÜPæ¾\ 2ÇÖo-oy\10"Ïo[åuXqÿ\95¿àX\f®wÙò\ 4Ðx\8fÞ?ð$Ët`\9b®ó[¿ë»Yf2ÏáÐ\94Öf\97\1f8æF\96\85ÆÖ÷\16\9bý)\8ee¯Î½\91c8²e]\8e«s\1f]Ë~é°:÷\vÏjkÒ³ìÕþV6Ð{\9cÛ9×Ìýku~O=¼â¥÷ÇwÜVãP.Þ÷3\98\a¡åkØUuYÙ\e¼\9by\10Tæñ\1e\9bڮߦG\97ÿ\aËrâ>§\17Ù\998®\9bº\8ckÒG\9fx~\87Æ©sÿTíst½ú£¦´º,êí¸§Ü3J\95ø\15\81@ \10\b\ 4\13\17ÅÇhJÍù±r®GÖ-çëUÊVEëtðv(7ûÃÎ%ÿ¨äf\eJ\86¦\8a÷Å\1f¬h\98\90\8dKÙ\ fÙhx=w\8bQ]ðxâÖ¶dX{ôOåéaXr\ 1\93\1d1Mãt\8a Jé¨\r\86\85\8d'\1d±Î;Ô\fÅ_\9b=Ù\18³Ò\94ô\9f³N\rW»EçNQ\1ayjÛøXrÄs0\81XÂ\94ÏÍy\9d\8dÑÌSÖ®±¡w\1c\98[\r;\97\9dM´¬Xg¬*\f\19,V6aY££=BÞp\17ñ´\8b%K\98\v\15¢O\ 1oK\94Ø\1fðC\8c\94\99nÉù¬´Ë\9a\18æ3ôÉXîà\94¦|tC\8b\ 53er¤£ûâ|Æ8´Ù\92Ç\1c\82\82\1d\ 3e§g,\8bKI\97ZöÉ©LJ`IC wz´\95'\ 1J)\95\8b\7f\9d^Ï`Zí±¹Ð\1e»\15Ë\8feÏ´ïð\1e\18п\83Å)·^Q·\14{\9ea´\8c}c¼ó\11\16\fxó\84Zx¥IÄ)@.y,\ 3v\eLn²s\91¢
++(M\1f+â0á\80\9fMÊè\a£c¯`ÛâÕ\ 5¯(Ì\8dà1¤Bï\18m\98½¡4v\8eÇû\88±¹Y\eJÕ·\94þ\ f\89%\1d3ó;\10¥\83G\a\8a\88\10Ȱ\89´ÅH\ 1ö±\858Àå\8cÍ\92\93\86V¸)LÀÛ\1aE(à^\82yq\8fZ¼¦xZCÚÔX@S8\ax\9f\e\\fõbÙÏ\1e+EÆÃn3âÿ\17\b\ 4\ 2\81@ \10\b\ 4\ 2\81`"`Èÿ¿à\8eý3GJ\8fnòùÉ\11yˬ?ø£Âç\9f̤n\93\aÿm\1c;\9e\99ö\9fìÓ\f®ÛYSÎ\8fä\ 5èvî-~Üóq\9côÞ¢ùtÞk\13»\9d-5\ f\7fõ§½^Î\eª#0Pý·³\9e\9fû^©/\10rêë<0\8eÏþ\81þvìå3W²L+;ԫK;òiÿÙÌKþ\95e6²ozkiG>íµ?¿&7þ|ŲCãøúw\14\1d©\96À\12=¸\8fe©ñ\85oª~ݯLÛ°\9f}ý:±\8fù{Õ¯»¡·y&ËL`ßû\r¥Ý<\1cW\9fÞøÞSì\7fNãÄ\bl©ó\9bvß\8a'[\19÷¹µÚø\91\87®:À2þ·ª¾Î7ªÏ~ÃK\e\8e-2\1f2Ûsk\91\8d]\ fá\8cZcáÙ¿\1d|\81ýùÞs\9fkj»/¿v:ûìµ7\1c;qÓ0\7fþH_?óCP\9f\17<²þg,ó\9aÛÝ:e¨Ý\9a\19\1c\a`2Ûsa\8dW\18]\7faziw6\8e¥\a\aîà8\0¥ymo¨º\fô®<\99ã\0¬æù-}^sæ:®±àcÃ\ 1ñø°\18\81ÙÜ.Z˲ÕÃj%\9c÷ç\+Á\94Ú\f\ 2\81@ \10\b\ 4ÿ\13\88/Ýé¬CVÖj\1d[®t¥È\11íñ\14ãñhhUÀ\ 3\94Sä\11t\94¯\1c£vÁ9rÊj\17µÏ\89|ÙN\19«\14\1eE¬÷D\90E\ eÛâ&×ä,Ä)òà\17Ww
++>X\85n³/9ÓäÏ\8e\14W\19u4äô¶Åw\9a\ 2\8dì1\1e\9e¾mÄ%¸Î\1a\97\rùÅ3D¾\9cg\1fu6\16\82@\1e}í\9asÆ+òM&r(ã¤*5ËóøÝÇâ}ÿ¨Ä\11\948\ 1eÐ\96\fìØÏÚòäÛTü×è½ØØéH\1eW§bãï\85>DÒî\9b\18\81\94a?rÃc¤\1c¢\r\14Áá\13:µ´0A'M½\98LTcP$Z\ 3ea7ØYµ~òìÈ\8d\ ec(ØÀÚ\80\15¡Lq§a=\15ÊÒc=\12µ±
++í)c\9eâ\12Ð\17¦¬sÆ ÖÓ43\1aÂ\90\14\19 È%o\ 3F³°D\82%K\1c\b¬\r\9bb³hzêÇ\9eËΣ§HiõZa£)lªIÃbNþwóà\ 3yÑ¡`\89\8b1\98¼\rÆa{´1\ 5ZÅ\90°±é^È\916±¦§ô ±|äÏOXÔ\ 4\vá:ì.L\98B¸\1d\94ȹh\81í\83i\86\1c<¦\85µ¦Û\ 67\ 5m>\1d\\88TÀ\ 1\93Ân¢$ü¤È×o19\9b3Ý\98\98\9fÇ\88\18 ãf\18¾ß1\12¬©\86îuºÉ\92ÊnR\13Ïc0\18½¿Àöè\ f3\88 7ªÏ\98¾Ë\14U`ÊÍ\10I\1d|pàÃÃb¢)Ó\ eô%8\b3¥\b\ 2|XdÉÿ\17\b\ 4\ 2\81@ \10\b\ 4\ 2\81`b`Èÿ¿üW\8b\8e\e)í6ù×wã\98ñë¹ç6ùó®åÏ'Nþëþn\909òMHÂ\83/\10\b\ 4\ 2\81@ \10\b\ 4\82ÿï \9cÿ\90,ó;¨ t¢P\93è|¢\18\9el\8dRÞ¸\98½ Þ:í¢\8f%ìÁ$\17\9cQÎâ2m\93¦ð\8a\982U\18\88\1e¯ÔF\ 5\KL\11¦\90\15P \86)l\14ÚG\9d\93\8b6\12=\aQ>ÄàU¡ü§Ë\8c§
++\0ÞÆ`\9cÓ^\87h)F\9fâs\88û Xñÿ\v\ 4\ 2\81@ \10\b\ 4\ 2\81@0\11 ïÿ\ 2\81@ \10\b\ 4\ 2\81@ \10L\ 4\fÅÿÿî¯\9eX?RÚí\1c_ëù\rnÿäO\v\ f\9f¶¹ÛÙXÎß\82cáóÓÿ\8bùù\88Ïo^½þc\97~ú\1f\v_`VªÛÙWxÑNÄ1ã\9cã\7f[êó)\8dó{*_Ú\9c7ÔÊr>¨Ø×\996NݾÕu\8cÑ\wç\1eÛ\8eóï\ f-y\85eÁ37ÛÚÚÎ\9eÚÔÑ\8bªá¥Sµ>áµ'5¼{Ñ6|oï\16\1d?\89ãº\a/y©ûæeó\b\ 4\ 2\81@ \10\b\ 4\ 2ÁG\ 6µö¡ñT.Ï\94\82\8aôKÐ\»O\19«£OT©/»HÔ\94ÌM\19S8B\r?\1d,1\1d¢?\17K=I\83.J\8d½\90½vTyÏeåÐkæ1\1aNK\13\©ÓI\f\88Zk\93\9d¡J\8bD$h\8cvÎjª³\19\93\ e\8eÊCZïHµl\88RS\17\ 6H KÎ\19b\ 4¥â\81ZS\1a\0tõ&ç\0I*}A\8dDÕ\15³\85\1aQe*;\18uV\85C1hâ²ô\18À\88ÿ_ \10\b\ 4\ 2\81@ \10\b\ 4\82\89\0yÿ\17\b\ 4\ 2\81@ \10\b\ 4\ 2\81`"`(þÿ»ñªQÿ\16ÐíÜÔO\7fS\1cþ¬ís/äúð:v;»jMù\93®\9cýv9\1f´ívn\9dÚ^?÷§ÛÏ£óTJ´ÛQ}¥?\1c×/øÔörÞ8ôÃuÖOÀñÄ¢¹¿)çmðÝN*×\7f\19Ç\9c\9dÛ.(ç\9dÇùÅÔŤ\87I\9f×w½Eç\9d\8a¡Û\996µÕgöáßÿu9¯IÏE\7f\8aÝ\7fù\8d\19o\94ó\96®ßSõßpíi¯Óyo¬év¶\94zñ£ó\1a6V=g=?÷=>\9fS·³ð\by\ró«>7\7f}Î\9bå¼v®Û9ã\98öüÙ\97}¾è\93\9d\89m=\85\8d8\96Ï\ùL±'\15Z\98Dù\a³\8a-¨ÖÂ÷¿°ªÇ²@¥U!\9bVd\94?±¡·yf\91Y\138\17bG\7f«óÅqõË,óM\9fo\16\19å;¼sæ\92çY\16\1cçW,.û`3\8e+~qó_ðÚ*¢\8b\84ì¦2/j|ù\9eõw±Ìfnwh\9c\1c\8aï\15=¿\8bã¡\13.ßÓÈ\9a>Sé\93\f\7féÁ¹[\8b,Ù&\9fc~3ñÎ]k¹Î\84²\8eeGõµó;<ýÂýE¦SEö\±ó \8eUûþð(\969Ź\1e\ f\97¹\7f\9cö×k§\9fÅ2ßä\81l+ºü \8eÅO\9fß´Ë\8dͦ×=üÕ{Ö=Ë5/´JE¶±¿]\87U½S\1ee\99³¬Ë)S\87d\v6³,©Pdj\98l!ëb}âvçNnÇ{wòú\17Y\96\1dë2¿ìÓ³q,=8pG\91Q]Ð"»µî\89\81Þ\81;Yf=·ÛÔßÚzžS?Sd^YÖÅM\1djwÌL\96\19ÃûìÇ5\1fçâg\7f¤Y\16\ 3¯í\9acÚuøí\94å¼F>5z\ eÖ>Wöþ\85û\8c¦ÙgG\959\9c\89㺩Ëö°Ì'\1eïk¥Ï\ 1\1cKöÏ¿±È\12\14e\9bMnÇ[:ã|Îǡ¸¼?§´ã-êí¸\87?\7fT£Ë\9eºî_Úû7÷7²Àºì\9eÜ®û¢Ý\8fÞÙÊx¼oô·ëðóÛ®y\91eÖK\13\81àý(±\96\8e
++\1fç\14\88Þ\18\1fò1XåL²¥ÀuÀ¹H\1fà&PôcJ1y£\
++ø²\8b\1a_ýø!Fc²¡²à\11ß\80Y\9b¨|Ö9PIó\80\ f9ª.n¨\987>{sÔ íMÌ \9fý¸ÑuðÉk|4)«©7C\85·\93KI{g©@¶Ê¤\ 4>ðñ½\8e¯ÃR\13Z{\1f3\95jÖ\85<\19\7f\9b¡ØÑà\1dÅwf(S~Çã Õú¶\9eÊTã;\f\8a@©`µkÊT[\1f¸ÃDg\8b
++Þ;o\ 2E Zôc\8cÏ\19×Z*q¨Þ:&KZê¦î3\8f\83\8fIo)L4\ 5üq\1aͨ³à¨\8csL$ö\9aÊ\96ÃZ&¡ïl¨8ºVÐ\82>+é;&SÕpçaZíÉn95Ñ Ð æ\83©\©\81î¨g<a\19Z8M\ 5¤KØiÂU\ 66Ö1\94ïU\9a·¦"ß\8eVQã\8b#\9bèxÝ).µÔ2\87
++Xt*O\8få %\82Ú\11\e\0ý(o¼\8dø®\8dTA\9bÊ\89;\1aGá*üLeнK¥â9þ8,\88Ò\89Ê|cí°\e2õ rÖè\9aæ\9a³µ\96j^Ó×0´U\14{\8bݧi\82E'OuÀ)Æ\17u©Ô\8e\87#l\b\18\QÈ/¾ö\ 3\15BÇ´\8d£uÂ6\8d\14+Ks6\14o\8bA-ö0\95¶\ f1ºHüÜ9\95g%h\ 1ëÐÎÍ\1cÍ\9b°ß,]]\b¿©à½\851a\ 6Ì+¤0lmã\7f³wÁzUå9_g\98|\aN.¶ñN\11B$\81\84°Ö^wA\8cN(\91"·F\b ±D \93\ 3\ 1ÊX\ 6µvZ¦¢EÊtt&´2\85\1fA\91À4\16\ 4!\94¡EÛL\8d\12ä~\91Ë1Á\14\87\86V\18\ fµÏ³ÖÚë;9ßwòËt"Yï°C²×·×^\97wí½ßõ<ïû:f\83\17MÌO\8e!\88üa\13Dì\18ó\89§ß6P\1c\12z¡\92ñ&\8di×\18\1a\81ê\99Ù^꤫\12ë\ 1
++\ 45aHq\12}EªÃ`¦\98Ý\1e\9f¥PÈ\14§\1c¢\981Ýa\ 1Æ9ŪµFƨâÔ
++è+f\8d!Ç©A^aY¡ãÐ8¬W\12\8f\9dÄpa\ 2rþzþ\e:¡µ\93\1c)ô\ek\bÓ`\99¾\9céÕ± 0\86L¦Î\81DÓQ/´\11úËóe\ö+ntä\81{\f<Öé¸uÙ\1eX\ 5h@ð>r¼Ñ\8eÆj\93ç\rÓ\ 5µðL\ 3o\1dT\175\94ë±Ú\1c\9f
++ÌÈ\1e¨\ 5.\959ÅŦT;ïè2~\ 3\85Íz£â|C31!\18\1c¬ô\18Ï=ýÝâ9À¥*\18"Þ\92\8e\9e9Ïi±|0òé`±: ¶|N¡\9b\ 2K\90Ï\\81õ\81\9f\18Î\\13Ûŧ¯a\86x,o̲¶X\a\1e\8f\88\0íÆºÀ\97Vh\9f\ 5x6\1aV6N/\aòìÑ\0.`+\18ø\1e/\a(t\1eßÀiÓ\ 1\1a\8bª<çÏ\8b\80Ud¬Ã:\r\18^>\94Ñ<>\fÐu,9|\975
++k\16O.<ÊÑ\18\9e¢Ê;,I\85©ÆK#®§\94í\1e\17zô\12½g\a¡X\98a<f\18_\1fú§ø(Ä«\ 1za0VxNZê\r\1e\ 4"$Õõì\ 4V1&\8dwÀ(\90â\ f»Fr \ 6Íõ\83\99´qÞ°È «|\1f`*5µ\1f½\13\1c{,"\ïÐht\97\83\8bµbð4fø\7f\ 6ï\17\1c3\8e¦Ò|Éé¨#(Àë1ö/.QÏw\85 Am¢ÞQ=\98\ 5Àñ\15\99ç\80\7fE»`èå\7fcÅÁbÇ\1cNé÷_\18oÿ/ýúûÿxâû|jg¬Øf×ÍûðEÑ\9f\1f_èÝβò]¿p÷å\1fN6i\ 3û|l\92ý\ 21î÷\87I6^\bÝlsð÷\v¿?ã©l\8fÀ®N6E¿ý¿aF[ϱ»?\1d}ø±Àe·sÞ´ÁvûáÃ\83íöd\87Ó\168úWGĸ\ 3Î\ 5Øç÷O\1fd·\ fuºÅÆyü¶\v~\1eÛ\8fùJöÁÖ^<\829+\9eM¶´TÉ®ØUö\ 1.;týOs\99O6㮲\aq×?^²#Å*ð6Ù~~¸SÜ\9cc\15X,ÇXvÃ\8cvOãé;/z1\95y\93l¸%ÓZ\e\|yÕÓ©\f\8f\82X\96b3,ÃqÃ\97ÎnËò>Âá%\ eÃÅ£\8bU²Ïm¶m\97ĶÜ\81cõÃ÷\99\fÓugÄëfáX÷ÒÜ\13SYȶû¢Ò\87{6åý\0<ÂÓ¸Ì)1\15.\7fÏ\ 5io"´¶ô\82bk~jûå\1fHe:\8fÙØ\8cÉmé9Ó&·mÇ\86Ûùþ\83\9d\97u\93Ù^·m/¶ææ\12Oâm\87\8f$\e\15ï\8cÔ¿í3Z\9dذeñÎd\17j\97Ú9s¸\9dÛß\1dúX\9c#¼\8cT²\97gNkÛrÚO\7f禴\17&â^A\95*UªT©R¥Ê>Þ«\e´ç ¸G\ 3KÅgÛ~2{UÂ\brÑ\9e\80\15\18m÷Æ
++\9aG¨\8cv9¾¦a*\1aX\81\9eIθ\vÆÍ
++\98°E\14\93\9eYf/\83Í\19$ä`aõÃ.·4HaZÅ-<\aë\93Ö9\f\1an"ÀtäÖ\19êó*î·\18Í\1d6Ø2V\bÅ\8d\ 3ü\8c\9b\89Ö¸ Ü\88\83=Ì=\ 6¶Òã\9b\95÷ä¶R¶\85д@ã\8aÛ\860½\93\r\17\1c\7f\8cûjÍ\ f¶ û5ü7,4\98p°]a9¶{\ 3´U\eت¨,øýt?£\81YÏÍ>ÓÎmÃý1\fu´Å-íYØ£\8d\80E©\ 2\93¹·ûU\82\9bBVÁøt0ám;~\8dÓ4^\15oâ]ú=Z\86rÌ\12çÎZ+öñ^éĽ\97}º§À\1dFg5÷ulkocʹ]"\18\b\80\9bÕ\18\b´¹ÑÖ{©â&®\ e!\18î\1aâj\13wb¸I"=F\r\ 6\83\17ZYt\9b;ª\8eíÀ¯Ê¸\ac9ÈÆÄ\9dÊ\88áE½Â 5q\93 ÁbÁÐ8\93Ú\12â^"\14Jr\83\cm¡\15\ 1\8b-ë6·$0\1a¹\9eÊÿ¯R¥J\95*UªT©R¥J\95*U\ e\béáÿ\7fûä?¬\9cXÚÍøõ7pÌþ\9fùKr\1c~ÝÍ\9cfþqäYsÿ+ãù¶Û9¡àüÇí¾ï¤\8c\89\86nçO'áÕ¯\9d$_À\85s{ÐKïúw\9e÷A\98nænß\8ecøãoû\8f\88Ï\e/QOÁw\8f\19Û±.\9e\ fÎ\ fu\1e+ü\82þ<\ 2óJ[/\19ýÁÜÄaP:á¾Kg´õýáÎ+2¯^dþø\9aÂ1\1e\19=fS\9b\7f aÉ\8b\v¦\7fÖ\86\8b^HeMHun(ü㵯¼ãÞ\9c\9b@%\1c=åS¸\1eÇ\1dÇ\9fû£Ä\9bÐ6áý\9f-÷»xtë\9d ·w\99ç¾(öa0¯þú2\86+\8fZ\9ex Ü_\9cÒà \89]?¹iYâÎ{\999\ 4\e"\1e~\v\8e3\9e¹ï\8eTæb\9dUªT©R¥J\95*U~½\12±f-¢?\01ÔD@ׯgüÎÙ&ò~5y\94.\92¼ñÅÚX#\e\13\btâ; Þ\ 5gM£\ 4!g\12ñ¥×¦Ñ.$\16¾ô\11\87tA5Æ
++%\bsz¯ *
++º\134Ê:\12'é@ÃÖxz9\bÒÑ\8d\94¤.\93/Ý\18bäJ)T£$̨½3¬)\18\89\96G_\v#\84ÊX¦\92\81 :IÙZ µßrþ\89Y\13\7f\ e°\13ð)MD¸\87\83\eT\8aQ\8a¾\86û¹\9fÎàØõÂ
++Úih\17\94*º©¨F\88¨\1cè4éùÚ\19:nÑ\89\ 4öG#´
++ôì¦ß\8bjHê'A\ 2ãàØCg\ 2\9dD\9cƼ\86\80ßD\ f\12iÈìÐN9úÞÐÜrähе\8a?k\f=\8c\82ªj\8c\8d\8c~\f¸\15\93ª\91¥¡2\9f\ 2C\1a8\96tÎÅ4ã×Î+Eç/\159ñ,¤;\83§×\17\19\ 28\8bÖÈÆE\7f\97`cÅtÂ\89³¨ÑLüXpdé%\ 6\8d C\83\84\1axNº\8e^gÑ\9b¡ ôYÓ:à\8eøA¤¨\90¦ß°á\98\b\12\16`¸9Ó\8e«àÊT¡ÅÕq Ç\v*Öóu(y\ 2´Wh+\86\ 1\13o<\17¯Áz\8b:c\85q\18\ 4k8è\9e+\17\93\ 1³LÒ\13\84.¼\18«@\ e\ 4ݧHýÇ0\18úÑ[2\ e \ 1*úI\99¸ÂÐA,]ÓDN\ 3&TÐ\1f\8bî\1a\86\8cð@²J¨ø\7f\95*UªT©R¥J\95*UªT©r H\ fÿßyÃ\89ë'\96v;»\8a?ü\9eqòzñðÖ\9esL:o\94ëæøpý~õ;âùE8æ=ðÞ\11Ï\97ÁuÇÅF;f÷õ\8fÄóÚàü\8bãÎ\8bXO°Â\ru\ e\8f磯ý-ç'\9fr!²?¶(Xÿ'·?³%ùè[\93°þ\14\ f\8eek~xÙÑ\19ÏÏqÖ6îÅ/~^¼\8e|\83ãýò§²ï{\93®K1\10\ 6û°\ f\97¶,ûá\8aù)\8e\9c\94\13y\aý±ân\8ce\83ãºÝ0.>Ûĸnc%\ ea¿\9fú¬Ø¿Á±Í\16W_ô*UªT©R¥J\95*\a¤¤8\880&\84\14Ö:׿\82wJ\9aqqÿ\1a\86'eà\0-S\1c¯Éb\ 6Lâ3O\f^Ò\a\9e|\84 \19-`R_ú_glE\94¡}Áz\86zlÈ|pÖ ß\ 4\11c,èà\18\9e®á=<Ì\ 3i\82\16Ê+\13£*Ä\98\84l®ACÐ\b¯\19\99\8eÑí\9cTÆ«\10\ 3·¢íÚi«\19Y\13V\1cì+ü\8e12\15Î\90e¡¼48©$úN&\86n¼õ\fÃ\1aÈø`\ 4P\8dsÂ2è%\ 6\14}6R\ 4\85¡\14Ò\13ïVÚ0î\1ecY2\12¡pÊ2¦(Z©\82¦Ç>cßi+#/C£M΢uƶñ4'ÄÂ\9bÌ\8f~\7f\8c\eºOâ\fTü¿J\95*UªT©R¥J\95*UªTyëKµÿ«T©R¥J\95*UªT©R¥J\95\ 3Azüÿgv½ûü\89¥Ss\=rί\9eÿüi)§\9aÅùKã¾\ 1ùí×ÎÔ§'Þ¸\9eÒí\8cÅóýq\ 1uÉY·ðÍ\85oæ¼êºÛY]r\9c\9fºèÝ\ f¥<iMÓí¼~p{ß\ 5»¿úÉè_à\rý\ eb=\ 3òü\95x}\v_» æ³gô\87nç]%\7füó+Þ·;ù#8Üwx\12¿\83µ¥={Æ\1düÊ!m¿>rÁÂX\ f\ 3J´y\ 4ûã\11Î\9cÄ\7f¡\17ï°ß\7fáÊ8Ö×àXùÍ3\7f\9cÊb*bÆù;¸íÇwî\>\9aʬMñú\16\15_\83µ\8f_\15R\1cC+\92ÏÀ¬â§Ñ\9f·ðæ\92³~ýèú»S\99α
++ÇJ\7fûó\16n\8fu\9e\85ã\92\97\e\91Êl\93rÛ}·ä\1füå\aÏ|"\97å|ï#{\89\9bxW¼ß\87p\9cýówæ²\90â-¾~Hïº\ 57å\98\8aÙ_bI\99¯ûn>\7f[.˾\r[\8b¯H\7f\ eÅ\rñºU8~±ùÂÿlc*¦þug´}øÌ\119o¡S"õo^ñ#¹xÛ9ßHúÝ\84TöÙCÚ9ºâöUi\8e¼ó©\ fSJ[úc1&\1f\e^÷ÆQyn\83ÒiÞOÝK.Ä¥¥ÎÏÎX÷㼦|ºn$\96\9d\8ec÷-«w$\1f\13©SßW\975ñι\17Æû5ªQ©\9d\97\96\9c\8d¿úàHªSéÜ\963ÊÚ~ø/\96ÿ<ù\9f¸¬Kñït ºü¦u©\8cI\9ccÙk%×f\7fîÅnY'ËGOÚ\94ãPæ8\9bW\97gÌòGÞyw*Ó*û×Äv\ eÎÙ¸ ø´|ìùïljý]\92\ en,z½åk¿ÿ\93=}aÎ+1MïýÒ);rìR\9bÚâËúÛòþO\8f¦çT\egóêRç\9fL=5\97\19¯ëË¥J\95*oAùÔúõ\86,ZæAÇ32rfñnµ\91',\9c\94^µyË\9b\80÷ÿ¸ØuZ\92á,ð/\eB˱6Ú\9b\18\81Ë:Ñru-\89×\96±å¬Áë7x¡bÚmϸp$ç\92\8dË jø£ÁsÚ3Ô\9dõN\1a\11óz» ¥Æ£\1d73\8dW\1e×\90\85\8b7ë¤ñÜ\18&\8ea\9eM\bÞ\ 4\ 6\8bó¨\85D^ÉÀg\12oWÁ\94ßR)\1d\98\90,æLG»\1a¼"\19D\8e Ö\1c)Ï\9e¿h´`8;ç\98·]+ÜÚyôZ\19&\1eO|s£Sν\10£¤©\9c³{b^õÄßv\91LU;>
++wbD44\80\91ý\ 4 ¾Þb$É6o\18(\8féÔP±\10Î\18Ǽë\91"î]á²OÈ\a·/s§\951ç·T̽§\18\ 5ÎÄ\84ìÆã{\87ÔiæfÇw²$¹Ü3E\9cÆ\1cÈà$)ëLUÇ\bs\8dc\052©\83S\8eÉÝcl<|O\19ÁÈo\rûj\8dðÌ(\87Ù\8fÉÔñuÀôï¬H4Þ\aÏTðãâ-N\19߯Irá¡ß"Æ\96\13Rx\99b2\ 6&Y³\8c@Èdñi\1c¡\10FDÎ6Cú\85àÚ|yZ\92'\8f\89QÔ £\85Ã`3ü¡ò¸\86Aæ|Cb¶²1\98\9e\97LbèhA9ª\19\93'òO+Tä©Ã\94¡jZë¼wãr2\1am¡c\8as\10#öYfÜ£·\80b\18½8d°RBL-\8f\8fB\8c\8a\10\81)ú,[\80»C\v \19P\a,»FæuLJ¾Kµ¶¾\f¿aq(Ñp1YÞG\86\98D-x\18`}s\f¥k\92¾2÷ \11\96«\9eN\1cÌq(©oP/\ 6"\94|"åù\1d\90\1f\10\1aíÇû\91ìWñ.+þ_¥J\95*UªT©R¥J\95*Uª\1c\bÒÃÿ\1f:ùèg'\96v;W\16üqÞCóÏIyé¤ëf¬z\0Î_°Ú\85»\ f[\93Ï\87ngNÉE÷ç§¼ç¡Ì\17@=KâùͬÿÕm¿ày-\1cêY:½gÁn\1d±[m\84êvVÇóÄ\9e\8fxó´Å\91\17 \89Ã?5Ôûýx¾À\83\11Óëç\vÜ?ÔökÁ¿\1e\14ñJë\85îfÜ\9b\9d;öÕßþeÄÿ\95lZ\\9bøßß|àüÑ\8c±ç\18\81³â\1e
++sð\9d)G^Le>cÂO\95~¬\1f½8a×ÜH\8ee;b\e\ 6có\9bÇ]7\11\9bï\16\8cöÐ9+\9eÍØ¼Ju^\eçk\11\8e+\8fÏØµÒ"aå×\f·}[ÿÂú\19i.mH}\98\19Ë\ 6ãá\8bJ\9cçï¼(õÏú\9c+pJì;±rñåUmìÄ&ñ\19¶Æ²Áq\15\9f\9bÞ\8eY\7fÞB_æ`íË'ýV*3\19/^V¸\ ek\9e¸g8\95ùÌ\83Ø\18ËfáX÷ÒÜ\13SYÈÜ\8a\a\vOà\9eMy\¸w\99Ú9½íãw\8f<\19±daL\1a³]\85Wrî+Ç\9f\980vÓ$LxAÑé\15×{4aì^¦>$\1c}0ƾuF;·ç\8f®\99\9dËB\1aëç\86Ú:ûñ÷¯\14¼\7fìà\8b\9fMe!cú\8b˺ë\8f\rùØP¯ìÁ\14oRë<·W\17¾Æåÿ4òHÆô3\8e¾½pvVn9/õA·ý[V8\v\7fçצ2c\êß]\85#±âÑoËTælZ\ f7\17¼\7fåèÑs\13\17@©T¶±¬\87þ\9c\943\v\1fhùèé7¥²&·ó\86q\1c\82ÓîÉ<\ 1\91Ç,Îà \\96C\9d[\ fnï·töY/¤\98\99J&}ÙVæè´Ñï}3ó\ 4òXß8WvÉ_¥²\90y:Û\87ze\8bgg>Sæk\8c\94uôñëN}9=\ 3\9d¬±6«T©²7ÙK^2ü\ 5o9fî
++\ 5\7f\9c2\bo\9d\ 4Ó$¦Ë/\12ÇHdù\1aÃ\10a^;)\85±\8d"\ eç\ 4¡;©\19\1c\rUà3\85\10o°Dâ\ 5Ca9b\83
++u\v\1fS\81\113n\18¦K\10ÛÇ»Ï\11´\92Ê
++<ðñù\80\17I\131ü\86ùºpG/ùÖ\95\f\17m\88Äiï\88K¢zå3\96Æd_®Ñ\8c`%\85âw\86ÎØ\9d´f_ÅÈ\8a±Ä¬\89\1c\ 6í´lÇÕz\85zC\8bm\13á÷¤)X¦OÃp:æ\10k<{NF¢b\9dÚ5\96¨\9f÷Î3ð\98g\140\ 2\8b\84\85\19X.`d\eé\84$xï\84 \18â`\1ao1ð\8cêÆìfL\b\17\9cÄ<2Ì\98Ç\98
++f@Ã÷®ÄkV\10.µ\11ù\8f`.º¬8\99"°\11øx±\f¸f\1cñP¼|\88+ç±\v:ü?ð.
++\1e:\81{áÙq©\eñ\e\97û- \99Ns<¨P¦ä\80#ê\8e\95éMâ\80²_¤\8a`$BÌ÷§\12\97\91z\8dA\82â6l±\8dk\1aÝ\9f°\8eÑS\esB:ü\1fM\8eã\ 4EÙ\1fs(ÆyöRçÜxÐ\rÆ0gDAm¡'¨<\18Ü
++Z\1dÈph"ñÃ1á\9d\r\ 26\82"\13\80ü\e<©\98D\91_P\98\19¨ó¸\\8cÁÅL\83|4\99ü|à4Åh}\8d6z?ÏÏØx\83¾âÆ\1c\9e¬\1f¨ÔÅÇ\ 5t#@\83-óø\19¯©êPú8c\96-ágª%a\bó\rÅásX\8cÓ\15ê"\a\93Ï<<A\9cËã\83\9b)ÒAȤ\91ºâÿUªT©R¥J\95*UªT©R¥Ê\ 1"=ü\7fi÷s\97L,\9dÚùnÁòÆûùOíÌ\8bø\18Áµ/\1cµþ\8cèß.éÿÿZÁ\17î\9eµ:ù+\aÕíÜ:ÜÖ³ðû3\9eJ\98 ðÝ\8c¥\11\83ûÁióÿ7Ö¯¬ió\ 2\12\97<øÌ÷ýs<ï\84ìvv\15ì{øä·ÿ[Äù\ 5ë9¡øüîéÿßóÞÓÿÿ\8còûcÆv¬\8bí\ fÎ\ fu6\96þ^ð¤º-ùÙË&áÄ\87\96>\7fbôù¿Ïþù&a\9e§\16¿þ¯\1f¹êG\89\ 3 \ºN\17\ eE\7f^§
++\96¸~ô£×¥²à\13\1e\9arúqlV¸ÕÉ'^\19\991Ý\92\97ñ\8dië\9eOeN§ë¶MoÛrèmË\1enýì\13®\99ü¦¿\80ã±o/ýI*³&]wElç_â¸ðg_üVÂë[ßè¥\ 5\vîç\0\Yðó~\ eÀ\8d¥-êØì\83ïDÆÏ§\14>B?Î?6ÜÖÙ\8fÉ\8f\15¬{Õèu\1fÊ\98¼Møë\83\ 5c½òÏÎýYÂäM\8e\85ðZÑ\9dsç\8c<\93ðs\99Çsd\NÆ\89\98ü\9aÂýøÚ\965\19\a7.ãüE\7f·o^öÂ\9e>ñ#ÅϾ\1f#_Rðå\95£KnËþò>µå\9aÒ\87Ïݱ*Õi[\9d¸¦èÄUsW¦:\9dȱ ®\98Þ«s"¶>s/\18ù\8eé½²[\8f̹#]\1aë^ü\88~\8cüõr]?Fþ\¼npÎÉYe<~ãUϦ2eR\9d ¯çý6lY¼3ûà»ñ95\aãî\8f\95çËï=úÄq w\17y\8dÝ5Õ³S^|ej*Ó&]w\7f¹ß\1fÉ\8f¼\90Ëâ~}\95*UªT©òV\94\ 1<\ 6âøºÑønÅ+Pja\ 2ɲÖ
++IäP\1a²\r\8c¦Ó7\91g©\89Üzâ\8fÄ\8c\8d¡g6=ø\8d·Ä\84#\7f$4\r=¸\r¾wIºPÄq5\83\e\ 4MôYÒý\9fÌ\a\v!B\1a}®\95!æë\f9-ÞãB\9d|íYoã\83#\8fC¶9ÜTã\1d9*\fc \1a|e$\8cØ8ãI\95ÁÇ\8a\91¦ýH¹ìdP~\12¼xo<\93\98ý\8dÄ\8a\80Ï\8eI|Ã\19\99À7\11¶&z\9b9:Ò÷pkC>E\88\8eû1\86BÎÿÇø\ 4\92\8df\829ít\8e\8d\11<ó\ 5ò§\8du:Æ\0HçaCpü]ô;×øð2ÂXK¢\86ózÜüî\87¹ì\ 6ñ\8e\18Æ@\93,\10"\9bÈ7^eÞ\93\8e1\r\C-¤öáæ¹\9eA±D0¶ÚDÞ\81·¼»R½{¶>ý½Ü\8a\86S£%UÈ\93È\90ç\9010"\8e\1eùR\11[o¼`Ð\ 1'&É\ 1\99âF\18¡÷ i9\11\9e\f\aå,ñ\7f#\9d\aë\ 5·\82Z0\9f¡!\e$8L\94$MJ\93C\0+70Cbàºð\91\r\80ÿ\18\86#Rs\fù0\98aÎ\1a\96@\90\91Z@î=F\80\1c\8b\86¤\10¬5\8cºÖ¸=É\v\15ÿ¯R¥J\95*UªT©R¥J\95*U\ e\béáÿ_u³.\9eX:µs×$qþ·\95ó{Æ\ 5x=ú¿\9e\8bcöÖ\8dçfL\17ç¿W°»=ã\ 2ì*Øø\9e¼\80e±~b ;wÏ\8e¸½V\8c\v "æx6\8eëFçÿw<\1f4Î\ f\17\9cyO^ÀÍ%NÁúÏ\1c÷j<ß\90\17Ð\8bS°g¼\80±â'>òÐÛÿ%ò\b¤B;\ f\8díÿk\1có_;9úz[Ýà¾Ï\15,ó O\1cö@ä\17\ 4!º\9d\8d%VúGßH÷eèX\8cClÏ"\8eÛ\ 3ïÝ\1aÏË\80ñ¹}Fûû/~þ\98×2\9fB\ fu¦Ä~\ræ\1c\ZÚÚÏ9¸½\8c÷%£C*Ç+È1úO(~ë+U\8e\1f ]È>û{É\17p}Á³?¿9aÏÜðJ8ê\8bÅ/¿\9fãp\7fÁºû9\ esbÙ\998Ö<2vb\8eW\90y\f;Êuýù\ 26Çq$\7fcí+ï¸7ó\18Tj˵±ìÿØ»\1eX»Ë³|\8f\96ìÜQ@\94IeÕ5\85Ñ®·«ßÿ?\eCD\92u¤TÚ\15¸íZÚI\95\ 2\17Ú\10\8c\84°¸dÄ i
++\89hXÒe\ 4\9a¥l,+Ú\ 4\r*\9bA[µnÌU\84\ 6gÃÊ\1d`Ù\18-He¨ïó~ßùîí=ç^\17g\17 ïC~·Ûï;¿ïÿ¹÷|ç}Þç9\9b®oÿé\8a\17\8fç8\94<y\8e\9f_¸ñß«\ 6BíËV\9eëÁ\1a\bgÍÀc¸÷\8c^\9d£_¹¾Ô\99T\8d\91Ï\9dÁ/ ø\1aü!]W\1c\1e)\1aö*×1tÛ|\8e~ó\13#\85ã «nĬÆÅp³Ö\96\98<\12ç¸ì>®ó*º~[ÿæáÊ\8d¨ü\87Y§öæ¬_Ë`n\9bë~NŪ\96{¿~|qá\ e\18Wý\17\1e\9fÁKàõ\19ô
++Ör_.¦kÕKk¿Px\13ª\8eo_k¯_ËàÎÓ'ʦj\19ÜÚòùû¹\18\8b'é#\_¸\11ÞVÿ\85 \8d\93~½\82}Mÿaýá\9fýéR\96*\97fë\f\1c\8ey¬_¯ \9d:Q6\95\8b±{bÝ¿½ê®R\96«\ fFá2a_\9f9oì`åiÔ¾\1c\9aAËàîVÖÏ©\98sj¯½~Þ\84jý\9cªe \10\bÞ¾(Zæ9z\ f1÷\14r²H\7fWI+ËzÜÈ\8dM\10ì\ e\88\1eED\ 6CÞp°ô+\95~S;\9dUð&á\95\96\15æM\88¹ê×\17½pï\918\1csâà`O˾ÅȦ\89\83N\17û¥_¬1\18\17rÍ\95\1d\14û\9b.¯vZÝ\0\13S\18\94\17;MüxêECö\88\13ÒoZÎ\8a\8eÚeÎ!Æ\1fx\8e/R\vøû\145¢§&Ø\f\19t\9aT\ 55vºY\94ÐMda~z\14\83¡"Ï÷kì\98\15í\15ÍEÊÊñÈ\8c¢×i«|¤ÿ«¸\93\b\9drò·K\1aÊ\ 3\1c\1d6\11yÇl\b@\8fRµ\8aj§$\8e\19Ãa !ü\vû\ 1\13è5\1a\92ù\19¹û9¨\10\ 3=\935ò¥\15$\ 4¨÷P÷G08Â4 BÎÞFÅc
++ôdt4 \844|ú\94\86\f~\1a8¢º\8euÑ3\8d\8fª¡ºñ\17\r\8bL#q\90¥\80\7f\82-k\172\1c\ e\10£ÄXivK~;=E§\vÕÓ·à<xü)R\b\80\86^Ì6Ñx\ 3m\19\a³\0ê_ Y3TO0X\18Z\ 3^\ ek\92¥9C6º¥m\8f´ùÌ{\ 4F\\90·\b1ö|)\94§·FD3\8a÷+ò°Á\8d\fÐÐG"=fÄCS ±=\ 1µ@\83¡ú}\80²¾§\8d\81Ô~(\14d¸%dÈâÓ¹\ 1jü*EDù©õ\ 4S\ 3¨. &\9a\12z\8aúá#}Æ¢Mo\90v\8f\82\89ÜwzCzzÞc;\9b84ô¿ú\16\f\88W÷4\ 6\8e\8bq÷ø\115æ>Hó\9fV\1eo\vdºkì\e¨ éÂ.PÖa+\81\ 6\92\ 3&\b\99õ&\ 4v§ ©õ!&Z]Ï»\1e»Öã£b\9aÐ\f8ÑÚ\13\9cêOÏQ+\86^Åä\95²¿2[tÐï\98\90@]QÇ¿ßi6a£\0B\ 1Ô\e@\QðoЦ\88\98Ð[\ 1z\148EAU\80~ÿ(Ko6\88\1a\18h=Ðb+üºÂD§ÞÞ\1a _0T¸)Åw\80\8a M@¿\ e\ 2>ý*\9fëZf\9a?ÚQyâ\99\9e¦\ 6äÇ"Í\f´O@Ç/÷hqz\1a\12Sù3\12ÿ\17\b\ 4\ 2\81@ \10\b\ 4\ 2\81àdÀDü\7f×Ç>õÉ©¥ïê<ß<Ûï\18yvy\89\7f\85¡ng\vÇ\86¾H×ü×F\96Ö<y×Þâ\bb}àØû_ãø¼\ 6/ ä\96÷ëöÿ°ÅÉ>xäw\9e.yûFu;çµ<ç½ß\9b\7f\8cãä9Ðý\r\1c\1fÛE×ì+Îü:ÇÉ}ÒÃ\9d¹-\97¼?NþDËñ]}ÿسU\83¿êÞ\1f\9d!¦]r\91\aç¼\8f¶Øf\7f<xm\8b©\rð\88ouÞ|Î5%§\1f_»rÙ\84FB¿×û=-îyýø»K<\1fß\fqÙ3m\fo<XóÌ!5ËeE¿ap\8c¹h)\8cѵþЯͪqäê½~\ 1?78\8e¼\90\9f\eì-¿ãôÞøúóï\9f\9a¤{¿¬Ä\9fO%\8e|\88Ë\ 6ëÐïm{ªßw~K«s@\·íÝ\ 1ùð3xÒßÛ8\17£/~ô\97J,UÕ~^ÞúòÔÙk\ e×8k\8dM\7fµqMú½å/o\9e\ 6SsÐ\ 5\ 2\81@ \10¼½15/{\90gzPAÁ+Ëéè|â4i\10(Ø\18Ý\9b\0'\aút\ 3\13\ 1$%»à\8cr\96^¦-ò®aGw\85\8ca*W\81^\8bÈ´áà{fÛx\b¸k\18Ï'\17mDØ\14\12V1Ðç0º\93ñ2ã!gï-(\15à\14°\>dða<\1fR(¹×ÇÅ\86ÿ\9f½ëK|\1dÒéÁ\ 6«"H
++¦7GÓäO\ fòW§~;¸°»\9aç\ret0G,SU@\18U\93¸!EM\9eæ=EEã¤\19\ 4¯\85þ'M gb\ 5Ç\91é,ã©uj<"·?@ß\80Î\19*\17ÚFò*Ð\82xDp#B´\ 1\94\ 5\ 4ªA#É.N\8a¡kÈ%è\98U6T\93\ 3)\16n\17ÎPãÐ\91\8f\99\16\ 6\81wZZ\10)h\89x+\14f\b\r\ 4\8a ÌÉ¡\99SØH \1a\rôa\1cT\15\ 3o\ e\ f\85\ 5êdt*!\e_q\b^#]\1d\vå¨Ï!ÑÖ\ 1µ\a±õ\94À\87ñ¨){Ø °&\80WÊ2ÏF¥LS`a)ak\ e¾MÔvb\1d\b\v>HÖ'\94\9bR¸\fT\a,\bfÐ7x+rX hA5\98\1e\87 ÐTh÷OÖ 8\ 1\9e\btD¡÷e²v\92Æ\ 2\8d+\fò\97èq\f$þ/\10\b\ 4\ 2\81@ \10\b\ 4\ 2ÁI\09ÿ\v\ 4\ 2\81@ \10\b\ 4\ 2\81@p2`\82ÿÿØ\9f§-SK»\9d\1dÌwî×óÛÅ|fð¼\97¼¹äÍÂ\ fÏ®ÛÙÏ\1cè»èÚûäÜW
++¯:¸\9e>\1fêY´oçÇ\99ÿì¼ïv>Ýxô_Þ÷\v¬\9fç\8c·ÝÎN®§ß·ogÓ®;å¹9ÿPò\ 2\14Õs_ã\81/:¢Öq^@Pq²×X¿ÖÝXãÔo\1e¿ñ\81\9a\17P5Èör;ÈW¸éE£\8a.]O?ïñæ#÷W;Ö?QôåLåyomzaýºtwp{wÓõð\87W\17½>ïBá\8e\97ü\85ÁÞ{w·¹îÏCØ×8î7\8e_Rò\ 2b¨ù\ 4··<\84\8d\a\1e\9d]ÊR(Ïíj¹\ 6ý9
++\9b&å\1a\1cz¤\94E_½ð¸Nh\90í^T¸ø:So¸ìhÓ\ e<6ïªï\96=a]áÍoi|û~í¹Mm\ f|bÛ\rÿRr\ 6\92.c/ºt\9béºù\81\e¾_5Ö*Oÿ\89Iüþ\7f,¾uàó\fMxè]?\84Ü\ 6ýPÕ_«>\8eų\ f?þò\ f.}¾ê¡\85Ò\97\8dÓzÌ \ 4\ 2\81@ \10ü¨`þ4\94É\82§\8f.È\94ħ\14_xÀ\ 1ÊoÙ'\1fSÕó\9a\96û\1e\83\81OZÒÁA\82\16R\85^C\19\94Ó'I\18\87\81 Î\19\ 2¨Ù\81®n\13ý\ 3½:Míd\ fÖ¿vÎÁQ,[E/\ 4\878Ù\10\1d¬ù´É C\17~÷[Ƨl\92wÛÀ\9c
++\1dl\98ìë¦b\80\12\9a§ÑR\975t\18©ý sò`\9a'íSR4X\ 5\8a½5\16}s´(Ô\1fh×\81\ eO½ÎÁûh,t$\1d\88Øô\99\9bzæB\84\19_\84z M\fÝWàÄã#¤ÍÙepÑ\8d§\16©\81ì\1a\9fݸè4s¯\9dgs½^ßéø¢Ù\eÎ8\1e}ÂDÐF \11Ú\81!P5ÊÁU\10k\bñJ\v\8d¹\0\95A\9aAZV\93àègA\v\8fÐ&t\99³-4ÕâØ.Ï\82ý\1e"-\85ªZ\9a°¡F×5'\84п¦jobCD:è°Æ'v\901È$p\96Ö\9d\1fJ¸K½£]ê\1dohÚ\4\18$\ 5dz-Dõ \f\1a¬õ°\ 3t\93yïCÓhm\1a\aýQ¤¥Ðªú\84$ \1f"U\89ê\95\8f!§à\91\ 4\83UÀù3aë;Z\16¨\85\86\98Ñ\1e¶!\122h\7fC©\91Þ.\1eJyÙò~óìÆH]S »Âa\1eURØ×Ð#ôp,Ï8!äIº\9e\8e^¯\82ÚdòàÞÇDS\03D\8d·\98¦ý¤\90î¡\ 5k\1fF\92\ 6
++£4i\ eo]xaÂ
++ÒcQéÍá\14öU\8c,6h©k1!u\0{ÒN§kyBµZ%þ/\10\b\ 4\ 2\81@ \10\b\ 4\ 2ÁÉ\80\89øÿE\v»\1f\9eZÚí,k~Tç}í÷V\96x6üö¶7?´Ï\zÎ\9eê\v\b\9f¿iâü\v[|þx¿½Å|¿ßWï/Zý×^ö^\8eógeõpç©\16+^ù\91Ñ\7f.ñ|Wãù·6¯µMOß\96«ç]Õ\9e»\95\9f\ 3\9fà³\1fZ?^ËbÕùkmÍ=¯r\ 4 ¡Âe\ fñs\83ãù\89Ë\10\84Þü\9dÍgT/¹ª+x\90Ë\ 6{Émmñõþ\98ý\866¾uç¯)}ɦêÙ]ÒÆpìü5e\fÙºÒ^ñØ»\88®íîê\ 3U\1f0\96xþ§gð\92ÛÙâÝý¾o;\9aߨZ\7fÓ÷ª^_\1dßh\9b³\87\87®ýV)K\95\ap÷$\8f¶ÓK\\1eâ\13e®[_ú½Ö.j\9a\8fÿ=ûÊñêµVu\ 5\vG\0ú\80¯<|]Ñ\a¤ù,e\eø9¼à\96G¯|®\94åTø\ 3_m\9c\84Û\16\14}G\13\95\9aì=8Ø£íñ6\86åãç}¥ð\0´-ãÛÒÆþô}·ý[)³>Ê/\13\81@ \10\b\ 4\82w,À\8d\80\8f\1dl\97ÙçQ©\12§õ\8aîDè²\85^|?:Å1e\9d´1`DäèÙÃOé¡é|\a§ó\86\e\10\1fÖP§\83 \6Î" \9cªf_öÁþ\ 4<õÀ/± l@¸2ÁX¸êÑù\9c<s\r
++¨\v_¹ø4:öÌ\84ÁgÈ\90.Ôq
++G\0TòÌu\aÏ^¡\ e!sê\92Õ*»\84SOáÏÀ#´>ó\13á.¼\ 5ý c\ 2O\ 4ä\aðw\ 2-\ 1Ø\ 5\1a¼\0glP4\1eð \92\8eP\r\ 5S\0ü\ 4p>h^$þ/\10\b\ 4\ 2\81@ \10\b\ 4\ 2Á;\1frþ\17\b\ 4\ 2\81@ \10\b\ 4\ 2\81àdÀ\ 4ÿÿççÿÔ#SK»\9d\83Ì\91\ 6_{ñß\9eÂúk!)×í¬j|ó\85\7fýÞ}¬Ã§s\1cî\1cmz{\9f?÷ê¢q\aÃÐ!ð¦÷s\19øò\9f|id{Ñ\95³¶p÷ï\99\81¿þÃI<íå\8f\16\9e¶S\95\83ßüØûµÜ\96¶öÄs] \10\b\ 4\ 2\81@ \10\b\ 4ÿ\17\fÐqÌÚ\ 4k´\8e%Ç!\99\98\ 3\1d\89]@\96\88\8f!ªd2\1dMMD¾º\8eQ\9b\b¹C«\94öÙAM\12\ 2\7f9ÿ¸\9c~Ö-ä\\84\948w"@aÔ"Ý¢\97g¡\8dWÈ«8îü\8fó}ÿùÿðÀó¿ì\0\81@ \10\b\ 4\ 2\81@ \10\bÞ²ßYô}\17 ü\7f\81@ \10\b\ 4\ 2\81@ \10\bN\ 6LÄÿ\97í¹ü\81©¥ÝÎËM\a}É\91³6\14^~¶ÝÎÒ¦Çþî\15ïû\1asë£ÒÝÎ,~=¼ê_82ÿ\bî;\eC·3\97ï_I×¶ñ\91Wù~\86\8fÀãM»ýcÇ~ù\a\9cG Lîvn\19¨ÿß\1eóøñû¿»è(ß×Îu;\973Oa\17]³¯8óë|ß'z}·å\ e,:¢Öñý âpg-×s']ë¾´âI\1e\97b\eÌ¡áÎíO¯nýï\942_uö\1fj\1aõ7\9f¿¹\94i\9dJ~ÃËìGÿ+\18ç\97׿P¼\ 2h¶¸ìPë÷Ê{¯+Ï9\93\8bÖü\8e6Ö?\99¿¾x\1axSs\18\8erÙYtÝðÜ\82\v\8bW@®9\13[Û\ß|Î5¥½¬«\8f\80âö Ý¿{Ñ\9aïײªÏ\7f/÷\13>\ 2o<¸©hâ+ëJ\9d£3ø\ 1ÜÇÏý:]G\1eÜÀ¹\16p³-\1aü³y\9e/¦kÕKk¿ÀeNU\8f\81Ãm\ fõëì??\83Îþ\9d³{sÖ\9fÛ±\9f\9f\83/ÃòïþÜ\ 3Å\7fBY%oh\81@ \10\b\ 4\82·\ 5\ 6ð©£Ê¡xÃë\10´r\19iÄZ{§¢s9@^=Yúüi\92KÆØ\94lÈI\e\b¯gK5¥\1c"¬Ø=¤ÔégP\965ãM°Ñè\98,\8cÚ³f\17xgS\802¿\vÆÀ8\1d\12ñJ³Sº\8fд§\97\19\97"?o¡\88\1fX>\1e\ 6öÑ\14-zë\95Îô\98\81B\7fO/\1erù\90qW:\18\9f,½ZCtÞD:\83@\12\9f>\a;¯]\8cH\9eÖ \8a\83ä\rùw\13©ã98\r/\80HG«\10\82cG{OMÐY\ 5ý
++^%(Ú{:\9eD\88ÎS\195\82\8a\94I)'G-³n=µhlήÎu¤zLp>\ fõ¼\ 2<\ 6\13s¢A\98lªç\80ñN+Ì9M7\86\ 6Ç4\réy\1déÀ`é\96\83¨}\80ø½Ã8Cà\19¥\8fð>Ð\98\1c<\12\f\ e\86ÚzK\1dHfh²n?t÷\ 3cªÞ\0Z©D³b\83¥\99Çj4\ f\ 5e-?§h\96©\87Ö*\1ar AV\ f\ 4G㣣Ao<*Ç@Ó\ 1®=õá8\r\7fönp¨\9b\1a\8fô/M¬ê\17\93ò\9dsQ\83\9bOë@=N:Q\7fhý´æÑGzIä\r\91i³P\9bTäù~\8d±'\8d(»Êô*Z\8c@e>;Gë\ 1±ÿ\14©k\9eæ([\v£\ 5:<:ohæKÍ:¥D\e\80\8exÆÓ\8e¥\ 1ÒV¥etXv8\1aXZ\ 2\ fÓ\ 4\eà,\91¨ö x\19h\9dP\1dR\ 4<Æn¥j°t\89V"E\8f\9a²§·\18½7ð\96PÊJü_ \10\b\ 4\ 2\81@ \10\b\ 4\82\93\ 1\13ñÿ=Wmü§©¥ïêÜÊqV\ 4b·-üÕë\10g\8dÉ\fu;ó8Þ{\17]{\9f\9cûJñU\ f®ÛÙÅ÷\11\1fÿÆò\91ÿ⸬\r¾ÛÙÝbê\1f8öþ×8þ¯uìv\ e5½ÀS\9e\9bÃqþ\94\95ïñ\ 2Öеè\8d\a/㸽ñv¸³·Åóo\1aÿÆ\82ª/èJ,y\ e?s5]ÿ±ûÚ\97¸,DWbÉEÇ\0|\85\8fÿÙ\8dß,±k¯K,ù\9e\19|çgÒ\1eÜׯºjþJ\8eé\9blu\89£ï\9a\14×¾é®\12»Îz2\87 \94]2¿è\12\9aTúyG\9b§_\1c¾ìP)\8bø
++K \10\b\ 4\ 2\81@ \10\bN\b\98'\ 1\aú\80øqð\91\ e/Ð\98£\7fuR\bC+c\8dµ^+çé\87Q.$\84³C\8a`#x«À\92ÐN\ 5\ 4\9a½\ 1\11\82î%M'$Çõ\83\8f\0²\ 3ëåÑ+¼\8e1ÙÒ¶¶ÉY£\83Bª:ø\171\1f\17ÃÇiIiouÕ³³*èlB\ eÔ1¯\ 2õFqçsPÙ\98Hý\8dÆ Fî\1cîX\9dµÏF%CãËt¼ÊA{c\ 3È\174\f}\fÖÅÊ-P1$\1dÁnÐ9\82\ 4 Á^¦\ 6\13uÚ«¤=u\86jW\bßÓ¤\18\9a"g\9cÏ\99¹\11\bµkE]ñ>\1aKÓ\93]¢\89\ 2ùCÓìRåÔ;¨ÿÑ\80è¾¢£ \ 1Í\19l\8d\f¢\0M\916Ô@v\86u\ 6\13µ\12\1e£Ã-ó[ÚÜXÄù\r\r^\81Ü\122\r½ò=\82I¬KH\93cÁ\94 ùÁ3\12ÿ\17\b\ 4\ 2\81@ \10\b\ 4\ 2\81à\9d\ f9ÿ\v\ 4\ 2\81@ \10\b\ 4\ 2\81@p2`\82ÿÿ¹\97\1f{lji·3Æzp«é\9a¿oçê¢?çc·êçáǹ+\170ÿ\1f\8a\eÝÎÁiôÿ66\8d»±=ïù\eö\11Ô6w;[\98C¿\8d®e\aæý'ß\ f\86ê?Èõ÷óÿo\9fA\7f¯ðø¡k÷Ù\ f\1f/e!\16Îý²öÜêûÇ\9eå2crÕµã²Áº}¯·ñüë#×\1d*9\ 5É\a.\eã²Á9\ 5?sF¯/g/¸¶ä\14@\0\83Ëö\9eÖëËþÝ£%oÀE_r\18.hù\16£\87>ø¾\92\8b lio{Ë\eX7>öE.\v*+.\9bÃí}\84®O\9dvÅÁ\92\8fáS\19ßè\fy
++K§ÍE\10\b\ 4\ 2\81@ \10\b\ 4?:À\1d÷!A¹\8d?k³Þ]ÌÑÃæÝ§\90\93õV9\95´²¬÷æ\f\9cÜ5俬Î1\e\a1?ã2ÈèÞ)\1cJTð&á\95\96Õ M\88Y×¶²\a??G«A\ e\87ÊÛ\89çÆÇ¨\8cSÊ4þy\fÔn²Üeê/\ 4¹\99¯\1fS\18À?\9fNÏ/G¥{\9cö\1f[¯q\1amC²§\93¦Cþ\ 2Í#MÿPÍK NðXtvÁë`5µ\9c\92÷\9eV!xÈ\ 2fZ(ëè ¨1u)Òdeä\ 5к¤\s\18¦åâ;\ 5ñJ\93\9dQ\ 6"\80Z±\8a:½
++k\91t \8a©UZd\9aÎ\8cá\19ºAûB+Z-\97\9c3YÑsÔ$-
++ýGsëi½i«¹Äuyj:Ó\fê#\10MoR\91ö\ em<ç\83\86>¤§\ 6Ìñçÿ\15\17ÞøÂÔ=<ÜÙÄgÇ?®ååü\1fµ\95··@ \10\b\ 4\ 2\81@ \10\b\ 4\83¾\v¢#7Îö\9eÎåP>pY\ 5«lL&xK§õLç\7f\13øû \13\9c²&\ 4\9ba, á\vaØ\ eÂk|Ýa¡
++\10\82Æ\978Ñ\ 4z8â\e\1eí¢\8f 6\19øN\88î9z&\e£ \1f\10c vr\82R\83Ç×/J³Q\9cðÿ\ 5\ 2\81@ \10\b\ 4\ 2\81@ 8\190\11ÿ_°åþS§\96v;ó\1a?|É\91³6\14\1fùl»\95ß~&îÿÝ\19ÏT\9ezêvö³g;xþ\9f¹ô\9c=Å\97ÝÅnçèp¯\9eÅG\1cså\9dWTÏ3üú+éÚ6>ò*ßÏ.t;³\9a/Àì\8f¾çïqß+Ô¿\9d¿¯\0\97}ÓU\8b~À÷½¥ú/ázúó\b.hÜ÷\85\aFÞ,÷3Õó:÷\aþñK\8e^s\80ïGkº\9d¥-¯áâk\96pþBv&\ ewná¹¹\93®u_Zñ$Ï\832UÏ\7f"·á\8d]ë¿UÊ¢«\1e\ 1Üß?¢k\85\1e+ù\ 3:eÏe\8b\9b\87ýo¼p˹\f\95*9\ 2ÝÙ½~\1c;í\86\92¯`£+Ïý\ f{W\1f³gUÞû$8\9e·\9f.i"Nâ¤vP Ôsîó-Â:W\16FºZ°HÁ·P·*\rýb¤\8b\1dÑ\84L".4K\97\19C2fH4\13\ 4'\r8\998ü\88\13&Í\0)à\a+\bå± 2Lu+±\8cý~ç:÷ý~<Oß?\ 6U\90s\91\exïsßç>ç:×9Ï}îëwý®ã涺Ü<8å\8b%^¡Ä\bHÜÄèX\86%ó'î[ú\19)k\8cÄ\ f¬Í÷]\83ã{_Zó#)óN\9ew8÷\9d\ fÝöä¶\ 5¹Ìù\12;±¦ë»9í¢\a\ 4\1f¢\1ayÞñ];·\fV\18)óJò\1cHìÄ(\ÉXÏæ¶,ıé©\93Î\94²d$^áê¬Ï7áXó[«\7f\Ê\92\94½-?\8f1\17¿¼i£Ä\(c¥lCî\ 3c5\1eùÊæ\1fJ\99sÒ÷%ù>ÆxØcÆ%>\ 2\8a\91²å]LÉp\1cÇò®\7f\97\fV\9e)e.Ê}\8b\17´í\1cw[\9f+eEgë»q\18\1f|KrJX[òT,\9e!Æãì.6d|ðì§¥L;\89}\99»`â¾³ÿ©\94EÉaqûì¶\7f\1fÝ}±ô\ fs@Ævq.\eç8üxÅ5\92ß\ 2\13SÆ6×y\13\8eÕûîÚ-eÁKÙx×Î\8b\ 6·¼]bJ\9a í\9cÛÍÑë¾¶âiÉ}\91!c(»jv{ߪÁ\8ds$Þ$\12\1aU¥J\95*U\8e²´\1cÚäÏÖNyüê\9aFpºÆYÍÌã\96ù¹£NÑú\82ßM\84\9eÚ\14\9a\88\97\82H\fjTLÝí|ðI¥Ä´Õ\845ã\15%c\8f\1djWLFn\fÞ#\12~\8b\92å©À\84Öx\88I>*m[\8co\83\97\e\ 2f uMx\1a~\83òs=¹®µ7IJ&ml\8aÅ\97¦\b\8euÌõî\92\95w-\9cÇÿû&Ú@\±o\fse\aÅôÚÚ*\98mÝàe\11MH\9eÄÚªAó\ 2ê¡\ 2Èä\8d~0S9Ó§'ÜÈTäÌ^N\90®ñª ÆG<Ó4\99û¼i\98D;Ù¨ù&\81·\97dñ*\8a\97´\18p?:¯L,XcKX®\8b\89¹âí«(/|d~v¾êd<tôÌxn̬)\ë\ 1ã,cD¼1F\11F\11 #V\13×½ª0Í\99?Þg=\1füõ£òÇkO\86xüSÆ\9c\øè\1aì\v\r\87ýá1Ø\90àÚ\8cw×. 2g\99,\9ehwM¾{¼\bq<Ð\7fçØ0Z\84\8b\9eýË6Mo®¡Û×ajf\e\82ió¡\18\15\14k\9a\93
++\81-ò\98±ºy%ðóSx÷aÒÔ\1fƪãäoñò0az }\93\9f Ó\9dt\1fýØîÕê\ 3g»`
++©´\95ú\86\99Ñ\1el\9b_ «\1f£ÃH\0Nx\18a^\9fX?ç\19L\92æea\91\12¿\900\13ð\®$\8eæí±\aÆ\bä \8c\86ë \v-W<k©\10\9a$\16\ f\f%Ö\14ÌbØ
++þ'÷,¯\9fx\ e\f"ªHÓñ\8e3\ 1ýÅ\85NÇ&¯\0MÊv\rÍ%è\14Û ,\8b°;Åx\8e\9c±\ e\96\ 4ýx\ fÃã\82\1ar\f{õÿW©R¥J\95*UªT©R¥J\95*¯\a\99ðÿïÚ8û\9eé¥-ÿ\1f}\87Ûv,û\99ø¶\8dé÷Æ;ÿÿâo|ü<ñ\17Óoÿxç·~û\9f/}Q|\7fZ÷{{;®¼«V¼õ^ñûYÕïí\9fßÖ³è;×þPp\ 16ö\8b/\97¾ñ\93_:a\1dÏó\ 3k¿w|~îr\1cK¾ù\96=<ÏO¤ýÂ\8dG\7f뢳\16¾\94ýöJ£þþ\11x\ 4\ fåúù¯\ f\f\9eøtñç;ñëÞßù6·\ eî;I|öÆ\8aßsC®\8fþîuæý\8fIY(þçË;\1fì¶Á\96Ï\14\8eA-þÙc:\1cÂ0ÿàWgÀ\ 1Ü2¯íï\8eÓÇ\ 5[`¬\12?ë¡ù\13Ïû¯9R\16\v\8fà³óÚ²a\8cÀöÎ7½ï¶s\9f\99ê뿽óç«Ï\16\7f¾7\8dø\91¯ït\7f½½ø\a\82\ 5ñAî³Y\9f\17àø\výÁgÅ\87î\94ôýêymÿ.|îô3KYÁ\b<ßáE>²`ÓÃR\96
++oáÎ\v\1e\8eó\9f67
++¿¢.m9ܵóðì-\8f\89\7f=Y)Û¹ µµ+þyóC\85_±ø´¯ëÆïÊ36I\99\vJúpL§³a\1fúó]\9d\17|lë\7fJYÔrßóù¾Ñ~òG\17´}ÿ\93'þå\8b2\1f\94\17½Ü0¯µÁsö?wl\99\13BËQ¥J\95*UªT©òk\92ì×µV5Æd¤B\bÅ\1f\9a\91\ 6*F\1déCw\9aNVò¢\19ºZ\9d¦o\15ï2\84\ 1\10\10`£Æû\90Ò\8d'j"9Ýdç3ne\ 6uÔ\84óâO5\ 6oNtaFñIã*£#þCØ\ 2.Ä\8b\2\8anW£\89[\89\ 4\10x\C «KMR\81)æq]\8biiø4íC(\1c|h\81£¿Þ:¢Y\9a\8c}8Ú<y\rÞ\92é_6&#\ 2\92¦\7f\1dï«\19\97\9b¹ûðGÓä\9bµm\8aO:f\8e¼\94µ\86M\ 6}Ó \8d0l\8b±xó6Ð\972.Zº\92\1d;\105½ÑM"½·oÐ*¨\9f\98\ 2ôªíçkÆ7-zq´\1aÂ\ 5p\aþð\99\17\10\15g|Á(<B¶#\f\9e\8d\18\ç\92Í\18\16E\b\8dOèo*ø\f±c¨b\ 6ÞB\82 `¯xÑ'°\88H\93àaõ°2ü\89ëR h\99cÒD¼Öà ,ZdHð\98ñ\ 4´nÛ¨\80\9eG?\19/\13=&\815h¢åü\81uä~\19öÓ\11é\0űÝ1䮢\1d\84Dh(\Cgä\8a\84½{l$\1c\91?\98]°c\92\12F\ 5»Âö\89 &á\9bTy̰\15Æ\1c\10\8c\14ª\86&\9cI\18ôêÿ¯R¥J\95*UªT©R¥J\95*U~ó¥îÿ«T©R¥J\95*UªT©R¥J\95×\83Làÿ¿ü\9e7|{zé±\85ÿ\8føü\9do´ï)|~8o3®\99ØåkNܶ:ãêµ\9dÕ/¼g\ 46\9fpÙÉ\87\ 4?®M¿\17\8f\10\17°\7f^[ÿ©ÿv·Ô¯|ê÷¾>\92Ïo¬wv\87\17\1fæÚ[\9dË\88±¿âÄmO
++6_GÁZ¯ÉϹ\16Ç¥?ùë/H»TÁho\9cÄS·çËR\16lá2Ëý\1fÍEw¨kû\96û/È\m:6\85Ûou\87%¿l°_ê\8cÁ \aÚò\ eK>ÌE·!\97\8dÆÑo\9e\ 1\ f\7f óÛ½\aÇÁ\9bÖ\1f(e\ 5\ fÿÕ\ç»q¬ùéø?
++\1e^\95¸\84Õ3`å×ÏÀ)wOÖËhÞ8\9bËþ\16ǪGïü\\8by\97²ûç´c4Ì\r÷x§³U\83\15\8b\ 4\ fßÄX'i\95*UªT©R¥Ê\11e\ 6\ eÇÆjïµ"9\1aÉÌ\9cÅk³M¤í3Ñð=2ÚØ4&FãSÔ\fnÔɸ còA+Ó8C8¹3^\197
++Wßr¼\1d)§ûQÃ÷¿Ê¸\a3\87\BÿLðJãV«UL\ 1×\85&\9a\ 4]:h1à Äu³ï$Ö$cd$²\9b\10\7fGn>2_zM:M¥#I,\1d)\ 2Éu\8dK\13ÚÊ \v\8c\ eºl0RMÃ\8ecOCL¹ÅãÙÄ\ eo\9e08ä:$idÁÖ7I\aOîK2r\16lú(^CX\13º§H\9e\97RáÙÔ\8el\9cJ\98\14uf¶4(f\98\bÆ>A\93ä.´¤ÕL\rÆ%9\98X Î\12\89.©wtÄ\ 4Cä¼\85\ra\a I¯¨\r\99-\1dYþHü\99dT#\99þxuÒh\ 3\ 3%L$ñ5Ô\16|lc\ 5\8e"G)Úî\1a\18WæÚÎø}\8cl\13\83\1aÁí9\1dÃ\7f4ãet\ e>°Ö\ 6MMâò\14Ñø\88{1fZg¶Ë\80KB&tÄC9\88\9eS\95ç§îÿ/\9aû\99\ f\1fiÿÏ=ÙÕ§>±Jâ¥=öù\13ñ×+\97¿ùî²Wkú½\ 3óÛ}þ\1f¿ð\8eÌ\17\809\84ýüD¬ú)\awå}f´.L\8e\8b¿òÌ\r?)Üò\85\9b|e.Û\8dcý\83w¹Â\1fïe¯\7fü\f{háPß\8cã\92ý\7fxLás/ñô»æ\1fy\ f½¿kã%\83\r\8b
++×{\9a¼g\1fͽ¾´ãBø£G~ð\ eÑ\85ÊeUªT©R¥J\95*UªT©ò\1aú\9e$û]l °uÆÆ92å\ 4þM
++\82\9c¾¢0ìcO\89\9d3öìÎZl¬±E\rØÌó{
++6ÿ*Év42\80\1fÛ¦`4wØÉ{\86À\aìtI\7f\90l8Jß\88\843À¢Vl¢Ó¤~%ã¹gOÜ{3 \ 46êh\888qGìí\1dS\8eäzpºÍó09ï\81m¼b·\12\13x$lÝ-ªF\ 5MTÌ
++\82î\90à\81\9fÒT@ÃÑê@¶³L\84à\83MdSh"?Z¨\9cú xeBæ\1a@ÇùŦÑÑ\90§.¡¾hò·\11GõxÇÜ\ fÊdæ\ 1è6BÏÞ\ 6~Âóø\93ûÿÀÏ`\11ûg>\93\9f\95fUü\7f\95*UªT©R¥J\95*UªT©òú\90 ÿÿms\1e\1fJÃÝïíé0ÙË\ e^ñ\a\82©o\¿·3\7f7\18Æù«¹\13×/\/\1cñ çWgÜ7ó\b,{qÙ\8b\85çÝö{ßêøØ§â\bVt¸\80ûV\9dú¿ù¼ñxî-c<Oÿý /®ZÁóN7\1dÿÿôx\81~áºg=÷<·è\85\8c;H^õ{\87øÈ¡¼\0ýÞ¬Ü/òµ\9frøÀ¦|>\858Ö;ÐÅ\1d\1c\7fS\ew J\1cÀ\1d]Ùyg¬}HtdKN\0\89c 6`ã÷¯LRæ\v\9eÿùNW[\ac¦\945\82}X:C¾\80\9d]\9d\1fÜ»ïkRæ\v\16A¸ïs;\17\97ü\ 4Ä4Í\9aà©\1f\9d\13`sÖëïãxß\17.yº\94%ÁL¬\19kÛ2\8cÑX\98õu1\8eÿ¹ýÒ\9f¶±\13\82\99ØØ\8d9ä\12\bªðþ_\95íáV\1c§Ç\8b\1e-Ø\8eFð\e?Ï÷}
++ǹgn\91¶\84 %~àò.æâC{¯x§Ø\97\8dò¼«»\ Ãù nÉíü;\1cç?{ªÄ+ðc\.;\9cõ9\1a/"y.h·ö\98ñ'KYiçÞ.GÅp^\83«;\9b¸âæM\8f\14\9c\89\92vJ®\84ѱ\1a÷wù6vüÕ\85?\91²6þãúÜ\ab^Þ{Ç\96\aJ\99\96ç]7 »rεR\16\95\8cí\81n\1c^:c³äX0¶ÄÌl\9fÝ\8eíÞÛ×>Yâ?J\ e\89åsÚ9¾ýÎ÷=%\98\97\14¥ì\86¹m;?ºûâ'Û2ÑõÏûm[Ö\rNÎù3øVÊ>\99õyYÖµ¾EâFÐ{¹¯ÓÙ÷o¸ò1\89\r1NæÑÎÜ¿Q¹\12`gÝÚrþ߬|Fb\94BÎO\¥J\95*\93åWÀ÷}$\7fÒËÍÅÍìí\81¹ì3Ó´õ\ 1O%\95´K:²UÄ\ 1çDò!FrL+í\89D\ e11Cµ\vâÅ\8bÌ\e\1em\14¾lf\93\8fM."\9bxËWNU0mºwÁ¨D^iºé"1Õ\ 4þ\12é«\95%¬\18\9aC\ 5|\1eÚæTö\ 3\92âÜ*oðÓ\85G\11\12«\88ðMÆ\16^oÇú\12\9e\82»è±*<éÓp¶¦ÁÀ\18zíTæBo\143¬GÂ\8b\99¼½A\v\93fª{&\12o0r>x´\90üêx2n\8c\1ejN|\911!4ÎB\ 5Vc\10TÆÉzÜ\19,}j¤7Ç\9b\10\99Ñ-\ 6Ñ{ü<\12I\9dlâóQw\13\13³¬ã¥\155Àl\fÆÊ\b\16\9a`^TQpÈ\ 4\9c7\ e5\93L]Scr>\91\9a\e}Kh²%è¸ä\16'Y{¢×Ô¢<¢\ 45¡n¼ï \92Ä$çÊ Ê`½%²:Zè7â:b¤ÑqGô9ÆØá$£%\13íÎr0|C¯*ñçô4\92\87ÜC¹\ 4}£\8b\187f[W\18R:c\8duôÁ\92'<ѹ\1a`Ø\18
++\f\84I\96\88h\8e\vÌ¡õ\9b¾Â±\ 4°2«óø\aªREh:¶úqÄ\99ÓñÊî[\89õ\15L»Ïüø\ftðDðÓÁ<ë\88|ú\9a&ÝÎ}âÄ\7fÅ~m\18kæ¬Ïv\15<\15ä}ñ!¿l\9e÷âÇÎzÁB\86\89©\9c'\82<\86Xì\ f-3m\ e\0¬a4Sh\163\13õqú`3\13±\8b01eË\80\89ÃèÑ\18\8bGùì\8cfO©\18hÆÐú\1a¦0à\1aHu8\9f3\ 2¤ÀU5{Ä#ÍÃc%À9[´é\bXg(\ 1\f\99+\87ãÔÆr¦Êº9)×Á«1¶ãHy\ 2°>b:p)£\17?Û·Ø(\97"®?\11K$«+q\16|\bf±g\9c\f·»¤ÿÏçq-í\12\15Ù\1cÑ\11\19Üá\89\r\80}@Ñ
++\1a±\±±\9ca}ãâdÙDüN`2Ã\84ñû\80á2\ê\ 3£#lÊÑ\BÐe,Û\\19±¼+ÏÍAõÿW©R¥J\95*UªT©R¥J\95*¯\a\99ðÿ_é¿û³é¥Çön;µéü\7fýI¼\0Ë\ e¾ï,ñ\87\eÝï\1d7»½~ñ7>~\9eø\91ï÷\96wç\97Ü}ê\ 5âCÖ¡ß\9bÛÕ¿ìß\17<*ü\ 2*ö{ã\1dïàT^ÀõÙGH\1fèU+Þzoñ\ 3*\9cÏõÓwø\85=oþ&ÏÛìÏ\7fWç+_ô\9dk3O\80u\16õ\1f×ùnO~é\84u<\1f\ 2ñ\b+;^\837|à¹\9e\90\14ê¿¡ó\85Nå5X\9fÏ/g¿¾ù\96=ù¼NèסÎçú\86§\8e»Wp\aÊõ{×g_ú0îàPÇ\8føî?[v0\9f·ä;Ü\91ûõ \1cën>÷aÑs£Åïykǵð\8b\9d\1f\12¾Cå\8a_wé\f\98\84Øév\18\93`gÂ$tc8\8c;\10Î\ 5êóO\9fÞþvÁ\1d¨Ö\87>ÖêhÇéã\82\9d0V\89\ f}cçÓþå\19ç\8aÏ\9e\1c ¹ìmY·£1 Ïç²7áØwÛ¹ÏH\99wÒÎ˳\8fy\17\8eݧ_ø]±5ëÅ¿~h\ 6,Ã×s\1fFc\12æf½ð_\1f<0ÿ\1aásôÅoýÆÙÎ\86¹\1egÍo\9f÷ÂÛ.ø±`\ 4Lá\96<®³µ\8f,ØôpÁÄD\19¿µ¹Îcq|ô_7\ fÄ\9fï£\8c_¿\e£a\9e\8aGç´ãpþ\13ÛO\972W80ûÙ&Gó@^\9eë¼\86öró¥\8f\97²\827\89ÝóÆ\a\a>'eÆ\89>×ÌoÛù÷_Û í´.\bF`M§\97u\83Í\9f\17\8c\80JÒ÷YsZ}\ eói¬îæÂ0îà[\9d¯\7f\18wpynË\19,\9bw¾ô\ 1à }X\99û~\13\8eÕûîÚ-¸\83P8)\17ví\5¸çæÂWimýq¨R¥ÊÿS^\81|Ý¿\ e\8cB\17\e;"wõHÿltIe'x\fzRlmðQüãô¥ño\bÝý>Ä\98sw\13\16 \9dËÎV\17\rÞv2t¡ \1em¢\13<6ôÎ\85À\17*ÍôÛt\886Þèì\80Ld
++K\81\8e0\9d³\8cÓCêT\93\99¶"4ç\b\fðD$X<\18¿ñ¤ú¢³\8c(\8a\98"ݼÓâw£·èm
++\16ï\vºíßËÄl¼Ü\1câÓã\96Gñ±\1dÉG\8eÑgHpD\87È 6k¦ÜãÒW"G¼\13Î3kIè\96G\87$\7f\93|îÝ\18\8fÈ«>\1d\ f1=\17;]Ö
++æHt\86¦yy\ 2#ñ\ f\8c\ 3\1aJ0Q¼ Á¼\88nÁÍøÃ\10æBÈ 5\81\1ft2º\ 5*0åÈg\rÅAã\81\1eR(ÕÚ@¾»H\8f+n\88ôúj-À\10\e\12,Ð\14Ì\81krVúÒî\97Ë¥Æ9\95\88 iØ'¨ÞF\8c°¥åä Üpʳ\10ý¡g\9a\ ex\12è9\82O\9a\90ó´'L\ fÓdOzæ¤Ã¤ÀôÆ\84ãäö\8e\9ej¬\b\89ìb±ÉVߤÌÂ\87\89\ 1eà¥Å¢\8f1q/\96\bÃP\r\15\86ª¼#{\1eênÇ\ 5ó¬\89y¼XÂ\8bhiÄ\14\14_7\1dÅmì¼b,>a6$ë\16ÜÐ(Ü\ 5\11\ 1:óÝaö\1c\81wÐÐ!\8eAã0k\15£s\18%ç\1dUNh\ 3\86\12cÆe-bDa\9cз%èÇ´¶\9e\18\1f\1fcÇcøÚÂÏÀ,\f\97¯Ä \8fß\ 2ì \88\9dh\b6ð
++\8bCâ\ 44\84\19\90\87\10\96O\18\11ÚÎWní±\928zÿ\89\9f"ô\ 6u5yZ ©ÄW\91#Òe$\17\8cEEÚ8¹\r¹j\91\8b\92&ï8a\13Q·©úÿ«T©R¥J\95*UªT©R¥J\95ß|©ûÿ*UªT©R¥J\95*UªT©Råõ \13øÿï}iÍ\8f¦\97\8eõvd,õ5¥|2κJ\95*UªT©R¥J\95*UªT©2³H\1cN´\8d5\81\ 4\84Ú*\97HXï3'`Ã\88\97\14Iÿ\18µO\ 1ç\bìgTq\93y\f\9dcÔ\17£¥\1cc\96¼¶Ak\ 6\970\1cÃy§SÌñU®É\88\7f2\97j\ 6(i¯B`à\88oRÈQä\13ûÿ¿üö\92«¦·³?)6vj\9cÿDÌó;\ eÞu\96ÄÌÚÔï=\9b¿\17\fÇíߨÅÃ\7fì\9cß¹»ð\b\84~ù¾p!\8eSöÜøÞ|Þ:\87ë»ü\ 2'¿ð{ÿ\9dãö5ù\ 2vuüèO\1f\\94ãä¡Bßïmè¸í\97\1e´\ fH\9c¿2ýÞg;~\81©ñÿ\e»ëO;øáïç|\ 1¡QýÞ\92\8eÿ\7f*/À»f·ÏݳnÉ/òùÈ~\99×¶s*/À1\1d?Â)\awåøûh\1dÚ¿7÷\97që\8bÎZøR\8eóW\1aÏýäÈøÿ~ï\8e\8e'\7fîù¿ý\1fù¼\8bÐÿG:þ\82©y
++\16vñæW\9c¸M8\ 1`7\12W½½ëóÖÁ}'I\99±\12\ 3}v×Þm\83m_\91Ø~\9b¤ìÖ|ß¹86<tøÌ\12¿o%æZb¼\99\8faë3\8d*ñû\85/à«cm\9fî¸më\ 1ùv$±\84c½½ù¾Ñ1ú;æµ}\18\8eÑ\978nÆ\9b?øÎµ\ 3\89Ñ·Nxî?\9bu2:oÀ\1d\1dwÁ\86\1fÜ9WÊ¢\97ûîÏí\\88cÓS'IÿB*¹\1d6vü\11[î¿àó\12Û\9fC%Ù\87.ö}û\17\ fJÜ\7f\14~\82\95\1d\1f¦\9fîû\84\94ÅÒÎwu}øåM\e%f^\19+ÏÛ\9fï;B\9e\82±¶-k\1fxÿ©Â\17 KüþÙ¹lt\ e\83=cíØ^2Xz§p X#ã°\7f¬µëá|\ 3ÇÍ\90oàö±v>_¸xó>á\19À*\95Ë6Ï\90oàÑ\8eó`÷¬K\1f\942¬\84ÒÎ\8eÃãðì-\8fIY*y\11vÍÀAÐïr\ 3¬Ý\7fÚï\16\ e\91\92×bÅü\89û.\93\\ 4Îh)[ß\8dß?Ä2\ e\f\86Ëe\eò¼\eÍ%°t~«³_|j\9dð\13Dm¥Î\8d¹lt~\83³»ùwÑà\96Ì\91Ѥ&È8¬èÊV\r\16\7fQÖM\9d9¢«T©ò\1ax\9fû\15r\89ëdbæúfp2n-\1cß\99sÀZßàm21o4^ôÔ\f\9càx\84R¤\8eö\f¨\9e5%þ\7f\88{\7fD<xT9ø\9e=Ñ\86/\9f\85'\0¿ä\ eË,ãWñ{H¢sF3£{\86!Ñ9d\1f=fì-Öb\8b\9f\ 64#\19\85\vÉ\1c\1f\8d\ fäA·xq%Q¿pc3o\81âõ-Ç»b\ 1õ8ùÍÍqǶI¯¶\18ÛW æyd\9c=·\ 6è?Þú\ 3s£3\ eÞá×\12jböô\18RðÿÇÞµÇzVUçûkhø\rÌ\80Æ\ 1¬%Tf\88\f\fÐý~´\80¤Å\88:åU\1eÃ8Ã@\19âT\ 6\86!´ÚúÀTbµ\10ÐT\r\89Ój\ 2\8d@)\85J4"UÓ`0H[(¥VA\1d\ 5/\ 5y\88CU"¦ý¾µ÷ïÜ;÷7Ã?-\962ë\83Ãå\9e}Î>ûuÎ=ë¬o}KÒ$0C:ziñþÉÌé-\8a\1d=§u\90)\ f\9e0o\1c\ 6FE\aJ(X
++V`¼" Ïüáè$G\8e¡Ü\18¨Èê(M\8f\1eQRÜ£\1aæ\8a(ø+\b\13\855ÕÈ0õR)ó\8f%&qÚ\f\9dÎmU\98\99]æ\9eØYlþKU¯>ã¦\9d\7fÏpáì*×üB\rþ]æ\b©\91aæ\fÅÇ]Â>õùö]\97Á0\9f<¬Ç\96M\82\86\9dá"Åpyª\fD¬s\18\8e¸T¥6<\v\98\8b\86Ò\ e\8e¹'ðp0\94\90È\\15óîy¶Åá1á¤\9d&6;Ô\e\83\9b\19ãÞÛF\15{\8cFÎ\\aÞ\86\1dû\87ç]áM\19`kJR.ѲÇQ¿HM{YW1t\80\12_¢yCðPÁ\ 3/ã¨\1c1^|B:
++\9eàNÀcJD\19
++÷&\8a\8bàyÁ¼\10\98D_35\1d°d¨\1e\81>\19>«|D\17Ë Y\82\8baþø4ÅÍ^øK²;ÕcPþ¿B¡P(\14
++\85B¡P(\14»\ 3æüÿ[Þyî\1f-,\1dwMôiÝþ¥»Ðç\9f\19ü\9e;úÏ\7f(~o:¹>tÙáÏ\8a¿Ú\860Ñ¢o~ç\v¯íyî»Oó\9aÁ\97ý\8d\9bÏ{º\95ù\9e\9b|Å }¿åÀÍ\8fö<÷=\ f|Óŧßò]\aw½ùìMóÙ®\96vì¿:øà¦ý¤Çí;iË\83\7f»úÑîóëþÜ\7f}\ 1\9fßÑR¶\16Û)\8f\1eß®W¢i}h\\89æó»èê6\86UX\19
++\85B¡P(\14
++\85Bñ¿\89\89Ï~çy\1e¦tû\1d\199t\85û¹s«9¸\10jv%ÅX
++é'\86òü1åTM¤\99Xëb\ e±¸Za;Fo\98\88ÃK~\ 3f3\bÜ\95É
++ Öú\9a\8a±\92'\82\8c\ eÇ\9aIÃȾ\96Ö6\9b`\ 2ú\1c\r9ï»È?ò\8bä\1a\90cEß|µ\86ô\ eöªí\7f r\ eÚ|\93Å\94BäX©ÿ_¡P(\14
++\85B¡P(\14\8aÝ\ 1sþÿw\1fµñ\93\vKÇ£'$îöFlË~¼ò\84\16ÿoøÇÕNÇó·øÞéxþ\83/\7fã\99\87K\9c|\8c\1eÇ_³Ó8ùE£²ï¤þ\ 3oXß|øÆô\98ì£\87k\7frùÙÿÒãØsó·oÜ¥^á$&{çñèFÊ\18ô{þ¶\vo\902~\8f\91²k\84\17ð1l\9fÙÿüm\9dOÐs\87ß6Ä\ 2_ò\9aóZÌy\95ð Æ±\ f<\84¯ß¾éÁÆ5\88±]oÛ\90O~Ý÷NúHã\1aXÓú÷Áá¼K>»é\81\16ë\9c;gà\9e¡\ f÷\7f`ÍÓ½¬s"Ö\ em\99Î\8d~òÀ_øãC×µXçl:'âÒa\ eÖÌ\9etmç/ôë\1d7ð6¾ô\89·|·çFï}\9fãt¼wÏUR§·±hÞt\85B¡P(\14
++Åÿ\15DÇ"\ 6\9fr\92\÷É$cKM\81¢Q\85ùë«wÆ\880B¤\9a@\10)\0ïMÉ®\84\14\9c¡L\ 4óÍ[ú~EÍÂÔ\1c\13ÊM±\95"\ eâ\98\15Ç\88Â\83\8dÙÖ\12²ÏÞ8o,\93ÆGCQ\80ÊÃ\\8c\85Ê\17\94\b\b6ÚD¡ \\8a/ë6\95ä{¼?Å\18|¥s7áß`\9b~\85¡Ç\1aí/,\8e46\9c\13ý\80\84\1f\14}³&DK\8e±+\86ê\12®Â ¢âAÔ\85¨Î\17\8a\90Ô(J\14°\8e\12Ýú¬\19\96\1a:W\12Õ\ 1J@m\89:\ eT\8aC\aB×lÈ\9e;½oþÿhÂ\ eÚ\ 4;ê\91 Øy\9bc±¶Æ\1ar\98§7\10ÐnX\v5» çzƪGª5¸\94\ 6\1d\b\93,cã]¡Ô\81\ fµtí\ f6=Á\ 63°}¨wÒ¯WÑ3:ý;gáE\8d±Ï\18RY_è\96¥\1cHßO\8f<&\ 5\ 3\1d<5*\8a\7féèý±½¦Ê\8aô´mÕÿ¯P(\14
++\85B¡P(\14
++ÅË\1fjÿ+\14
++\85B¡P(\14
++\85B±;`\8eÿ\7fÅì\8fÏYX:\1e]'\1cï3°]5»RòÞ\85\1aÒ¢ÑVÙÏÜY\9fÿÜ\9a\96ṳ̂\9eOíùA×nýì\86e-\8f\97«\9aËJ¡P(\14
++\85B¡P(\14\8ai0FÂ\9b\9eÇ0P]\90Q\1a\96Z\826eg\9d'\8dßø@F?Ã\ 3jb:IF\85¸\94\98ç\93©]cÊ\85á\ e<\9eq\ 5Ìeê+\13?2Æb¾ýÿì\8dw¯\9c¶ÿï\18b¼\97o9âç=/µ\1d\8fn\eâóW\1d÷+-þß:7\1e\1d-û/Ævõ\93¯ºS¾\17\94PÆ£{eÿ¼\0\8bF7\rõø#×Ü×bë\8dëyË\87ï\bo\9fÝË·ØúäÚ7\862\94\9bÝtc\8buÇ8HÙ
++)cüü\8fnýý\16?\9frÏ#þ\1f/\10\aÿȼ:\ fk¹Â³÷Q\97¢B¡P(\14
++\85B¡PìN¶¸³\ 5\ 6n(Ñ×\1c'ú\ 4¥ÆL\ 4\14\18ê\bÐ./ÆdçL\81\91nDH\ 2\ 6mHÑ\84@1\ 2Xò8«f\a\e<w1\ 2XîÌ?à©ç\10`Æ2\86?ç,\ euÊ ð´\12%×@ÈYt\ e|\12½\85h\99\1a 3mÃ\våsØ¥.\81òÿ\15
++\85B¡P(\14
++\85B¡Ø\1d0çÿÏÛ^÷\93\85¥ãÑFÑ\86\9fÖÿ_=hðïèÿ?dðçoºk¿¯p\7f²¾.\1a\1d1§ç\7fÈ[¿#õP*sF4æ¥.r\ 36>µÿßwÍ~ï¤léàËßï°\r¢õïbÓw\4:GÎc\fÂ_\94\8dÍ\97OMG)û°\9cG\86Ã%×^Ðtò\935í¼Ó\ 6½ûu³'ÜÜËJã\a\1c=¯ì\1f\977\ e\80\v\9dAê\\8bí\94G\8fÿÓ¦\93\1fE'_¡P(\14
++\85B¡P(^Î\98ø\9bM¬ÕºR`\16Æ\92æöw\1fu*6Ìü\7f˽\80CqaÔ\93²ä7ÀÅ\93p\0j¨ò{Í\ 1\15T44¡Æ\12\ 2³\1e ©1åT\r\9aSp\19ë"»ê0>\11×4hPð\1e¶m\85½Y\99ÝÁ \ 2\f\87\85\89\9c8\80äü\97j,\8eŨ\96\88\83r.¹Ú\8aþX\ e\80E«\8c«![ïC%\97 ;çÁH \11ÉEæ\b\80É\8a+\16\1eá\ 2\8a¬ÉÙâÌà1+¹ ³>b$¼úÿ\15
++\85B¡P(\14
++\85B¡Ø-0çÿÿ«¯üÔ-,Ýst±ø¼_\89íÊW\84\93ÄÏïÂÌx\9e\ fý¨íg¼¡ñ\ 2¼\1d\8f®Ügrü\8a»V\9e)û£ÍãÑ5\83\8eÀÁo?ì§²?Y?\1emXÌýga[vÏõgµøÿ\88ã¯ßw®þ\836ÈþRë\84wÀú\97Ý}Å\83¢/\10©/°i\9fIý\9f¾p¥è\14ÄÄzî\1dâýW|³íO©âx#û÷ÃvϺ\15¢k\98KBý7\ríüó\8eÚÎý5¸¼hôì\92ÉuÏ{ÐßÜy\10®ñ\ 2î\95>Póà\8cåëþMÊH\92\90²;\86~\4»¨i\1802£\95\rc¸yöMWI\99«¥\95]>è%üÞc\97.o| c\1a·aÕ0'\eîÛrX/+MûàÝR'ù\12?;æ\94o¶²Ôù\vc){=Ûù7ë\1fk<\v[{\9d\ 3\9fãï\96\7f Í\9bKl\9ef±\e~ÐÊRoç\97å¼ÕضþÙ\19ßjóZsãnÜ6ð3îÿ\8dÕM#2\87Ø8\18ÇÉxràÎ}råÖ6¿ÞçVçÀùøúí\9bd\8e\9d\89±õoµ\9c÷çØN\7fbeã`\98Ú¹"¯\1eÚùÜkÏ|Tʬ\ fí¼UK&c}öìU¯oe1µóN^2iç\ 1\87¾m¶ëUúÖ÷'\86²i\8eÉ ó¸"\v5(¾¼xÒ\873ß\7fÑ·ZY±mÌ>5ð]~÷±-ãÆ1)\9d\9brΰþÞ»çªÙÆ«\89\9d\9br°\96N\9c½~ïVVrÐ\87\98B¡P(\14\8a\97\18$N9×\1c#\1d¢xÉ.LË\1eL\81Á\90ñê\16\99Ͼ\14kKòÞÖ\]p\9e\11Õ5ù yÛñ\92jRt\85GÒe\9cñf\9a«muSì\f¯\9cÑ£^/þhc½5</Z\8a£%zFñßTBñÖælC
++¡¢>fQ\8f\95\1eÔÂ\90ic\q>F¾4\96\14LÈÌ\f\8f\82\12\9døj=]¨\85¹à\99ç¾ÆRÄ_\8b\16ãµ½t¿7.W\9a_ÜÁ>(\15¯Ñ\14hs)¤j\rZ\80¾xW\93I9\99à*\ 6ÅEã\93C÷+½Âµú\9c1*\91¼ã䳩\85AÞ8S\Ý%23¼O0Kj\b\99QÝÁ\99Rð[u¨\ 6u;XJÁÒ\89\8d\1aèìÅ\bø\99y¾øì\98u\9eÙæñ\9a\9bú\1cáRÎf\f"æEÔã\8a \1eã\80\v\ 6t\8a\13b\9d$\8fç\fD\1ciP;¬Á\92\87\18sF¼÷ÿÏ\18N\v[\am(5ökX\f\9e+>ôß3à\19\98\9eK\91¸ö\12+§\r=ȶ¶cl1¥rð1\18Ñ7ÿ|®)\ e<\ 3Lit\11Ãí\1cÛ\9d\vG\ fWMXS\1eͳ1Ô*ëÃb\94°\\1c]íd|Ã\ eC\1fØM¼¶G\83ƳÑ\1eGñº|Í·d\v\by\0?\9bf^Áq6a9fدÎa%ÌÌÅØc¤\12 \aXâ©·ßË\90Ùìûz\rbÿ\99\8cfÔêz\1f\8dp\1c°4Ð\1e\1a\17\12Ço"Ö\95\8fv^ý\89«\13ÿĹ}X¹X\9d\Ä0\849Ç0W¹n\ 3&\ 3Ë.\98låØê¹+ãW\f\a֨㤨ÿ_¡P(\14
++\85B¡P(\14\8a\97?ÔþW(\14
++\85B¡P(\14
++\85bwÀ\1cÿ\7fåò\e\9fYX:\1eÝ)<æÆÃ_zNËÁWýx´U8Ì·a[ñ̽?\11\1e¾Éi<:pïÉñGl\ f÷5~¾Áñ\9b\84G}\ 6¶«fW
++ß>Ô\80ãO\93úÉ;_üÆýî\16Þ¾1e<Z%õ\9c\8aíà\9f\9fx¼ì·.\8fGG\f<î#·ÿ¡Ô\9f¢³ãÑkåøi>ÿ-²\9f'½é¹_\7f\86û)\9f\80~I=\a`[ö\86¥ÿ%<\7fcÍxt²p¬oa{N\7få?ÉþXì¢Ñ*i'yà\9fÿÜ\9aÆegz\86\19áñ\ f}8õ\98Õ\8d;oCm\ö\13\86ñ\9bæÿÏ\f\9cûu¾k"ÚÜÏûêp½Ënky
++\8b¦ñÕ7.\9e\8cÍE\8f;Ó9þ½Î=¤¿;çÿ/Ý{r½/^·þÞÆÿw\94¼\18øñ¬xóÃ\9b÷í\1cÿÚ®wüÀ\81\9fæñ¯]<9oããoø¥\1e¿Ñ¹ì\9fÚ{R6Íñ\7fh¨óÒ[Înu\96\\1a¯þ¦a\rMç}4C\1cÆêûÞº²ñø\81v\9e|Ë:\13Û\1fØó\9fè\1c\7fÓÊZÜ\09÷g=õ\9bÇö²\9egò¡a\9dþ\98¿^Ê\9cu\8dsÿü°ÞÖϾù\8aV6áê\9bÅ\935´6^ôT\8b\e\88}Ì\8e\1eæá\92Ïnj9(C6m¬¿<ôo:nàÎa\1d¿çÖ³\1fne\93\98\90G\96LÊþóãë¾ßô'mèù0\87:×Ì\9etm+sýz->egº\95\93\98\90\8f`;ñ¡/|ºå÷4I5-\15
++\85BñR\ 1ù¯¡Zã²)Å\16æ¼&SØ\19ü\81´ÞÄ\8c_\r3\[¦¹ÂîêC±\99©µð\92ã\®Ì\96E23Nu\11¯\99.Sez'<d¼¢ùÔùµ/Ä÷õÅù\1c\1dêv) \8f\97ÄåÀTÝ5\98\90Ð$¾\85ÆXQ9Õº*¹Û.9\Ç¡\0\15W\8f6\16ê|¡\aÎ\92¶-,å\12Jã\ 1/ä\97\93\8d\9c\1c:QçÚÁ7C\8f÷®BVw\r9t^q
++Þ\17\1c]\13ùÅ$"£÷è(~à*ÕPÚ:WoH\19ö\96lébM\ e Ç\ 4\87!®\9al©\19æ\82w¦Ï\ 1¥ÄÐMoMÅ\0W²¹'\äI¾roªè¤¥\82\v¢wäé\a\8caä\15²(¹ÉEðÖj}Á\ f\9f1ÊxÓ®Bµ·!\ 4\87ɬÌ\98\968\16Å'ô*\92Ï^I\88o\9cfWcò\ 3\ f¼º\99\17Y\9bMæÜ¢aL×\86Õ\92û8Oøè\85yÖ1t\86í¨Î³\9b8\1fÓêf^Ì<î¸Vä*gü\ 2\a\17/à¶µ5¶ù¨\ 5ïë.Å\9c\99pÎKlòdÜR\8e2WÑó6j±Â(÷¸³\98J.rj\18È\90\98:\ eëÈ¡\8b\98,ïH'¯\15\87;4\18w\18eê2c\ 2Ð\85\90Éi¯Eì\ f\ e29÷¨ÉU\9c\8d¹Á\8cðh\11\ 2ä@ù\92pL¨¸ÑJ\8fI b]Á°\94DY@\8b£\13\17+.ì3-\17OÎ~ÀÍÇ\9b\1d·n\89Î\84«P\1e\ fW0\98"\87\89`B=ç\aYõ\15Ö\ 4Ã?\12nÔ
++Ã\ 2C\9añè@\87-^\99Ù\r¬\ f\\87\ 1\a\ 5íÎÉxËÚx\aÉbİ2`#`$Ð\b\ 6\12'\9c\11³\97û£Ø\ 43\ ee\99÷YB¿qOò\86ã\9d\88»9' áÝæ\18ö\12D\ 2\91ó\8a3\8aÜý\12\17\83Ë\1a.A,aF1\18.#\87û\80á"l\10\16§)\1cU#Ë\ 6cÌê".\15qãaÞ\18^Ã¥\86\ 6ã)\12Y\13\9e\81Xñ2·x\0úùö\7fúÑ¢wLÛÿï\ebÍW~å®\16ÿo$N~\88·ß1Nþ£rü&ÚK\8füö\1eÍÎ
++=nýÃûLìÁuß;é#ÝÎ2Í\1e|ç¾\13{p:\ 6û«ûÌÙ`\e\96õ²Z¤ì}C;îÿÀ\9a§»\9d\15\9bms\8f\94Ý\80íäo\7fñÖf÷änïÞ1´eõão<HÊê$\86~ëPç¿\1f°¦Ù\91ÕG\8d³V(\14
++\85B¡P(\14\8aÿÑ7=ùÄD¿`·ù)\b\ 1#7\15ù\96ÃÐyXãý\9bÛÂøw~\e\89\ e6|ÿ\96Q+U\11\1cEða\f\a~X
++T4 \91ïEÃ\81\85ÁÃ\1c¦u\1f"?vD
++*8\18ÄÕ\9a\9a$!\0?FÈ· \98´0©@à<¿\ 6PÇ\81\ 6´\89hUJL\1cPå\8b löÊo\13!T\±R\v\8fI\11\18\9cO \81\90\12Õ\ 4\12ê\8e½\9f\83ND\8dÑÒ\80·0Ê'Z\f¥} \f±\14~}Ä\7f\1d51ð¿\ e5ÈGÏÈ/TÖÐÞ\8f\96_'3? xëkäç.\17-ì}~\bJ6R¹\ 2\1dAï(n\90½±ü4\85\96*ÿ_¡P(\14
++\85B¡P(\14\8aÝ\ 1sþÿïoÜþµ\85¥ãÑñ\83\1eùò-Gü¼ùÿ\1d\8fÞ-\drÉßÿæ×ÜÕó\ 2äñhµp\8dÉQ~lû2á\ 5\ 4ϸ\80çå;\ 35ò¯~òUwÊþBÝþã\ 6~ü\91Ûßñ\ráóggÆ£GvÁç_1pí\7fùÜ\83þAöW\83ã¯\<iç\8e<ÿ\8f\ eüí÷\9f-õ\97ì±\7f¼×¤\9e·ýί~ñÿ\99¿àò%\93z>tÙáÏÊ~\e¸s\17¦ã\ 2\1aoá\83ØÖýõ)Mûß\88T$y\ 4C[\7fvËúû[Yãf-\1a\1d7//À?\1fÚ¸ÿ>4n ÃyÓq\ 1'\ fí>ð\90^Æ´\973s|t¶}Ë\81\9b\1fíe¥ñ$.\1eÆyóì\15=\9f\80KÎ\9b\86ó\9e[rÁ÷ZY\ e\8dsþü\103`®[s_Ó÷÷\13nü"\96ñ\80ó·]xC/«-WÊy;Ï\vpÝÐ?\7fd¯3\9bÎÅßcÐÍ\7f×ÁkÛ\98eoZ[VKß?\86í3û\9f¿\97¥ù\1c÷\8fc;åØ\v[n\83\9cm+[*eäþ_ðä·?Øb\rJ\8f_8yn¬_·¦\8dgu¶\95].} 'åg7tí\7fÒ\8d¤ìÕ²\1e\18Ïrìag<Õs\r¸Æ\1fÙ4¬Ý°ÇÚ\87;\a¦\97\1d?ÌÃt\1e\82kæÅ\1a\1cñ\85Æ\8f ¾\9dwép_½óOÎúA+\9bÄ6üt¯¹ó\16Æ(,\1ebL\9eßëÂï4îL\rmþN\935(\1c\98G\8eüµ\96ÛÀøvÞ\ f÷\9aô}:ïÁViçfl\97\{AãÜ$Û¯wùÀ«Y;ûÄ_ö²ØÚù
++©ó\18lïYrú¶\96÷ \96\1eÓ2ÄgLçDX:ð\7f¦c\e.\1eò\81¬yà\80Û[YðmÍ\9f3ä\838mÙ©\ fw\1e\8fmówǰæ¿ô\89·|w~ÜâÑ=Ã\1c\9d8{ÑÕ¬Z§\7f,\14
++ÅË\ 4ä-{\12B½h\83[[miüæ\1aR´\92MÛàïd\8c!ÇÄTÛ ¯B\85:ÜÅâ\ f\13ãõ\¬6[\17(tîgºÆwÏ\91-ÒÛ\9edß\92ðo Î99´\89zï\16ç\92álIèw¢G\9dðÃ\16_¬ Ñ2>\8d\7fÃpEWC$Û<\92«[é\89+t|Õ(£k-82ªù·9:\92\85- ö\81\7fÆÙ=G~rN¡û\10'\1aè\8dK_cæ±è\ e\1eþ6\91\8f]\8cÉ\ e\8d¶\89jæ¦d¼\9c`@L\bd£ÇÀ\9cÛx\93©Åá0ÒnÉØ&!ܳ?Á%´ßáå#K\80(£
++Ä \1896\94{'»¼\84DFöį\99MM/¦\96ù®b\18,ú ñ\ eÉGï3Þ'B¶Âß\ f%Qo\1eu\a¾@JÛ\9d\972²ð)Oßç{\8aG\8e³j÷k:Ìt®EHßó5Ë\9d \ 6£dbâÀa\1d\85I{v\8cmÀ+\87\95qK¡µ\13ë\88Lq߯í\1d^§I\1a\9f×\16,²B×®\88ùcùPnßHÒó\88Õnð\ 2À\80\11¶\aµb\91¡ Ì
++\8f\91§s\15/$\9eLu\99\80èÈúöäÞÓ#\1zÕI\92z¬.ë\99\83 2y|óÈb\91b4ɲÇì\18ÇÄö\89ñ(¦ìRÇ\1eu\88f»crz4'Öÿfïê\83íª®z®CÍ}6\ 4*ý\80\96Ö4"\13\9a\88ûûCH\e\15f"\86\10\81@\80@Ò\92B\b/@i\14Ä\80hëH\91\81Ì´Îı:Ì\80SZ¡@\e%\8a\85\8eãX\1cã\98\16\8ai\9a\96L\1a\1f ¥\88@-X\10×o¯}÷=y÷åýÃÈP²~\93\9b¼}öÙ_kïór×YkýÖ\812}]sÁ\17ßuzÚ\ 6q\ eJáÄ!¡\80SÅß=Ó\13A\8f ¯\82hId6G$&À\14#=Ò\9e7\13§#"\1e9\954 4UÅFrÏkö\8e¾{ÃrNÏ×`\9fc\91j0?iþóíÌi¤h g¾\9eã\18Á¼¯Lù}ê \13<\91´3tò\90°«\9c\a\9bà|P\8cú$+:F%4\88\9eQ\92fB\9e\ 4üv¡\83\9fè\94Ñ=\1a\91$th.\874#ª\82æ\11Ë£\8dß\81\19ÑΦDH\91èé7VB\1e\0zÊJ"\8b\84\18!zZ¨#\85à\9f\ 4w\ 2±ÿ\v\ 4\ 2\81@ \10\b\ 4\ 2\81@p(`hÿ_k6Þ1¹vfï®Æ\v÷GÇ_¹¬ÚÃgô{\8f5ûõ\89Ï¿o\rÛTsîW¾´Q¾\80¡ýù@^À-\1d>¿®ý?5»Þ\82\7fzK±1\86¤\¿wSó;8Ðþ¿¦ù)\1cÈG°»ñ
++üé/¯\9a¨ü{Õ\ eÍ6U\8cqñ®sng\8e=¥Ùvxl³9^9±þ\ e®3\95gnk³U~dÿ\86jKW\95ã`Cã\ e\18µÁoo2\e\9føÀ½Ì¿§«½õ¦f\8fÜúå+öq]
++lû]ÓlÔ_\9a»\8aù\ 5½ <ÞæR·\89>÷\9ftÞ7¸Î\ 5¶ï.ikX?±í\ 1¶ÁGÇ}Î+k\98Úξ£Él\94ïoSi\a\9bê\8a{×}\9f÷]U\9bê¾¶÷ë·\9fû\ 5®+i&agoû¼nbï\ 3\95ïϳ\ÖNÃ\ 5ÈöäOÓgùÓó\99»NeËû7ÞÎÔ¨Ý{uës\94Ob[óñ\18å\8c8rÈ\v1b\13_ÜÎÞu\v/gN?\1f«ÌÖÌ\1eÈó¹û/ã:\92u×Î\8eºs?qÅw¸.in§Ú¹Ýðà9ÿ1àûã¹ìj2;\7fbé\83Õ¶]9 7\94vSsúîØËÿê6®Ë\91÷èìö<\8fò^ì+}\82ÏðmsÆÙ>\9fMåk<z\1a[úî&\97oÝ~Ý\13üÌ[Ïu©Éú+7\9f¶\8fë\=»sf\ fúü¸þÕÒ'^\96rݲö\1cÝ0sÉ\ 4×ùÄòdß\19<\7fK\9f<ê\ eö=RÕOâªÆ\91¸üÖ%Oq],v\16\81@ \10\b\ 4¯\1f&å\85gÛ2¨å\9c*tuÕ\17\ 1ÿ\83\a0õU_\0ã\92\85\99\93¾\81Ð7\9b\ 4C0ìðÅ\87$(\1fé[RðÎf8B$\r\9b¼\86/\ 6\fÛÞ\15Kµ\ f6"\9aÛj=øòà\\0+)\98!¡6ÚÑL\12é\ f qåàþCÖ{º\f\ f\ eX\813Ü<\8cÎSùHh¸¥ä\1c\aó·)\ eÖØ\8dK\1fÄy\ f¸ø2Ìó4\83\|[,û*vü+´\8fÅ7\ 6\8c×X\8aò5\1f<}Íö&E5\18cª\9cñ\93béÙGÂ9öÇÐ1Ð\9a\v\ 3ã`ÎSÄ\9ewm×¼.\1aÔXx*Ðú\r+:ÅN\ f+½·ÔVÇÔ\19oR¾{ök)\1eCÉÛ\1cý\14>$\ 6.Ó¤?êbØW´p\12\ eÌ×pÞ09¨\10\83rp\9e1åÛ¸Ið3Î\ eTôð\90¡\9d \89Ñv\83\1a\12. ð]\81+\ fBûIÃ\ 2+\80s1\85àà\8eDJ\89£\86kC¦oÆ\19¡ö:\83[2døNØ\19ÓÙí\vé¨N\838~RGH®!Á\87\81ö«\\ 3q#\1d\1eøé\94s?Ê[ðÿËQÙ夤\ 3ªùy*Î\ 6ð\ 50ðÊ\80ú%ùÿ\ 4\ 2\81@ \10\b\ 4\ 2\81@ 8\ 4 ú¿@ \10\b\ 4\ 2\81@ \10\b\ 4\87\ 2\86þÿ\7fsþ5³'×ö«¯í¨?ÿ¦Æ+¶dÑ1Ìÿ§\8d\19ø:\83£í7õø^ö·OÕ\a\9cóêÁowí3ïü
++û¸\87êË}ló\91>këú¯W~3]}Ü;ùÿ&ûy/h¾À£¼a÷\95vëÐn¯¾»ò\86\19öáß×|øOßó·÷\ eø¿¸\8ec\18¦Ê\89>Ö{ú ¾Ç\ 2\81@ \10\b\ 4\ 2\81@ðF@á¨\8bªä¸S\1aÜ\96Õ\97ÝfmUÉ`\17µö\85×.dº`½ÒÙÃ!?\18gIÅÉÆÑ_>Y\13U {ÐÚ\80Ì<Â\ 5ßF°\ 4\86\18]DLBNÚ\82\9dÎ\83I1èBÿHM\ 2\9b"îÎ:ä\9cÁä\98@\ eí²\89!\rüé3µm<\91>#\8d\1e\Û}
++\95¿\93&dà\81o-øíL\88:\81¨\11Q\v\ e¼x Ä\83þ\r\85î.\81\9b\13\ 4\98&auÖGZ,Ft ´ZS/Î9\10þ!º DRpU¨ü\92* NÀ\ 5Ub;¦âp\9c*\86ÂgGã:\92\91ò\ 1±\13\91¤\ 6\9aBíh.`ö³ÞÂu?S"É\90\88#b3h@O»\93I\82\88\ 50Zej\98<iÉ\1614\86\ 4«\f\8d\93|\ 2\93§-\93\ 6\19av$yES\891;\8fH\15\84/Щ{\9bjÜÁH¬BWÿ?ã?OøËÉçffï±\16Ó}Ë\91î\8cÊó\8f÷\ 2E·¾\8d>\8f<~ìs¬w\a×ï\8d7=þÆSÞ÷/5¦Wõ{Û\9b\ e\7f`\9c¿júô\89/\¼\93¯[Óï=VîGüö\9e\v~®ÄóG:^ýÞ¦rÿ"úÌû\87÷l+|þ$ø±\9a§\80ùôÇl\8dó7üÞaW\e{4î\9eßWLÍE¿»Ía4\ e~^\8b]\1e\8d\83ߨxÕ?ü\83ù\9få:[ã¨÷Í\1eÌÿ³î¢\9dÌ7\1f"Ïsw\9bËÆ#.\7f\9c¹ásåG¿é\88á;\90ÉÜðóZ»ó\8e\eÿ.ǺkͱÒÛ[|ùh¬û-Ï\95\13³\7f\9eãÙéÉâw îÂ\89Å_¬<î5þzeÛãÑXw~¯25Çûâ!ßüAbϧ\8e!\7f¶µ;mï33ë\99òÂÇ.\10\b\ 4\ 2\81@ \10\14=Ï\15ÝG!\19\ 1©Ù|íµæõ8\18/\81¦a\12Ý\8c\b÷\1cK\1e\ 5dg
++¤¹ ¯\0i³\9eôwj¨@ÏO
+++(Ö\9cqÐì\919\ 3¯\1cH'ÎÁ\93bnS¤Y\82Ñ\ 1\ 4ø¤\97\aê\9c\14\RaI\8b'=")\98\99A!esvÈÐ \f\12/Ð\0Ù\99Aì;iÁfr\1c|L±¤»°`\1e\80.\ 3Z\88\fJ}çHÇW\8a&\80\ 4$\1aÉ? \90\ 4¢\ 6R¿ \88s^\13\9bJ\9e\14¼3À{\ 2däP\8dã Ëù0ÈW1\99÷ (§°:\92Kv%¿CÌ\18#u¹1è~C\93NØ.\83ì"1D\95HS¢"éí9"±\99Á\e\17\92 %;H\87\ 4O\83OÁ\ 1Q^jtx ²6\ 1¬\b\98\9føÿ\v\ 4\ 2\81@ \10\b\ 4\ 2\81@pH`hÿ¿ü\86øéɵ3{×6Ûù'çïYÊ6â@×W6\9eô\ 3ó\ 2ìm|ßï_wÂ\8bÌ9¯íÀ/à<úÌÝv×ylK÷±ß[ѸíïÙvLáówÆÓý/\94~ÎD?¯,=\ 5×½6tÿ\82ÆÙ\7f`^\80Eå:¸Ëç\9eúöWË|\94Vc½\17[\9cÂ\8fï[Å<÷p[\99Qøñ\e¿ú¨ÏÀ#Íþ=Êÿ\7fUëóØã.x¢rü[®[=k0ï+\9e2\8aë\ 6}.n\9cægn¾ì{ì\87`2Ûâ?3Ml\ 4sçÿ1}.ýþ§îa\99\ eâ\11\16·5\8crüsÞû©ý\17öµý[ûÔ©?U÷£ÆMìjÜù/\1d\7f>·Ë¶ÊlKésj>þ\19EfgÐçùϯÞÇ>
++Úuý\10 ³W\17\8e³o\83uµÏeÍ\adù\9e\r'q\9dO,ϵMÖ÷ϸôQ®K\81ó\ 6Ìjëû³\87×0Ç¿ó\91å²¢\9dÛQÿ\85»JÝÔ>
++\e§É5\7fã4¹æ\8fmù\ev¼ëü§+?¾çñ^~ë n4×ü\vm¼¥\13ÇÕ8\14]û\Óò0<ü\v¿]9ðmm·£ññ\8frç?Û|>Þ;vú^®\8b\96Ïà¶#\86ãÝõV®K 6\15\b\ 4\ 2\81@p\b Ø\ 4é«0\1c°\a6^§S×f\8atXF'£Õ\8c\83r¾ël¼BâòBæ\8fBÐ|]yðÙ{\17¼aÖyT\9b\10À`n<}ÉAry¤/Ï>eo`Wuô\95P+úB©\fzt)Yú6\v¶xm2ÈÝõ\e\96/~ðIÙ&mi|ÈÕѬrô$5\93l\8eZA\14Ñ\9b\f;´\86\v·£\9eiÅ \96h\12Oô°\16\93\bé\ f¨ß\95Np\1c÷%_\ 1¼îI8Y\17\ ezä[\83\v|.Þð$\91\80\99:úBJm¢®y\17T\91W¤\81ñ}´rò#\ 3|\84/z±\1e»\10µ§Åfï³NÁQÿ\19r \1d\880Å\aÒ¤\ 2VEûç¨K8ÐC\ 4Tç±G\ 3?\0\13IBy\90¿arÎ\ 2ãsòlG/vèf7Ç\8a\91¿Þ\84Xr¨\1dÄïÿ5û/Ð.»\90r\8b-ð^{æÅ\ f$nZµ\8dH\14áH=t9Ð\8f6Qß\1a+4¤sÐIÌÔ?\8dAÒñ\91:&±©\12A\0ÿ{\e\94ågÆ\93º\0v}\9aH°ì\1fàUL5\ 6\83N\ 3Lõ´ª\8cü\16Ê©D½D\84"ÐléÀk4£]\8d\88¸ ËÐd,\94vËá|\93<q§5JÑA
++1wò,\94ñ\91Çm\9a¼\rðR@\94@É1&ö\7f\81@ \10\b\ 4\ 2\81@ \10\b\ e\ 5\fíÿÿûÈ;Ghìú½%\8dÿïÄ\7f>bWÍ\87\9eú½\17\9b=÷\13§½ûk\95\17 ö{×¶\1câ\aÚá7·¸ýkOªùæSl§ÞÑúzèÎUÛ«]¼Ú9W·þ¶|\80ã×uÖÕþ»©µ{ùgÖ?Á¶á\íÍ»\9b}tóçì¯yÇË;K\81@ \10\b\ 4\ 2\81@ \10\b^\vàû\11\9c7)G§=<iØ\97ÁFð\1d\82r\0ÞÐ&\1aç§õ\9bqÎäâG\82\18ÿè\8c±.\87h\83\ 3!ZrÞY]<D\92Ö\ 1þãÙê\18\f\9c\10\94\89 a\bF\15?\80`ÁE`=|5¢\87ÏNJ:'W¹\1fá\19 ö\7f\81@ \10\b\ 4\ 2\81@ \10\bÞü\10ý_ \10\b\ 4\ 2\81@ \10\b\ 4\82C\ 1Cÿÿg×<þo\93kgÖ¼}£ùÿ8oÞ\17è3÷¿ç/f^=íú½Ííþy_\9b\7fn¹îuì÷^n<g¿ôüC§V\7füÜïÝÝøÝ\ eäÿ\eò©}nýüW
++ÿ_\0_à²r\1d~ýóvòõ\10rê÷\1ei\p\aæ\v<ºÌó\1dôÙvá¼\1f\96ë)ä±\9ek\1ci?¼å\12æâS¾òÑmo\9c\84+\1fXñÍÊ\19\98\99\8fnF\8b+¸úø+¹\9dÖ\95«î\94ÖçK\87_¾\87c\1c¢«|\82CÎÀ/®xt\90\83\90óÛ¥Y\ 3Ù\8cO,¸£Æ?ÔÜ~w\1f>h÷¥¹«x.Þ\ 4æyÛÔêÔ\9d5waÀî N5\9e·Q^Àµe¼\8bèó£-\97þ`PÇ1\15[\ e\1fÈë;\ f\¶\97ëRå\fÜVêî§ÏêG\1fòÌ\19\18\ 2ËlÇ4¼\80\9bK;ðû\9d÷ÌI\1fä¼\86¾æX|ºÈ\ 5¹\ 4ÏÚºþëÌ\19è5×1ß\1eb?Vú+\9e©¼\80\99û\1co\1c\85\7f\9eÖ2÷\9f÷\91Ûmigð\82\7fÿkÍu1ð>ì\9b\86\17ðèYú\7få|\88à\89)u{;¼\80§ÞËÜ\7fZñx×\1e>8\13ß¾wÅ\93µ®ÊìäÆW¹â»g߯u9s;æ²\9c:\1fâ\86Æë(<}\ 2\81@ \10\b^\ f\f8ÒtðH îjþðn\8e3\94sÌÞ¨ä\95\ 5û\eß\13\9c\89ÈË\ e¦¸\8c\9cì±rö\ 5ºì\83\v\9a:\8dVeäW£\7fAp\87\8cn%\9792©#\9dºQ.$\ 3î¹\14µWÞ[\ 5/jíÀïGe\9aS¢6È6\9f\9bÑÍù\86\14éö\rÊ\11\18\92vM¶!\14§p\9a\14(Û´\v\95G\ fIêØ?Ü\82.\91Æ\82Ûø\8cÊçgK\1ez\95i_¢\83¬¨\ fã+ç\9eq&(\9dI#"ÙÑt"Í\89\84\9e¨¨\90\r¾|%×\ e\94u*Z\93\\b\11\19ÆI(\1a)¼3VE³\ fÚ\92\902¾5+Ò`\90w\8e$H²Âú\91q/Ó÷Ô\98àq\9e\82w\81öÛ+\1d\14\88ïèx\90 RÐ$\98\bª¼\0¹ÑÉ\89\1a©çI_À\98 6¬gÊ\81v\8f¶\99Î\10\92ØgËþñ&ù¬
++Ñ!r\ 2Ö{+§¤Î\119øh\9b"\9d\8dºöH\r\ f\92ûp\98[O\ 5ì\91\v´üÆ\97§hî\90¶U¤\ 1\ 6Z\12ûò«HK¢-\8a$\rc\94U\9dç\82\ 4@WSª9öè\\ 5Ú*k\e× ¢} 9:\10®Ó\19¤©\80°Ï\e\87'&\80AÓEz
++,¶\85¶\81N\90£Ó\87>IRô\\80)S\819\92ê\15 Òg\10\1d\96\ 3\98\v\r!X\10I\ 2ðç\8f6âñ\ 1UgÄ>Ð\95\8cÛH!J`Õ$Q8G\92¤\a\90\16\ 3¢Å\8có\\ 2ì;úÿB}ÍÍ\93\7f\ fôknùQ}~YÑ\87¶àú\7fmÿQÑÛIæý^¿éÛû\9f\9f[ôpgqý°¦\8f.xÞ\15=ÏÑS×ïÝw\10ý|Q¹þ!ú\9csϪýU_®zÓÉ\1dÝö\14[õPÅúë\9cÆ\99þãÏW½PYÇzö榻¿4ç\ÖÓ@BÀzè\11\a×Qw·üó\17ì½ùdÖ'\a\1cô\8fLÃÃ~c[Ûò[\97<ÅïN¢Vòß\8b@ \10\b\ 4\ 2\81@ xs¼7ÒÙÙ\84×;\ 1ê&å4XåL²%\98\9dtdÒ«I!3¤hgÒ cò¤û¦ éVm-¨øI7¤\8e{Rg\95vYCÉÏ:\aÒ\9cSp\8a´À\0^þèKr\ 5\9d¨½\89È\rAã8\1d|òº¼¸ÐèÍàÝ\ f\12Ihïð\92Ç©\8cI\90r\17\ 2µðí=\80ÉÞ#@\9fz¢!h\ 2õ½BT9\1cì}\ 4¿Ç±¤\94ÇdV¤Â\93\1e\9eH\97§\89&Òòi¢ ð/³Ð\85±ßÓ\9dÊÑmÆ¥XÞ¡)äoÈ6#\8b\81±\9cO¬ä\11ð1khðE¡§\7fÍ´ï%\ eÆ÷ïñÒ\80
++aªwJâÿ/\10\b\ 4\ 2\81@ \10\b\ 4\ 2Á¡\80¡ý\7f×Â\9b¿=¹¶ß»å vþ«\8amûVú,Ù9ç\7fØ\ fßÄ~oIóõ>ñ\85\8bw\96ëÑ\9a±ÞgÊuØÐ?<±ç/Ø§Þø®ÿ4üØÏ\XýíµËl³ç|ì¸aë\97¯ØÇ~\0)°ÍþÚæ\93½nb/û¸§èÙ.¿¨ÙÞ¯~÷ÅûkÞ\80ê#p{\19o\9c>«öþÚalëwÕ\97{qó»^9±ïs\9cS~\90Ç}E³õ¿:ë\9cês\9ej¾\81Ye.ëJ\9fúî\9a7Þ°ïøêÒ'üØß6g\9cóÍgS}ÿolòZúäQw°\8f\0¿Ó\11\b\ 4\ 2\81@ \10\b\ 4oL4_r\ f¯l\15`Ê6ªúäk\ f\13w´Ú¨P2Ãûjo®q
++9Â1ÞDíHÓ(m\9cÏ\11êCÉã\9eH9ÑÚ8\9f\12,¿ô7(á\rýhLôð\137%>B+í\9dC@@ÄøA[m³O*\aãµ\8e \ 4óA{xÎG\87 \ 1\9bR À\80I8»Xâ\13HÙ1\ 6Nþ\161\1cpÕOÆ\86\808\ eg©\91\8dQÙ\80@\ag4BC\94V0H\9bDZ^°\1e¦ð\f/s$´§\91¨\17ç\\82O;\18îi¸ ÂÐvN\9a\ eu¢r\8d_øIô\1d õ§D[I3\8dÅâ?\88k°\89d©\83\82³?lþ1×ó@û\800 ÚBZ\ 5Ý¢àv@ÒE\1cLL$0\ 4J\90Îi,d\898\ e]Øþiuθ\84ü\0\8aÚѺ _º)\85\12\94C5©ôåá\81N3Ï42í\17É#©Xb'¨\8e\96\85\0 \1a@ìÿ\ 2\81@ \10\b\ 4\ 2\81@ \10\1c"\18ÚÿÁÛ6¹v¬7^lÞSñº \ 4\ 2\81@ \10\b\ 4\ 2\81@ \18Å\e\91\93Rìÿ\ 2\81@ \10\b\ 4\ 2\81@ \10¼ù!ú¿@ \10\b\ 4\ 2\81@ \10\b\ 4\87\ 2\86þÿÏÝðÕK&×ö{/tòöýÉGáÿï\937ýÞ®Æ\857oçüW\98ÿ/§±Þör\1d\~\ fݹj{Íe_R\r\8eõ^lu£ùê×\94º©óÀomsX5±f.ç\817\99¹üv´º\95\13ÿø óõ¹\9aË~Sëó\1d'¬ù\ 6óõYËyÙooü\80×ß\7fÑ÷8\ f|N\9c#~cË\ 5xÖþ\8fõ9\ f|RÜîï[>Äó¿ù®¿c\9e?ÎÙ0ÖÛÐÖ÷Û¯{¢pù)ë£\1c2\81@ \10\b\ 4\ 2\81@ 8$pÉ\95WZ£\ 2üð]P\853\90\94^\97Á\11\98TÊ\96®\81zÐZæ\r4:ë sr!:Ä\fx\ 5"@\9f´Î>»\88´}\8doÒ»äCpÆ\84¨jNBM:u¨õT\13ÁãètD¸\81SQ\ fÛ&\13cWÿ¿þðå»'Ï}¬÷Õ¢Ó.¬õ¬\vû$ñÿ\ 2\81@ \10\b\ 4\ 2\81@ \10¼¾ï\16´Î.xÒúµÕHEà½\8b>xkLÈÚ%¼[HÚ\18§SLH\1a\10µq !\80M~Vù\1cÖ£~ÔìáÏæg\87?\87£\86?Ç·\ f\7fN°ý\1f9ã-½\92\ 3\81~>ºSÆû\81c:e\8cõ\9eN\19vö÷vʰ\91Ï\19\96K\ e\85÷wÊÈ£w|§\f[ü¼N\19ö÷ùòÅý\v:eÌç\17;eÌçÄN\19>\bªSFÿºSÆüü°ìP\97:e´Ï\9d2î=©SFû\93;e´ýà°ì1ö\87:eô¿¨SÆü\7f¥SÆü\7f}X\ e¸ÿ´N\19÷ÿF§\8cûOï\941¿3:eÌoY§\8cù\9d9,GÌï¬N\19ã\9dÝ)c¼å\9d2Æ;·SÆx\17\ eË íWuʸÿ#\9d2äÿÑN¹¼Û\1a\963æsi§\8cþÖvÊ\98Ïe\9d2ú_×)c¿>VÊ?Íç\97:¸º[¦\ e>Þ-S\a\eºeêà·ºeZà5Ý2 ôwºeZÀïvÊ\9aÆÛØ-Óx×wË4ÞïuËÔÿïwËÔÿ\1ftË´a\7fØ)ã\81ùT·Líoî\96IÀ·ü\1f{×\ 2fEq¥ç
++ê¼\18\90\10\83f"**
++\13èîªîªBDbPQg\15\f\92\ 1'\80á!ê\b\8a/\82¨¬\8fh⨠¨(\90\105\88ë( D\13\97à\v\1fÑI|ðZt@ÔÉ\88\ 6\10\ 1WÄ1î\7fªúÞ9sG\93õû\92|»ZçSÇ¿«ë\9cS§N×£o\9fS\1ckw\96g\16Ó\ 1\947q\1cº\1c 9\f~·q\8cú·s\8cöÎfX\82ß\\8ea¿ù\1c£þÝ\fÓ\ 3p\ fǰϯ9\86}\16p\f~÷r\fýîç\18úÔ1L\a\88>À1ä-æ\18ü\1eâ\18öz\98cåÎDÍaèÿ(Ãô\80ü\8ecèû\9f\1cC¿Ç9\86~O3L\ fÄ3\1cãþç8\86ü?p\8cú¯0L\87§¾Ê1ô[É1î_Õ\82£\0öXË1ä¯ã\18ò_ã\18öx\9dcÈÛÀ0M\bop\f{lä\18ýù6ÇàßÄ1ôÝÄ0M\b[8Æý[9\86>ïs\f}>à\18íÝÎ0ù÷\ e\8e¡ßN\8e¡ß\87\1cÃ\1e\1fq\fù\1fs\fy\9fp\fyÍ\f\93ÿ\7fÊ1äý\95cÈû\8ccÈËd\18\86¼=8F{Ûs\f{íÅ0M({s\fy%\1c\83_)Çà·\ fÃô<|\83cèóM\8eQ¿+Ç\90¿\1fÇh\7f9Ã4A\1cÀ1\9e¯\ 39\86ü\838\86=\ fæ\18ü\ fc\98~\808\9ccð;\82cè×\93cðÿ.ÇЯ7Ã4¡\ 4\1c\83¿ä\18õû¶`AóC?\8e!¿?Ǹÿû\f\93ÿ\ fä\18õOà\18í=\91c´·\92aòÿ\7fã\18üNæ\18üNá\18ýõ\ 3\8eÁÿ4\8eÑþá\f\93\7fÿ\88cÜ?\8acÜ?\9aaòç38\86>c8\ 6¿±\1cÃ>ã8Fÿ\9cÉ1äMà\18í?\9baòçs8\86¼s9\86¼I\1c\83ÿù\1c\83ÿd\8eÁÿ\ 2\8eѾ\v\19¦ùá"\8e!ïb\8eaïK8\86ü)\1c£½?á\18úLå\18þq9ôÀº\82cÈ\9bÎ1äý;Ç\90w%Ç\90w\rÇhïO9F{\7fÆ0-À~Î1ø_Ï1øßÂ0-°nã\18ònç\18í»\83cÈ¿\93cÈ\9f\ 3<«]\8a\8dÛ¿äæ\8f0\ fGmç£VåòËÏOêë<l¾üüÅë\87yú\85²íüÖª<Éêíüתܴ\9d\ fyy\94g¿(O¿(O?úèúËΧêë\7füüÊùÓ\86,\7f¾mU\9e´\9d\7f[\95ë\7fü|ÌùÓxö÷æçV÷«¶óu«ró÷ço~\7f\9c׿qª\9fÌbù¿{\7f0\82íÑH¥ßó5)t~\89¯\19ÑÆ'ù\9a\13:½ÀË¡s p\97\82â=j&]pa¯ñ\93.\9a8¶ àx¶o¥ÇþE^\a<þÈ1Ú±&o\1cèËöÍdÖ)|_\ 5¥Ç²}"µá(v?É»\9aïs £`ûz*\7f/ï¹y+ï9\1eÉø\93Ù\97q\eA¡\e8\7f0ü\16{¯AÝ6\8fïs`Ã#Ø{\v\92ÿ<·)\1aÐ\83\95\93[\9fÇÛ\výÏeûX*\1fÎú\90p5Ó\97\86\89\85|\1f\ 4}\8fcýáÞaäÞéÈ\1aÆ\9bl},»\97x\8fa¼ Ob÷S[®â{R\¸\9ccØrWÞ3ü\vn\eàßrÛÂØ ëK²ý»ycÞ
++n;ð¿\93óC\85?qßBù\12¾gC_Ldú\93-ú0ß !'b\98Êÿ\927¦~\9fÙ\87î\9fÅ÷ÀP¾\92½S¡GòbÞ\97(ß\9c7&ÿWÞ\1cw=÷-\18ü\ff\7f\92÷+Þ^Ø»CK_\86\ fò¶¢!\8fqÛ\82÷@¦;Ùy:ï+\¨b~Eå\ryóçSÜöà?\9aéFm-gÏ\ 1Õ_\9f7ß\ ea¶!ß\99ÊåÃq\ faÏ\ 1ñû%o+lñ\bo\ fî¿\8bûy@ß.µ\1e\1fwçÍ\ f\83\98|zNÞÉ\9bo;¶ØRlË\9bûVç]\8a¹,(«\98ßÒxs\1dïG\94×s¿\84íNfº\90\8ea}Cm?\80Ù\92üð7¼o¡ë"\8e!ðfî\87`ð,ï+\bèÆø\91í÷iik\\98i=ÏÌáv\aïv\99ÖóÚ\9byë å¼_ ì\7fçÍëÃ\98_QÛ~Êm\ 3yÝY¿\93í\1aóÖMÿÁû\19üÏaÏ0=\13=Ù3Kýúç¼uÖËÜö Í\99-}E÷_Ëõ\81\ 2\872}\88ÿéL\7f²Ý\fnkè\7f+Çä\b\99Öë\86\99¼\1cü\9fà}\13¸\98´´/Ìþ¬\9fHÏ\83\99.46ÝÁû\ 6~¸g¦õ\9aâ>n+èÒ\81÷-p\19ǰeG\8eQ¿\13ßÓC·Î\1cC\81.\1cCÁ}9\86m¿Å1äíÏ÷ôà÷m\8e¡ÿw8\86mºq\fãwç\18ú\1dÂ÷ôàw(Çà×\83cðëÅ1ô©à\18íïÃ÷ü¨\1fr\8cú\11Çh¯à\18úÅ\1c\83\7fÂ1ø+\8e¡¿æï\f ¿á\18ò\8fä\18ò\8fâ\18ò\8eæ\18ò\ 6p\fyßã\18ò\8eáï\18 ïX\8eÁÿ8\8eѾã9\86¼A\1c£\7fOâ\18ü\aów\f¨?\84cÔ?\95cÔ\1fÊ1ô\1dÆß9@¿\1fr\f{Tq\fÿ\eÁ1ä\9dÎ1äUs\fy#9\86¼\1fów\ eà7\9ecÜ\7f\16Çh_\r\7fg\80û'r\fùçq\8cú\97ò=?úg\1aÇ\90\7f\19Çà\7f\15ß³Cÿ«9\ 6¿k9Æý×ñ=;ìUË1ô¹\81cð»\91cð»\89cè7\83cè7\93cÈ»\99ïé!o\16Ç4öq\f\7f\9a\r<?»ç\87¼¹À3Úµ#<³z\8f\82\82º\ f\ 6ÝR\8fEË\95\93.¿¥\12\7f¯ë[2«tOì\85f\1f?ksqAAïdܬæ½áW3ï\9dE¿\1f4\1e´äÖæÂ\82\82UÃ×Þ¾\f¼\96.*¿³\ e\9b\8ea\13\ e¿\93xß\V1§b/ì\19^Oæ5\83Ïqµ·þrY{ü}ï\9aù\9bñ·xǺ_Õ\15a\8d¿¬×]µí Û¬\93ï¢uÐ\89eáÝ\9bqÿÖm\eï\99F×o¨øu5pÏ\92[\16\94\83ß^ÅÝï\86\1e¿\98¶æÞRü\9dq÷캺2¬ßÞ~¤®\14üú\1eyÍ\ 3uÐ÷ð߬\7f \16í*ÝòÀ2´§þªk\16ÕЦhüé\8bë¡w§û\97,.-\85ß,\1d¼¤\1fî¿ç\88åKJÁ¿¬ÇÓKÊQï¶\e\17?T\89¿\8b\8fßòP\ 3êWo8éájè3ekÁïjPÿ¯\8b\7f¸|3ð1{\ f_^\8bzÓ¿9gùfÜ÷üÊÝOÔ\81ïä·¯~²\ 1ú\r¬(\7fº\1fô\9f=ꦧûA¿\8b/èú\fý¾úÂ\8eyÏ\94Bnͺâgëñ÷ÄEß~¶\ 6ü¦=rÖ³\15¨WØkÀ\vu°Sï÷:þq3ø-Øoæ\9f*¡\7f×K\9e{¹\ 2ü¦Ü¸õeZ³\96u»ö\95f\94/|jý+ýpÿü]\8b^\87>W\8eÞk%=#½{\96,\87ÜN\13~¼ª\16rÊÇܾª\12¸qÒù«)\82ºË\9aõ«ëa¿Ûv´_S\aùc?úÉ\9a¹hGE窵´¾\99*G®@ùcûì¹n\1aäLݯ׺zÔ\9b½ Ãësa\9fgÏ?¾¡\ eú.|èì\r\9b¡_ía\97½Q
++=\164Üÿf%ø=Ñ|É[ô~{êäLã4Èo?¾sc9þÎ~uZc%ì8·öÝÆZÔ{uW\8f&zOÝüéÙïÐï\9freý»u\90sâI\7fx¯\ 1÷%\1dÆm©\ 6\1e¹nÜûý ß\8aþ\9d·\95¢^ýÍÇl«\85~SçÝV\v¹U[÷Þ^\v}úõ?u;\8d9\9d\aÏÚ^\83û/\9e¶ÿÎz´»òÅ\13v6À~ý;\8dØY\8fò\89O¿´s\1aÊ\97Î~ãÃ
++´O_±þ£\1a´ëç·wþx.ø\8cþhÝÇ4V4\9c¢v7\80ÿÙ7öÝ]\ 1}ª\8e\9e¹{\1aþ¾ð\9dGwW@¯ù\9bJ>é\a<}ÌÑ\9fT@¯Ã¶W5Ó:þòY·6Ó\1as|à \9fÒ{d9rѧËpß\8aA\87|FÑíû÷]ñÙ²"\9fÿÏ\93'O\9e<yòäÉ\93'O\9e<yúzPKüÿ}\8bîÝ3¿´0s\ f\85\ 5Øüz½w\1c0ÖæìÓÆ\14f\1asy÷úìX~¬Ëu'q}¨½\9f~S.\1eÒíI{]\ 5aa¦\8e~\9a´¿eß´å\e+èºÔR\17fv\96Z9øwÏ3\ ex\8a®+\13\ 4\85\99z{\9d*\9dðq\9f\ fèº\ e"ð//Ë^?fLï\1dtÝÈH\15ejíu\8aI\98|Ø$\9bÏ/\fí'
++\ 5E\99~¥Y]'6½ÔÃ\95ÙOÔP6À֣߿Æ4\f\9boË¢ tùü\ 6\94fy®{pÌû®Ì~j\86²)¶\1eÅILغïï]\9eÃÄÆ\19\14eVäÚÔ6Ïa³-£o\8d\8fÔ#\1al\99Jìç<E\99MÖ¦ôýÀн\ 6¿ãÊ\8cý\8d¿(36'ï\9c-\e®sý c\97\93°}ǬM~0ý´&\9b£!Pi\e*rõ\86o=²¿-\vãÈåU<Ä֣ߣ\ 6¯>µ½+3¡Óó·9]ªã\89[]ÎÅØ¸öuÍå9l.>÷\rWf¤«×åoäclÈÙsÕÒ*\97sQªÔ\9eU¶\8c¾Ñ\1fÕ\18Ö¹¼\8a¢ÌBÛ\ 6ú®aÈ;\ 3¯ueqàê\1d\98\937¢©®»-3ö§¥\82l.JêÛãÖ¾ÖÇúb\18d?¥ñäÉ\93'O\9e<yòô%)\9bG,JL\14\19\85åZ\10+%\f}G`cH#)",á´\10\94\83,J°$\8dD\92P\1e2)B\93\b¥\ 2\91Ð\ 1å2
++\93H\8b \f\ 2l\16"D\94\88XEXþF*\91FD±À\92=Lh)\19 A§£'J\ 4 }C\99Íeæ¾\ 1U\94eÍds¡\99XDPI\89PC\1fchQì¾ó\15¡û\ 6G\980\ 6W°Ô2\12XQGX\93\86"ÖÂ@×0 ¡J&\92\92¯i\19\8b@ã¾0ÆF\0WHm¡Ã\18\17\ 5Ô6!Z$#\88J¢P\98(\942\14à\8bkA\12Ã\14*Á%\15\87\81ÁB4À6CQ³d\1cànÀÀ(\9b\r\ ebc¬¶qQ\ 2¬Ð) ]\9c\1f¬¢ \ 1l\98@µ\84\ e\7f\87Ñ¢(Ða\ 2sB?\15B\89$\ eШ\0\86\92!mØTd`#T\8bÃPư}@M\8bcJÎ\1eH4D)\15\ 6 Z¬©\87¢XÇî\eÙ\98N¬·ß½¹o\15Ѭ(\81Ò\91ý¾Ö}\97\ 4\ f\90\ 1úEÙï\8d]¼Nh(ã\1c,\1e¹ïþtBgÕ£s¥Nû \88©Të\0
++é´\1fÑð $)"\bb E4ó3£$åÍ\83§A-t\ 3,\1d\98\ 4}\95¨\ 4Ò\8cÖ:
++¡«\ 2?\92\1c\87è®\0²á\7fð ¨m$]\ 2\ 3¨\826\98\84\84»ø\ 34+\8am\1cuV\1eø\9bôÿ\85mshÀT¢Qpix_¤Üÿ\83-\\ 1»F\Pð2t%¼\16Ý\10\11
++\85\8e\92(ÑäúðzIæD?ÃØè¦\10.¬¡p¨È!á\1cø\v¯\8a¡ ¬\8aÖbgH½\8d\ e\83\14ò\ e4!µ1n¦\1d®¢¨\7f#uh(¨Ê~§\1d£6=-p´¸¥=p?\ 1w\93\1a~\99Àð\86\82äüïÿ\9e<yòäÉ\93'O\9e<yòäÉÓW\9füþß\93'O\9e<yòäÉ\93'O\9e<yòû\7fO\9e<yòäÉ\93'O\9e<yòäÉÓW\81Zâÿ'\ fx,Ê/-Ìt¡ì\95iüÿ0\eçO\81#\85\99\81¥-×'\7fÏÅÔGqafs\11]§\9cô\a×/\1cîbØcU\98i´ï\19(F½û©=¶§y\ 4\92Â\feYÌòé2Ú^7F\14f*m¾\0\8aÝîõÌs§¸ü\ 2\89\81>6\16\9cÎÞ:ü\83\97?²y\ 4\ 2\ 5>õ¹Xï\83_¸þu{=¦ü\ 2ç}AÞ\81eV\7f:ó¬òµ\ 3wÓõ$\89 çÒ\96|\ 4\7fîú¢Í;`\ 2´K\96dõÿÙ\15=wÚ¼\ 3¡\94E\99¡¹XøòûFtö \84\8bÙß\95+«~´jµ+SÆÅ´\ f²ö \ÑCÂ\9aFg?móW\17e6\16gm2©éÜ»]Þ\ 1{\ 4 ÊfX\9e\14C?ü®\9a·Ò²4.¿´¤¥Þ 7º2£\1dÏ\19¶_(çúØÕÍ6\ f@(¤teKs<OW£ßueq\9a\a`£-£\9cÔë\1f=Ëé\99dó\ e\hË(×Ã¥\aU»¶+\9b\96\98r\19\14fÛ÷ð¾ã6¦e\89\8bÙ_hë\91¡'¼wì\1e©\8f\ 4\8eçè\ eÙ²q\9bÊ®u~\92¤y\0v\16gu\99¼ÿ\18§§±G@PÎ\ 5+\8fò\15,í9âý´,qe]K²¾1~Õä¾®Ì\86!¡l³õ'ÊIÞÿ\88a.ÏA(Ò|\f\8b-ÏÏÏ\9d°Íò¤3\12O{W,´eQ\98æx¨ÎÙlÊ\95ÃÿâÊâÀµ¡Ò\96íMºö8Óåj\10öx\12\945\16eý¥m^\85\86\^\8dÉ\8fÔ¬Ns'¤9\10vuÈö_Û¼
++\15%Yyóô\ 4'/\8e\95\93wuÎ?§\1eu\8eã\19«´ÿ¦\17eåm_r\96+KTªËÆ\ eÙö]¶d¤\93\97dý¬S._È\88¦SîNó8¤z\ eú\e9\1e\ 6Z=)_ùà\rË\97¸2\95úËó¹\1c\1dU\e\86ÞäÊ\8cqmèTÒ"/?ÿÃÀ\ûÖÍ\9fú\86\eCìQP(«Íå\8d8¹iàÁ.7D\94úÄÆÂ¬Í\1e?ôâ&W\96õÝ\9a\ e-õ\16\96¸2¤\9fH<yú§Ó\17Ä FBa^Mb\\8dè¢\8a\,¤\8d\87\f\94.pg3Pô§\91Q \13ü#C\eð\19\ 5\14},C¥©8¦ \85æÓ\88¢6\r\ 5/ë0\90qHùf"\1dÐ\89Ê\91\911E]ÆÆà\16\rut ÂÀÄöôåP&`\18Kâ,d\1c\ 5F'aB1»\14w©)PÔ¨0TI6\8e\132ètf\rÕTìâb5ÉO"è!L\18b=\81ÿ \1eZ\80¹"V\91\8bêU\8647\14È\eÇ\ 1ÔU\91\81~ID÷\13Òö\98D\1eË\8aÊ\10\12ÓJMcÄ\16±\bd@±¦\8aB¬É\ eZc\19\92\b\11\1ae"\19 \8a46\89Àt"\ 3XÉP\1c³¦;1G\ 6
++\ 6wë\19{¶\93L"MA©A\9cDB$
++Ã0\f CÔ\fPD©\93(ô\16V\13A\14DR\b\85y_\80S\f%\8c\81h\81ª\14\1e\eÀ\1e æE\8ah\86¬$\88°xбv& \0p\ 5\85)ì\15\95ã\10½/cpRR«\88"«a{Íb_Ã8ÑèÝÀ\9e3íÎQ¢äI\18ÓÑ\ 6!]þ¥ôÞ\¼,n¡àsÌPI\92òJ4VEîì Lö\89\8cÓ8sLF\92\9c\86´G\8b58J¥\85@S¡.Å\1cS!\85ÿj)CÔÃ\\ 3gC\11µ\ 3.g\12\eP\1c%BÛXe¸0ì¦\ 3ò.ø5\96 \14½l({\11\1c\93<,¢\12\8aÌ\8e(\98[Ji ÑÐÚ\9c\82ª¥\rá\8eÈ\19cz2ÀÛ®Ùì9DB`f¥jd=ø\ f\f\809\f\7f0ÿA\10\1e\1e
++C\87
++\82¢Ó\ 5\ 5#+0¢àe¬îLdàîpMEñýAÎnÿÊx\7fÜ\14iw\8e\eÅeGôPC#Ø3 ç\1fÒ >\9e90\80&`\rÍ\89wd\1fB´5¤&QG¡ÛÈÅbzÎè\0u¥áàx°Q¢-¯\98"¦\ 3¬7\84¤èþôiÇ\96\80âèÑJ4\ 4\8e\14§ã\90\813\ 6\92\1e\14%R{Ó\83©ÁUf}ñ_\1cÃ\ fÓQãñìP
++\ 3©dvLø\82Ü\b®LÂ\11iè\82\ fà©\11\8a|\f=\86'\12Âp\rjJ¸+Y]k¥1ÎI\8cs¸\15\ eCi\13\94²\1eJJaÜ\80Kb]ià\ 3\ 6Ã\a\86¾\90ÆNò~\1a4\r9
++ù\9b¡pù\80\9e\10¨\1eÆ* hÝ\95X/\85OclÂ3D\83\fº!¡Þ\8e\13J´\10+aÏB\ 3ï\80Æi8Aú\9c\vJJ\10Ã)¡jâÎXA5<\9døO`yáÙÀ8\8aAÄ\ e)1å\ ·Ñ\14\9a¯Ð\8f1Y\19\83
++\86tô(L\8a\15$õ\1a%££\a0vr(/\81=w=rs\r\8cêÆr\19 g0 :6ö\,wF\13\8dV\18\900^ºó¨l\e
++ÜY°\18ŵ\16vØ\85
++"Hëh<¨ÚHw~4
++0¤áÑÁã Gt÷(\8c|pd<cÒí%ÝÙã\18\96°tGã0^»£\ 1ÝYM´¤mÙÿ/h×í̶ûÿÂ\8e\9f·O.ÊÈ\96¼y¯\8b\aÝÞ6L×òçÙ2:óêG÷\ fYãÊÜ\91\99Ø«äò÷}X;ÞåéCO¸²±¹½ÃĦ"áöÄIäö\15\13ʲkò;ú\8ejJË\94«·ØêHçÙï¸oô¦t/\96îU\ 6\95e÷\93U\8dßíæö8\81p{ÍÙ¹}ïg¥ÃÒ½\91Në\rÍéùø\9c\93Þt{\87 \11~ æÉ\93'O\9e<yòäÉ\93§¯×;X\15Q\96¾Ø¾\9c1é{\ ez;\82]u\10Ùý°²I\12m\8eõt_kT\10º÷\1fØ\95\871öê¡ÝOcß\1f\86Ø\97FØî«\90\120jzÃ!\15öáFá\1ez3\13aç*èu\ 1½G\92!½^\81¸Ð¾ \8b\rØQ&>lû±=Oâ@Óû'ìº%¶á\89¦÷\1fö\85\13nÐÚh Éî|[J\1e¨uö=Íÿ±wIPMB\89$\88q7Ú%éG;«gH/X¤ \ 5%\0\8c%¤KCª\v-è\9d\8a¦W\96h\97H\8c\86aé½\8f\88\15ýÚ®(« LHïNE\12\b\9fÿÏ\93'O\9e<yòäÉ\93'O\9e<yúzPËïÿó^¼r]~iQfSî7ù¶ß\94ßc\7f?ÿüoÊç羯\1dÕTÙ?=?N»ïr7ç~Ë\9fóøX÷»»\8c\95û¾v§-ûüï\80w}á÷¼\9e<yòäÉ\93'O\9e<yòäÉ\13QîL¿Pÿ\7f\8b×)ø'Å\84Ù\98\ 5ÿû¿'O\9e<yòäÉ\93'O\9e<yòôÕ'¿ÿ÷äÉ\93'O\9e<yòäÉ\93'O\9eüþß\93'O\9e<yòäÉ\93'O\9e<yòôU \96øÿÅÝ«/Ê/-̬ÊåÁ?èì#v¹óßBQ\98æÜ§óÁ\8a\87t{ÒÆâ« ,Ì<Ñ1{ÿ¤Kûü\ f{×\1e«YUÝçkmùæ\89(TªÆ\8e@Ë03\8eûýè ¥v¨Ô\80\8fÂÀ\030\86!L\9dËCB\ebiKRS\1f¥@\e4&¥í¤\90\16ì\ 3h°iEÑ\18\fX©AAQ¤\96âp\ 5Eª\f\1a,\90ö÷[{\9f}ïÜï»Ó?\ 4\eÊ^\99ï&sö9û±ÖÚûì}Öã÷=^÷Æ\9añè\91\96\ f`ýÞ\ f\9e#×\937C\ eþé\18y\ f¶²\7f8ì¬RæM(¸_\8f5¼¿IL·=Òç7âwòw¶þUÉ/ *~Þu\r{n\12\ f`\8d\94]\80ßE×îúÏ\82k¦+.Ý\>\83I\³\aæa\89\9d\7feÉK\90+ÞÁݽ7ïyü\80\82\17æ¼é\8aשS§N\9d:uêÔ©S§N?2 >¤ò\8c\94÷\15\9bTGMXKç¢\8e8\8d\9a`s2\89@§*\18¯qQ\e\eq\vî³Lì\8f[\88Pè½\\97:\98º_[¥|ÎÉg&ðO8§fKüÄLxöLL@G\0D\97\89×\18\8d±L¸\8fv »\17\8cñhA{\ 2d¢ §\b1\10\99Ã?;K<Í\84FG£¶áó\ry\væc+x¥3\ 1\113\8e\98¼\8fñÿ:\12å¶`\91j\f\ fÝ\89íYeíb\98¦óÏÿ+>»f\ 2Þî\80Ñ5K\87³í{Ö=ô\96r^\ eKÆ#'¸ÛÄ\0¿à\92\rß+çvkÇ£Û\e\1e÷\86½\ao/çò\8cë«\97\ fgùß\7fó+ï\90s°qq<ºP°¶OÃoí]×\9f$×\9d÷ãÑöñôï\v{Z>Â×ï}é;äzÖ¨§`Ê\13Çý\8aÙußçu\97]\18W<râ´¿öÙ·l\92ï\ eÐ\85ñè\96\86µ>sÇ!\9f\11\CmóxtÕ²¡þµ{¯\92o\ eÉyÜ\7fùò¹ëg~U®GÞ\7f骡\9esO|Õçx=+\8b~\9e°|ø\ eòþß[û¤\×Î\8dGï\93ûOg=Oßp¢\7\1eüÙÑî\7fãÙ\eöÊuÇ~~\úy\13å³ù ÏËu\9fôÒÑÛV\fí¾ú\86³î)üW¶`\9b\7fwÙPöôMCY¬\18\8b\aK}\17\92W\87o+Ø\8cZé\82yxY{î/\ e?ó\8b¥ÌÆòÝäSmü\93Ø\8cï\93ç¦c3º\15Ãw\9a\1d_x×Q%G¤ªy ¯\91ç¦ç\8f¼jù ÿ§ßðöûKYp¥/ïi:03»öF)sº~Ã9Tôà*ünÞxZ\19\83w¡\8coɪ¡NõGgþ[ù\96\95MáÙM½ß~íÖ³hU\1d\9f\8cáfü¶ßs\9b/e!TÌJÁ\83ÿ\10ÇqÌy\8f\962¬\ 1Rv±Ôù
++~\87úé·}³\94å\Ú+y5\89=¹åÆw~[ÊRÁ'^:\9aY6|3:ç\91Uï-e¡bk®^±øw¯\93W\ ec¸ïc3_\93¹ª¼/¼ÞÝôë¤Ë6\97\9c\9b\84[\91²;¥ìTü~S\9fó\98\94\11,YʶH{/ã\1c}|ã1µÌ\94opÇ7\1d¼ôÀ]_.e9\15¾\Òtâ\15G\9e[Ú³Æ\96ç\9eY9Èï¬Ù\1d\87Õ²\úr×xñowO-\eÆpÏ\1f\9c^¾Ï¹è\v¯gV\fun\9d]uxY§°\8cKÙÕM¯ßý\86]_*e±Êv÷Òa|g=ö²\9f¬\18 u\1e]¸b\90Ñ$>è\9aå\83\8cÎØó\81£kY(cxi[3·ÍÎ|¤|GÄ\8a]twé £'nþ\8dÒ\97\10k\9dK\1a\1eé»\8fÜVÚ\8bªösÜÖÛï\7fhÛÃåû£vEç\vn*õì Õ3\ fJY6u\fÛ\97Ï}·üÛÃkY,}¹º\81\vó©.\1d\1d½rèË\87?¹éÑRæb\19ßÖåsß;7\1dV¾i\1aÑÁN\9d\16ìÅ\16îW\b:O¬å`\ 4S^`Å\v¤µõA{¦?J¼*°ÏÞ;o\88%\8e¥#2GRÆÆ\89Øà\89HôÁb»Ddh\9d\9e»}^Ù'a«G\b\85í\9au|\1aµâoH.¡u¬ðx§8\82Y\13ÁÙgîö\98Ä ûC\ 1º÷ؽ9\ 2]\v\ 4\95FAò\92W
++ÿåz;\13H\1aïrÁ1Ç\90ÑBò\18¥\9f\87'-}A\e\915\80}\99/j\8eÓÄ\14$\9f\15X\85w\8aÂ\94&~{À8°7%\90;\11Þ±A\8dÁ£S\84³"#4ö2Dw/\Ð »AìI ·\1eÐ\e6\94\923\8epZ\94\8aÅKÜcW\87w«\8eN%Ô\1e\14áÍÁJ\ e\1doV\a¶\ 6B´[Tã\ 2Z\0GRô¬){¦À\ 2kP?ö&\v°Ð\eV6
++Ý<|°%óð°\9f\8f¼W\14¶`s\13Æ\9e{ñ\ 1ÿ+\839\90°\8f\91ã³zÀê¶¥¿>º\88ê²à\88\83×\ e#ÖT#H&çáÜ\91¡aÁùúÿ\96w,P#\8cÀ\85\17\99j\9e\ep¤0Ø\81@®&ùáÞ\b"${\0§¢ðÂRO17\96LÅ\ e\9fËm&\bhØásr@\86\1a\8f\81\15\19û-\ f\1d\15Ö¡MÂ\9a\11à\fªCTw9- ßà)ÔÏ\ 5<
++\ eA\8dQh¦\9e\19\84'.@%\ 2Þ\94>Ô±¢\16¯æa\9f£yv<\10½M»¹¹µ8®\19\94Kç\80\1dYâÔ\8cÙeÔ\ 4\16%\958q¡ÅÄP³<ë@\9dÑ\83ÈÝ\86$PÃ+43\v\9bIÄtS\98÷Fàã£\83ð¡\17P\1fN~4Ç%\ 4õ%Ë\85\ 3\92åJ\ 3^B¯-Áßp\e\81ìC\0s3\17$H\9d³\85Ðo\90\89a\9b>\195¬mÐ=®c\9a\88íè\r_È<+\12îÍsQp¢;\90\1eñã¼,\ e\98ÄX¼0ýyàó\16ÂÊ\84¬Ç¸3aîx.\f2\0.X\9aªOØ;ÈÇPÕ0\9dÁzü?Hö9Lp0\1aªàc"$\à\99\14ÒÂ3\14¿ç\82\18©Õ9¡\r\9c\8a] \1e¨4\87Ë\97!_\9e\17q(M\82\17o\12\967Ü\84\95D9\f\18Uc¡ò\18bàÉ\96bÐe&\83\83\98s8µråà\99\18\r¢3\9a»\ 1\8c\ 5\8beì#à\1f\17C\83¡cÚEÑwM¾\r¸÷\8a# \92\82Ïc©U\8e\8b%Ô+0\19_$\ 6\1f\96H(\80s¼B±c\88
++í°W8\8báå\ 1ÞPݰ ¡÷P`Ù°\fz\87\89\rÅ\82\86\81Ç\10\9cò¥o\9cj\9c\14P4g)\93dk\9f¡Üh\ 5Maf$.®ä9'"\14\15µgª\8f¥à¹p\82I\9a/1\1eæ¡\ f\90\ 3×øÈ,\81\96K\16êÂÊ\e\ 4\90³\ fL\8c\ 4HTT\0,\9eÉÿÐ\16ÎF¸ì¸\x\9eN2\85\93E\87ÐK.¹\18"_§<aiÉ)\88\ 3>êɲ0ç\101=\84Ý\81+\vß2Ô\95Ä׫¼ý¸
++xnŹ vÿÿN\9d:uêÔ©S§N\9d:uêÔéÅ@söÿÝ[W=¸°t<º¼ùóïëÿ?Ó®\1fþëG>Ql\94\99öö\95íú»Ö?[ìFZ\8fG\974\9bßë÷Þv\µ'åqÅû\9b´çomõ\1cõÃ\9fÿ\81Øó5¯_ºH|Áv©çOð[÷ä\9bî\13{¾3èÏ\ e±áÑnv×¶5â\17À¯Y¸¿Å\16ìk·/68Ú\ 3×>óÈ.¹\9ecZ:zªÙù'mãïivÂÓþræ¡\82\91hr±=^Ób\ 3&ñ\13KL\ 1}\13Îÿ\96QÕÆ]mêÏ4\eÛÌìúk\8b\8dÛØb·»´Ù]o»î¬»kYÅH<´Ùkw>þ3\9f(eü\92+öÌ\95ÃsêºÓ¿PdiM±=\16;/\e=çÁón¨e5\ ecKã\95}]}.ªj\ 3.~\ eôOØ\98N\7f ÚÆMí§´7Ýn®¤Lü\ 2î¿uE)K¡Ø3×K{\aã·ëá#\8f©vójÏ<¸ÙH'íæ[\9a\8cn½±Úði\1f\91²[\9a}ø\9d³Ë\8aÿ\ 2¿\ 4JÙ\92¦#î%[¿QìØ®\8eáÉ6öI\e÷õò\1cÿl{è\7f,eté\91²\99y6îõ·\962Wå§\9a¾Ü{Ë\96oìkÇ.6uÚ\87\ f9jÇ\17\8b]ÙVß\86\7fÚ\8f=zgÓ³I\9b³Z5\8cïwn>³´\17\ 6\1d¼[ê|\ 3ËVn.¶ãèëø\9e\99\17órÜ\8dÕæ¬\8aÜ75ûð×nÜòÍZæ«üVÌ=÷7W\96²\1c\v_®i<Ûò7½¦Ø£\a\7f\90c¥½évìã[\1cÒ'>ðæGêúQc\81V·µâw\ f8a¶Ø£Á\98¾¸wêÔ©S§\1f\ 3\89\ f\ 1½\14¼sÎ\1a\93\1c½>è9\12µõÉf\1an±Ç\f.ºàtöt8°\8a\1e\17´îZ\1:à\19íq\91\1eU\99~¿Î¤@ï?K3¯Ó´|ã\9a
++\1e{\8d\18p)z-\16d¥t¢Ñ:¯p7þ«2¶M*Z4\8bM²ÇEì@"ÀÆ\ 5ÝüK²¸ ëä\ 2= tµm\ez:Ó\90«´ó)ÌÙQ³§M3\8b\93B¢Å<U\9f\14\9d±Ù¢\r<Òæ\1d-\1d@¬ø2'\15\95\ eè2:\fÎ([ÛÐØc\8a?\ 5FBCªÍ´ÙÒ\99SÕ:-:\9b\8bÏ\ 5\ 1ÙB\fé\7fñ#\10\a\9bàéB\ 4¦¤ä½\a\8b\82§;PÖ.áî Þ6àV2>Óg\b\12HÙÖqÓ\13B\87(û\15±KgE#«\1dü/T@Õ1ûäc\1aü>\ 2\a\87ÁÓB\e\ 5\11®ö\9fìóvðO*öf\13\aßì\17¢Ï\83ñ
++íc\8f¨©Â®ø\15\8b\ f\93ó¸1ÇA¶xZü@\94Çf3R\8d\94è\8e³t ¥\7f MÕ\99ÝÌÎ\137\ fUB=è>\8bAAò\10\1aMÚ`\1fzC\14¾\9ciô§k\13\18\a.\e\8c\8a=À\18\92¡T,\rß\98:\98^\10>\9a\8eÐøä"ö\98t½Ð&ÏÉ¡ú\1d\81\97Pcq[ 5~Éþ|\ 5°Ù\ e2/ÈcÈ\íÇ·\ 1O\8a\9cçû8`\83\9cè]¥«n-ôÝ_\18·À\1fÄåq\ 4 \8fA¤3\14µÏÑ\9bÍ\12¶\90<¤t²¸\97a5\80*+h\r¤\1fè\7f\910e\9cñè$X\0&é}|uºý¿S§N\9d:uêÔ©S§N\9d:uzQÐ\9cýÿÒ\ fÿâ/-,=`tU³åí\eÿ¯Úõ\r{O9®Æÿëñhw³1ï\eç\7fÍ"vþ=ÍÞ¾áɳ%Î;DÚóK\8c7ã\87\1f:ãç$\1e>ÆèÆ5'àd|þ\8efûý©\87\ f\15{~ÊÊ\8fGWK?\17Æá/\1dÝÛlèÛì\19ÿ^ìù±Æf\8fe\f\1fÄïízfO)K¹ØK¿"í\1c\8bß%\e«\8dÙ:Uì\97GK\9dÓíù\97·ØóÉxö§\9a\8dyÒ\9eÿ@³\aOƬ?Ól©;¿uÜO\14;¹Wóãà§ÛåoÚ\8f]þú&¿I\ez±?S&Oß°³Æ\90[Wúò©\16ÏþÃÕ§\16{0\19³d.\aât[øîU\83ü7?tñÆ\12\vîSiϵöþô\93;J{\90uáË-«\86±Oæq\¿\9fXð;\e¯'cÁ\1fkºrñ§<<ØÉK{\9fjq÷[¾~ò`ÓÎÅþ|]ó¹8ñ¡\7f¾±Ø¦UåÙLãËd\1cõ½\8bæ\86\9cïÇñ\96o¾üÚ2\8fÊwóN\9d:uêÔ©S§ç\83ÄþÏØr\9aF±_¶~ß|\ 6̸ñ<Ù&§åQà\16Í\9aÌ\14\ 6
++»Q¹\16U\ e\12¿\1eQ¿JØü1ýA½?D\9f§Å¶KR\ 4\9d|Íù\80áY\17R\96ü\ eÙ±WQÓ`m,s_DÅt\19´[« i=lÄP3J\95Q\12-\8eý¶Å¾Ì£Wh\8b\91ÕÁÐíB9´a\19m\8dblô\15\13\9e$ìk%m\85eÆ\ 5ËL\1dI3C\13¸\97\9dgV\aG«¿R¨Þ¦\96k¡ä\9f\18ìé/H\9f\ 1\1c=Ò~ò%\80\ 3fZî\8bb37J¬êNò¸,Y\98\ f¯¤\8cñ\fù\87ô¨F%×\ 4\18\12Ñ!¦1Á\98Á~Z÷=\ e\8bô?`²\ 1\88+à\9c\953½Oèà\81\91F¨*ä«^\80¾<CÎ\94©9\09ÿÐ\95Àì\84FÍùÞtû\7f§N\9d:uêÔ©S§N\9d:uêôÿ\9fúù¿S§N\9d:uêÔ©S§N\9d:uz1Ð\9cÿÿ\ 3\17üà\8d\vKÇ£íâ\87ü\11ü\ eûÁºã\8b\9f¿vãÑW\ 4§\8b9Å6<»áÙ\9a\17\r×o\97ëô\93ÞðÙ\ 3\1f¨~Ùi<º¥áù]¶é5\9f«¾Îj<º¾aPí\e/°½ùËï\8bÿ÷]©\87¾Ýë÷:ÉEç¼²ãÑ\11âKM\»+¿óòÛåzrh÷:ÉOw\ 5~'Ü¿ú¿$¾ \10Wo½ø¹\1f\8bß\9aO¿ê.\89\17Ð\19×\8fnXZ\87\1dwð\7f\97¼\80\1aý¼©µ»v¯Ú&×\83ÂýkäûÉd¾ÀcÇC\7f&qö>Ür§]ô\v\17|£\94éêóþäxàÇd\Âu\rWì\82Ùó®y\ 6+6Ú\85û\89K(\98\7f\8bàìI\19;ôÃ\95»JîB\ekÙ«\85wïÅï+\1f=ù?j.A_Ê
++FÝ"ñ\ 5Rçôü}\ f¶¼\7fçÝ}êGJ|\81©±\15w®\1ctê¢W\9e]°ô²@\95°ÎUÃs\93¸wW\8bìgð;kϯ¼¤æï«yêî\95¾0&có£öú\9a£¯æ<¼Wê|+~{oØþH-sóó!R\ e§\1d1óõ\12\97 «üînr\98įÛÔüö'ã\19V¬\1ctk«?ÿñZVóD^Òâ.n^rî=¥lÀ\93{JʦcâÝÞò\fn\9d}ä¯K\99õ¥\9f··9tÑ?Î|©æ\19T%\9eÁµX\87I,½Ë\9a\1c¶}rk\8d»H\15Óðv\19ûô¸\8b#ä9ÆküYªñ!tÎ\92²\9dK\aù\9dqßGu\8d»\bEî'/\eÚ\9bÌOøÌx\98+\93\98xO¶±o\9bý×\12ç\11M\8d©9ºÕ9\89\97wiëËd,GÉÛ8=?áî&÷I,½\9b\9a^ÿê}÷¿¾¬oÊ\97¾\9cÜbU\16ÆytêôB¦ÿ\ 3¬<¶\19\14î¦k¯÷â»\8b§=S\8c:í\e\16 \ 1·\båIø1\8f׫ªxnóý\83\17Å~z\1epç43¦1±\14\93<UßÞi¾Ëxá\ 5"\17Z»d_\9fëê\a<-\aÕ|\7fXá\ fF#\b\80ÁÒÃ\98ÀÕtàMÄ\bL)+.\93t'u&Zz\99Ò\83[¡>\ 1c´¨\Àñ\88I\r¾T\7fÑiy²\16ÃÌ[4GØ\vͧ\16U\vÒ\1f¡ú4Ó\80qó\b\9ek¢ÛA\989A\r\bÂHôBÍ|tLÿeÈ
++(\ 4\ 1¹\fq¿©\9fA\8bo9QÙ,qͼÎI'K\9c4AûÊ\8ej\ 6iiì+#%\vùA\b%O\9c
++\9an×N û\b\1c.;\15\8c\8a¸hTu:^ã½O¶£ G`Az8\vð3vÂ\ e\12µt9×Ò7æZ\96Äz(IR\97ç\109\13,¡Í °\96\14=Â\89iFÈ3\82=£\ 1Så¸/vâ4\1fmL\v+>÷A\81_ \13ECIÀÆ\0%Àü\10 JO\ 4<'ðuÖÒ}=AôF\11V-hê.ú,\91\ 5\10\95\ f(WÐ\ eÏ,r\86p\8câto$Ó\9ffò¹\84%$Z.-ÌØG\7fuº\84ó6¬\14\89\8b
++&\85#6"\83\8c \93Ç\8d\ 6=ÖkÞ7\8a\bÃà\82Fç|0Cr¹\ 5,]%o\9aÃ\14\0×\98bÐ\9031D\85ý«\12ÿy\ayE\81 µÌ_§\ 4AÏ&h\16=æ\17ä3\84,\12ýù\9d÷\9a@z\9c\85Äî\8b\83ß?\94²è\19Aç]\80l\8a¯<§\95@9B±ýÜ\1a\ 1\ 5O\f:\0ÿ#\81\1c\9bï}æ4\88%JCÍ»ÿ9ÀJEï<\11$¹\8eSL\9eQ¯\vüÏ\17â¿þÈ~ùSð(-Ûg\88/çMÉÉǵ\84\80\88\14(ÞM\11o N!H\83ûÿÄÇ-#PD\81¸NY(\10´4b 2\f\9eàß\80\9e\95\9c\8d\19K~LDªe\8e¿@콤°V\18Æ£0Ê\ 3Ê\vöâx¤0-Uy;`S\19 à\17+À-\96\ fËW\85\ 6\ f\19ÅÁy\1f¡0
++s\9d¯">&:\ 1~
++\8a"æKbæLü%»¸6\98\8aì\b9@ÐP\ 4¬?Ð\ 3p$\12¦\15S\ 1ïI\95\8b\b\13\ 5\1205ø\1ef:C¼\ fÐ\1dËõ\ fo6\86nÏ\9dÿ7>ñùe\93çÿ\8f¯\9av®ÆùáÀÅÏ\9b\17KÙ\1fâwî·ßÿw%f]Õxöõ-þz!æt§N\9d:uêÔ©S§N\9d:uê´È·ç\1f÷¹Ü\1açòsð\r#e\9b´\8d\81\9fÌ\9dÓ*ñë\96\8e&Ù\1cù-ÒókF\8ex\8cßlÙ(³B¤Ì¯\9b\99ù\13\92´\82\7f\8eI\16øqÛ\13\1e\ 3-eÖ rÖ\92ë\82CµÖêl\r¡É\b\97\91\12êCóü¼×ýÿ;uêÔ©S§N\9d:uêÔ©S§\17\ 5ÍÙÿ\ fúó»\8fXX:\1eo8ô\eö^ôËÅ\1fÝøqÅ>¿\12¿;¿üê'\8aïmpãÑöæ\a»î3w¼µØ÷CÆõf÷?áØ\9f-~þÚ\98qÍ\99\7f
++~WÌ®û¾ø\17d\17Æ£\97¶|þ+ÞtÈ¿ðºW\8c#xªùÎï<uí÷亷q<:´Ý?sÇ!\9f\11?\7fmÑnj¹à_·÷·$^ x£Ç£\8b[=kî_÷l\89\vÈiÀ5\10\1c\81w¼æÓ\82;\90\95B=Â\87c\97,\8c\17¸dùpÿ¹'¾ês%^\808\b\97ÉuúǯØ|ÐçåºO¸\9e¤ÝÉx\81MÍ¿}çWß\9d\v\9f\83*þÃ[[þüóg\97ÚZVq\ 5^ràðÜÙ\ f\9c²»Ä\ 4(]üÆ·´ç.\98ýµ+JÙàW½?\1f\8dC[^úI\\81\82§0Ý·_É\98§ã\ 3\1c/urð']¶¹\96ÅÚÏ\13\1aON{|ã1Å\7fß\9bâ\8f]ð$¦ûèïl:uÆ\15»î+e\83\9fúêýà
++|·ù©Oâ
++¸æ3\7fÈQ;¾XüÔmõo¿°ñsÛìñ\7f_üÔu*}Im|\93Ø\ 1G4\8c\8b\93\1e}׸Ì\95Tùyy\9b/§\7fé\15\1f+¾èÎVùI_nÀïm_¿íæR\16EF\9d:uêÔ©S§\1f\ fU¿é!ïü\8fì\v^qÁ5Ã\a°\87R\19OYg\82×Ì\fÏ@\rFp¤\98#v¬VÑí\9f\ eÚØp\88ë|ñÎÖ)1\82\0[0ã\83²\8aNÞ\8c\98 Ê8öIÆ0\8f½gÄ\81e\8ev\95P{P\8a\91 Z3$\87þÃÆ3Ï¿µ\16Õ¸ \99\9aÝ¥èYSö:£\9f\99îÐJYÁ,7V\ fq4ÞÑ\15Ýó!ºxë ^ãt¾W\f\ 5ÊÒP\ e\ 4z\17\98tì±é\ 3oÁ\8e\10Ñ\8aõâeNwvo\r=Ð\17ÅY×*\82×\91µ`ãMïf\r~¨ ±£5\9e\19ø}J
++\ 3Wd\v*ã6\18\8c@-Ò\a\ eAã(\12¼\8fÌ\95.á£\86.óè¶\v¨Ü\98H )&\93O\8aÇ\13\vYÚ\9c\19¼Ä\8cøh\11\rdg\16\8b\87¡·>a\10\bc¯Ý\10+á½&\1f\18\0Tã%\ 2\ 3oh!\ 6\9f2#w¢®q\14Ä\r\90°\84¨\ 6ì\83çÚ\97½b7p»\ fá\ 5\9a\94-*w¹Ä\17PÕJ¬BLa±üû\10\81\ e\92¿?2&)3¡\7f`\84 \9dÎK¿3øfÀ\fò×3\ 4%@k\93µ90\82\8afr\16:«\19\9d\ 2 xª\rÎr\18Q\14¬\87\1c$HÃ\ 4\8cS;¢\16 \v.©ÄÐ\9bà\19\12¨\9c\8añ\13A¸\96E÷0\1fhÐw`\13ZÌ4ìg-!g\86A .ü\ f{ç\1flWUÝñÜ)67\90\0mEÀ¦\b!\b!\80û÷\8f\16\90vbK\9d\10H\80\18CB°¤%BÂ\ 3&C\19*Sgp,V\ 6é¨\1d[é\94\19\99
++\b\13°Lå7v\8aCf¤\ 5\ 4ä\87\142!}\ 1\84¨\ 4i2&N×w¯}ö}y÷½ô\1f\83JÖw¸@Î>gÿ:ûÜ\9c}×Z\9f\15\901\80\ 6\1e»<\10tÿèm\9d\9e\ e\841Ô\18\89±¹!4ZE¤\10uÔÛz¯Çå\92 ç\a1\12¾äý\1a\13·e²\r®ÜGê~=&ö\7f\91H$\12\89D"\91H$\12\89Dï \ 6öÿ÷Ü?åüñ¥ýÊ,ÿ\8e\tô\9bÌkË¡ß;|püÒãv²\9d_ë~ïÔfW\7flÁÜ\9f\97ã6ø~ï\86r|\ 2\9e_³\9bÎÙ~ÔÛÅþ¯uì÷îo<´Û\1f=´Øá\9dñ¶ß»»\9dÿõ5l·÷ÁÓù×Nbÿ\9fÙ\18aÇoýËçÊñhT¿wS9\1f6à\8dç|`k±óÇèú½µ-_ûú-³¶\17;\7f\ et>sÖÆÛó»Üö¨ç\9eo-\1de>b\blÛevâ\97é³P¯ÞÄvûTYwªÙ}W>qé\1cæ't\9c±ÛÚ\ýì¤\85ÏsY¨\³;\9aÍûÁ\9bV<ÎL>Síöw4vá\8bÿºðµ]y}\83¼÷ß\9cµ¢°à´7\81mì_j|²\91\97G\ eರ\v\97\ eã[{ǹ<¾\14\13_·¬ù\1e\f3ù\9e-e௹}\96½\\99|\95\ fxÛþÝ=9wôº\ fW{\7fàöÖ\97²¿£Ï\19O/ª,¿\¹{ó\9b/Ç\8aÑãîc{¿³\ç\19Ó»9;óî5Op\99×u|m-íØwÍKì\v\90«\ f\ 1ÛôO¢ÏU3ÎÞÀ¶y\9f¸/óÚÚY:zúרþn*?ïÔé\83²ot\f¹È¾\ eÛ¦wó2Ì\97;¯=\1fgÍZÄó\82 ¡)\ 3î\1eü\ 4NÛxÏ:~¦Tàû~c\9b³\ 5£³k\99.~\ 2"\91H$\12\89D¿\f\8d±wZ£\82±Á¸ J>r\ f÷\88TØ\87ô\8egá\8f\10a®tÚ)zU.\bP\eMBl´U0°[\eÁ«£\8a`Õ\aâO[X\91U¦\v\81¸\83Ç\0 \886(\13mH>1\96Ó\ 2\v\bÈ¡\ 3õÒ{\1dcv\9ej\8a.EXP©z\9bvÇÞô!ÁsBÇÁ\98è-Ò \96<vçX\17\ 2à\82\89:\95\açå\ 4\8bl\82\eA\88®ØÝ+7\13\8d;\15Ñ\90¥×êèêqï¸~*\81½\9bf\83Ú©\1cBgò\ 4ì<êD´\88H\8f)Åâo ¼þuô!±\89ÚI\85£ ?\v\9f«ÿCõ9Hð\vÁv¡Î-UcÚýH\81*t\0Ù9ø\97D\\Ö\1dü.¨%\80:i>\93-î\ 3üÿ\81ö\10t\15¢ð\1d<=l\99ª\ 4ÿ\1cú\13½G\eðjéx\80C\82Ñe±\81®G{T«è\14\ fJ¢)>\eô_Z9\187Ý7\9a¥`\14\b\ 4`\83Rë4|Ú\ 4uìÅ\89X\85\80ÚÒ\r*ÔJ \e½w\91ö°è?u=ÁÇ\80\96/Í>í³03ÔI\aC~åÁjº²0\ eu \87"Y×ñ"ñL\80'i\15¯+\ 3Ög¦j\\0¥Uw~\r´(\94¦Õ\89½\83ØÿE"\91H$\12\89D"\91H$z÷Köÿ"\91H$\12\89D"\91H$\12í\r\1aøÿÿãÕ\9b\86~\v\98Ú»¿±à®;æ\ f?Yüä\93\99Ò¯þäãùyc9o\97Î\1cÙ̾ëºú\84ohu}â\8d¹7°/¹ì¸×\e#m\98\ 1·¤ù®\ fûo3Wp\19}\16n\9e÷7ìkí\950ÒD"\91H$\12\89D"\91H´'Tüí½qÆ;ßùé×\18\ emrt@øE\93\82÷)!,Cå\80\98\96\18²Ê\19á\17\80êGÀürÖ\1epDe¬³\85{\bÊ¡Ã!\ 4ÉD§µÍ!)\r¦`0 7Ò\95»aJº\14³1ÔÈD|ʱûÿ¨?»sü¸ú½ée\7f=\1c·?`¯ï\1a\9f¿£ÅZï\1a\87ÿÞ\16¿|ìVµ¼ÄÏ\a\15§õ®i¿\17üôÚ¿x\99ãç½ãøë\99-¶þ¯ïZαçÆ+.cnú"ú\ü\9aQ5F¾2ñ¿R®û0}\16ß¾âU\8e\83×5þú\92ö»Å\95'¯üa\8du¯LüM3ºß'\86ãà7´Xð5£\8f~\8byùÑqìùÌÆ\1e°Ç/}\82\99øªþvñãVç0Kÿ¸rÝ\9dô9ïÉ\a=\97\85\1a\aÿJé'bùÏúÍ36WÎ~æßJ\9em÷ä\99{Wÿ\80YúÞs_®iý\1c\8eß§±í\87cäg7\1eÂÁG_ÀL|\0Y§\føõ\7f\84¾¼±ì_\98\97¯4Ç¥ok\9cý\15¯ÿöo0/?Õßt64\96ÂW\1e\9a÷*Ǭ»È¿\ 5\1d2&\9e}Þ¬\9a\ f"I<»H$\12\89D"\91h/Ù?\968w\17\0\7fÇ>/&lÔ\ 2v\80ô\8en\81Ï·\91v^Ù§ì\81ϧý¥\ 3Ó #«=\b\vÈ\0@;M\90\15\fm+iOÙê\1d\eO¿\v×¾ÆÛ\8fg6´XûàbÙ[\1a\938\17\81 Ô\85@\9b"Dß\9b\98]¶\9azD;Z\10\16\fõ\866\96H9@\15Q\9fB\88\9azR\0üÔ¹\f\8a¿IØüª@;Q\1f\83²±äË -«É\9aêHÈ´\903Õ\97¨[Ø3»\0Þ¿ÒA!\11\ 1vÈÑ¥ \ 3u\ e©\ eÀ$\88 \19Ðæ7$Ú?¡M`ñy^§-3\98ùÈ·\91JÎ\82º_G6 \85\1d´)\80± x\v\866Ì\1c[\8fD\1e4á \0 P\1f\99*RÉ\87\80»£KÖ\8bhÀR b\87<\0!g*òåxÍ\rÁ¬\ 6\9a0Ú¢Óüh\97éDÚñ{î\ f\r\9aæ%¥.\9f@ +52&heKÖ\8c¤\9cM\ 1ì\7f\9a1\92Ë\98pEÿRÑ{:S¹Ò|\8aeßO\13\8a[Cýö%ÿ\80Ñ6\ 2F\91\8dF\16\ eºg^üÿE"\91H$\12\89D"\91H$Ú+4°ÿoÿû«þk|éÔÊ·\87\9dö3s7.`ûn ã¯4Æùµ\aºÓ\8býÖ¸)ýÞÃå8\8cÐG\8g\eÛɵí÷nn¼û¹ßy\84ÏW!\8fåü_ýÑ÷?Rë\89ýêó\ fûþ\11;\17Ì+\9c\7fmâØ|\ 1#\7fõ¡\9f\94ãÆ\9a~ï\94Ò.ìÐ'¼uþóÌù·¦ãÉ_B\9fÅG.ÿ>3øUåÉ?Õ|\ 1.ûà\bû\1eh]sÄ\1fØú»ê¹+3\97\ 5Åe©´\ 5[ù?üþ\8aÑZ\16ÙÆ¾£ÍË0×\9fó\ 1`¬3g\9fóR\8d\8d°\çY\8d\v\7fN<\8f}\16¬¯ý\9c·\9b|\0©ÅM¬Úò¾\a*óßr_®/×M\9c\ fàá1þ\fólõ=Pl\9b\9f¾\e¿\84·Z\9dÃ~ ëÛ\18\96¬»\90}+\92ªlûù»\89ýxªÍÙp\1e\ 1ׯ>ì³ðíæwqÎu\17=ÃeI3\9fÿ¶6/go\û\aìÏàë½=®¹;§\ð$\97¥ÀíÍnù\ e¾úÐJö\83p>r\9d\97´¾\öo«\9fæ²Xó\ 1¼Þ\9e\93e£\17\1eÍÏ\89Õìçñíæ¯qÐ\9c\95ß«e\96Ë>ÝêüØÕ\17ÿw)\vIó=ZUæe¢Ø\96i½Õcr\13\8cÏ?°¡Ýáü\ 3gMïîÃG7m\99Ê~\17Î\eù"\14\89D"\91Hôÿ¨ðó\95f\1e9½çh¯BÔ@ös\996ô\ eªud\eªÛÓ~Ð&*oL¦\17æ)\93r×é\82`¼\8a\ 1¦Y3eR\96ÿD¹ìµÓ©Úh\93\9fÀ^>Äå\8f\1e\978m\12:ë|PÍ\16o\91d\9ez\8bÌö°½{ú\ fµçmN\85ß>\19ßÞdï5 û:G\eºþ\87bÛåÜ\ 51Ò%H£\10\9cõNù<i\9e\83 mÁ¿¦ö}z\ 5wºÜs\ 5 >\r\9c\16\ e\19ºC´Ú\14¸þ.á^FZD´ü\0î§úèNb%:Z_´Æ\90\84ÂÓ¤P»N¹âGO\ 5©8ZÐHÁѧ\8e\ 6«°iõÅ\97ÞÐ\ 4g\86éÓz\rþöTkD\8e\vj\8aê¤Nû\88[ë\91\8eÀed>Àj§¹¡;M\ 54þl\91y!Ã\83ßÓLÁo¡df \ 1ä\9a\9fÂ`\8a\12\8d\18¾\a\95ç\8fõZü\1ab[\v4\ fÈ`,\r\8eæ\97º2ÈgAÛe\8fû'ü\7f\91H$\12\89D"\91H$\12\89ö\16\rìÿ×Ì}Þ\8d/í÷>ÝìíG.:úM¶ÛæÐ\1f\93û}W{þ\19Í&»kü\7fj±àë·ÌÚ\8eãT\8d\9aÖ»¾Ô3±}Þµ\18ñ\8bG§Ùjg¯1þ\ fïßµ?lg\9fÝâÜ\87íåÏ\96²Åô9yÎâ-\1c\1fok^úKÚX\9füìÒ\1fUû®g{«j¾\ 2?X·d3ÛTµg\eî\92Rç\85ôY±IßVóÄ\enïðIó¶w¬D\8cá\8f\9fyþCl\8bUå7L\91H$\12\89D"\91H$z§UmÆãý\e\8a\1dÙ&E;®\0;³Õ\ 6\99ê«=\9a\99\ 2!\19g\8d\81ÁßÂ\9e\ e³}26\ 4°é\9cÕ9\80g`C¦cÎh¤²WZ©¨à4aM°0\81Ç\f7\8eláK«©\16ç\1cÕAÕÂß\846\9c*LêÇa\95¢\13\81M ö¼³Ád\1db\ eFyº>Zïi_\1a\93\86\ f\89E4¾\86}_§\b\8a_\ 4K.\15s?\8d[\19ê¤65N?\84àá\8bBÛT\1d\8bgJ9î£O8dáüQ}N&òÙ0\99\1aät>\1c>$j\9bý¤ßi?\ 6±ÿ\8bD"\91H$\12\89D"\91Hôî\97ìÿE"\91H$\12\89D"\91H$Ú\e4ðÿÿîQ7-\e_:µ÷Tó_\1fËÿë÷Vî\87ã·ÒgÖÛsOå¼}Úõ{oíÛ\9d\7fÂÖÅ\1fáãV÷{w\17_÷\83è3rÅ ?©Çm¿7å\80Áù\87¬ñ\ 5¹ß{ªÔ\838\82ù§\1cúHÍ\ fgú½~9\8ex\81/¼ñ;\ f\97¼\83É¥~ïS\85y6Ì\ 5d\7f\7f\1cÿú\9a¹;Ëñàc¿w×ô®Ýã·^^¸rÁ\eêç\81Ó»~>ºü\98\9fâ8¨\rýÊ
++D\7fÞó\89ÃJ¾Ã\98\95ê÷^oÌ»±q\rý\9ekç_pÚï~·ä;,ó°ô\7f)}\8eýÙ-§\95ãÆÛi½³öëú9\9c\añ\95\16;1Ì)|¶qà.\1e}ìh.³\8ec\168ßß\97é³P¯ÞÄe)süÄ)mÞGF×|\8ds+\9a\9aÓïÆé\83²\91{¹Ìe®sÀw¼tæÈæÊ0¬¬>\8e YH\9f\95Oï8\99Ë\9cãöf·Ø\8aí3.ÚÈe±\96]?cÐÞ\8föã²Tã.^ØM¾Fæ\ 6~\1esüÃÏÝάI\15ø:æA\9eK\9fÿ½ë\827º|\8dÜÏcJÙÄ\fÃó\1a\eð¾uË\9eäõ¨\ 3ÏË\vûvkã²÷\9fÏ\8cƬ+3ñÑݰ\b¯mã[1ºrVÍ\98ùº/\95²\89s+>>\86)øð}\æê\18nØ¿ëËò\87\96UNa×Þý-þe\987xG[\97W\9et\113\f}T<\9fo5Fã9\9bþöÄ\9a˱r\11o\9aÞÕùæ\9d\9fäëh>9NçÄÖÏå£ÿyd)\8b¦ÆÛ\1cØ8\8cg¾zi\9fËRÍ\7fywûnY:ú\91u5¦F1§ð\8a2×\13³\ fïn\fÃ%¯ýÉa¥,w±?w\8d©ó6îK6\91Ë^hß\11Ï\1e¼ôu.³\9eÇ0½\8daÁèúop\9c\8eªã[5£\eÃi\eï©1<ª®\89}Ú|>wã\95/q\99õ¼\96æµï¼³¯\9bÿ\1a³M£Vò\97\8eH$ú\15\12üPéÍ Òw³3ô\17\10\88\\ 1°.¥¢1\8aþ\ 6\8cô¶¦RÔQ¹àé\8b\11YÇ\90Y\8b^Ö"ý]F_øÆy\9dÏð¢¥W\1dï5hb\8eÞªb¤o½\10\ 2<\88qYa¨íQ\1e\¶¡ä7S*%\1f,u)\96¬Y\95\19ÆþÁt½ 9\18c½¢"\a\aYO\aT6\86ºV\86D\ 3r\ eG\808ó\99¦\82^\7f]Ö\91\1aÓô\86YRi\aôÓÇ`Krã ryáµD!nÖi\f\ 6|¹l\8dRÞ8ÐÙ\ 2õM»èc\99b`Õ\1cuÇ\ 2ëe\93\86¿sÉ\ 6§r¤W\9fhT ssñbvt\8fh¢\80ÛÓ ð\81Ææ¢\8d\16îÀÚÀ%\9aÚ¥Fp\9a¡Y\86#p\f4í4\9b\0dGj\8a&\ 1nÐxqB®8¸`ÃÅ9RëÔ¨í8k\931ãB\996G3A/ÖV夨ZxR+ª\1a\1d¡\ 1À\v\1a®Ð4,\9a,ðÎh)yåq÷b¦eC+ÎÐ\9fM\ 2\1eOE\1aQ¶nÀ,£w0º\19ôNHSÐ1Îè<OË"L\90{=\81¤Fã\84\v5\rU%Ì\9c¦\99¥ëéµ\9aÞ\86"]\1aiüT±Å"D&½\84\ê4¼èÑ\12-\ fú\aK¯\f\85.rÖ\94÷D$Ý£>{Z>XþpoÏÅÓ]ÑÌ\80<HOG¢k"ó\11\ 3ÍKY\13ô\b\19z_¤§#é.\aÝ\18\16Û\98¼{¿\88|s<GX\ 4tÓ»{8\89ϾÏ\ e\19\ 4#¸q\81n\17=ú\11Cvà×Q\93p+·x̨\rº£ÊÐ#H]ó\0>z\1a\r\96 \9e[j(Ó\85xä¨\1fð¿×\96\9eøhé\8d\1d\13]Ö\ 2\9cï©ez[EÖrúrÈ´4¨>\a ¢\a\ÙÔ1\e©\1c\8b\ 5dɬé\86ùqó4\8e}×±\0yÍ\ 4\8f \ 2W¯Ù\1d\13¯,\81®ÎD\v\ 1Îò\8e*°üLÐ\1d\v¸\vÖvue\9dÆô\83¶v\ 6üÉL\ f\86Ã\17T½\9f4@<¸¸\18¥´k£»\8f\95cx2è\v\97¿EcF\fDÆ\17§÷
++P@\83º\ 2\82\ 14þ\84\87¦ÝÃÂ\9c´\96¾=-\1e\1e¬\10Ë|ïÆø£ï«Ýä\1aôøâ U\1cÆîÿ±g\eÿ÷BÇQ\9fhO'\12\89D"\91H$\12\89D"\91h\8füFû\vÿ=AüÿE"\91H$\12\89D"\91H$Ú\e4°ÿO[tÀæñ¥ýÞ1Íoû\88\vçlc?jmû½\rÍ'ý±\ 5s\7f^|[mðýÞ!ÍÿöØjyño\ f*vþß\13û\9bs\ e\80\89}µ¯h>´Ã>ש\94\9dB\9f\eܹÌùÏ!²/óÌæ\1fíöYö2sþ]åüÿ¸\8dií}\8bÿ\87}\99sbßâ\1dm\Ã\9cÿmc|\8b\17°?6À\8bS\ 6¹
++n¡Ï\19/>x'\97Åê\8bþÞÖÞx¿c\91H$\12\89D"\91H$úe«ù\91ÃÆ\9c\9dN.$çC\17G\90sv&\e\ 3\8f\7fo\1c\95\1a\17\93µ%\98¦°æQè\10-â\9c\ eÎ[MG=\15Á÷\9föo9\94à\13\13l*±<ÎDG'«\84@\9bàSV\88îÉÈ\86\96\0Üw\86\11üÚx\83\0#ç\¦\163\ 2\8d².»0\83à\16\17\82\8fY\aªÛר\9b\9c\10É\91B2\bX-\99\ 4\ 6ã\9b\84å?>n¢\9c\e\95\87Õ½ägCN\84\84|\ 6\88!q\ 6u\80ͯ\11Aâ\9d36(\15¼G\80\88F\0U¦Á!.\ 6\91R\b\94ØMlÒ\9e\8e§)q+Ô¯2?bÿ\17\89D"\91H$\12\89D"\91hoÐÀþÿü\17/ÿ\8fñ¥S{\87\17ö\15rÔ_{ ;\9d\19VnJ¿wb³\85ïÊù[= Ïï\92rü\vôYÿý\99o2\a,¸~ï\8cIü\b®mܾ9Û\8fz»pþ´\8eýÞ!\8d·uû£\87\16\ e\9f3Þö{ó\9b\9fÀ«[gm-Çm\fýÞ)\9e?ÝÎ\@¤s\9cÖûTãµýó\91ç~¯ró"û#¼Õx_\7föêÚ#\99y *\97làß02úùZf\ 2ó¾î\9fÞ]·jËû\1e(e.Xö\ fXÙúýÍY+\9ef\8e\9d \§*uââ\91\97G\ e¨\8c»Ì×Í.e\80\ 3þù\865·°o\84ÍÜOfÀMì7qcãØÙã\97>Á\8c;\1ax)s\8dY¸dÝ\85ÌÔK\9c\7frZoC»ßk\1eÿØ\f*3pý\8cn\8e'óÅ\98J\9fí\1f\:Êe¶ò\vWíßÕ¹ä\89sæ²/\86®¾\1fóK\9d\8bèsö«öfææiÃܵÇË|\9eN\9f·\9c÷J-«L¶SZ{W=°\9aùw&$\1eÃÌvo?>{õ\8bÌÛÓ\9a¯»©±ÿ\96ù\8b·p\99¯s}s\9b³\1dû®y\89Ërmï3ûwí}õ¡\95\95·çcåÑ\95ë&æííh×ýSZÅ×y\1fù>\9c:\86\9b·úVöCQ\99}T\98+\879[úôÁ÷V_\13Ës}ø\ 1Ý\18~ëðÕ\e*ãÎòØï\98ѵ÷ÐQ\97\8f27ÓV?\94~{\16~oÚi\9b¸,Zay\88D"\91H$úU\13l\96@Óé\14\91\18\1dà¸\fª\eÇCg\98\7f\81}ô©2õ\9c\ eA+\97ñ:¯µw*:\97\ 3ý¯M\16ï\96É%clJ6\14pb\ 2\vÏGÐ\19#ma`\1f\ 6\9fÎ\ 6eK\e\ e\ 1Ó^Å\0Ä^e°i\1fc¢\862\1dt\96\9aðl7¦?ØDgæ\0n#½Ê!1½\ 5cÐQ'³\ 2Ô/f«\9c\89\16 í-xÇÑ\ 5:Ç\ 1g\98Krx\93-\9dga\10.ö`\17c\99\ 3gÀ¨ó \ 5NÀ¾\9bÔ\9e\9cu\f`õ\81\92Y\8fÑ8Á\95ÔYQ_"÷\1d4EÐøReÜ1C/[pî¢MÙSw\v[Ñzz{wF5^\9e\ 3P2tü¹Éìí\16Áê@\83\86\10c7\8f4±¥ïN×1áVÒ\15\1d?o\ fÛÂéæ;¾\9f`\16\16\14fTu\1c49^ózò\9eê¦\9e\18pQi\19zf4*Uü\0B²m¾2\9dJ[\94H\1dÕt3MÇ\1e\ 4\v±\9b/ZJt'P©Î\110G\1aµ\ 1\8c4Ñ\r\0MÑÓ$P«
++xG\1a ø\93\8e6\e´ÒAWÍ Vª\90\ 3m#À\ 2Ôô@Ð \13|1h¦"&\9e\9aK4K\9e\8e+p\1eé.Ó¦1»ì1i´Ø\81pÌ´;\13û¿H$\12\89D"\91H$\12\89Dï~Éþ_$\12\89D"\91H$\12\89D¢½A\ 3ÿÿ/Î÷O\8c/í÷6´\9cç'ì<a'ûng×ï/~ÔÃþük\8b\8fñÇésì£7\9fY|\8c\9d÷ýÞêR\ f|¤÷]ø\81\7f/Ç£ÒýÞõþ]ýö×\96úá\8b½ú\91\83¾\83ãAÛÜïý\1f{×\1eãWq\9dý\93hÙ]¯\rMHC\8bK\12C±Á\90Ìû\11ò°\88ÛF©¡¶Y`1k\8c\84)\ 4\f\ 6\1a!\8b\82dQ\ 4´A\84¨´¢
++mQ¡\r\ 4\ 2¦8ÅmR \11\15H¸\r\84\97Ã+np\96\ 5\1c\1eÁiM¡¥ß73wvñoíþÑ$
++ñ|Òµwï¹3wæÌ̽s÷\9có\9dýgv×oZ1ÿÇ<ï\83Ãù\9c·}!\8eùß:`Sòó\97Ñ\ fôFSý¬ì\88×Þóf:¯¥Âõ5Çýa¯_\9düñ\83±~°wïPwß97¯Ìùß\85(¾Õ\8bÒ½¯À±â\96¥\8fg\99\92Ùw|ß\99]¹7×wå|ñ\7f¿¨öeì®ÑÇ\8a¬øðo\1e¤\8c~Þ§>}üõ\99\17QÈìç½±\96»ûÆ\95\ fåx\ 2U|¹7¥û]\8ecó×Fþ½Ä\1aØì§/\92\8c
++Ùxç9\13Y\16\ö+_Uû'n,q\ 1N\17\7fûKëýúc\ 6\96$\9fóõ8\8e\fË\9fÎ2Wø\14³Oý~8ÎúÁ¼\9c#ÒÇ¢³\894\1fè«>òËK\9e/²\98eWÖû}ýö±¬³ K^õ\91\9aãý´\89Ù\97g\99SYvÓPWç\86Ã\96¿Râ\10J\9eúÌÃÈyÐÏ yMÍaÿÄ?~*ÍYamîC\8e\97øS\1cÇm[\90óÍ\8bXb7¶¥1\9a>FaFÒËô1
++\ fU\ eʵ\97\9cøR\96Y\91ûpojËôñ\ 4\17\ruã÷Èe¹\7fÊx\9be\ f$\19c7Þ\1e>¾Ä\13\84r¿+\87º9Ý\1fO°ªöý\84?:ç\99,\v2ëea]\83\17ßqòs\1d\1ff\91Íìê\>~Ë\17r\1cBôyüÆfMÊn=¨Ä!ø|¿\1dµ\9d#s\97=W8/K\8cÉh-wÌø¢¹9\ eA\85Ð\1eÆ\r\r\r\rÿo$\7f^\8d§¸\11Ai\1f\8aßïOÅ?Ù
++\85\a»¥\1fµ\8d&ïyè\17\8b\92Rè\94û<\11e±MxûEÜVÑk;ùËâ\1a\19r¬ÜÿáC\8bn\90Ù\8bT[\14³©Å\ fWËt\ f\1d\98 Ý «\rª¬~ÍØQ\18¼"µ$1\99¤çpÑ\8fdÂq#¼Ðl&^\¦ôǦú\ 2$\92ô`Þ1¹\96Ð\9d?µ`\12ö ¢\99l³¤kqr\13¦¯x\806Ñ-å\14Ê¢\83tÍ\rh-úä¹)Å5ôF'k\18Þ{x±c\87b =\8f\1eò\96loDu\82LiÊ£/Î
++tÀÑ«\99~È.PçF±"Á\81\v\ 6wfÛ\82\v)+8ú\16%ÝÒ\9dC\e\Î{.-tJz2¨$âN\92ú¢;3þ\85z¬5ÒX¶Ú\ 6G²·\94\ f>²ët¶2\86ÔO\8b®`û\13\rÓ\8fq³\8a>z2©a^ard¿m4;8k\8a~P«Ã=\8e!ùA£×Á%ÿríôT\1fw\EÝ\93ÎMZì3p+Ö\81\r\8eK¾þ\98\8b¼\93H9Ø\9dvS}Ç\7f\9eüª§ä\86Çæ\1a³?¢mÑpà±Ës\1e«2¢¬bbv/=
++â\9e
++u£r¬YÜ\ 5\1dÀ*IóM\91\8b.JÞ\83¼xÆ1è\96ÎûظG'Ð4,Xæ\81ÇRÔ\98j\8c\ fÆèD,S\8fáFw\ftå\ 5\ 6\1f#\8f\92Ìþ\8eYÉÑ×äÞ\8bÆ`<\9cÁ,B\97Ñ\1d\85jP7vz\1ceè\135àa\82e`ôO\82ûN[¨\vÏ\18(À\1aL >^¸@0#1ï\18\1fË\ f\ 1Îx\14ǼL\8b\1eM¬E'#\9acé\88\ f\rX§5\96\9d
++¦Æ\f\b#\84ÁJÁS\v#ìCY§\98Q\9a\14\7f\ 1\r\83\ 6Ù;ûÓ\88\17Á¨AÿP\ 4V\17Ê¢$f\10\1e«èzÐQó^è\18\9e\93Xóx`â«SCë\86\ f'FdX®j<\9d1aù¡\8aqÇCÁpacòèÈo\vè9\18\9cCïÑ><\9e0|\16+\15Ï1Á\1eóÉ\r\ 5àjü*"\1fèPµ\14\98@\16'\r~Uä24üÔ\9aüþ?ð¾K\8eïÿþ\7fuJ<ÿd\9cÿ`oû>»þ\8e|«\969s|ë]ùÛ\r/\88öZnhhhhhhhhhhhhhøYý]xÆ\94¿Ç6ÿÿ\86\86\86\86\86\86\86\86\86\86\86\86\86\86=\ 2\93öÿ\1d\7f~ÁÒ\9d¥\ 3½3vÁ«\7fcå¬\7f§_ý\8déúå8\ e{óæ£y>*«\a{ëÓõÓû\8f\9fR} Nºê¬'²\9ft\90Ùßy]åA\1f}v¤ó?\8eÙ'ý\9aÊg~Ï\97~7ùÀk!\8a\7fü5ût²ÆuÞÐÐÐÐÐÐÐÐÐÐÐðó\89\143á\93C¼)¹\b¦Æ\12½«üëS|\817r7qM(o\95\b\96aHÊÏ\986\17\83f\18\8br\11\1dÕV8\868¤Ä\bÑ1>\aºR\1e·\93\ 6Zá\19tSÚ\88J\95u\ 6\1dÔÑ1zÄ1èÈ\ 5%¥õN\e\1f\1aÿ_CCCCCCCCCCCCCÃ\9e\81IûÿòOý£ÞY:ÐÛ·Úß\ fþæeË2\97\9cq\ 3½\8f¥óä÷úö1\vþ'Ù×µ³\ 3½\1d\95ïmîoí÷v²ÿ\v)\ 6{OÏî®?É\9f\92sÇk[r²oO2ò\ 5¬\19\7fef\96\85ÂwöhÍåÞÏ\81wpmÃ\85óVd.4/Dæ-\eI²\9bq,yöî;²ß\80wº\rxCCCCCCCCCCCÃ/\f¦rCzKzH#ñí§\824Ö\89É\18øH.nEjNí\ 3\7fq²ð\7fÒöï\95U\993=ÅË;gHµ\19\95ѸZÑ0OÛ}@!\11H\ré¼I\\80ù|$«¢Rä\8e´Ê\ 4ã\94ñAëdÀÇ)M³½5d#4F:²\19\92>\14"å5Y?£søÁãC7à"r4z\83\8bE qßYRµ:\19q¡\95A%ÆPE Ê[\92»
++cLÄ\1d#}!")\fÉ\9b\18\14ªr$Wt¨Û\92sµÙÿ\e\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a~ñѾÿ\e\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1aö\ 4Lúÿ/¾ä\e·í,\1dè\9d[}ó§æÿ\eè\8d¥ó\8c\v\98\7fÿ\82\13Òy+ý@o8å\19?\11ÇÜM7\9d\98yþ,Îo¬9Í\ fZ6ïG9'`t\ 3½\83gNÖ\7fàªr>\ eô.\9drßýNÉyÜ£\1eè\9d\92®g\1eóu\8b\ e|0óú\191Ð[Tã\vÞ\19\8f°W½~hé\a¾\99Î{\81öO¤\1cäLxxÕø\82\1f'^Ãȸ\86\91t=ã\rVßÿ¾\7fáy'5Ú³_ÍixÄë\17¤|\87Î*Ô³\7f:\7f\15õ÷ä\aÿ+\9dw
++ýÍ9Îß\83ãз?´\82ç½\8ff wEÍ ¿iÅüt_\1f\1cê_?ÔÝ÷ô£\ fx0ÇMPÏ×\ euõ\1cöÖÄYé|ôa°·eVwý\9bëW>\92Ç%çÞ\1dì}\18»kô±"\8b9ïü}UOç\1f²&åe\97R\86,û\Õù9ãß\9e\97eÚ\94\9cô5\ eã¯\ f:ù;Eæs¹µSÊ\rê,s*Çaì\97ÚÂ<÷\7fñÑ\95ãEæs;oyà×\8c\9f}C\92)%s\9dógví<ñoV\7f¿Èb.wi\95}÷¶S_É2]âE¶\fuórÕÃç\1d\9acIDÈ<\93\9bR¹\858Ö\1e9\96u¦\8dȲ\r³»yòæÇ\97>\99eÎä¶\9c1Üõ}Îm£¹\9cAç\93ìÚ:Îg¼ü«ÿ\9ceNçv^\97îÇX\98gï\úb\91Ù¬\97\a\86ºyðÌ]\9fÝ\9aóg\86ä\933Ø»)Í©Q\1c×ýÉñÏdY,:Û^ÇA\1fQònz¡2\1fæâY\9d®\1fùèhÖµ7¥Î·ê\18\9d=¾H\17þM\11r\1fRÿîÀqÊ#wÛ"sù~«guú<û¡\13¾\92×§\8a¹\ fkS9þsÚÄì˳̩¬³u³ºþ\9dÿë§æx\1f¦ÍãWÇhôá\93\16¤Ø\1cLÂ\n2Nè\8d\ f\9eð|\96a\90rß\87º1:vãÙ\ fg\9eP+sß\17ÖçÈÊñÏ|¾p\88\8aÜ÷\ru=ôó\8bΩ²·\86Îþ^\92éhr\ÒºZçØøÄ\97\93Ìh\9beçÖyý¥{VåØ#c}®sõP×\87G7\8c>\97e¾ÌÏõU/+î\19+庶\9c;ÜÕù\97á\8c,c.ܬ³áNg'=ñ5\99eÞåq¸u¨kç\8añ\7f=(ÇA©2w¿1sRvè¼,ÓºÄHÕõ·|ü\98¯ç\18)#ò¸ÏØ\rïê¢\99ݸ\8f¾ø;\a&YìÖØ\ 3³º¾\8fÌ]\96û\1eµÌkeImË1ã\ fÜRøZ\8b®\17Î\9e\94\1d|{\96I\9dçËõõ]óÛO<ù\91üÌ\176÷ïÞÚ\96Ïl}yïò>°¹\ fcSîwÓÌ,\vLóÝÐÐð3Fò¹µ\1a\8f\9fè±\ e\1d^#\91I»Éo%¥\10XïÂ9\9fÞsé\Ä%^áUk´Ð\93~»x\8f\ 4þo]0Ò
++Y8³¤\88\16;/c¬\95ÌboKÞo¼=\9cÃûÌ\ 6m],u+á\98ãÜ8áuÊG.ddru´H%N.\91|\81¥1*vyÜQ\aî\1ct$w\167\0S|\89\15\19»btõ÷\9cß\9e?;a\ 43ÉãQ\1eÍ\94|õx9]¯w\11»\eÏ\84õÖCAÁç\9cåØ\1a\92\ 5\rÅM\14\ 6;é\98}\94\v§Xò5Fafrg>¯\10\99G\9e|`ÚDç±\81\81æl0t5¶$\11\vØ|IC
++5²o3q¹P\1eûØè\94H¾Ï>zËÔó\16w\ eLÓnDÀ\86ßGævWÌä\8eÝ¢Ó\18\1c\1f\95Ám\14ZF\850\8f»aNz«\ 2¯DÍ\ 25»¼ïdÝ^\eò·¹ Mú\1d\83\15\82³I'\9c\11\12=W^ØÂ\8b\86Ú\1dFÅA3ì½Âî\19¶èb\10\ 1ÓB ´IÒuÚc\10ñâÂÜ\911$ò3zcGzMã\9d\85í»p:òm\89~\18Ü\15\84²%ê\bZ0\9d<ê\vÔ\ 4[ìó\98\r\ eó\11jÀ|ð&8é\1c\86<29½Ç\ fP1Ôè\ 2öH¼§\rªø\89ûèl7'8\15\85\82¦0\15\83/ã\19I'\87\0¶\1f¾ó-\17"`ã\87É\0}a®vua&p6\86\0½b4ê\ãü\ ehªÔô\14\8fÞÛn½\18¨Å\bO"9\rñE\97ýÙeâͳF
++æ·wXlÐ\0wá2ù\8c£\ 4æ ç\97±\985P'Ö\15\86\ eÓ\1dó\1aËÒ:\8fAÓ\96×ceHÌ\vl\92\82ªmÚ\95\1f<¦BDq\891󲬽©\aæ\990åç\80\96CÏVACZ)¡\8b\1e¬·\81\r×tæ/}õ\0\1f!hWðé\99 0f¸\8dÆ\86\ 2=ÄPfÝrû$éø.\ 3\89÷Ð\81Ü.\f§ïÚ>\rÿ^\9e\7fè\13§\80ÁÌ\88P6Äd\aÄeäÛ\v\12_\a\98\ 4Ø\ fB\89X\f\9c£2°ô!FÏ~ì\8aP\ ek\96ÇE\98_|H@\12R]XÚôä\ fQ\e²\10¢ùP\ 2f'\16 ¶í\92L\85\98\18¶´\19KÜ*4UauG>a°\,\16¡Ã\9aÄm0f\ 6\e4\8b\81ÁSJñ\11è\ 2\ 3\1c¸'çB\ eÂh\87\87$g\88\17\98\9a¸ªÙÿ\e\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1aö\ 4LÚÿ?öâÅ;v\96îÝ»·Ú^®Ü×ü^²¡(3c ·±æ×ûÐ\99\87îÈ6J©\az\ fÔóï´óo©\}\ f¼<÷\8d\94/0:1Ø»®ÚÕW\8f\1fv{g[Ív»ëk^@qc±u:Þ\9d²\89Ô®ém\96\9bk^Àc×\1d\97íhÂËlKÚ\9cê¤\8díýóNÏ2þ1+ÉvÔûõÛ\ 2\1fö©±ñÙÙÆf\95Ê÷[WmÇï;tÕw²Lë©¶\Ê~tÇg\93-\9e\7f"Ëu^]m\9dOÝ>\9am\9dAv6à*û\ 3yÔsÅ®\15b\9b°\r\r\r\r\r\r\r\r\r\r\rïR$\1f\0\19ñé\18\83ÁwQ²ÍÓ ÀÑ[TJ\9fØï²ý[\93Ä\8fNÝ\ 6\1fWJ\v\91Ï\9bäk,¼S.Æâ;\94¯×Q\91\82¯ó?y\17ú\93dîA\95|\15P»TÊ\ 4«£Oþ\1c\9e9\ 6QGéßÎþP\ e\8dÍz\bB\8bàè\1f¡Q\ 3]\88ªoS³ÿ74444444444444ì \98´ÿ_ýåß?ggéÞ%\8e\9dvïK\17|ÿ\98lÛv3\ 6J|v?/À@\8d\e}'/Àâ\1ag»xá¯Ý\9fíÙJ\r\94\98óþxþWÓõ\eXÏk\ fýg\8aÏ\17Þu¼\0lÔ\9a?üÈk<o\95F=«j{\ e\7fýÏNKç\83Åù\1c/Íøì\ fo?5Åu3³Â@oNjçBÖÿ\ 36%\7f\ 4\19ÑÎû\86»ú\8f:õï§x{Ãxþ\1c«¾\1eÇðq¿òoé¼\rr°÷h\8dË=õ)}[Ö\83,1Ðg¤6]\81cÅ-K\1fϲ\14\82Rch§\8fß?|7ñí¯Öö\9d7gÍó9N]\86ìÛ0R¹\ eúcØS\91\19\9fÄqüWW¾Pü,J<ï\15³º:7ÞyÎD\96åÜ\17\83½±¤§Ïã8ý¥?þjöÁ\10%ÿâD\92M\1fþ°Æ\ 1\8fÞ~æKÙ\ fD\948à±\1a§þÆ!Ës\9czÔ¥ï\135\ 6úÍ\9bK\f´Ð&\97;·ÖÙ\1f\e~M\1aç£p\8cüpìïr\µ(1å«R¹\14¯¼õ\88\ fä9,\8a\7fÆ\8d5\86}l|Û_eÿ\fYb\8b7W\1f\8cþü\92\13éïf\1fÇqñ¬ã¶d\99\r¹\ fë\87»¹Ø\1fWýêìIÙÙ\8f$*_t]ïwí=\8b^È1ÐÆç±ÝPÇý7\ 6\8fÞ\9a×\89/qÜ\93\1c\ 4Ç<ÿÞ\e²\8fN\8e\9fjhhhhhØ\93\919\ 6¢qV:\86â2äÚZã³Z)\17±ßÑ\ 6\9b\17ZØdð\81V2/\95Q2D=cJ\9cÿ.âô»\18ë\88ýÖ4ñÉÙ\8e§\ 3\93|)\91"±ßñ\92éÇ\94wtNµLDÆ\88`ï¹\11Å5\8c\1af\18/öÉÞ\92\rÁHÆÉû\14&í\fc\7f¥\15Ì\16¦|ÐÂY\11´ÄÞE _\9a\e1Áð|V$T\b1\18Ü9ÅÚ\e\8dËcÀ>XcG¦=ó\85© \13q\80Ã9Æ\83{å\18õ\8cæc\17-h²Ä¥Rk\87\1f¼OÙÆ,#Ç¥a(²\80º¢\8bÌ\98\86MWd\9a36\1ajFO +ô\95Á×ÌKÆìeP\16\8d§\92µ)Æ¢\aò
++X£\1d÷I\91\8d@×\1cZ®mâg\80ª0VÞ©\8e\8bAX\85¯
++\1fÊØ R\ 6§KÕÅ\87+Z;1AéèÊ9\81\9fX\17t
++å\19[Êân\1e= \9aaó)â\9d\81ÒèHHÑø\8a\81Ý©\9521\1aXêÚà2e0øÉî\8av`Ö Ó\8eì@ÐÅä|Áv1ÿï\ 5¶£Bí.&\1d;6ô_ÄÂ[\81[z\1a\85ÙwÃ\8d^²Ù\ 6\8c°\8fÐ\11\ 6\ 3£eÑåh0z\ 1ÊÁlD\11|\ e \86«\aEª\ 6\83ÎzöÊ£DHqá\89Ë\ 1ê\17$!\b\98\16´\1a+IÒ\bç¹1æÀHo\ 4Æ ³ Ñ\ 2HiY\1d4
++½£MZ\93\12\82T\ 2\188(²¦h\99\92\ eC\8eú\85ȼ\1a\98³\98\b\86\9c\1d!ÙøgLÇ\89Á¬x\96v÷PÆ\13kÏ+c\8c\97^q\81\92m \90x\ 2*Bc\12s\ 1z¤|\1a\bÚù\1dg\1d\96!Ïï6g_æ\10±ä\9b\10\8eSZ\89]r\15p\90¡/<\17ðèP\8cÊ÷Î\8b ¢Hv\7f\83ÙíSS¡n-P:\1a\81Åe\93¥?ñqè ±ÀX/¦>\97\ 3Mþ¸\18%9\87µ·x\9c@a\12סÃXÒ\ 2WágRyXÎA2+8R@`NcfZæ\rÄ|\8d¬A@ß©ÉäÌÓdå\80²¸Þñ\8dFÎ\10ÌcIJ\81]ò£4û\7fCCCCCCCCCCCCCÃ\9e\80Iûÿð\89\7fûüÎÒ½{ó\93M\92ÆÇË\ fY³$Ù½%ãÿ\ fO¶ß¯à\98û\1f\v>]ìÞf ÷P²Söóí\ f§¿3\9c\8bã\v?|ï}É\9e\1fL\18èmß\85Ý~í.xøGªm|þ\93\vþ;óíÇÐÙç\17ÎØÙ\9e¿¨ò¥ÿÒ\ fö\7f0ó\ e\b;Ø[]ë\9fssg\7f\17\85Óý\8aÊÅßÏ\9f¿Wå1èçÏß¶\eþüµÕ®ÝÏ\83?QËõóàgnöéyð·Tß\83~®û\1d\83\94Q)oÌ:+\97ÓÞd{ñ\9c\9a;àïç®Ìý³Êe_\80íÕÆ~á'Ve»½u!\97»h¨ëC?¿üÕIFÿ\88#Ãò§\v\1f\83Êm\19¨üäg\8eo½+û\ 2x\9bíÚûV_\80~{ÿ\8e\99]\1fúy\1c&ê8ôû\ 2dÞöÕ8VnýÔ^YfDîß~Õ\1fäÄ\97\8füD\96ÙÂ\9fÿ¹:\17O\1e¿ê\93EV8%FR¹/âXòزR'WBê_ÕçEû\9cõx\91\15_\80m»á\9eßVûÞÏEqiÕÙÊñUs\8b,æ¾\1f\9cÊ]\8ecÙ-§o)¾\ eqª_Éô¼ôëëÚ<ÿ\1fV?VxéE\96m®¼\1d\8f\¶ü\95wrÖß[Ëõó[¬«óóíáã\vg}(ü\16\ 3I¶\86÷»á¬W\8aoEáä_8\85\97þÓ·\15YÈåLõ êçÌxµ\8eß±/\9c7\90ý.:\9eÿ-\83][úù4æÔþm~ÿòm\85\97¾pùï\8e\97~ÿY\93²\9dyé\87ë³å»×_ø½,Ó6ÏÝíumösÖ/\9eÝ\8dÑ=¿yÁx\96éâS³¸qÖ744üD°\9bxZòuÓ²¦§Ú·C´\1eÏS²º\vF®\92#<\bá\95\12\ 1Û\15¡±¿ðÒ\vã,\1e\90Z(²\8aÓøäñnR¸Ì$îêèH毥µ\92Q·\86¦bïIïO6jÇbÁîÌ\97^øðIN\1fii4\1aoJ£4Mãx\17Im\83\8eÉ\0\8d\86\19o\9c\91ÑÆ`,Ú\84ë$m\7f8C\8b·Æc\1f'µT!ÒöjTpÌL£#\19¼i]38G®zEBvch«\8ex@\v\81\87æ®Íâ)\1fñ«\88>jáµ£½N[\9cD·½bìq\1d\a\7fÇéß\1dÎ(\9aàqÚÓ¼mh\82ËvM\9dü\ 4¦æ\bP\81)\ e$4\17\ 2Mûø\97ôýÉM@y\e¡zeÑG¨\8fZ¡ñÎÓnéÈ)\1eíÿ²wõ±~\95wýÞXõ\16(eq\99,\90Y\81\rh±<ï/at¸@2µ0ÚA_\80\96:`\14(ÜJ:³L\8cü±H\13 6q#$Ã\85(1à\98¶¡º²)C\123\12\9a8\aS È*/\17X {éêèFÕÏçû\9csîí}ûÇÉ\18ý~Èi¹çù\9dç<oç×óÜïçûù\14S[H´D\93\18þgó3ÃÑ\89\ 2ß\99ÿZ\91³\10ò4ß\80éùÑ\94"·\94O¯µÄJAò\82wÞêId¨|\1dŰ\1aë}¨\9cs6\13s\81q\b\f'&\ 6Ö3§¡ð\13è4%Ó1ëä]àÕ\85!Ø\84\7frÙ\99\91©\1e\v¾0 \99Lô\81 Ô!×\91ùü\16|q\8c\9abl°²gÉ\1f\9fîå0\9bÿÃl\9aòèH4Sx\ 2]üÞ{©#bѦB\82\ 2ú$\9dÅõ\86ÔÛ\8a\a*\93T\82Ö\17L\f>\19øÖoÉ\14À \87Lº\a\96\ e-ª¡[\82eÜ\9e\84\13,\ 1çñù\84\15èj\8cX¥!â\82Â\96Y\1a4\ 5\ eyÅ3ã\7f\1añè>'\1cK]\14çy æ¶\19:µúC\15\8e\88ãâHd ØÐñ\13\8a! \9bYsÑ10\1cWFðÛXR;¿b
++\ 2\19*\18¸ì]nÿϯ¢\8a\ 108\91É%\10:Ca»\13I"E\94ë90\18Ä@Z\a\9eA®þÌõ\89\8fD²\ 2\9c<_d¢P\14\9f\1e\15.8º'ðÛ\v_@¸\v\9f\\fÔ\94\úö\1dg\8a<Ѥ¢øÆ \98Ó?À\91Ë\8dFõ^\rÉ$C=»À\8d\ f¾[\12¾¬\1c.!É\ 2_²\Â$ªÈ×$%\ 4ð\18\aÏå\89o$T\8enòy&\v\0å\ 6ßb\91\8e(\1c\b¬âZhåaÅ \83ë9ãÙ3γ \99\1a\ 2¤\8bðcx\82È$ò\18t|\99E+c\8b[áñ*T\11ð\9d×\ 4¦\97ÏbÇ\7f\99\95w¢ñ\7f\85B¡P(\14
++\85B¡P(\8e\ 6LÆÿ7\1düî,ñÿÏ\ e¹Ów\9cñ\9b×5¿z726z÷à\vpd\9eÿÎ!vwdü¿Å]gÆÿß\18âÍ\9b×.mùüÑç^o\9f÷ýÝ\89ç¿ÐåÎÇ\16\e=a\9e8û¤_Áæ§?]»8»iq·M\83×ÀøÄøWZ,=ÔÎ7^®[\85ãêo½¹¢ó\86ïâåÛ\87¶Ìô9\7fQê¤Çûî¥-nÊ_Gv¾ÕÒ·58V\9c¹f\7f\17£vSóÕ\19;¼ù\8b}\¸÷G¿uÈç¾ôùmç´Øoì8\ 6o\ e}\98éCð\99a\fú\80_-×]Á>¾|þm-6\1a»Øï#\8bûþÍôóþÈпw-Ù²¯ËWïx\12{\87\18üÌ|õ0è@L\8f\7f*\14
++\85B¡P(\14G+$.ë(\r_r\90üöN»Ý3\a<fÑ: \89|HLt7¢\91\80ýE®É\19\89\1cûHN
++íè\vÃã$JD²oJ¦ÊAö¢5Ai\ 1oÉßp^D\12ºX¶54T+$ÜøPËÏ\8c\aÔxJ¸!\15ó\9b\9e\83ðTfÍÉ\9fÆï¨\14\17H\95²\ 5¶×\ fÀ\9d©Ñá\84«`¨ñïHvr쨵ÆXfÍs/FÝ\81ìZë1¦Á¡j48FÃæ¸\9aPµãçùSq¥ó\17\98\8d?B\19\ 5Jed\8c0Ç\8c\14çIÝ\90\9a\ 3¹\15\99\9e\0±\14J6\18Z Ä\94ÑöZ)Í`15¤\15°g¨\16\13ï°«\15Æ\16ù[\81§2E\eÐX_9ß2V\8ej\18µ¦yô\16°aËè i`\8e\84\ e¬\8dÖ6\8dÿ+\14
++\85B¡P(\14
++\85Bq4`2þ\7fÞ\89\9f|ïôÒ±Ñ\83Æûø§\96\7f¿Óù÷c\9dw}Óÿ\7fßÕ-&^ëX§ÑÎÏ/?¼üp\97\v\1dz¾\0?\7fö\81\87/èbÅøüd\1cüH_\803ä÷\12ëq,Ý{ßÇä|\88q¬\8bGÏä\17\98ãúz¾´÷½\8f
++¿ÀE´³Hý«qüúá\8bÎ\17~\81¥\9eÿd^ýTÞÁØ\94¼ò#õ\ 5Ö\rýÚ»á\8c\83\8d\a\91Ðþ{\ 6?\82ß:Ôü\bøk6Ô#¹Èç\8dL×#8n\18\87¥\a6>-ç3u\r6\ fyâ×^x\92è\14TñS¸oÈ[>Ò\8fà\84!\ fzé\9b¯Ü çk.\vGß\9cG×`Ç0F«Ïít\r\983$e¯Èu³ó&N\e8\15W=»æ\9eÆ\9b0]\1eþÉ\83ÖýLí\82=\8bû6~üÕm§vú\ 4]\1eþ]\83ÆÂɧ]þíÎÇÀ·ë\96Ìãq°}\98\9fËó¦æcàc\97\87ßòÛwàØuÎúo6NJH]\99ôav\1f\83\ fJ\9d\1c\80köÝx\7f+ó\9dÞý2ï\eqüh÷µ¯·²\1cZ[öH\1fîıjÅ\8d-9w¹ý;äºwã¸á¥Ó\e\9f$×n\1eZ¾ùì\9c\91\ 5CnøLo\84\17\17öc}ýÄ1¾\95%×òÛ\8bô}-\8eOÚk^ë´\vºù»gq?Ö3õ ¶\ fÚ\ 53y({\87ù\9bÉCÙ7è\füyét\e\98`42©]Àõrù¿ÿ\9dme95.Í\82yô\ 2¶J\9dsè\ 5LêRÌðb¸ç\98þÙ<xç\86\97º¼ÿЮ[7¬\97\99\9a\0·ÏãŰoqß¿\999úû\86yÐ\1c}\85BñvÅ\94¼×ÿkî°\8f\fó1 \98c`Ü\90\8aá\12æ£\8dµ$\97\16\9e\15I÷\18\83\ 4\9b\18ÈÌ\fóÕêh\8dwD\93bò>Ò\1e;Ø^ï»fÉzÍ\94\92ïãihg\95<Ö\12"þ\95C)ïæm¯\8f\1eÑ\95\14"êa´4 bo$É<zÜ\85ÙüTë¯\94Ðg.z\12ÓnfÊ3±^$õñ&\bø\1a\1de\ 5ðsÊ.áâ\9c(©ÍDÞ\12*¾õ\99\aÏ\ 4Û\96\8d\1f9J´\e\8fµà\1eLþM\f\11\9a2o¬Í2&÷3ȳÇ(\85\919⤽\1eÁ\9ø³éåÛj¢ø\b\ 4q\1e0¥pR\83Di\1d\87\1c\9dÃ\10E ³2ÏÜð4Þa\8a¥Ó\0S\9c1úL\0\17\81}\\8a\96\1aÔ\84ó-o9\8a\ eÄ\ñi,cO;\84Ê\85\8aW\aÌ\ 3ç\8dB\ 6\ e\1dÈx[O\91I×\85\92ñ\9cCËEÊÁ\89A"ç¨\9f\92ë\r6¢.')ú\98q¶\92Úêx\9fÄRB¯L¡¯\0ã¯ÔÕ¢\86;m\ 6¢åº*\98«:\8fÎ|1bÔ@µ\ 6\ 6\9a\9b\1f\13Ï[z7\14ÏÔz4¬\98n=÷1o¼\f1¶\8f·yü\9dR\92\18vâD%êíã9 y\83ñ"í\80«±:\fe£ð¤\1aj»cE\86ÄPuI%Ó\r\82Qc¬0ËH¾ÃÏ\8eF\148W¤¿#S}
++\9aîB¥é\0E)8
++-æÎç\aß\a\94^(}.¼aP\9e\1e[ü¦\bT>à\8e(F¦øsåVïÄà"s"0Ï\185OÇ\ 1®yÌSS½\10G\82\82gâ\88ïªÞG£q\118=\98\83.þÿvÒÔÏ\9e¦\aÞÏÆK\98Kw\ 5\ f-\16
++'\84Î\ 6¾öý\92e\87ÎbL\18äÇw\9e9B\97bºÇ\ 5¾\12\8a(\9e\98Éçu6.I¯É0«&\89Æÿ\15
++\85B¡P(\14
++\85B¡8\1a0\19ÿ\7fcÅC·N/\1d\e½Ebd3ãÞ·\fqµÇö\9fr¨éê'Óç\8b3nöÐ\97»ø%Ó=F\187{Lbx\9fñÊni~ñÌ4\91²\9d\83\aýê»®kºúÁu¹ùw\ fùð\9b÷¿ç\1f[\19\7f[(\9aí\ 3\7fÀÿÆeÿÚ⬦ÓsoÜ\82]86=ñpì4é;=÷ÏH\9d³Ç`/\1eú0S\93þ³R6»¶ü¦y´å\1f\19â¬ÿsî\96\16\83õ¡\8bë®\e8\r3õη\rãòµÏÿÎ\7fvÚä]\1cr³æØ+\14
++\85B¡P(\14osHL7\8baEè8\15sqF\84\aÀ ¹a°:õq÷LZMíy\ 36{Æ\87#i=%djÙ£Ü'\92iBt\811z\93È\92\89\9e\91å\9aÈ\180ÂV°9z\8f»\98"òóÌG\17¹}\13JÄ\ eË3Ó\9fÆ\1c\86Ä\9f\12KK\99÷"<àpÇbqq´h}\88¨)\87\92\19mGõ¾ôqêÙ¼\ 4RÈy\1e\8e\84£Z\0-,*\9a\1dªCõÕ[æñ\17
++ë\93aÄÊ¢Ç^/ÓÍ#%*æ3\1an¹uª©\ 6ç
++\13ì\8dÐ~r2>\vÏ©\1a窥\9c\81§\9e\E}Å\93\8c\94b\10g\ 64È0\88Î8>ú\93Ð>\fj%É)ã\7f0&6Qe?9Þ\93\14\82Öæà\8dðlzÿ\88é\1e ³j\ 6ø\82>\97Dï\ 1ÒÞcµ\9d×Â[ä ¢ñ\7f\85B¡P(\14
++\85B¡P(ÞùÐý¿B¡P(\14
++\85B¡P(\14ºÿW(\14
++\85B¡P(\14
++\85BñNÀdþÿï¯ý\15?½´×ÿ¿\ 3ÇÊg\96ü¸éỼpÔÈù\ fáXó¥+\9böy°¢e¨P(\14
++\85B¡P(\14
++ÅÏ;D»Àggsñ4å¨V\9c!\82/)\88\9d\ 5\rEB¥@\81Á\1f&Ç\98é§AÿPrÓ60ÉR^ \88-\ 6Í;¨ù\10P]p.Ó\1e\82\ 2\ 3>\ 6çm®¬ÎáDÁ5&\aÔ\12\82£\8b\aÅ\ 2¬x¦å\92¢«5¡¤H]ÑÒd\84¾\19´\171\952\ 3Y|;h+`Q\9d\8b¸\81;rÿ¿ôàʧfîÿo\194æÎøú²µÍSÍbÿ¿CÎoåþÿÔ\rÿÖ´üLçÃv\82\94]?B\8d<û@óÜB»tù(\14
++\85B¡P(\14
++\85âí³¿OÅ\ 5qü+4ÿ£©d¶\85\ 6¡ôÌ\vtGôØS{zB¦À4ö÷ÖPÈÐ\95ì\1döÕüõ@u9\85\8aMºç\1e=\ 5lÍE61\9a\94½I&u:\7f±\1a1\e,Ø\9fw¿_0ÆRÆ=°À\a|\98Î\9fø\13ûûB\1d¿l\ 3ê«\91&\81ÙÆJ\87Ð\12\8cóF¬Pé\12èCIh¬øý¡ à\14Õ\ 2=-B\vý/\rª±\14åÿ+\14
++\85B¡P(\14
++\85Bq4`2þ¿þý/|azéØèæÁ_ïÚ\vOz\9c±üj¼\1dë¼üøÇ\87¯Z~@Î\a\97Ç:^À/àXzÀl\90óÉä\85£#óð\ 5¶\ e^\82OÿÍUÍ\8b\8ff\15R¶@î¿\1aÇMßqFÊ|rÍ3ðÞy|\ 1·Êu;pì:gý7\eo!¤v¿=CÛ?vë¥\9d¿_¶ÍûïöE}û7NÜñ¡Îïó\fÜ)íü(\8e\ 3÷ozEÊÈÜ\90²í\83gà¯\9e~m«Ó;ß¼ÿÖI[èïwóßoiþ~!\9bÖ¿×ä~ôWüÃ]\e_hÞ\7fµ´þ5¯Az\14¾kÉ\96}RV\9do>\84\ f\fã|ÙÄ\ 3§veÙHÙ\8ea\.|þ¡¿í=\ 3mkçп\8b&núÓVVmëßSR¦~\82
++\85B¡P(\14
++Åÿ/>1>Þ\1f.bkàª5Æ\9ab»8ñ,>\80ÎÓÃÍEy¯§Ï^bä\17ÿuÞr³úÍECR9
++l\8d5dñ\1fçgC\8a.zWlÎ\85f}Éc'å¢õ\ 5\7f1ÞM§»*adlx\ 2=þª7ø +¡\14\9fP\13\9d\ 6]5µ¸æaç\v.\8chaFuâSXm\11þ{ÁÞÎVìd\\89%8´;eé\88K&fì~R\f\1e\1f.lOÌÅ\92·nkð1Ø\94+ã×9{Çp6Ú\83f\87\8c¶Vt½úà\1dû\e¼ñ¥\1aS8&\81±zS°\93 \81C\14-NT2Òë[\1doç8`\7fç\1cëÀ¬¢\1fµäÆ;p®\fk XT+\15:\83¹°%Ç)e w ÕúÌ\ 1\b&£uL)ðÅ£O\9c\11\876`VjÁÍ8×>b{[S¶F\18 ônôÉø¨ú\7f
++\85B¡P(\14
++\85B¡P\1c\15\98\8cÿ/{|Ѫé¥}ü\9f\81áSW\9fþ\ 3\89£\97\9aÆF·\ eqä³\ f<|A\8b#\87:6z×qýçÏ<ôþÿâù`mF=r\9eqîW\ f\9c"|\81à3ê9Mêgìÿ\8cg\96\1dnú\82µ\8c\8d^"ç\19Ã^þë\9e\91óÙ»±ÑÛåüyüü£'íåùb+ê¿Uê'Oá\17_:Qx
++¥\9a¸ptûÐ\9e\83·\7fBâëü]O\8bw¯\1c®ùÉÎ+\9fhe¹+{Vî3;_aïÀ\89X}îºoµ²P[\~?ëÿbËó\8dËàj«ó\12¹\1fãë×<ùÜ×ZY\8a-.ÿäñýx\8eO|÷ØÆs(\1d\ab\9dÔI\1eÀs\ f®úNÇs\88\8d#p\9fÔ¹\13Ç9å²g¥,'×x\0+\85#°\vǦ'\1e\8e]YÇexqà\bÜðúsÛÛ¼\96\98¤ì©¡-×O\1c㥬&×ʶÉukp¬8sÍþÆ\8fðÝý>x|?ÇaÁ\15\8dË`CW\16\8eëÇåÉÝë^è8\10]ÿn\19ø\11?Øu]ãG¤Üñ*Þ=¬¿m_]óRÏ\8fh×\9d0´sÃÄ\99§KYö¾\8dË\e\ 3¯âà\9d\eÚu\ 5£&e\9f\1a®\9bÎ\81P(\14
++\85B¡PÌ\ 4c\9852þZ³·%\15W+ɳ\12_\8e6òï\9c\99@m
++ÞýKi׸\1a#é²¹\16c+^\89û\984^W%.\1ckMxçex[î!áîèíp}õÕÆ\10\98\9d]\ 2£¬\8cÔfëcñÕ3&ÊDë\1cR`p»\84èMÁçl´Î[Æ®\13®±\11'=ê®TF\v\ eÍOx\81äñâ=¶\ 4\9c3\89\rÍ §r´¦zk\8c±\85á\\1f¢Á§\19\9b¯¹2Ä\8bÛFç#N\ 6üèð\83\vÉJnwª\fD\97âB5ÁæXm\1fÃõ\86\ 2n\f»\80Ý\88O®Jd\e\97£sÙGÖG)8\8c\0jµÁ2\86\8c&¸àb&ÿ¹HH\19\83cH \96 ?ëE«\198÷5ùÀ˼é¸\ 2¡àÃ9\18ëBéæ\8aC\84·ú\98s\88¤ \84\91\81\87 )é\98ÀØÍE
++NbÛè\85©Ì\83Ï-Æ\8f\9d\8de\8cÛ\96\90X\9b5ÝÜqÞ,sÝ\97Í\81Ô\89\8fà\9cÍ\93÷Á-°;¢r^Í\7\14És\18\alé08T«Ë)\e,0\83\1f3÷X\fÇ»Lê\0ÆÐÆ\1a\8c/\18}\8bÕÑÖXòS¹\14oql\1fÓ\93°¸±\83u\9cut%`õÄ\82\1f\r&\8f²\80\9eú|\98
++Ô\80;%\8cP-\\9fÔ\19\b5Õ\80ÅÍç\0\93\8bG$'ã³ô\1dÃ\8eÁÎ\94%0|TP_ÁÐ:\92%0µ \ 3\9b°ªd$0Ñ%Ù\84\87\81¡ÿ\84\1f1h>SV°`ÿÇ{Æ"û2\8dÿ+\14
++\85B¡P(\14
++\85BñÎ\87îÿ\15
++\85B¡P(\14
++\85B¡8\1a0Éÿ\7fù¶ÿxtzéØè#£^\8fã\94½÷o\1cò\98ÇF\17\f¾\80Ëþùë\1fm\1cêTÇF?2p¹o=ÿ}\8f7\r¹`ÆFO\1cxñÿrѲÿ\96ó>űÑï\1dËó,\1cÿ\83³¿ÏóÑ\91çÿä±ýç7¯]ÚÎG\8fû\1a©ç\ e\1c+\9fYòã\96/@ÝÁÇäó3u\aÏ\97v\92«\7fòý=Çßt\1az{å\1ajö=ôåË&ZYJ\8d#¾nÈK¸ù\ 3ã-oÀÚÒ¸ú{\8eíëÜà/ÿv+Ë\1dÿÿ8á¹\7f\ eÇ*»åÅVVjã¤ß>´q|bü+\8dÿ\1fjã²\9f<ä;|üÕm§6þ¿1M?pÇ0F¿wòøË¬ñª\16\8e\8eÈýø\81köÝx¿\94%_[;ï\95²\8d8~´ûÚ×[Y\ eíº\8be\fÏ\eX0è\0Þø\8dµ\7fÝr\ 3\×\87³\ 6MÂÝK/kZ\8dÕ¦VgÓ\ü3\1c\97¾¶ì¶¦«X;=Æ\13\17÷ý[¿ÿ\9c\15\9d®¢ký{m\18\97+'ÎújÓU\f~j\ eC+ûí?ieÅ´9Ú=åº\95N\1fK»î\91a\8e>}î\r-§ fÓú`\8eïû0SWñ\9ecûvN×NT(\14
++\85B¡øi£ç,SIÍÅ ¹\91sèÁ5\1fò\1c\85óìKî9Ïxi
++M\v\ e¯,\ 6/\82ô\0¯Ö\87Z¦Ôï]$ÿ¸ãÕg\8f×Së½èÀ\91v]B¶ÖÄäð\82\9e]6\81Ên\ 1wOB\89öÙ\15¦\83zã\fÞÒ|Æ~\80$ï\88ÖÕZ¬õ¸\94ôx\13JD\v|&×Ýúd\ö©Äb=\9bà\85èîpÇbq1Z\94kÀ+¾Ç\vj¦¾\1cª÷¥Ï\11HÙÛ\98B²6ÅìM-\86ù\aÆ\16z¦£%¬/Z4\15\7f8\13RASK*ÙFTí\rê¶è\ 2Z\83\9f]¡4\1dú/zq\1d\17\9etÿÜ\14ð:\ e;î\811dz\ 3\99Ù¢\9b6ò¶óooë£æH
++|,Ì\8cEw\ 3¦\ 2{\1cÚÏ\ 5TWpï\92¼·\15ÍA«\ 2ÛÄ\ 4\ 1òâ\ 3êÅí\v?éű\1eݽ¦ ¦@²'\f*Íud>mº\84ÛâVX¾\98SÉ\ 1À\92°\16\8dÇ\vt\f\98þ.ïÀP¥°T¼ý{&\13`V±¸\vo\82ùÁ¦-eTÅÄ\ 2ºåy,:îg*ÚY}Î|02%ð°¬*\ 5\ 2Sa^\ 3yñ\98=\8c'\19ô5\ 4\8ciÂ@\e4¨\ 6Zõa\89T\8c(êÁÝ+µ
++\13Æ\a\v¸ÏMÁôq0°F»¾ã*J!¢Nf1wy\14\I\18.L\ 2O¢%ÒwËåÙ?_?Oy*S÷ÿ?YV\96LÿNúåÑ\ad¯Ä\8däm\1f\18¿XöÕ6\8c\8cuùãÜ{-?°æ\82¶w¦/À?\fÚúGê\ 5\84!\1f{ùáå\87Ûþ¯\86±ÑKæÐ\11¸{ø=Â1«~í\9fä|6¨\7fϰ/\7flÿ)\87Z\9e\7f2\vG_\91z¶sOþÅU-_\9f\vMöt',\9e{¿¾rQÿ;\80?Ú½¡ý\ e\80*\99m/?ôåТ\eZ.?¾\9eÚ\1erßÐî-\13gýeËÉwÝ\9eõ\eÃu{\1e¼é\95VVR+Û¼¸ÿýÀ\83ï¹f_Ûwûä§ì\9f¹/½ä\97.nûü\»v6}\80Ù÷äß;¾ïö\9d\e[\1fJ.mo½}\9e\þ7\86±<´díË].\7fhíÜ»hî}÷+\83þÁúÓ¶<×öݶÓFhZ\ 5\1ff\1f^¿â¯Z\9e?¾\ 6Úï?\86\þ'þ¸ýî`R\ 3àîEsï×ï\9dÇ#á\87\83®Àÿ²w-°v\15×Õ·%á\9agc7q\14Ji\ 1ãÄ|\9dù\7f\12\b$5\85Rpù\180ÆÆ L0ðøÄrÓ\88ºI$$ "¨¢\12UH\8a\14KuÁ\ 4\90Ü4\11\14BE\ 5I]Å\84ÿ·\ 4Ì\8b¡|e\92\82J\9a®={ÎÜçwß{R[EIñ^ÒÁøìsæ³gÎõ\99³÷¬uùB\1e?ü\93UïÛ:\r?À\81e\1c\8e 2g\9fÊß\0¢O<îû´oUKç\9fÌõáá\8aã¾cÐ\ 5ÿøåã¶×ù\1a²¼¾\b\ 4\ 2\81@ \10ü:\7fgÑ´:Ô´Â._0°\8e´u½\8bU\96ÁR¹~{±\9a>F8\15±´)\92ï\91¿\17Ð"\9föàÓÒ\10+ï¤êÞyZY¶=ôe£:\96\81QÓ~u\94ZÖ«XÍ*bÖ§ÜXNâ\12Ú\9bM\1f pIÆ«¹÷å|]oò·\9d©xû'ÝSOûÑñª\9eÇíçç>ÛdÊÒ]\17þ\0¬^±\14Fw±Ü\8e´Õ\9f¶¬{íb$B5MÛïÑ=,u±
++\8dDØ\ f\8fÑò\98Ä\0B þc1\8avañnbB\9d\9e\16ñ\81¾¸\94Íò\89Úìh5K\8eNXè¢æòý \8b(r,}\16É\9aVå\ 3nû\8c¦ ¡Ý\1aÜ¢k\99>\12\90úAáTPÚ\9b\14\15û\ 6=Ų\8aøíé[AÖ\ 3\1fLò=\accS\19SÏßȼÇZ\1e¯ü¨\90H)Êbqüw5b\1fÐX~©n.\10)\81×\81>Ù`qî=úé\ 3\116 \e\ e\ eE\9f\89Í\80Ö^Ô\1a\8c«£\ f\1du.Á\99\18*K\9f\8dÐè\ 4o²æ\81
++ô\8dFã\1eú°¢É\9dð \ 6#à\ f\1a4ú¬\85ñQ\96Ö_¨Édj\18ºA³%§úuHe_Z¥]\19\eG%[\87ÑÎD\ 5\80\11*\9f¡èS\9fÁèÂ=Nöÿ\v\ 4\ 2\81@ \10\b\ 4\ 2\81@°k@Öÿ\ 2\81@ \10\b\ 4\ 2\81@ \10ì
++\18äÿo\7fîöý&Zû½§Û^ð\ 5÷^y2ç²»Ðïkùè;ïÿßPò£\89/àà-\eO)ç\9d÷ýÞÃãòüç\9eSÎgÒ\ 5LåzÒ\93»vì\90\9f\16]ÀLåï×ö\8b\1fô\8býË~~Ú Ôï]×ö\83ï¼Ïÿöiôú6·Üòa½¾ËÆéîMÜ\93\7fuËW\1fÞw\7fCË\81¿{ê5ÿ¿æñ¯i6{Øò\a9\8f_Õ½îwµ\öµ{\9fûRÝ?¯¸Ì\8d-\8fÿ\9d\8fV>\82l«\1eá»ÓèîÝÔê{w\8f\8bÿ\8dóñsÕÏ{£ÜGIò+Æ^ù\ 6çÎëª98ÐX<å¥Ïö9\a¾ËñwÍÏKÆ\1e¸¥î\83¯e^ßrà¿°ûñcÌñà\13Û\1e\9f=¸oã\bÛ\12¥M \ 4\ 2\81@ \10\b\ 4\82ÿ\ 5ÆéÜiE)ßÁ\ 6«¢·\8eù»ÆëßyOûÄ£ñ\86÷\1f\17½Eí¢\8fÁü\12u\bIú±ì:w:xkk^½\8b±åç\ fï·\9fÈ{¡5úE\7f\12_BÙO¡Ô¯DÓ/:ºÙ\96]\131\ eö\18x\87\ 5¦¦L{M[\14à8ÚÑ¡\r\1aJÍ"ÍGçs\88QÅB\99\10h·\ 3\95\f'§Îú²\ 3D\11c\865´;dÆ@\1f2+*ÈV\1e\ 6"u ñ\b¦p6ÀßÄá@t\10$ïW62$:KIÿp+\ 4\ 5\18Õ\8ce'\89\ 5\1a\92\1cÔ\89\98\1e\82E½p\84+º\9a\12ÿ\17\b\ 4\ 2\81@ \10\b\ 4\ 2\81à½\ fYÿ\v\ 4\ 2\81@ \10\b\ 4\ 2\81@ ë\7f\81@ \10\b\ 4\ 2\81@ \10\b\ 4²þ\17\b\ 4\ 2\81@ \10\b\ 4\ 2\81@ðÿ\ 1\ 3þ¿Ë?ýøû'ZwïÝWôÕ\89çï\9a¹\8eyþ\8c\9bÑï-n<v\8b~¾èçÌGGü|ÛÛõ;ó\ 2n.ç\89£î\8aãö¾¿\96\13û½M\85K\8e´Ö\7f¸ä\90ÿ*çmðýÞ\82ÂM7\17Ç\1e'í{o9\1f\95î÷F\e¿Ü¡;\áÖs^Ù~ïóå<ñÿ}õÕ\ fÞWÎ'\97ú½ëK9Ãü\82÷µz×\9c~ð\9btÞ{\8böl\9bÕ\95\7fØ\8e?}\82Î\87h\14Ú_¾\93\10WÞ¢·Î}\92Ï[ÓïÍj~زòÀR~LÔ_æ\ e¤Â\ e{ó\ 3ÿIç\93Õ¸þЦ-ÿÀkóß)çs@ùï\96zÉøés\17í(¼\86ÎÄ\99½\ríüO¯ùLÑ¢'î\8bªSßø\ 2ÿúã«\98/\90X(\8am]³}qóJ¶\91\8ah±¹b;\92ürë*æ t:3?á\8d\8dÛïä\e.x¡ò\1aV>ÄWÊ}·ãøDZþ4ó\1a\86ÊA8£øçÃ8\96¾ÿDæJ\8c¹r,no¾^vÛ\85ÿ^l\895KgöîjóâÎÛV<Ä6\1d\98\9fp}\9bK\17o=ýf¶\99ì\8bíñY\9d\7fÏyõ\90\eÙf-\97ù@iËQ8ntg=É<\8a!ò}+fwý;åK§\16¿\18\92?-¶ëZ}Ë\1e<ó\10\9eÓ@±-\1d!Û(\8eUÛ~\7f7¶9Å>{»Í\ 1·Û\8a\17ªúeAã\9e\?ç¢Gës\92x\1c\8e\1délü\8d\87\96>\EãpËùÏ\15\eªãûú#ÝØ~í\9eÕÜ\aç#\8fQ\1aé\9e\9bµß\1e}\84mQ±m{ëûCW.\7f½Ú<ÛFgu÷}è Õ?*6Ï:¬3{\97ÍîêûzZÃõ\11çH±íÕ\9e\8bU¯|à7Ù\96ê8¬oÏÀ\99Û¾|xµ\ 5öõÜÆ»¹rlôfæ¥T\99}öô\9cî¾aÎÊ\ 3Gº>¬»ó´\17Ù\96\13÷aîH7Ï._ÈsÞD¥xÜO\1céê[>öÇß,¶dª_¾Wl\7f\87ãÄgï¾\83m±ry¾1³«ï\9e¯ýÑ\8f+\ ffµÍkÏØ=\1fù\åÁ´Å&\10\b\ 4¿n .)\13\1d©\96»Ê³5\95\1e·!ílbÇ¢sÚU\rk\1f\94 É\ 6\18\89V,àn¥\89\90+á*G\12Çv:¥\105®tÄÏ¥}LÖXë"\11h\19\94\10£ÉÊeâ«òÚ\90p¶\890àúà\$n0ü#á<nH(¸\88U+R½\8e9\ 5üº\16n0â³ò
++ÕØB\82\8cs1á\9fq\13ñRæHµ\\13\17\98Î$aî\1c\15®\82'ÅrtÊ\18E\82ÝIYcH÷\eM*<cx\v\98N\eÞë\8cÞ&ßi\93£ÉÑ\ec¢ ãyÊ\8aï\12Izkü«\9c\12É¥ã¿\86ÄÐIzÝD4Ã(ü\vJ\8cjJ£y^{\13©/\ 1ýµÙ'\95Y">¡\8b$©NÌd\11¯hè~B\1f-\1c\8e2à\11Ô\953^\143i\89cT\r^z\ 3þQÇ«\10\8a0¶ð\9a\91ÑÑ\b;§\ 31\81\91\f<L(\88ÔÛQ*þ\a½°p\19\ 6\11¯\9d\ e\17+R\16Ç\b¥\8c\11ÇÛ!^;áߢüÎTox\9f4\18Då\1cÞ¨cÂ\ 5\16þ.Tk4Ð$DNÄd\ 1ew>ÃM8\81÷\1f\17¢\9bB§\1d]UD\92¦\ 2M\94:GIë\£ï]9X"Ðý(+xü _Ãa
++3,ä\ïq)\92\8f
++\87ÛT\9cs¸\9bHØ
++m\1dý=©"nO£\81\89\83×\83®MèÑt\9aóxcuôÚ£Éá\1a/·®¶ÛÒ8\91Ìû\8cÆí\86IÍúó)ûHºì\ 6/vô,\10\7f\R\8a¦'ÊÃ;\ej\8ap\8b\v\1e>&\ 28ï\88Ä-G\9aµ±\12Ày\1a\ 2r=zçð
++åС\18#¹/ÐT.\83áKÿ1Ýè\1d¹ñíez@0ë\1d=mA\8fã\ e\84+˳\90á\ eæ\9fS:\13É\1d¦\81)\~\16\8d¥Y\86\9a\v«\1dºlSp©°\10\ 2.\13\15\9dÂ\7fTôô\v\0Ï\13Ë`\8a¥n<J¥\9e\88ç]a\ 6Òó«éq°e<\7fYÜzh?\9a\8b'ÎaDáy\9bè\17ÌáÉÃàe\v\8fÁ\91ÁEü\10éì1Mñô¤T~.Q{F¡\ 1÷à\87'Ñb\ eS\1e\rp\ 6¿Vxö0Òø À\fÀ\ 3\80'\1d\93ÈÐäÆ/\1a¦\1df\8bRD\9c\88Ùm±`ÅÕø«Ê±°$¢Z\8f\1fF\9cDßà\10Ü\8a\9e\17~GÌD4?×ù\94\13~\ f0ÿ\921x\80ðÓfu\9dÇt\9e\1eµD\1d´.§!®Gü\8aàÇ\8c~DL\80\7f\9còYâÿ\ 2\81@ \10\b\ 4\ 2\81@ \10ì\1a\18Äÿ_üîêg&ZûUë\8db¢ó\7fð\95§8ÞîÒÌÞ¶\12û¢XÛÚ\8f^Êqb\13Çè6¶xï\13ß:÷u\8e=Û\1agü^±M\1e{^Pl§ãø\13}Þ+\1c+õ\8aË|·é\r.{véW9F\97ë}ë[}Kç\9fÌñ×lk|ynkÿ\1f<öäÇ8F§J,Q \10\b\ 4\ 2\81@ \10\b\ 4ï-\94|!å)gÃX«\94wA\19\8e\8fç\98½QÉ+K\91v¾ÖG\9f(ù\0\vH¯k^\88v\99.P)\91\88\9eãT eBÖVù\88¿ªr\ 3¥\rát¶.éHi\19&\90\8cb¦,'J\8cÀ¤ÈHA}k8×Å\91\96¢\8aÔ\0\e²\89\9cg\15q\r\96Ó8áRîÚ\80ê\8c!-C\83:£Í)V]ÅÿC.\86Äÿ\ 5\ 2\81@ \10\b\ 4\ 2\81@ xïCÖÿ\ 2\81@ \10\b\ 4\ 2\81@ \10ì
++\18äÿ÷\9fZÿâDk¿·©äÝß\8ccþÏ\ e9\96ùç´ë÷R9\7f\ 6\8e\83·l<¥äÕ;ï;>¿\93qìÿó%\8b\v¯\9e6±ß[Öxåþâ\8b\a¿Uøí´C9Ç6N²\9dyïÞ.|d\93ï/\98×8Õþæ\80³~Ä6\eÙÆ<\83ÄÅöÌ?\°Ø\ 2s¶Ìì)m ¾®\87>¾\8c9ñ¢«¶Ë\1açØ\9a\97\8fþ\r¶yŶõ¥¾;p\9cýÐݾòÞ\ 5æbã½\aóp\ôâÂOVÞ»Ê\7fÆÜ\83\93sâmi¼wko¹è±²gÁhÅÜhjÏÎvæµ\9d-éÊqÖø\ fW\8d\1dÿIæ\8có\89yÓ®ký\eæ\85{¸ñå-ÛvؾÌŦ*¿Û>¥ÌÉ9ÜTã+|ê¶e?á}\17ºúì¹Y]ÿ~k¿Qæ¨Ë¦ÞwÃ\9c®\9dËÇ6\1dPm\91Û¹º\959¼_cÙì®\9dÇm{mwÞ¯á<ûzÀMø»3OØÆ¶h½<Ä\ 2\81@ \10\b\ 4ïi\14^´ì\83\89\ e+\ eíM0¾ò£éà]áM\8bQ\19§Táª+\ 4qÊE«\rñìé\14ýt9á\9ckí\95\9b\82\ 3\93(\10\89_2S\92x,\8c\89\93r æ\92ý\8dK¦Éó6ÄØG´\8eÙ$ãp:;¼\bû\84¿ªD\94w*£\b¢l\8c*\12³\\b\91Ø£\vÑb\88.\13[£IÄ\8d\88®eãcP6:¸FgE\ 4\7fD)h\15Ñ'¢¼d\r: \17\15æM¥\83Bs4qúE\97\82\ eÁá6ë\ 3þ\1a\89=\8fØ\15\13Ö9T§O¦ò\ 3\1a\17\8b\8f'JÂhQ\99wÄ=§]¥$¤"\88\1f\9a\88¼Q\13õÂ{G>3Df\17\89\920gCÝ¢túà\83µ\9e\9aæ
++\ f÷4\9c¤Äs§pOp´pK\19F8\bÃ\87FeTà+\84w\85:\91Üå0ð\96('mB\8f¬\89\89\12÷sô\ 1v\85\ eûì)EßÁQ9'\1a2MÌ¢äeÌ\98\88.R\1a?\96{ð\17ÎdºÌx¢·ô6\ 6ãh/@¡Ï$ZÌ\80\12à1[¹÷p± \8ehöJN\7f\ eµ\ fɺ\902ͯä0V
++Î 1üRãxHËþ\0ôÌc2'ÛÍ{\93¢vD\8d\98\9drIJJlóÞÃ×Áeb¥Ä\8c\83\97cJ\18é\8caÉè9z\r\87)\1f\99\95\146\ fç$áÿ\13\b\ 4\ 2\81@ \10\b\ 4\ 2\81`\17Á þ¿aôÈK&Zwï}§ñçí¬ÿ÷\\8bï.ÚqÚÑ\9c\17`u¿÷ö¸ók?űyãûU[\8dÏÏ;\9b5Ù²íW}´a\1dÁ-³»z\17}\7fÎÓ5^\9dú½Ã[üûc;æ\9eSÚ\93uì÷>¿gWÎK;æ\97<\ 2gcè÷V4\9d±Ãv|®è\ 5\ 6oÐÎcËùa=¿\e[nÁù'üο\94|\ 4ôkfïºiø\ e7µ:.\19ûáÂ\9a\8fà8îþ\)ï$\1c«\1fy\97ó\ 3¬s¬I¶_Ë\95¸äe£Ø\16\fÛ\1ehý¼tìõ\11¶¥Ê¡x{\8b\9f_þÉÕ¬§çCâûöi÷]<¶ØÖ\\85\9aWpTëÛ°ÖÞ+-ÿaXOïúY\9d¯.zõÙ«ÙÖåT¬\9bÓù}íÞç2\9fcîò\18ökm¹pl\ f[uø\fß·¡Í«a½Û\8b?'ç\81ÜÔÊ\1¶ýo9ÇÁzÖÌÛ6MþÃ5\8d#òáÍË^ØYû®ßú°ò\9e\15õ¾.ßbã¬A}{r\1e\ 3\89þ\14Û»s\ 6¶\v\17VÍ<ÍýÛ«µsåØ±ßª\1av\89ÛÉ9/GàøóÙ§rÞDôU\13pS©ïÂ\19¤3¨7U\9d:Ã}¿ºåi\9cðüwoë´èØvv\9b\9f7ܳø%¶¹Èãà\1awæD\ eL\8cCÓö\9b¨a\87¾·y½dlã\bÛRä>l\99ÓµeÉO>øMþ]`½\1c\81@ \10\b\ 4\82ÿ :>ëR°::¥ñ&\96Æiç\19Rn£ ¶-\91å@\9a\8f\96Tî\9cr\16o\976Æ\12`·Á\91X["m<\12õ3 o÷ÁR\b4f\8aÖæ¢\9e¦Iî͹D±aCz\92V\ 5JúõuÇTú~3Æi\10Z\12Ó\v^\97\b²Âû±÷xÁ\f\14^\ e$7i\9d\ eI\eãð
++\95H90¢oèIît8=ZNz\8chqÒ¡òÖe\9dÆéñ\95¼\ 2â\99#á;ír6\86\ 5±»v\ 6çMʤ\897\88¥+Ê'0\89¨àH\1cN\17²:R´#\89Cx!\1aV\16\8c\99|\96ILÐ{EAd\93Ñò`èzú[2©j+NÊ\917\89&'k\aRÌ9â¿èK*Ú\8f3:=F\8c$©z*\9dM6\9c©ó2~\99\|\94KBAsj}Ö9ÆÚ\1e4Á\eV¨,Ù\ 3\812\1dH\9eÓ\92Ô&Í7Ê\8e m@ô\1fsÉ \ 1\99R#\ 2ÅØ\93\r\91ôH\9d6Y\91Øh\8dãÓ\ 4 xÏV±°ôÕÜ
++MÙ\bÑæ\88÷lÌõ\9cu\9aR\13s2ÍKJm ¤\rÒýsv0/º\9c\82\89\9a\98\12ÿ\17\b\ 4\ 2\81@ \10\b\ 4\ 2\81`\97À þÿØû\ eøþDk¿·®ÅÕ/ýü¢7k\9cßö{oµ¸ýÎñö\9bZÜ~¼^`¿whÛÓ>ë\98\ fý ð\ 2(\8aç¯hqË5§\1f\Ê÷ÞÆ~\8dåRìñÐ\1d\7fu^9\9f¼é÷®\99"n\7fÓ\9c®üñqûþ¸\18æÁ;ÔÊr>¨8³7o\9axþÖ\16\9b^óÄå\99m¡Æ\9fïj¶ó\1e~ö\1eÖ6\f5\96\9aZ\9cuõ\83\9f=\88cöªîÍ¿©õÿî\r«¶²î¡©qVÎ\1f¸\ eÇ\1d\9f8\83ù\f¼\v\1cgÝÞú¥6,\7f\90ù\f(\ 3£´¥ùú3\ f¯ý8Ç×ËçRØfµ~¯\1a;ôNæ\10p\96ÛòF)s.\8eS¾sñ\83ló\9aµ\147·\1c\81_\1c1ú(ó\v8DZéÃ[[î\98qþClK\81ëÛ6»+sí·G\1f©ñuU9\vZ[\96\8f\1d}[å\10P\\9f\eg[ÂíLNq}\8bK}+p\9cô\93ÅW±Í×27\ eò\a\86ô ·6¿\fÇ»\8f/õ \87\80@ \10\b\ 4\ 2\81à×\11SiÁá\95U\95xoJ\94Ì\90(,ÝÅ«'\89ÍÛdl¤´Õ\88ë¦\89½·xñ\141xcUÎÝ5Ö\85@\eã\93õ¡îq\1fÚ¯\1eTÐÄ\r\80ws\9bqG®ñlë°\18\89Y\93\ e\9d±üÞ>E\ e\ 1ºnC\97\17âP\99¥-ø(Ñ', ¼\ f\11\8b\17J\ 5Q>\86Lô\ 6\96\12\r(^ïc¢t\r\87U\11e!\ 4Ú\82O\19"\14c§\14\b\94\85EJ0\9evêgë¬!\9fa\95dSÆâ\94ø\1c\1cå\92`\r\87Ó\8eè\1d<\rD¦\8cÜ\r6rò\85/"GôÈ\91:\1f\9a\94\12VLI\11-\ 3\9a\172\9c\96Ð"J\84'Ú\ 2\8aëchàZ,la\90 > G§"µÛaôrÀиq9 \93i\15\9a\18)\19F%Ü\91j¾G¦D\vÔ\89\82uL\83qÕ\98)\85\8b¨`l0\18Õh%þ/\10\b\ 4\ 2\81@ \10\b\ 4\ 2Á®\80Aüÿìw\16ï?Ѻ{Ý7M\9b\92¯=ðS\17P¼4&3£ßKm\7fóÎûü\1fnqÙ\ 5÷^y2ǹ]èâÿÃûù\17´Xí!ÿ|?ó\v¨\90ûãâÞW\1c·÷ý\95w ö{o\95ï\15\14gÞã¤}ï-ç£ÒýÞ²\11:¿\19Ç\81oný\8f\92w Êþÿ¦/pÐ;\1fùY9¯\89/`kãß¿uËoÿS9o¼í÷Nlñï\9dó\14\ e/×ÿ%µóc
++'\7fp\ 6å\9f8E>º¶\17ýù3÷-ù\111Fׯ|
++\9c\8fpÖ\13t>E\8bþÎjíyß\8b{\95ü\85\94\15üyWÛ·þÀkóßáóAõ{j¤ë×κ ªñü\9f3öü78_Ãx\8e\8b_VÚz\19\8eÓ\ eXù(\8f\99Ò\9cKðÜ4\1c\ 6Ì\95@}ùâæ\95¬\9b\80Áã\18ý\8cq<\ 5\7fx-ÛrÇE0Ò\8díp>ÄúÆåÿÙ}.em\ 4«kîÂ^#\832'r\1fð^ý#©\ f·®b¾\ 1§kÜÿK¥-Wáxüï\97þ\98mÁs[V·ü\8bá<\8a~Ëq\19Ö\8c\98×ò\1aþlÿÊ\99\10â2\8f\9fFOâ\8di´\1fn\9c\86káñ6~çmßó*¶\85ºÿ\7fÅ4\\v\aN£'1¯q\18\fç\82\ft\1aV\8d\1d÷\95ª5Qu/\96¶gð\8c\ 5£Ïr¾\87®óå¨6'>¼ð|æL°Æò8,\eÇÑp\1f×G\9bì\8am·ö<>tåò×wæaØg\1a\8d\8am{\ eÊ\9cÈÃ0:Î6\91\87a{kç×Ó\1an'qÓ\16Û+{tý»ü\88\8b8gÅÇ:¶Û\9aÏV\8e\8dÞÌü\r*OÌ\9f9ý\8aK\9ea[Ò|ßQ\7fëî<íE¶åT\9f£9\832ÿ\95û\10\8dã±Ý«Õ7\9c#³[{\8e\86s]öÛ³ùìåc~\8fµ4ºglû4ú\1cG\8dt¿+Ã\1a\1c£ÓäÏllÏí\17v?¾òEøÊk1àf\99È\17!\10\b\ 4¿J\94ø%^¶Ê\9ed¥3~Í)\12g¦\88M\15ã\9cÈó>\15·;\ 5\1d\93U9\ 5¢#ÇK\ 3íBvÿÍÞµÇlVÜå}\95ºï\a+Ð\16Z\8ch¸\ 5\96]ÚÎý\12.R\ 3¡UØ.[.»\94[\ 4d¹ek\83\91Ô6!\86¤h7@\15\8d\89h\1aÙDn- \18z¡¥1Ú¢nÚZ\81\ 2%d\85õcm·\14XÀE.ú<¿\993߻߻ßç?bJv\1er6»gÎ\993ó\9b\99sæåùý\9e\9fIøJFz~ZÞá"¾*xñ¦\14\13Eê\13éR\92\9fx¬"¹\87÷5\9e\86\1d®CKñmÊ:\a´5\ 5\87\1eä\80o¼\89\1eßùÌ@xT\1f\19c\8cç843y-\82ð\9aµ\19v\97\ 1ÉÚ;ËÐd\95Ù\b£}ÀöÂz±\8b\89(\99ä\81'tô\am}çÉr\1a#Zå
++fAÓ\155É\19»ìð1`\9e'\89Ã\97Xc\98Ác×\80ï#ö\93&F\ 6\9dÃ,\f\8cרÊ2~?\ 6çI\ 2kT\1d\fö±\81\11Ö
++\9f\ eX
++c\94(Ë\1e-uüÆ\a\13w)<:b\ f\93`Av\8c\ 5U\87\1fÛf-:ýTAG£\ew¼û<\0%\16]EÍ=X\18ÆØzlÈ0K\Ô\95/×Êq§\19\87k\9a\8d$\0]\97ýâ|\8eÜ$Ø\ 6=<ìî¸y\8ce\126\9cr÷°£Ï\18\90\18Báß1\82è¾ÇîI\87\8ci IR³é\86µX\8f1¡²¾1\9e±ÿ\81íÅ®\ 1£cqk@Ó\12ºE½wa¯³cø?ú¯\ 3gW\0\ff\8eY4§\82!«\8f¹¶\80¾\0\9e-±å\ 6Í]\90ïÜs\89QW\14H`Î\0Ï_\18
++\158\87?a\86DÎ\1a\86\bÎq\92³7>'Î7G!~\19g®>ÊC8\19ÊÀì\fI\82ïU\14 \86D\8e_ñG¤O\93s\193Ð-\96[\0s\8câ\10\98\ 4XÆY\vë\8f\15\1c\9cÈ\ 5`«i¸\ 4±\8að\87\8aØCb\16;ú/`ù\ fÏ\184þa\v\9b\16\89ó÷:\9aÒ\16\f\f,íí`KzI`\13Zë\9b\8c×·òh.\83%\13:\19 =M2W0©*Qµ$<Þ\ 5*Rç?\fÚ\ 2¶¬\ 5\8cm@DZàÐÕÎÿwtttttttttttttì \98ãÿß|åÿ5¿téh,<\11\89¤Ï\1c¹aµðÌ\9aúÿ\17Nðÿ\93úÿ[äúi½\80õ\8d¯>ôò£w\16\8eUãüõ¤ß\96¬ÃqØæÛÖ\15\9eÔÇñh<\1e®?|ÍQ/\16\1e4\aÔ#üÓ\8d8\1ezôà\17\v\87\16Üxt@ãÈvõ#\98ãùwõ#xh\86çÉ\7f}gÕÊ7å¼\r~<ÚÙ¸Ä]ó\v\94\9cõÓþ\ 5\aÉõgá¸avåËr>Óßa£´\87Úþ\87¾±ê$ñ#Ð\ 6õ\9cØì°áw?Pô\ e\fý\ 5\8eÙ{xî®z\aª\9dß5\7fÁÍ3C\7f\8fùæ;\84G\rIÁ\ e¯K{ÎÁ±âµÛO\93ñ\12¿\86µRÏ=\1cË3ßùm9ï\93\1eøæëq\9cwçé\8fV\7f\ 1]xÕer\ f¹Ó/ß\7fNá·U\b\85WݹÏ`×sï_ûH)\8b¹p\84«\e·8pDã\×\1c_ïÓ®òâ\ f/\1dî[÷\97W>]| L.mÙÒô\1a\1eÿâE?)e¶òÆ'I\9dôÁø\8dÿ¸úðêgP¹S\99ºÂÕ¾vüéOÔ\1c\v\95s]ÒÚ2Épðx(\9bö\178±\8dÉU³\9bï/eÑ\15ÎuûÒáyÓþ\ 2;Ç\83=§ý\ 5\967\9b½ûò\92Ó!©ÊǾ¾tX\83Ó>\ 1;\9b\ fÂÕ÷\9c_êL1\95¾ojüï}+
++×ÎÐ êc1\1eú0\9d\9baçÌPçk·WÎ\9cT\85\94müïG¯=³\96E]êÜ_\9e÷G8Îܾ²è50\81\94=°l\98¯Óù\1e\94´e÷ù\1en\9b\19ÆvÝsÇ\9ePËL\1dÛ\99a\8c¦}\1e®\99\19ÆaZãâúÖ¿O\7fíÊÒ\a\13Réß\ 1ml§}\17\ e\9a(\9bï\83°u<ôïcßÿ[]} B\19÷±<o\ 3Ûyë\15?©¹ ª\8fÅ\11ãalÏ\9dÝþ\17µ¬ríǵçMç\90ؼïп\17ャø.`\ e\96²4qßÑÅ\1f"Z[Ú²efx?¿ü'çý{õ3p¥-O.¢ÅQ|\87v¯ÅqÍ"þ ã½çê¼ëðê\83\10ËZ¹if([5ûÐ\9d5\9fEí\83Û{®ì\88\9aëBÛ2\ e\a·÷ÒtÎ\8a\af\ 6{þÚÖç\96\962çÍ\1eôE\17N2\ 6\ 6AÚ\1c°nµÓVí\9e×\9aàÈ\98BÆqÙMò\9f\95·¡\9e0¾ÊÁ¼\85úËX.9zO/ÂD\8f\19o\95S \9b\87H©ng4¹K¼÷¬Õ9fã\8ce¾ié ¹$§\99I\1au;êZ\93¡ÁzÈ\95+!mǬÎ\91\14jåÝæò1W^\13½ágÃç\9c<ó%Ç\84û3¹"Ê>k\9d\13ºãÈj1Ó2Y)Cª\88ì\15é2rp&R\1f<ñ
++ãPD\ eW\93\94²0DL0\92õèµ]2?\ e\93í ÉÎé5\a\rSY\86r\ e1\9cd\ 3)?M\1aUS\90g^\8eq4\ f/\15ÊFóE êæUg;á\ec\ 2zÏìÜVW^/ª\1cæÇ×:Ø|\92Û\1ctÇMöÁÎÓDß\85\ 3U\92_\eCÀ¤3\95\87%e\89^(,wm\19ª\8b\91Í\f\8cM$ya\¼\1eI\96ZKeqXÔI\1aof\1eÇ\1dI²TËØ\aÔʰØD\9e\143\94Ý\87å"\9døð©\13\9f<#\80IÑ¢\8f¤\ eµÇ£<µ°å\14\82E)?îRô¬ ó\90êÚ\98\17¨E ÷M¦Ö¤¨\16à{9}\12ÉgØ\92áÄÊç\9a«Ü2æYµqZ(v\1aS\8f
++ì¾ÎÉÝù\1cü\9fç÷^$ÖÚð\95Éy\0Pn< NYëÜþÁ2Z\ 6\a\v\ek\15ó\8a\83\8b¹\96\83
++1`í²>ñÎC;,Y~¦óÂ\ 2óÎÓ§-ØH¹sæC§\8e?óÐ{¶Ý2c=f\ 1º\150@\8c_Ï\8erýh\æW\83\1d\80ñ\9cæb¡\9bbá9#:\10$\85<G\1fOð\vé¢\ f<§ðÞBùS'=Á
++QL\87\17\ e7,X\12\89éê\1dF\15£\8ckÄAÁÓÕÀD\ 6\99c\97Èá§À;6½N¢Ä1ùäí\97ðãÂÓ(øVc\90IDc$ùJbE\18Å\84U\87'\ fëãíè\v\82×"'"\17\ e¯Ç\16×p\8d³\ 5¤í³,¶\1cèè!®\15!\bk\8eþyÌ%íØXCçlÍ8{\9b\93©þ\ 4o]¬<f\193,`ªáSÒ|0\ 29tú¬`\85D´#Îå&À+\13õÑvÖãu\8c/\ eÝLp\82>\14t>\89LØàð.á\19L
++,LLZ¼\930\ 6¨+p\95È+9°Í0±\95¤[2gùº¦4Á°¶ñ\86ÇxÒ\7f\ 1ÓÌÿ\80&¡\ 1\89ß\ 4|ê`\v\85§)¾þ`0L\1f¾ðð=\12;óU\85\89\8e¯\16\16\98Åk\82Ro\86î\ 5\18\1a¼*øâÇÈ0ã\ 5Ì\96\14ý\ 10øX\9c\99Î\14x\85âë\8cÅ\8d\9f§¦¬\1dïºþ\7fGGGGGGGGGGGGGÇ\1e\819þÿs\97\9c³|~é\10sLnç¢'Ïú|á]UåûJ\8cûgq\ú£ßÿBáAUåa>Þb]§óÐ\9fÚâg§µâ]\8bwÿäQ%ÖÜD¥º>{GGGGGGGGGGGGÇÿ7Ä·$\ 4:¸¥l\9c¥c\17\ 5\9ev\93gÁ*kBv\8a§S\8dÃç\91èµcñ{X3¯\80¸lø #ªÉQ3\87\ 2kÉLT q\1d\9d%\f¥\ 4¨\r\80GFO\ f\az{\ 5M\17 ü\1cW\ e7Iþ\82Ì\1aTÎZ\1cótÊÙÒcÎ\1aºÆ\1aü>O õáñIEÝùÿ\8e\8e\8e\8e\8e\8e\8e\8e\8e\8e\8e\8e\8e\8e=\ 2süÿcÇ=µv~éx´MâÞ§ãù\1fX \9eÿZùÿ ÓñüËäúé¸ýíM÷ú\ 3;¾~r\89óty\5çoÀqê\13\87ü\97Ä·\aÆÏoj~\ 5ïÛñ;\8f\17½}£Æ£ÏK;YÙû^x×k¢\93oµ\19\8fÖK{¦õó\9f\97çNÇÃonqØÓ1èw5]ìK\1e~êÁR\16j¬î¦E4ëUÓ\9e\9f\8e3\7f¬é\85¯ùÓË\9e©e¹\94½$÷ý1\8e¿yÏ%[j,y½ïù\16«;í_ñäÞ\83-¦õå\9fo±³¯\1eYcú³u¥\7fEÛ\9bZ\ 6'\1c}Ös%ÖZ$<\19ûÜ4òÝ^ç\16½p4´\94íÕr LÇho\17»|\ eÇêGÖìUÊrÕ\90¿¥i\bü÷ñW>Z4ä]mKÚw°Ë´NüÖfëé8ìm\8bhºïl:\ 1\17l\7f×Ï\96²4èî·þ}úÞó\9f\19tÛË}\e\9bîþtÌô7~~\98/?¸{í³µ¬Æô/\99\88§þÈ¥ÌT?\97keþ]ζlÕwÕ²\1aÓ\7f[\8b§>ç\91÷~¥ÆaרçmûÌÕ¹k<uGGGGGÇO\e\16Õª~ët\1f&õ³\aí\7f\1d\95*qû\8cÆUTÜ6²!ù)\8cÑ\1dò¼\17ý\ 1\87z\82£¼\83\1abøçi
++,¤ûÑâ\9dE?BSjß1\92=Y&«\8aåï襦<\87 ¶Ô\8at\ 3:aø/ìf\r5Úq>8\8b\9fFOs\8c\8cQ§n\ 6.AÛE\13\83*ôh\95§
++\ 1\ 52` `TL\f¡\ fx
++\86\11cé*\1f\8a\e\9d°\93\89D%\13¹3|Ý\86ÀÌ\ 3\8eqø\fÁgb\ 5<\98áõ´\1eÆYahÐø`){\10\99sÀeQ½Ð¨\85\92=ÆZ*\14 \87*Pl§ik¼½t)`áÈÄ\12~\81|ïTñ§0Bf´~\94\bùAK"RO>W½\8f\85t \16Ò\16aî\ 6J\97 ÿ\81
++"zÐ\91¯z!ós&`´8·\98¾\81*\ 6\\bÔjÀ\b*ÆÑÃè\ evÇpa\ 5s¼\fIí \99\17BQ\10\80:\0ÌZÏ\17\83ä6\809\82$\1e@I\92º<Uûɺ[ʳ0 \9f$6ó=h6\90\93Ãã\ 1µýÔcÐL¸\80Y\9d\99Ib¢¿\96\ 3fÙT¼\90\12Z&\81úXé|ßhÑùÀ+\89R\ fØ]\eÎ|ré\16Ó\19\8d f\asdeþRs\98õV{ê/äT[¤2e\180ôNt#\1ck¶\98E\14\80Ð\14ï\90®s¬\99}\ 1kvX\v\viµ\14\ 2\1aÇQ(Ã)ÑmÈ\1ao:¬,Oa\1d\8böÚL3'.G.~æAÐÌM\82\95iE\ 3\83i\11¬¦\8e\r\85\1cðã¦óÿ\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d{\ 2æøÿc\9eþò·æ\97\8eG×6\1ev\92ç\9f©:üäY_»ç\82\7fúï\95»½Eî!\7f¹þñOæ¢ñ\1eª\9ewÑ\ 5¸ ǽǮû\9e\94y\17
++\1fü\8d\96«{Z\1fýê\96çzý\ fOþ\99êWP5´oj<ë´\96ùCM7þÕCÎ~¶rÚU«ýæÆË\7fj¿+\1eÜt\9aÔ\9bg.ù5w^ZrgS&SÊîY\90\9bîèèèèèèèèèèèè\98\83ä\IÖ\85\94Ýn|Xª\9f\8a§ß\v³Jè@¯\0Ýò Ì÷;hy\¼\8f\99n5ôØ\90Ô\a5ß\80õA\19<0Ð\e%J¢\16ð\1fóº¸\90c°øA¨Sb¶\8d \1cþa\99vÃ\1ak]$mn\98\99 â¹ô:Òô\17Aëµ\89ôRQøíê"ó\85$zIÐq\86\9e\v$õ\99$\83\r ¡ä°ð^\8b\ f\87£\8f\93ÎÙX\93|¢\ 3
++ª/þ\aAù\182\13òXºñй\ 4-Ñôo`
++ ï\84ñ÷ô\88±\86)m´gn\ 5ifF\87³\15\r\0¯\9dU6e¥\12=\99\983Áª¤¨5À\9c\f\1e&5\99ÞÆ¹óÿ\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d{\ 2æøÿW®]süüÒ¥£\ 3Z¼ýu+\9f^Ub¦Ã\92ñhKãÿ\97\9drà?I¾z¥Òx4nׯØq¾Äç§hóxtp»þÒÓ~ñ\9f%Þ^Y=3:¢]¿aöÃ7\94\98ú!îúÉ\89²ÏÖ¼î&\94xíe¾é\98ú\87\17É\89~P«ó\82ÙSK¬ºõ©ø\ 3l[0÷ÀÌh¹\94Ý\8ecõS_¿·ÄdÇÐ9ÿ\8e\8e\8e\8e\8e\8e\8e\8e\8e\8e\8e\8e·\17\ 6]\80ªm0÷ï¬Sý{ÎÙQ\f\80Z\1e\9er\ 5Á¸\98¬ÍÁ\18\8bSV±\90Ò\18É9\1d\9c·\1ag=\8aL´&k\95\83\88màGj\12\95\ 6g¢ÃÅ\8aª\ 1:x*\eP\1cC+¯\13E\1d\9c)aúÚx\93\83Uι\8c'â\ 2\8bf\99ä\94¡s\ 2E\ 6èù\10P·¯>\11V{7ô\81R\16y¡\9c\ 5\9dÿïèèèèèèèèèèèèèØ\130Çÿ¿°ü¶4¿téèC¢o>\9fÿ_:z©iáoÜß}Dtû\8dÃùk\9a\ eÿg\8eܰZx~í\96\8cG_Z@ç\7fcãñ¿°ù\17þ\8eç\9dñv<z©é\9c\1f³Ãý\8b\9c÷
++ç¯\93ú?\8eãÆ\1f¿ûïå|ri<ºKêY\83ãÐ7V\9d$þ\b\9aù\ 2n\93çò¦¿ºjå\er>0\1fÁ©ýÇ|ó\1d\12Ã\1f\92rãѸÅöÿêEïß!íw&Î\8cÖËùëq\9cwçé\8f\16½\ 3 1¡V@Ó±\9fÖB\18/\eÊν\7fí#µ,\17-\84m\139\ 3®ºµæ\1aÐ¥l§\94íÏ:\8f?ý\89âû\10\);bÙ`ã\rÏlدh(\84ªMpHÓ^¸ø\89¯.+: )\14-\84\9bÅFïÅqÆÏ~¶\94å\ü)ö_6ÜwÕwϾ£øL\98\|\1f\96-\92\17à\ 1¹o÷ú
++\17¶Ü\11Ó9\ 3\9cÜw6\8eßÖ\97l¯9\ 3ªFĦ6WÎ\9f½áWjY(ýÛÞlý\89;¯ø¾\94\19]ó\1e\Üt .\98=æ«¥ÌÙò¼\8b\9b\86ÿ5¿·îG¥lxÞAM\ab:\ fÁ§ö\eæÃt\1e\82½\9a\9fÉ\9f§õÅ_\84AHR¦Z\1fÎ\9b½ò\8e\92O@åÒ\96Ǥl\ 3ûpë\15¥N&ó\94²\87Û}çÌ\9e|wÍ' J\9d\e\97\r}\98ÎCpjÓ¹\98ÎCàZÙ\19\87)ã\90®ù Zî\86UϾûÖ²\8e\95íù\ 4::::::Þ¾\98\88;.q×Þéú÷\bX\92\821¥Èë°¿´\12_cÐØâ0ú¸ê\92'ë±/ÅÖièS\1a=ª\94tÊÊIªq£LÈÚ*\1fñO¥D½\9cúé\14\83w¨\8abä&Pª\9cºçÉ[\17p+³*P¨Þ\9aÿMÿÜ ñ\14ÿw~îÜB1ß%÷C¦\10ºò9'\9f)\18\9fpm¶ìtæ6;S\aÝEm-zCÉ}æ.Ph ¶~AÂĽ\89Øx2ÖÜeã\14%íc\14Q|\8bNÅ\84\ e[æ\85°s¹\ 5\98Y\0]Óy.^}\ 1\1d}\93\14\13\ 2D%Ülö\91ºð\86*úVcP(ó¯Ð$\95t\88ÊZ\95"\86Ã\ 5¯\1c¶´d\9aÙf4\1a½ÆeN4ðI\13\93\1eÆ\90£\ fL
++\8fnGl-CàH\va̹\80{ÑC\15aê\9c«.>ÌËàp\91\85\9fÌ=Á»)Ø\8f;\8b\ fµðË\8eºò
++\rÓ\92\9a!ºEs\11H}É&\12âFiѢǯ*\8d \81ù\10TÔL\91\91Ø\v\87qÒ9â\1af\ 1À\10àá&2`\1e¿~PÀd\10ZØqF¼{f®ÀüIVÁ2\89ù#¼ò\ e\8f\ e\89úÿ\920\82¤wÂÌÂ\93ÙF\951¿\ 3¬Æä\ 4¾æ Ðî-ÓØ\97g:\85ÑP>\94ËS\9d×óµ\f$\97\81Ì\19Íy\8a)\8cö3? ÖKÍé\80ià`\ÌhL\86H¡\82\90½gú\ eÎâ\8c9J£F\8a\a`}ánË\f\15\9cÿ\8a\892`C#\19,ð£9wþ¿£££££££££££££cÏÀ\1cÿ\7fã¾WþãüÒ¥£\87\84ã$ñxÃò\ f^F~0&C>_¸Ý;p\1cöÊÊ\ f\15^[»ñhónó\ 5\8cGÏK=䳯=é\97%þßj§Æ£\8d\8d\9büΪ\95oÊy\eüxt\9fp\9dëp¬Ø|ÛGå¼ó8_ô\bîñü\85ïþ§ðÿ*\86ñè\9aÆ\v_ù\ 3ÿAø|MÝ\81ý¥\9d\7f\88cåK§\b_\1c\9cÁõ\9bÚs\1fzî°WE§ \a´çf©ç\1eöùÌw~[ø\7f\9fôxtFãêWìPçÉù "ê\91úÉ\9f®x}Û\15r>Ç43º©ñé\17ýÀ~±Ú§æw\7f Ùèå\8d¿ùL)ó\95oÞÖü!¦ý\ 5ÖNø\vløJñ\17p¹æ\93o9ã/yø©\aKYðå¾¢\87À6®\7fî=_+Z ü?®sü/\9f÷×\87]P\9eçM(|óÎEò1¬nm¹|vëýUcÁ\17\1eþ¸}\86ç]ñã§®/ei\97<\ eôA¸oEáÓ)ñYî;Ilv"\8e[ÜùOÔ<\ e±ø ,i}X÷ܱ'T\9f\0SÚùdãý§ý\ 5¶,\98«af\94Z\1fÎ\9d½ü¨Âß[]Ú¹¼ù_\1cxôÅß«e¶\94]×ü/>¶õ\ f\8e+e©öáêVçy³G\97:£µ¥\ f\17·¶<øg¿þoÅ\aFUÍ\8aMÍOå\97fNÛZÖG¬÷\9d+u\92÷?ó\86S\7fX8ú¨;GßÑÑÑÑÑñÖ\82Ü\9báFEçäBt-¶Ö%\92£\ e[;Ç\84ì\13±Ã\123L:Ùd\9b%W¸u¶rÂ¥¾\98Â\ 29Ýßv9ê\13\1ej(JîÈØêDiòLú\16\15YÔ\1d<ÙZ´Ã\18\ 5S¤DÃ\90¯·\9e6ðÑE£Tæßñ\17flw\ eOÏC<³òhO\8c\fY\96\7f{Rà$\£\87í1\ 4®Rਯ8\ 5$\9eeâõì½c\9bL@}\91\14xÎ\86ÑÙt] \96ºõ\ 6&rz°½ò\ 1\16N\8a<k¦ººåF\93>
++1*&®Ï:£FRÌBQG\f\911 m\f¨Õùla\v\e\19\ 1\9ea'\9f9d\18Cì¹\8dJ\91\99èMFß9qHÕ\93&v\1aw)<::\8b\99@±y\f,
++råÛ3 kÒ·Tv¯|½
++
++}\b\8e\9bòD\9d|\f¸R2\11Ðaz!`§\eÅu\0ýÃÏ\1eEYyü,J\98'h7Ý T\8e> \\ 5\\9b\85åÆÓ1¾\89Î\1a\1aVò\91s>Ú\b\93Ó\85Ccê)q·àeÆÓû£»ÆÑ\ fDBÜ\19º\ e\eÂ@¡´\15ç\1c=)\\1d?\98\87\11ë2,\9c\91\11\ 3"ë%© \15¶Ò¸\1f\96àn¼^\8f \83ó\9c\190
++\86°\9eÇX²?©Î\93Ýå\12\98âØéM1\997 c^ày\1cJíjÎ\80\8c¥\8aå\95\ 2Í\87a¢÷
++V\9fEé2géù\0;\ 5:·`M&L!¼ 0\82t' \81~"\12½O\a\fEo\19¶\fó&`dRàÄ¢l\0\1d\eÐÝÌÅ\83êÅ\81\85qþT\ 3ð0<\16¯fm\18%ÎP,AñIHLD\87FðGNà\12\8aì\ f§7W\9cøòÐë\85D?\9eíi\9c ÿ\9e \1cÚ
++\vcIºÎÿwtttttttttttttì \98ãÿO¹Úm\99_:\1e}I8Ëi\9e\7fSÓÑ\7fÿ\8eO|PÎkãÇ£\9b&Î\1fpaápÿ\87½«\ f¶«ªîï¶ÐÜ÷\b\ 1+V*©EÌ(\12\9aÙß\1fòÑ\fB¡N\8aA\ 2\ 4\b$\96OåA\80Ò6CQ3SfH[\ 6\98\ e¶tÊ8NuÚÇ@\v\8c´2~ëØBm¦\ 3£hE\8c\f¤OBÁÊÇ\8c¶Æ¡¿ßÞû\9cûÞ»/ù§\ 2bÖ\ f/\92³ïÙ{¯µ×Þçܬµ~+Ûá`[\9f\97¾ê_\ fz¬úLY/àÂþûóy\ 1¶ö~éýÿóÐ\7f«þyå'\a[zÿøx®ý}>ö_½scõWë\10kÛLi[\8fÏí\7fzæwj\Bnm[ûØ\84?zË\86Úg´\8d÷ÿö½øÀ?ÑËtñׯ~g\95µü50ïëçòã;Zn8ÿʨ´]Úç\94\7fhÉ\9aÙêëõ%'D \10\b\ 4\ 2\81@ \10\b~^Q|öÁ\90c?\ 5çMÊÑißÇbt>z£RbX\ 1ã\ 2BÇOð\1a\8a\7f¨1,¹Üm[lBÇË¡\83õÖFôébÇÍ\91£ÒE~\95Ã\88ÿBGo\18«bèéÇôc$\a\82\v)i²\16@o9C\ 4\f\â\7f\82!M\ 1£q\82ñøQ\9d ~PÙ3v!*\b\83o\89ÿ_ \10\b\ 4\ 2\81@ \10\b\ 4\82}\ 1#ÿÿÖwýZXØ:\1cl£\v{\11ÿÿî¾.À|ÿÿõ}\1eú\91\ f¬<«æ\93ë8lyÑã¼\0?êýükVÿê\ 3Õ\17nÌp°b\92×Çù\ 2¶ôß\9f_/à\90~>óë\ 5Ô8\82ñz\ 1\95ç\7f¼^À±=\9fý¥g\1dõ\¹î-®ï,ó\19ç\118´\8c{\13çÿèáÿ[®\aösJ\9f\ 3ÿ\8e\97ÞRø\ 2bÌäG(\7fß²\9aúùòaÛK\\83Îøþ\96%\9d\\97üÎaEÞ¬¬\1e\ eö;°ÓÛ\9f|ø¨\17[=\ 5ô³¶Ä\10\8có\14\8c8ðçò\14L\ e\\99ÿGð9MOï¬ë\95\1a¿ÿºa'óÙ\7f3ýD«CÐê Ì\94ñOÃçÂGv\1f_ë\108Wï»\7fª\9bóç?±ñ¡Ê+`Z>û-¥\8dyþ;>yÚÓ\8dsÀ×ûf¦:\99îÿä\15OÕ¶\14*7þº¢ÿÅã4¦\87]\9fãõ\v¶Lu2¬¿û\ 3ÿU9\aTã¸\9f)kÁ\8e/zjÙ\rµ-4.\ 6WúdnýÕoº`Wã#hõ\ 4~Ðs8\8cÇw|¶·çÓ·\9eÑâ;¢®m[ûµ¼î Ëj=\ 1\9dS\95¡ò\18¼\a\9f\17îØôT«_à\i[Ús\ e\9c~ÿå\ f·\1a\ 5ºr\1cÜWÚØñ\a?7]Ç3!Uù6ô{âÞ\89K¾Vë\17t|\ 4ªçÅØ=uùwk[nãÝUä;\81ú|vÃßVn\ 4ÕêOÜ^ôr\ 3÷È\9d\97<ÞÚ\9aM¬\1dv6¶avÙ[k,\8f1µ-í\857aûd·'6>óË¿Øx\13l\95azY·Fã\9c
++ÛK\9f\8b×K¸\1fïù{ßÿHm\8bM¾åý\1e<}×UÃÊÅ\90Ú}kz\19Æë,T¾\85Åk)ü`Ùè¾÷|¼¶\19UmþñÉQÛ\9d7×¶\1c«|_\9cêä[ÿôÉo®5\18Tª6ÿâ\9c>ïªúÌ&Ö¶Kû¶SgWÜ]㣴z\99è×ý[\1f»ö»µÍú:Þõý\9e¾í\v'îjqU1É\ 3ïg\ 2sj\v[Ö!y\8dù3´R$t±ÁªH"oÓ8{_\a:\85tÉæ`\1di\92YPd/¼Æ\96lÖÌå¥NRɱ®ãX\1f\14\8e9&=j\15\v)7Ód59¼\1d\9e\v\14Éá\162!\a\85q\98¬\e\99§\89qIÇlÐCd:ËÌ\a&ó8n\80®\98\96\f\1d2ÕÖó q\1e7$t\1c5&¯\1c©Ás
++¡p{ÏË\99d¾2\ 6Ç\12à«
++S²Ì§\8edÛvÌ\19Vd²¶P!æ\9cѪ\8c*\15\97É©\8e\ 5õ*\95å l\10&ãFªÒXæ¥2IS1±9áanYXÚ\16âif\7fc\ 5\95g\16tv\9e\1e#Rpc!нMÍ'f\98êUñ\ f±ìR\9fkþ3\98Ó\8cuÂ*8ª(8\18\80ò¹ñ¢\87ÌLa¨Û\91[>2Ù·ø\0-5«²ëöOÕ\rÛÇ\1eÉ%w\1c\82%\133\84à\ 2\91\11=\86¨\12\97?\90ï;c\11"V\1fz\85lª°hÛd=\8c¯ÔÈÆò`Á`úxe²\85³\¥\f\e·LɵÍö\1dlc\11>\0l4\aÍÛÂnÎC\7f/|è\vó\94±\r²*,ú)êÆ±Îty\ 3y ñèK_dõ\ e\9ecÁRmÍ\8bfê2¶Eëç\95æ¼ç\99¥\99\7f\8fç\1c³\8f]N\13/\9b¯²änsñ\1cvæ\1aÂÜ2é\ fp,aݰ\8a\98za@ÀZ\93Â\9dº ̴ƶáõ\89=ù\92\r\ f?\98¡Ï£s\8cLü\9a\86áJ \ 3*¢¼©A_0v\92ÀÃ(è¼u\86ôø\86Ãá\ 2÷\ f\ 3\92Y\ 5\1evg¹u¹¥x²`õh¨hI¥/Ï\93\90\15Ù-\97
++oW6á\1d\92\1cð\9a\85\ 2È]\8f\93Áwóö\C(¨0Jp\18\18\15\96ÊÔ\83ÂGS«\ 2Àþ\1dl\93\85\0¼W4\eCþ lTEÚÿHÆ\b3\92\13zrùåà\96¯ùùÉÏy.Ìåyè¸î_éÚ\a#^\0\eʾÅ2Â\88!¡¥\9dã ÂFÎ\z\9c\fÌÑO4\15\18 \rå!\9a¨ <Dñ¤\8eÜ:\9eG\1eþ\1d î×\1cw\87øÿ\ 5\ 2\81@ \10\b\ 4\ 2\81@ Ø\170òÿ¿áK\7fù\86\85KZN=} 7\1eìÞS¹ÇÝÄܼý£^¸¥øÝ\92óq8¸¾Ïm\9fë¯îrÞ\17÷\aß³\17\9fèL\9fï\7fö\8aé\1dÕ\7f©umÛÚÏáÔÙ\13\8fh±\ 3I|\\ 2\81@ \10\b\ 4\ 2\81@ x5ÐÅ\eì!®i±ø\13Ç@\r¯b`øJ\8bÕ0:ÛôÓ\8eW\10ÿ¿@ \10\b\ 4\ 2\81@ \10\b\ 4û\ 2FþÿwýÖù\17/l]Òøü\99·zÃÛ6¯mþü\89á`g\1f\17°ò\9f\1f¨q\ 1*äáà¡\9eK\7f~Þþíýõ©Ó~ýKåzTz8ØÖû÷÷\7fß\9bK>\7fÌ
++ßß='¾àüo\95ø\82hóäà®~>ï\9b}â£\95\8fÀø\9a·{]ß¶ùÉÍ\aUî\81Ðr\96¿2ºïÙ\95·×\1cpÛr\8fïïÇÚ8{á\115ÆÀä\96çÝÏo<·úñþ¾\r³_ùLÍ\91v®¶m\99Ó¶°¶ü5}Ûx\9eð\8fæÄ4<xg«\11ï¤6\80@ \10\b\ 4\ 2\81@ \10¼ö0\87\83 YO\96\12£
++w\8b±ºÄ (&òGUxq\94Î*+\93³&ÿ\85ó\99ô\råûsù\15\*\1c.)-ÂUS¹\ e¼×$ Ð9\16.®n\ eâÿ\17\b\ 4\ 2\81@ \10\b\ 4\ 2\81`_ÀÈÿ?Ø\7fõï/líxæI\f°y˪窿ÝÚáàÐ>Ï\7f>\9fÿÇÊõ³ñ9jûÌéÅ\7fí¼\1f\ eföÀÿn\ f<üÏô¼÷\7fwùÊ\9f\94ë\81ü\ 2£¸\80ßxá\ fK\@\88F\r\aGöñ\bGÿËþ\85#<$å&\akz\8eìåwlüZ\9d¿j~ÿ\eû{.úú\8e/TÞûà+ÿù±}Û\85\ f_õ\8eÊ{ßñuÿG\99\ec\19~|Üi\8fÖ¶àê}\a÷|ÝÓ³G\7f¼qâÛzß±Ë:\99Þ{Ûû\9flm¹r\87\1fÙ·\8dsâ×Z\v\9cËú\87Ï]Yùäuãi?dY×vî7ÿQ×8\83\18*¯B\8d3 \aøKKÏ\9cm\9cê\8dW!Íá\15\9f\1fg09xêÀQÛ|^\85\8eÇ\81q\14ïÞùý%-¾\83\14¥\ 2\81@ \10\b\ 4\ 2\81àU\ 2kD\0\96Ì÷1¥Ø×\90\ f>°\ 2J«{`YD\80´ù\81ER&FõBr,\95bXÖÄw5\12\16ÔߨuEL\fÆæ¾&\a\8b\7f¼Lµ\ 4^é:\ 1\vkthGV\7fVáɺÔQ*õi\1cîÂÏd}h¹ûÖ:ãl\84\90¬PÁr)õzf\ 1\1e\16Æ(÷%\87ÿ\ e\8aÝ%\16fêê\82`\9a,:Â\89·1¬§(Ñ\ 6ÖÇa\rV\ 1(¢`LH\81\91\12¯\ 6m\144ìXoÄpQ"EÉ\19ßµT\83ÂÒ[Ë\9a\1cè½õ-þ\7f\81@ \10\b\ 4\ 2\81@ \10\bö \8cüÿ«.þè¶\85ÃÁu½/xÕ\vg\9eÔüÿz8pÅ\7fL?ÿ\11ÛgήµØé\9f¿¥÷·ÿñ»ßô@«\17\80ë·\95ë÷ásäs\ fý°øÿU\f\93\83õ\avßÿñ=\9d\7f>º\9a³¿¦ø\9aïÅgÓ×>ïë\18!Ô¶Må>ú¶ÿçð³j\8dnm]õ\97ßRÚ\18SpÆ.;Óê \98êÛÞYÚ\16¯5\90J\eë\85\9fñÄ5ÇÔ\\7f\9fª\9f}kïó\1f¯k¾¥×Ñxýî5¥Müå\ 2\81@ \10\b\ 4\ 2Ák\17ôáz£èX\8dN§À\0ß\ 5>^ã}õ\85\17\17O\86\95ÞcÆÿ\9by9àÚè¬\83ÎÉ\85È|íà¬-\95â\83Mté*:\99N¬%\9fRV&²Z¼UÎD\8bñYE\9e¿\98Bq\f[å³É*j\93-¾gM\9d×O»Æ½\81H\11òiã\13î \8bÚ)LÃ\96ºõ\ e?¨\12\vÛ\aL0Çl0/ú¬!\91+>l§é\8d6\89ßÄ\14Uô&@GM¯6xWb\10\1c&§r
++\90Saü\18(4ækñû\10]«¨Ð\9f
++²¦\14\13ÖÃ%H©#\94BqéLÏ\86)ö\11cbm"´£sÈ\18:`\1a9\aÊ\1e½V)CXC\9dr\810\ e\14æ\13\160BdÍÞ¸\12TS\82ölÀ\7f©ÌI\18íñ\8bTCY¶è\19ÓÁ\b!\e²ü£7\97-Ö\1e\7fT)\1av\82;è\90\8f
++
++Å\92C¿\18\11j\82Ö#4\94¡(h\1dS\b6\9b2<ÖÖà[
++Âh\86<XòÝeô\aU`JÐ\16½ÿ^é h\90ä
++\88TD\b.r\19\ 3þ\b\83ÀÊãZÂl9&ì\91¿OÅÿ/\10\b\ 4\ 2\81@ \10\b\ 4\ 2ÁÏ?ä÷¿@ \10\b\ 4\ 2\81@ \10\b\ 4û\ 2Fñÿ×¾þø\95\v[\97\f\ eícÛ¯_ùÄ©5î=L\f\a\a\1fÀëãü\7f+Ê÷Çó\ 2^\9cê¾ÿÖ÷¾ýùZ\7f/\87á`?\86Æ\17~ÁU?Yõ\93\1aÇ\9f]Ç\vH^»#¾úgß.ù\ 2\9e|\81kK?ã<\82«K?Ì#Xzò\e¾Zø\ 2\95Âõ\89=ð\vN\97ùÿ9>+_<ù\9b\85/Ð\19ÌgÃ\ 1\9d¼óù\ 5\9fês\ 3V½xÁ£õº5ÃÁg{n¾¹¼\83ÃÁú\92»°\1a\9f#¿|ØöR¿Pg\8c;ìû\9f[×p8Ø2Éëo¤¼'\1dòR©³¨4Æ];Ùéí\84\vV½P®;Î\7f¿9ý¨óÊõ âäàñ©n>\17|ÛþCͧЦæ0l*}1gâê·m®ü\83Z·ü\86Çú<\8c÷\1e·þ\91ÚæråIÜÝÛÀ\15³\93¶¶\ 5S9\ 6·õ÷\9dgÏýnm\8bí¾åK»û6Ï^^¹\10\8di¼\85;\ f\1cµmþtms\8d\vqbÎ}¿}SmË©\8e7Ó¯Ãïîºæ\8d\97QÕú\8f§LvsY¾¢ÍÅâ\9fÒv[ÏWyÕòÍßkm\8dÓð\8býZm9fCÍA±NÕü\8dǦº¹LÏ\1euwåeÔ-ïã\942ÏßÄç̿߸«µå:\97¥\a\8eî[È\ 3¹©¬Ýâu*\87ý}\97ÏnÿTÝW±Ëk)ã\9d\8fÏ\ fï»äÙ®ÊPs^¸\8f¾ó©÷ï¬mÉ×y^YöÀGðùä¯\ôxÝ\936T]\7f¬èì\1e|\8eIç<ÖrlLã¹ìeÿÀìT]÷\1cLísy¿î×\1dtÙ7Ú¾MU\86\83û¶«ï¼ì\9b-ÇFÕy\ e\8b®\17Ï¿©96Kðùàç¦+_¥ ©ÚÒ¶~\7f\9f{S×gÒU\86Kû\9c£³WLï¨y;°Þº\ eý>\19¯ÑyK\91\9d9=WÿÓô#µ-ªÚç\17§º½2Î\9d¹z²ëó¼ÙSÊ\1e3A§Úö\83¥Ý}×¾ý¼z_TªÚî\8a¥\9dí\9e¾ëªamKªêóðÞæÇk\82\1e~@·§×ïX×µ5;{¨Ï/ZÿôÉo®¹G\1dO©; ;S^wøôã-/©q\9f\1eÛ\8fwêì\8a»+ÿ§¶U/iNÛ\157×¶¬ëÚÎô\9c¢¿§Ox²å3¥:\975ý3áCKÖÌÖ6ßôrâä¨Ï\99\ 3j[\8aR×TðZÆ\9c8^¾¶dÆ\ 6ï\r\9e¸¦ñfi¼Ò\1a\e\ fÏ)ï\822©^Ï\ 6×M0 [2ñ\ fA\17¾'þÙ\ec¢ ¡ÔnÊ6k\8fCËâÄÃ3\ 4§ºÁ9¥O6\97@W«\83\8b.àÙãsrÞª\84ïi¼çX\1xTÛ¤=.\92Å7ë\18\19F\e\12ÃV3Ï^ÍHT\cL®Áé\8fK\8c\89ÍV+¥°I\19eì0W\9bñG\95\19|\8cÇ\aÄ2Öã¢Ã\1f\r¹²\Я\ 2O×\9e¸´º\ fæ\ 6íC\7fÐknµ¯ð¸M\ e*Ñqþ\1aN,Âû\ 5y=fî1\15eÚ÷\rnf¸1Tc(#\94Tâ¢-õ\rYÐFýÎñ\ 5\9d\85\9cpæ\93\e-{k\1cäc®h°X\95RÃ\vV\ 4½j\86`c] 0WÝâ>ϼQ¬ Í#`\91ñ\0Ð>3P\1cêÑ\ eÏl\1c§\11ZÏÐb°\85\8a\8d=a®\I\f\1d¡ìä eE\9bÃ+Õh\8e0 ¨\13/K4\e¬\96\9b¯\17R\92\95UgX´µóí\1eBÓî1&\16:&\8bÁ`°\86lÙΦà\12\16\ 6\16Ë\0ð\1aÏ^"¾}äZ\91#Íá _t\1a]©\7f\168ó\0cÂX\91\ 1à
++z\80- ;\83^q\87µ¬fÆ\92fX\83\90\f9ä`R^yØ~$õ\1a-\ f;ÊCu\10UÅÄ\80x×xä\ 2v
++T\90¡}ì<|e¾¬Á\97y\94õ\84\91©\979Þ=\ 6L ÊíËù¡26xt\94\ fßC÷Íf\15ó\ 10\80\1aÙø¢\9ctL\ 2\80\11Ô³Ã\aÛÉ¥É\ 3\87S\86áñ-/`âeâêÃ\e\ f\19ÊñN\8b+\1d\7f :Je¿r÷àØ\80Á\ 6ü\ f6\80_\94ÜGÔ#ú-\9b\v\ 21à\1d¶\8f\913£Þ\13\97\s\1f\1a¼3e2§;\ fY0m¼\94f,§M*R{xÕL84\ 2mÚ±g\9c^\86\89\ 4\9aB8ô\160+XDÄO\95PÞ_\86\1c \1a¶\89\19ßË0\7f\9eh\11\87_Âî+ñüøm\85ó\f?EaÏØ ªh\1f#ù\12Á_ê\ 1zC\ 1¼móÃ÷ðefG`\v\9aú£\87{7³\ fn|\8béâ`Æ.Ç£\ 1¿\96¡\1a\8b\87
++&\1a¨-\9c\ 28-8I\9cc8\93 5%þ\7f\81@ \10\b\ 4\ 2\81@ \10\bö\ 5\8cüÿ\ f]|ë\83\v[\974\7fûBÿÿ\92Áº¾\ eÜ\roÛ¼¶ø\9fµ\9b\18\ e\9eéýÕóýü×ìÁÏÿ\89â»»\19\9f\a¿±üùê\13\vô\9f÷>¨£_p\ fWÿ¿²\9d\9f\9fþ§KÏ:ªÔ#ôÞÒ\9f_æ3îÏßo\8e?ÿ\ fJ?Á\e=\1c¬+rÑï¹ô\8c×ý{\99¿OzrpJégq>Â\eËØôO~ø¾êÛÓÆ«æóìýîãµ\ 4ï)÷\9d\86Ï\85\8fì>¾ù\97]õ .ï¹
++¯xÚ¨VKp\9eo½úÁÿû\80Ú\96|õO~e\8e\7fy¡_zS¿6\97>}Ò/´\18\8cæg|°Ü÷\17\9cÏñ\97W\9f5ÿ\92¹´]YÚè/\÷Kk«\8f<ææË¿±÷é~æîæ#O:TùvOvã]ôÔ²\ej[h1\aG÷>ÏË\9eݱ¶u~éMeíWãs»;ÿÑæ_\8eUö»öÂï¸bª³%·ß\86'k\9bk>ëc§ºñÎþþ1Ç×6oª\7fòÊÞ¦6Î\1e]}ÁÆ5\9füÌ^üËé®í¥ã¦«¯\eë×üõž\16÷!ߺ´³\89ñÚ\8c·öò\8dû\97«/\98ÿÚ0ûÌG\9b\7f¹ÙÒÚ¾þå9³§V\19\92k6¸¡\1fï\9cGÞøéÖÖ|º\87\96ynàº\7fïÄ\ej\9bo󼦴Ý\81ÏÚ\1d\9f¿·¶Å.>`Ùh¼\85~éýz\19Æ}Áî n\1dNýÞë?^y@UÓõ×'»õ;ã¦5O×¶¨\95\1cÆ\ 2\81@ðÿ\ 2}ÖÊ\1aú°sñ\93Ùú\fXÄï]½z\8doKG«öP\83\8a~i\8d×5\9d\1c:ðA7\9f\19£\1a²ÁÃ\89\8ec7â5ÃS@Ó3©2Îuëø"d|v$0£Ã:Å\8cÇ \1dÇd/3t\9d:OV3²Tá\8eT¼\89Å·\1aðÌ0ô6&G¿ â0Æ\86\88÷.Kb.\1d\9dJè=(å4\ 3\a<»ó\18Êë\90\8cµtÑÒ\97\9c\12&\15={Ê^ç\8c·Rºë\94êü£\vã.è\1fÄ\98.GrlyLÀ±úYÐÖ\87\18 Zæ4é\12\8eÎ'²nyúÛ\14Õ\8dÇ`ÈPK¦§SE
++\0mb9èùçúäìèÜô\81/'\ eZ\85ôÉZ\12\92Ñ\ 5\ fÍ0*\82OS2\91\910\fW½%[\99ÅZ`\1a\8c>ÅLm*c9\83\ 1\1c½ô\8c\1dð¤\89\v\14Ry\9d Np\85 D¥\90XN9È\85\113\ 3,².o\10\86\14u.\ 4²Õ\ 5ôí[¬\ 4}\95\11¯-¦ø ]bh\81S\1a³nq,A\91t\r·$\ 6ªX\97ÓÈ\ e¼Ã»\1eG\ fQµ:h{\8b7ÀO\ 2³Çús]|\80"\9f\1aÖ¤Z¸f ;úk5}ëÐ\9e\87ù\96\88\92\98éQf\14õ0\1c\98ºá~\b\86ßç\9f\1880±Wߪw0SO\86½È\10\1dSHöðvÎ\98\93`\18³A&5ÆØ0:\ 3\ 6\82¹dF´\84B\15\a;uôâÂ\94\14yåÚ^Ò6\96÷$£1\1d¬Kò£Ø\ 3,Þ^bZöÆ%\bc¢Z} îÀ¶Ï
++ëÌø\86à-ì\811 \ 6F\991¡àp>\84B0\aíGMUFH\0\1d\1a\96¬ÃÖ\f\81\9eõP,\f\9bU3P\bV\90è\1egì\ 2®Áæ<t¢<½Ø°\8fàsbD\ 6\ 4\ eT±ªv\10\13©õ"Ì\95º\b\10\87G\89fÜ\ 4\8e&|\13\9b\8b\ e~Í\0¡ÌH
++\1e^\85\86Ï\87>F!B¸È\80\16\8c\æ\f)\15Y\13±>^%è$)(ZñøÀ\ 2\1a¥y`xl\ 1F\12q«k\152\86Â2cBÙ1\98\81\91TP\19¶s\82\ 2è}WT.& \19iâ\ 2+\eR\eÊPH\f\80\8dVk!R'¸\v{ÃY_×µñ=\96ÿÆ>ÇA\14KÌOH8\80Rv?\8bñ?âÿ\17\b\ 4\ 2\81@ \10\b\ 4\ 2\81`_ÀÈÿÿÒ_ÿ\1f{W\1flgQÞï\19qrn\bÑZ*¶¦¢!\96@¢î¾û-hcÇV\86BZP Æ\ 4\9c\11\9a\98&\84vÒ6£82S¦~¥H;c§t\9a\19\99\12$bÔt\0Ñ!ÌÐJÇLEAù
++J1\¡F\94Iü ~õ÷{vß½7÷\9cÜ?:F©Ùgr&É»çÝ÷ÙÝg÷ì¾Ïóü~£Ù\98Ã\19~Ê/¬\ö\13ñÕ\19ï\86\83]rý\1a|Îyè¥ÿ#~uϼôk«_úðüöUâG\Íë?¼ñ\ñ·wÎô\1c\7fãóÎs\8c\81ä²ï»p{ö©+\9dý\99ë«\1ftL^¶<\8b\8a\9cÿá·\7f½ä^\97Üò\15RF\1fþ½¯^\95}øÁ\16\7fôn)\eï\eßYÛµfê\89\e²\9f׸ì¯Í±\a\7f\83ÏÊ}·ß\90óe\95øO\9b4iÒ¤I\93&M\9a4iÒäHRüÇ)2¦"Ò-í\83\95Üòi?¿ULJ§Û\97Ìwtl\v\82\92ÑÄG\b\8c\ 1`\18\ 1Î&\9dÑt)KÂ;³À%\90\99\11%]R¸Ï1v\82øX!z\ 1\f@I\94º\1c£\13\88\90`,ÑBJf}R\82Ëá5\11E\1c\1e\90c\ fBò®à\b\ 4ßÑc\9eÛÁÔóÔy iqÊwÊ*\ 1vH\9eÁ-tT\13ê\ 3\15ZË+\8cCq©S\11UÛ¤qfô\9aq\bô\82{\ 6<¸@8\858ñl\8euèñ\16\f\9f\99¬\12h\1751#\1e\86\112J"q\82&1`à\17\15\11-\18\10\90\ 4ñÁ\12\9f\81(\12*¹hºÀ¾'VAÇñ\v)\99`\88\1a`}\b\96È\16\ 6º\18\8c:\ 3\90tÇ`\9c\94#²eüvÒ>%Ư\98È@b2\13úÈ3oóÿ7iÒ¤I\93&M\9a4iÒ¤I\93&¿üÒÎÿM\9a4iÒ¤I\93&M\9a4iҤɱ Óñÿ_¿ñ_?6»t88Pùí^ù\1fÏÛ\97qÊÈ«·FbÞ\89{vÕë_òù\82ý¥\86\ 5'\8e×ç\9fwò\9dr=(=,\9cR»ñYúô=ß\17<?\15|\8fÛG,°'\ f.\16~;kxý¥5¾ÿpܾçK\8cþhÞÁÕ\95\97jéCË~\9c¯'è¹»ÖsúÁk%¿ Zò\11.©y\aÏ}üE¢\7fLÊ\r\aË+OÜûÞ}ú¡\82kh'\aWÏÁsw@ÚF~µóôÆÌ½¦3ïÅdá\ 1\1cÏ\81wfÅH\eå²\9b¨9\f£|u{«\8e·~êò'r~Cô\19[íÖÚ®O.¾$çS¸Îç:ï\9eæ\11ûâ[\96el<ÝóñI\19q\b/xÒì(¼l]Îo¸NÚ>\9e³í\aµ}\97L\9dý\81\82\9bW°\ 6\ fT]>1±îÞ\8c\9b\17}názß\9a©\85§d»êº\8cc·oFÙ\86Ss\99ѹÎ\8cG·\81ÏÛ¯wf<º®`\r\87£\h?\9a\81\9b·ó\94Â\85\16rÙ\82:\ eç>vÛÇûü\8dÂ\8bx|ß\86\a·¿ãk¹Ì¸<î\19\8b\8f¹$w¼üÏ\vßYÏ«÷hÕåìýOÍ+óÃåö]Wm¾áß5iÒ¤I\93&Mþ¯Â\98c\ 2á\912Ñû\10
++®\9d!~!þöÖ\18A^ôä\90#\a\9f±\1eÛIb3F\86z\a¢/\1ae»`ÈöHÄ;\15¬ÀÝ\91N.a\1f\15H¡\87ïõÜq:Y\ 2¦¥èq\8fÒ\ 1»vV\10\8d\90\91y\\vÊØÐyF©Ç\18" \13#£\93I@Gª5\ 2M¦\8eô\888!\90\1c0àI:ùäºè \90ÆØq\%¡["\88\1cõ\13`8ETD\17\1d\83Â\15÷\^Z% {ÚYCø=\95¨D§\9d'Ñ¥\v\8cËv¤b\8b6\90\93Ó\13ï\8f\0\83\84\9e$\1e\9b\12*Ng\b×\88'\eEÀ7c\82\ eÄ\ 4TD\99K)jÂÒu¤ÁTÄ6dk\19L\ f\1dÐ\8bÆG\173\f!®\11«\11Od\8f;§CHÖ¡¦`c N ª7±Ç6,Ü\7f\12\ 5Î\86$ôÆQà¤C·:Â7[T¥+¶ç,\9e¹gY~\81\8f´9B\92\1aØ&J=MÁ\90\ 1Ô*h\95\ 4;\ f\1d\80k\96·\12ÅOÁøÐ;\8c®7¤(\f\8cx·IzD\93.Uè@\85Þ\11æ«<\ f,\99çQ ¾&j\88ÚOç\`îDù\emíÐ\89\ 5Ër\1c'£S!ö÷y\ 5\15#\86È9Áÿë\92#Å*¡\e%H¿ç\88e~\ 1ÛFFÅÄv\ 5='\8e«<\9bv7\9bï\11zx¢\94Îàï\84%y28\ 6i_\8an&ßéÌóÿý\v\9fsÿìueÞ`çXüÿáàn\1e{&>\8aÏâï-;«ðÌÛá`i}_°äο:?\9fM-ÎóïøøK?·ì¢|.Õ8\87ï\9a×\9fe\ fç\v\885÷\7fÙ¿}î\ fò¹Ë§á`{=\87\9f³â×?\97ÏU]7\1c\1c7\7füû\88Ì\rþf\9eÿ÷îx£\Ç4\1c\ eö\fÇ¿\8f¸Kê¹\90ï\18¦\96}W®'ê¿þ\84^Ï\e6å÷\vÎó=®ùãßS,ª\1cï¯xú\ 5?\94÷\vP\14õ/\1cÿÞa(ï\10\88½¿øwOü©¼w\80\11N\ eΪýù¶\87ÍÍ¥\9fËywGåÔ¾|ê\v§æ÷\ e0\12)[Q¹ÔÿáÕ\97d\9c\ 3íC>\7f~¦r(<xóÛ¾\9dßI\98Â+pß\1c\\ 5{\17öï\bF¹
++öÕw\12£\98\v{&ûóõú§^øÙ\\ 6\9b\94²¥s¼¯ÈØ\10×òýÁ\19oþR.³¾`ä×ûÔõ«¿\98ùîMy_±EÆ\96\ 3pÙ£\9bn,e)÷Ù\96\8a=ÿÈ-oÏïj|ÏG\901*hCê¯/~$\97¥®ð¥Wü\87MS¯7\19\eÂ\17Nû\1dRF.\893âê}¥¬ð\11¨ú\8eà\99ßZ\9dÇ\ 1Ë^nûU¢ç\8a\89qü\a[ë{´û?½ña\99wø\15Éuî\12Ûº\b\9f?Ó\97\1d(\1c\a*·/s\a\10\8bâ\ f¿|þq\85gC\97÷8\95ÇàÊçýñWJY̺ì\99×\97ýéM=ÿ\81.íÛ6Ù·á¤S×e®\ 2üÀå1ºªÖù£ù\9b¾\96ËRy7´Tô|\ fmâ¦u\99\7f\9e?ËR¶f\9a·~ÿ+N.ï\15\v~ÇÎÉÞæÇð&T[ºäÀ\v\9eSx\13
++§ý4¯À»>qqæ\85Àïb¾ïÄùG~ot ®5«¾ú¦\9eã åöí\9eßÛõ\1dÿøûÿ5\13Û£\7f/\969í\97\94÷Fºð-\?ÿÈï\8dÞ[çôïÝÿЫòZ¥
++¿Ãî\ 5G~§\94¹UÆñ-49föù³1Ü{¾jâp+þvZ\ 2ÚDIù#Ù´\0«;fFZIk\14úul\1c±çÀö _Ó²\871\9d \c_\8bú\ 3Ù\98±%uÜÄb\ f/\e_\82
++\v*7Ö\f\8bí>ó\18\85íÜ;%pÔü\1av:\91hØXÿ°GwZ`Ê\ 5\0\1c5øè3×v0\ 4a7æg\81\ fýÿñ\1cr$\8eo<'æ=9Ñ®\15s[;Y¼û=ß8\tE\94k\1cã »\8bý>\969¦Áñ<\80\9dgæ/\9a\ 3ç|ö>õç¹çÖ</\bf¶Ã\8eÇa[L|îþü\9aù×ûsìDåeG\93\98ÈÚ\9fY0\ 5H`N \7fö?w::gÙbìa\1cB\ e\80ßÖ xöA\97{a¨'Þ·Ç\91Ærðy\92ãé\8e?m±ä6k2\8a\9b\82ÉîÐ|\1f9¨Ä\19w4
++´\9an\19ì\10SàôÀ©*\92A\1d\1dÊ\9d\18©Ôy\14´\98\ e\8e\87K\1eÍ¡\fúO\93\13!â\ 6Ì;\9a9æ#¡¹1}Ȱ`\89wn´\10\94+2\9dÃÞp\1aÏýEjô `a\91íb\8fuLw\869bn:\81ÃÇï\ 2\8fm4y\9c?9#ä\14\0³åS±\14xÜJät&m\9b\82¹\8f¾&Ï»$-ó?^\971ày\90pã\16õi¢Ú³ÿåß\1e3\95U*.\13ä[\10Ê\87È,i&m\e²·ûÈ\ 6\92Ì\0}Ì\83sàÜC¿)|\ 5\1acöÉÙ\87³Ð\91E\9e'W\1c$±\83
++\11J&O*\83\90`v=W{\7fÆÒÌòîÈÐÀÔì\80q\vý\9cøÙs\ 4à\vX2\ 35ô3rº\13\9a"¶Ò)Î61òT¸\13xºÅ\8cQr\96Ç\88s¢Ø2oI¹ \19à\9d\15þ\rÇé*C\87\85ÆM×\8f\ 6ø|vdKP?g&úÅ\10½\1ek;ì2\9a$\v\19'Y\80!qÒÃ\88°ÐG\99&<¡:NS¬ô\ e\1711ðû\0ݰLz2u\19¦¼Ãb¹\¡\8d\9e\87Ô\80!±\ó\98M\8fî\88\z =\ 6.ñ|Ì\11QÁà±\ e\86\8d\8b\96L\17ø\ fFN\vÇ\ 5\17\14²\8aØ\14åÝ\ 6\89\11p\ 3\16RK¾\b2y\90±\ 3\93Ïgb\83È«²\84:,P\1d×\1dôe 7\ 5~YÈ\82A\93G7\1aÌW®²õ\1dF9\9f\1f\r¾\ 6ùq\9ayÞ\ eJ\95\\7ft\ eÖ\15.Ê=W\86\8dh&\7f\ 6¡\83\8b$>!®@Ç\97\1a\1e\16\8a\1fA,½\18F²\ fhb\f\90þÂò'\fÖè ¥À\95Õðm\0Ì\95k\91,\1d|ë\80\99\8c_\91ÀEO\11ä@E²!\90g\ 4ã\8cÝ#~LHïÁ\13Kbǧ1\98\f\89;\ 1EÞ/\96L´øÿ&M\9a4iÒ¤I\93&M\9a4iÒäØ\90iÿÿ\15\e?rÛìÒa\89'\1fõçOÇS¿òà\89o;Ëd\86\83ý\95/|ùA+~Yë\94\99\1cl¯~Ðwï^\9bý |K=qx\fùÆ©å\1f)¾ãÂ\15~¢\94}\0\9fuß|ßDzO¶÷¿íº]úÐí\v²ß5úìC|Bô\18ÏeÿhÍ\15Xõñ\rßÌ1\aÙ\9f29ØWýóo^²ñ«Ù\9f©\8bÿtb\8e8ñ\1dÕÿýÙ÷\9fýD.³¾ùæ\9a4iÒ¤I\93&M\9a4iÒäè\8bÄ\$\13û8\8aN\9b ñ\92\9dfôOê¢;RÌ\7fÄmø¶g<\92µ\12öå¼\ e]4)0ÞÁ\99àºDG=sh\18\9cÄH\82Ȩ5T\1f\9c\8d\8eô\aøc]$e\1d\93L\9cøï\89ä¯TJZ\ 2wtÄ¡Ù\18¨Éh+\ 6.©\18Q\1f\1eÏ\94\88Ò\86.ÿm\9d\10\ 1\94Ø\93qñ(LþaR\86\8b.Ä>GÁ\85\80*\99Òâ\19f \ª±%ÍÿߤI\93&M\9a4iÒ¤I\93&M\9a\1c\132íÿßyæ\81\17Ï.\9d7Ø"ù¨ô±o{¾Íyø\9d\9d\18\ evÉuú»_¶á´\1fd¿¼6ÃÁ¥r=ûÿÿþ2É\93\8f®\e\ e®\10ÿølܾÉÁ\1eùþ\15ø\xÊÚ¯ä<uUüí×V¼º·í»p{\8e\19P:ç×¾Wî\e\8f\9dwbõá/ZR°ú\98º(e{\8eïõ\1eÅÕ[¿ Þwóª{s\1c\82.¹ÅÇU<¾Q̽\a¤Îñ1
++Vr}/Æçû»×}+\97\ 5\9b\9fw¦ÔIÜÀO½ð²Gs\8cB\9fë{\8fÔÉx\89{_½*ÇK\ 4[òÔ?,u\12£àµ§]øTÎã6}¾yÍI¾xê\9aß.¹á>ÇYØÚ/£ùßëk>ýhÜÃõ\15\ 3璘Ù\98ï3¶ä°ï<¾\1f\87\v\1eÛrF.s1÷õßU]ÖLÝu{Îÿ¶¥íß©9У9Þ\8bDÏñyÜWTûZ=uS\9f«\1dJþ·ÜÇÜ÷\95ûn¿aV®vµãÙ9×M\9a4iÒ¤I\93&¿H9\ 2w8³¨\95øò:Å$è`uôF\8dÅoëùØ\9fM>Ì\9c£ml\8f=f\99\ï\14\89ÔS*ùõc±ÔÆäÄ\13ú\82Yý²w\93\\7fB0(æ\94;b.(fÅ[EÜ\ 1K,\91\104±\15\bæ¡mÐ.1å>Z\82\97\b}<³¨\8d%Ð\87\15\f6ÅÌz&\88\93®^'\948\92Ë+\9f\¬¾d/Tö\84\9bð.\10|D1g[:©#r A\1f\98\1dÎ\14ñNYO\18\81è#\1e¯\1ck\ eè;èhÐ ÐË@\rE&÷d¦±> \9e!É;\99Þ\95`\89$É\10ï\94 ²@o\8d\91$¨
++¡\14ÐHM=a\e´\ 6¦Ù»(jãt£\bo¢ ÔuD\f\91Ãqãp,\10¼\8d#á\88ô¸\1c´\erÚÛNá,\84>Ô9×]\11UÁjñ;CO\ 2VtÄcèÐ\b\82\8aDv\8df\1e:±Â\89m\97èÜF\9f\12k\ 5#\94\11\ 1U"äJ\84ýzO\13gÍ0¢\8e`/Dg\88\ 2=H(\19\182¡2z|\bê¤9\fD\0Ñ\82²ÀI¥8*\84\0H\82ºb ë\98Ð]xNÄø)q¯k<$\10à%\99`\ 2{ß\87`9:&a¢ \8d°3<\91\b2)£$F\8f£/¿- ;Ä\1d0P\10j\13\ 1%ú\89Ãb\11\9eUø\8aÍÿߤI\93&M\9a4iÒ¤I\93&M\9aüòK;ÿ7iÒ¤I\93&M\9a4iÒ¤I\93&Ç\82LÇÿ\1f·ý]×Ì.\1d\ eöÔXìÍ[_ùtæ\9f3f8ØZcó\ fÇ\ 5Ü&×?\88ÏÝ_Y$|~d\81\19\ e®]Ø\7fÿp>¿E\12w>ÊÏ·_®\93ÿlþy'ß)×\83ÒÃÁÕ\vz}\9e<¸ø à\v\1aòö]-ï1\98GðÁoýê]r=Ú8,qߣ|~\8bj<ÿæw¾JÚå:Ó\r\aÃ\1a³~xþ¾\8akø\8a\83\7fñ ä/\84N\r\a÷T\fÂåÿþ\áÒóQ¡½ÇU\8e÷½k\97ÊsCd{ßZyÁÖ\9dûâÏg\9e?\83v)©\7f5ûá\877\9e+×;\87~^Rõ9ý Z+×½
++\93\83++OØm·\14^9å\vöáw&û¾\18Í©X.õÀgë\19kî-ü~ªä1Ô6n\9eúöñ¹,\16^ÀC¢71\13ßñÚK3f¢ó%&\7fãü¾£\9cz××q\1fÅh\T9\ fG1\1a3~#¿pÙ\13\vß\931\1a}ák[0\aÿÝľ_ÞõÙ\8d\99«®ó1×9\9c\ 3ÛñÖZ6\9aãpé\1c9\ eQÚð;l÷ÖüKá¸Ó¹l}å\86\1cÍ\7fXpBß\9f÷í^\95s\1cl(}½|áô}\eN͹\11Fç>{~í\97·ì\7fÿ\99\85ÿÎç:\97V[Y;µñ£9oB¥<¶[Å\1e_Ã~9á\82ÌÅ\17\Éý¸µâa>üñUßÈ9\15º\8cߣU\97ÕS+s\e\18<\97m¢æT¬þòI\9f.e\85ÿîÐóz=Wý÷\e^"eIŬˡ:÷\1e8iu\1e¿d\\1e\87\8dÒ\86ñ9\1cÓØ¢+§.ÿ`.K:ë²mFÙë\17\17^Ð\92×c\17L\97í8>\97Å`ÛâߤI\93cH~\ 1ñÒ$sìã¦\8fÄ{¨cr\81ñ¼\1d£cQ+ùû¢R¤|\8cÚ\93yKÅ \83²Þ)kÉØEö¶\88Í\ 2É®B!\12s\89\11ÐØN¡z\8b\9f>2b\ 5ÒÍac\84Ý\83çmÂ\7f\9dÈ\8fG2@m\93Ä%§\12\e}´¸õÆÅí\8fÅï"ï_ C¡N\ 1M
++\9aÔv^'t±#\ 3=úTu\96ü\83A\elXɼ\89Æ\93\9c\ fg\983Z\9b¼Cw\1aò(\92Õ1\92)N{ëÉÉ\87Ö\91.\13\15uQ\91:\9b0Õd\bÃ\80£_ÑJÒÞ'ÛÍ\85\99\96¹í4:\1eû\192ø\91$\90¬\89QÚGÆ5-\f\8cP\13\8a2\88\1a\1dÉ`\7f\149¹\9e9ððð\899xÑ\8f\16¯£fv\83\17ZÒ
++NZ\8e\8dw\8cãg\84<öT\1dz5Nc¥IN\ 5ÚCZQì\rñT²\1a*ì\ 4#Õ#³%¢&\93!©úÈ\01\1c0\ 2\ e¦ïÔ³4.\1dÿ23ãÓ\1d _\95Ê|òäJD_\87\19¼ólf\82ÒX6 4Úe\95$CàX\92È\16ÛÉtİà8ÈÐsL\7f\970\8d;ç1»Ð¹Ð 3\18P´<vÌDðÆ\868\83ïp\94Wo,®]É\891\ 6\13\80M¤\99\91ënÆxÎü\90Ü1\92~Ox#I\\8b§\97y\17I]ê½C·\90 R\99rýhr\16Êbé\9d\16V]f9àþà<\93;\98\11AjP¬\ 5ìÊ\18"\83ý1\8f,\93mzÎSO\85IÀ©Ø\15ZÀæe\róì)Ü\8e[úgѺ8\81È\14+íÇzÆ\94\81æÿoÒ¤I\93&M\9a4iÒ¤I\93&M\8e\ 5\99öÿÿÆ'®üäìÒy\83»Å\1fG\aÚ5K_÷öìÇî&\86ÅGÉÂSþdù\8f³/NëáàÕ¯ù\85\95Ë~"×\8dwÃÁ
++ñÁ\8dúùÏ\11?án|\96>}Ï÷Å?¯ÂaþùÓ\9eyù÷äºÖa8X#¾ØQ?ÿ¶ê\9f^\7fÑéÙ\9fï\f¾ÿ\80øÂÿ\16\9fe\87Þp¿øçmGþBÑ\93~âÇÞr²Ä\11\84\10ìpp\96\\1fõÛß*×é\1f~îã/\12¿}L
++ú_WÛ{÷S\8b\9fÉ×=ã\ 2&ûï\1fîç¿NÚµ\8b}zÁ¯ü§\wQO\ eöÖø\85Q\9fýÆ\1a3ðϧ\ü¥\fBÁØ«~ëó_³ê˹Ì\16\1fúîê\ f¾|jÒä2ße\9fýÞ\8aé·Ö\14\8cD\1dÊ}{ê}\9b§6\7f:ã.Ú\94}°oªþüËîûê\1d¹Ì»¬Ëus`2ÞUÛ0\8aɸµ>oÓÔÞ[z\8cÄì+Þ&e\8c\ 3yçËJ¼B0*·!cP~\b\9fó^»éÉ\\16tÖ3c+\8eçxüÌü~ì·ìº8ÇNÄü^qrpß ½Ý½ñª\vrü\80
++\ 5sòÊZç3/½è\e\ 5w±è¹w²oÃ(î¢\9aì\9fwÒ©ër\9d|\19=1\8d+É\18\885îò§JlAÊ÷]YÛþk§]ú¥\12\a`J\EmÃ?Åõ¹N¾\8fÌö²°¿ï¢¿¼ü\91\1c\a\10uî³ýÕ¾¿û¡µ\8f\17_¿Íun©sh4\ eà>±\97\rø\²_ïÌe]\89ÇX?G\8cÀÎù}\7f\8eúú£ôËx_ÿ\99\15§s6\9fæäà\9cZö\9b\93çîÏþü`rûÔ|ýM\9a4ùYÊ\1fmÞì».>[1¦&føÛµr>ág\r\9b\b%~Mú(;~ÛÐ]\8a\1a\92NÖA\7fOl)èF\8fr\17ñãê\9d¡[\15\vgg\82·\8eN5íRðTÅã×¢SXRéêK)vôÌÑåÎ\9e°\1aw)<:X£¢\r]\92\98\ 1Ý\15ßTç\94\9dËwå\898§=!èØ»6e¿ 4´\13cüvx¬=\f¯ìç\1cÛ0\9b\93\8b^5\87§Äâ£ûyÇ5t>¸$ý\85Ñ&\1a_$0\1f}\92\81cÉo¢iF'±\ 1ã\13®YÂ\811"@Ñ ÚEZ±\81ÖÄ\1eÃà'ÃØCôªgè"\8c\9bÐo\1e[0\fÕQ÷\91\8eÃ\ 4ì\9c'F\9a\93\ 1K°\7fÅ!Á¡\ 4V\8bZh\7f\98\86\8c!è0\8eh\8c7\89A\a\98¤°\ 6(i8³:º\8aé\87öD\9dð`:ÁÀ gh\83#²\1c¦!TÇ5ÌSÇ0\10\86F\ 4B\16Âl\88êç0k\19\ f¢â\9c>ä\14iÓ\f'À(XéÍé¹
++ÃÕ\8cîÀü\17¿4z\1e\93\1cë\a¬\93m5\11õD\8f§$Æj`Q\99ö\93C\958ÿÍ.Å\83]\90û\fã-\9cï1\12ñ\ 4GͱÊ8\89`É×a«9>\ 5\8fcx
++'\ f¬\1c\ f³.ë\17±~@ã2\1e\1d#\`·\82·=\a·\1cú\89Æ\87\15@glõ¢#\ 34°|aA\81aÊý4\ fÇ0\80Èà\8fNwE_Ø\82è\85§Á\10±\82B7Ë\83\ 6úÀZ¨ÅÅ(âÀâ\19¶B\18=\ 6\9f \16\8cJH9ò\ 4\8f\8e°\82@\13öèG|!D\86Ëh\18\ f\14#\fcÆ\f1x\88U\91+®\92\90\12¬¿¬ÎáQ\ eë#ú\13\v¯a\18JÄÊ\11\83cMÉiF\88pÝwJ\89¾É2¸&EL\10Ì(¬Ö°Mhk$h\ 4æ\18·\ 2ccð\10Ú\80ÅEaQÁ\92\87æÑ\16\15;\ e³\92\13\1\1a\89 \8d°BÏ%Ës!gÜ\ 5®:\ 1ôĤVü\19AÇá9V{,\ 3\f¨Pl\92L8Î&¨,ø\91Xèþ\97½k\rÖ«:Ëù\9c8|i\12\92j\10ì0\15\ 2B\biX÷\v\ 5L5Tʤ\b\12\93p\92 \r5\9d\1c\bfbe4\8e\8c:¥S0Ò\11gè\fÓé\03\ 5Á\ 26ÊUZg¨ \13Ç´\84B¹5r9\r1¥©\ 1+
++\13ßç]k¯sr¾sòÇ\89
++y\1ffC»×Þk¯½ÖÚûìõ=Ïû¼\19\8dÀÂ$Ð\19>Záÿ\ 5\ 2\81@ \10\b\ 4\ 2\81@ 8\1a0Êÿ\9fsÕ\ 3\8bÇ\97ö{³\99k\e\8cÿ_ß8¿\85\a6\7f¬ðÇÆ÷{\8aùüÁ¼\80s\1aÿûÇ\17~èñ\9aG0ö{×òþA]ÀÔÆ\eNÄÿ\83\7f\9eûäõÏó~\ fþ\7fÑ$ü\7fÑ\17\fÆó÷\eÿ=üøqßb]\80¶¹ß[9½;þÐ8ÿ\r-®üP½À\92i]ÿ\1cª\17øf»îü\ 3k¹\9e\14Qÿ\86\16k}¨^à±Öo¿ü©\85\\7fv\86Ú¿\8f÷\83S\9fÿÎ\9e\8d¼?Ç47ozWÏæÓ6½Rú_×\98ôÂû#¯à¥z¸Äãã\97h.ÛßúiÕÃ/\17þÞä±<5Çê\7fû·Ï¨ü}\8dÙ\9eÑô\f\83üý\9cÆ}o\1a¹¾òþ&\14®ýFæè/E\9dO¿s^õ\ep¥-K\1a\9f~Y¼¼ð÷ÖWÍÃz®s)mWí5ª\94uÚ\85k¹O~\89¶\15\7fµîõ\9a§1\17nxK\e×Go_·³\94\99Ê)ïâóÀµ¿ôõK÷\96²àK\9d'Mëú\7f0¿ãç¹\9d7ÒvßGW\15ý\85w¡´såa|\11\16ñõÐ +v_ygy\16l.}6Äc´\92¶[¾°âÅR\96c\19\87\13\9boÀ\95#\8b\8bn#\ 6U4\b%/ä}´]þÔ£¾\96U\9dÁI\1fhã7àµpBÓ \fj\1e\1eá²Eh\8b[û\1c\97å\10«^\80Ç\ fZ\82g\1e\1a~¾è!¼/ý2õ0y(]{Þ7ßµñ\99âà ë=l\9dÞ\8díò×í\1dµÌ\94þ<§Ýûº\91\ 5EK`\9c-u^ݼH®ù£UÿZÊ:ß\87w\ e£±xaL\9dëçÖ²\Ú²¸Íëw>på÷KYv¥-W·wÁÐÈ\9e¯\16\8f\86N»pu{?=õ¹Õ?:Ô¿aQ{g®ùÆPi\8bKU\97RüKØ\17áÕ\8füBÑm¨ªéx³åTÝòð\8a׺¼\97å¼K\9a\9fÈ`NÌ\13Ú¼þàIÃÅÛ!\9b\9a·ô\81öl^4òÄ]UcQïow»\87ñ:
++\81àhÃ\18\1eù\10ny\n,úó\15\ 2½s}²>t±¨ÈÉt\18\ e\90þZ á\1a\b(zç\1ap\92`ѽ¶ ¾b\ 4CO\7f¡A5S]\ e\99Ø2hÕÀô\8d\rÑ!Ë\9b6Y\81ëi|ZL \80\90Ã\råA\83ãÖÌ\ 2R\1d6(E\7fÝ\90pK\83pFP)ò\94\19¦\8b|\18«e\18ÇóÑ\9fZ\8e\93\9d4ö\96\8auW> g?Y\8c=ÝCÔ ¦«fáHòÇ\13qò\88̦*\93Í\88;F\82gUµ ô·ò0ñÄZ+\ f\1eÖXz\81Ò\80ÒuJ\f»÷\1aÉÝ´µPTÄèG¯\1d\9524"\81\1aY¾¿\9aF#Xî\7fg-3\99\ 1<·Ê
++\93Ë"\1f\1f(ά\10`\1f3(ÄhAÂc\ 6©èxú \847sg\9al#øþê+\0\85\0ýý¦\8b&\84ÝG\9aÒ\16ò\14\9aà áó4³ [°\88ë¦
++©¶\88,Ð\bÔ\ 6C\9d\ 3}xÒXÒ\r)¦ÎA'Ò5\r2\88A4\ 2 \ 3\9c\ 2r¦ú\92em\8aG³\ 3õ\ fÍ9\8bäft\18\88Í\10¨\8b3\ 62:ø\0D¤6£O\12\b\122Ò
++Ö¾¥yb\1cu\16?oh+Õi\90å\ f9Î@²\83³Ç#\ 5\82Û\14\95DÌÐ.d\b#è\83\ 4áÝÔ\8fY\a\88@\90\1d\ e\8cpÍWç\90\16\r
++\1d\9a,̳³±\83.\1eUG0×\1e\r~¤ÙG]\84\99\84\19\16#u\1c])%\8c&ÕC\ f\aóá\9a¹j(U`'\ 1¯+z.\RÔ\18\9aöà\8d1\99,\1d\85÷Ivx3DÌIj4xì\bU\88\83Ö\ao+CO\15u\0\88y\1a*\ 5\19R¤¦@\8c\ 4\17\89L×Ã+\80Þ3ô\18Á\v\ 1\f5ú\80\9e|\85\871ùTºÛr\a\80uÇ\fõx\922MyªÏa6)j\94²ÉwãH\9fï\9a\9e?\93puç\83\1aåþ«Ö\0\86\ 1ÔVjxéÂÔå\1ctôB¥IHÝgèê û¡Ëà|\82AÑ,Ì\98f\16\8f.Þ£ô2ÒxI\80r§Ù\80ÑòPµÀ¿\ 1Ó\ 5~\ f\8e\1e-¼ÿàÔ\81¼\95Ô8\1a&z®T\82ÒÇAÿBë\eäÇ\84O\84Ç\83\9a¡je-\11\eJ°\10È`d©©~¢ü\93ÑB\b`mÓeL\923q2-\a-N ¶¡\17"Mdv¯À §àØJ\ 4B\15È\0ðn \89\1dé}HSͱ¥F\8aí}\12p?F7ß\fZ\82âf\91\87\13\1e\19\11\17ãw_\ e\90\15Q·¡'Äÿ_ \10\b\ 4\ 2\81@ \10\b\ 4\82£\ 3£üÿC·\9eö¡ñ¥Çôîn\1eß7Ìv\17WÞ~J¿Æ-\ fòüÃ-~úP_\80ý\8dK;ëÀ£ç×xÞܯ\1cð Ï?u\928ÿÂï\ eúù\9fÃ\1c\188Å\93ß½h1óü\1aüù9\93øüïjí9T\17ðùI|þo\9e\84ÿ\1fâýàçÏ8xò\9a²?Óþ\1f>ñv¹.~\1aì÷Tó¼\9f{þ\9c\83Å\17@Sý7òñãýÿ§õfóñà'\87î¯ñý*V\ eyßaâû÷7\7f\83?ܾ¦ð½øejʨÏÿÄ\þ\rcr\0\8cçòG=\ 3NüÚʧ*ï^yÆ)Íï}Ó+\9bfU\1e¼ê
++\1ehu\ eÆ÷_ÐøÐ\r{Ïÿ©ÂY{UøÐKø·©\89¹îy|½9´m|íôójî\80Ú\96=\9d\ fßS=\ 3\10G4eÔÏ~b\1eüê\16\8b¿}~át\11\9eUxâ\9bøzÃS\10ÿþ+S\v×íª·Á2¾\87\89ó\11ÜØúzë¬\8d%¯\80ÎÕwÿ?\9a·Æ\9a\97/þbÇ\91\97{ØÕúlÝÈ\85×\97²Tûå\846\87\ 6=\ 3æ´ØÿÍ\7f;ütå¥Uá\90Omz\8bÁ\9c\ 3ý6Ï~ïÜ\8då<\1f«ÏÂ#í¼\833VT¯\81T9äg[,þ g}cÓÀ¬\1e9ÿ\9eê'Pûì\9b|½;i»ä¥Gï+e±ê4n\989zÞ]\7fVÊr\1c\9b\17\ 2mY6wé+ÕO ú:Ìh\1a\9aAÏ\807\9bnèãÏ<wVáºUõ8±ÍÝ\v_}ã\98Ræ|éϯ4ÍÁòmKö\96÷_äøS\81@ \10\8câ½Ê?ÿoÇé\1f!_{\13ó\1d'8\8eãÆ\9dwe\1eô$§2\88^w\9c¡MÑ2gmkìõ$1á\19\9a;Ã$3Ä,ô±¦Kýɺ\90²;\82y\14\1c\7fß*\ 4áç\yÕ\9ci¾dðÄôÑe\1c\ 45\ el*\eÔ³w\ 3
++\1d²\18 B\1a\13\8föR¯iðÚÔN\9aª`\8dá\0ÀN\14ÎP\9f;\9a¬ ò\83\87\f# Ð[Aç\118k\0Süô=\rá\ 6Í\aZ\81PO`ài\94`'a\10ÒN\13\eâ\15jzìÆ` ~>\81¢¦k\8eñ¬?âþúT;_\a\9d\82\94\10\13pÚ\16cëá\96@7|\98¼\bãó\ 3\fø\ 5D\as\r\8bQK¸i\9eg\11½Â2\1eDáC\931Ö§\9f\r&Æè\ 52$KP\82À\15ߨ\92_ª\9bã6\81Ø\ f
++v÷iÔ#b¬\96«Óqa\ 2е ¤Ðl}\ 1S(h¶ð,QÍj\ 2?\8fÌ3\92Ö£8ÎÁ÷\84Þ:x\17Ñ4à|\ eôî\89Ð\Ð\108z9ÐÔ\86úÛ{ê \8c\86Æ«N\97Ì\ 3àäéý\94-\\b²£^óLÄ£Ï\90\ 3Ä¥1mO¥Äù\94 (£\7f#å\84Q°°(n\14ô`@\89¢àQ\80d*\91.nafa齦rIÁ\91ðpÒ|\80$"¦!@\12\10éI\83?\ 4ÍZáÿ\ 5\ 2\81@ \10\b\ 4\ 2\81@ xÿCÖÿ\ 2\81@ \10\b\ 4\ 2\81@ \10\1c\r\18ÕÿoXÿÃ\vÇ\97ö{\8b\9a\16wá\81\ f¯/zé\9cûÕÛ\fzÚ\85ÿ8ë\85êc\95:\8dñçi[s×¥%\8f\9dâ´\ e-×\19t¶¿1òò\97k\99/úÜÅM¯þàý«\8b.\e²).KìKg¯\e©:÷ê\95¶¤åß\eô³{§é\8f\87GæßÓéÕK\9dË\ eã!· é²\aµìwó=ü9mË÷\9dy]ñC˶\94ík¹ÕÜÔ¡WªF¼ú¡\15ýøÄ\1añ]\8f\87F\1e+\9egH¶Âeë¹l\13m\9boÛX|Æ\82®:ðggvc°úéã\1fªy×l9ovËÓ·ò¥e\9d\86ºÞß¾¦\93\1e\9f\93M \10\b\ 4\ 2\81@ \10\14\8cÓ\8aç¨t§×vV¹ÃyKº\ 4kG\ 5õxòÐ~Ç\84Ü\82\16zz\ 4iè\8cà`\87$pP\8dèÐ@¥\8eì\95& ´\ 1yìhÁ\0ßL\97\rò\1a"W\1cÜ>\9d\85ÿc2\81>á!
++oÚx\ f_?D+\84¨j|\ 1Âgp\8aN. #`\97GÓyäÁ4õ¾²7*yÈäM\8bS°É°\1d\1e+ù3\91eí&\ 6$Çö\b\ 6q^;º/\9d\91g\91\13\8az¤\ 6å\84\8b\19\19Msd£S\8e \80+\9fW\86£D\92U\81\96\8epøôÊsâÍ\ 4\ f=NL \85}Ê Òwö\ e\84Ë]BjU\ 4É\98਻q*\92@\9a\1cT \ 69ܤaWe\93à·\9d±°³p^t>\1a§\83\8d°Q\85\9d£E\\10\82d Ó·\88ýÈÎÁ3\9bú]¥Dÿ\ f)2á\16\8dÕ\13$ù:Ã\87\95:\e¶Ô<'\82ó\bO\85\97c\8b{ø\1fzú\1d©ø\99ñùS\85ÿ\17\b\ 4\ 2\81@ \10\b\ 4\ 2\81à¨À(ÿ?wå\87¿5¾´ß\9b3I>¿=-\1fÕÂw\17¾[}Í\¿·\80÷\8fÏ«7çxÿÄ^n§¶s\ e\9e;\<Ҭ㼠\ 2\81@ \10\b\ 4\ 2\81@ \10\1c)Là\87¨u´jL\8eÐ÷¢ÇiÒÐ]$«a\8a©uRÐ{\vÿ/\10\b\ 4\ 2\81@ \10\b\ 4\ 2ÁÑ\80Qþÿ;\e~ç\83ãKû5Nþ/i\9bûïg^Pâòµ\9bVóí!îþí\93~ý\a\85ÿ·Nòb \ 4\ 2\81@ \10\b\ 4\ 2\81àý\ 6öX@\86G${D&Ç\9cØè\8esaª t\82íAt>e\1dr¶F)o\1cÜ\15\ 2Ò\15ºè#§\15\85<À\19ål\86²>icAbM£rô\81ÊU c\91\81ѰYAÎ \81þÚ"·£Îta\e2\bÿ×\11ú\04\ 5\87\19\8f\96y\8b\14\93ð\10à4\97l\b\91á}\80dÛÂÿ\v\ 4\ 2\81@ \10\b\ 4\ 2\81@ðþ\87¬ÿ\ 5\ 2\81@ \10\b\ 4\ 2\81@ 8\1a0ªÿÿø\13·=;¾´ß[ÌyäàÿwÊÒÓÿæÿ\výêÙ7\98\17ð\851ûç\Îûs¶ýÞVÞ¿\82¶m#g¾\85ý.;ªç\1a®\1fÞ\7f3~õ¸'±ß+\95h\7f«ç#\a~÷{ì#\18\8dê÷vóþ\9f¡í\8c\83'¯Áþ\18á;x-×\83x\84'Þ\98û6öS3Õ´Þ½Çvõ\5òϧ\97Ü\81ÖÙ)ð\1d\1cj¹\ 3¿÷µOý¨ä\ e´¾\94?¶»Îo¾¾å\14.³J\95üyo6¿Â\13O½ìû¥\8cþá²Ë\916pÊ"Ú®ùèÐS¥Ì©\92\ 3pCóR|{æÆ\92«ÐFç¹ì\8eÖ\ fêöÕß.>\8bÖ¸)\87æ1¼rdÇý¥,ºRçP;oÍi«K[²Ñ%?à¼Y][nqk\9f+e!\96ë];³\e\8fóÎXñF\8dߨ¹
++÷sÙRÚ\96¿nïà2£k[vµ{¿lÛÆgJYÒ¥Ï\96µ¶¬:uø¥âã¨u9oqëë]ÛW\96Ü\88.Ö¾¾\99Ï\9bMÛqg¬ÿNÉ%iíØ\1c\878ïà\8c\15#¥,¹Rçv>oâÜ\88[[NÅ5#ÿÄãg\90û\83˾ÂcôEÚ.záᯢ\8c\866\94¶¸\99Ý\18ýÝ\17.ÜSÊ\(ã¾¥å¡üÆ/~\96ÛBÃÎç \ 4\ 2\81@ \10\b
++à;\96éÃ\8b>s\8d±\8e¾>mpVYú\84óÎjoUÐIë \9d¡U\82\8eÁè\b·³è\r}ªr>::\biÏèK\92Ê4LÖè\88\90i\87õJg\8fdpÁ8K§eãè_>Y\13U¤e\a\92Ô)ºrDú7\e\91_-Äè"4Ö\99>Z\91\95ÎÓ?øj¤¯æìØg-h\8b£Y´\9d\8d 6\ 5:\ 6.o!\85rOðvã\vTo5\ruv´\19ùüB\823[*û©¡Æpn=å#\1d\90"ï÷*¦.O\1f}zZ4\fSÔ)ÁÐ\95#n\9e\15ßÖ{M\15C°\8d\14\82H*è\91ê-Ñ׬ñÔ\9dðtS°\91ÓÈ!\88nòåÚ69K+\ 1\ 5±9òËÅÌû©ÿm¢\8eÎ\ 1Zsä ³0\96£îpHµ§ð\99\1c3\1dOצ¯wj[ÒÔ\89\81\8eqÆ*OýD@ÎAêt£ª\ e>$\87tæ±ë\9fl\13öÓ*%ã¿\8auí:«Ñv \83_æÿ&Ú\9b\82Òt\12òöe]ûNC\10\9f\13\8d\99ã\1c\84&Æ.ßâÿA>Eº\ 47Á¢ßiÆ$\8b£\91æ\90ê´\81\16\10\1eY\r\93\8ePîk\97\12®\87\98\0ë\ 3÷A
++\98MÖ\96>â>ð\8ef\9eö.h\8d|\86Èj¯ËLW´HUÈýç<=54\9f\1dò/\86ÀÙ\ 4iü} 9á\90\8f\92\1e.d\ 3¤ÙBó«Ä\1fÐ\b:Ý]#:\87\87\8537ÆØ\8d\8fCß\1f²þßÿöÆ3\a×ÿ\8f´<ò§þýç\96ò\1aÒaݾs\92uþ\ 3m½½à\80ãu¬ó\8aö/âã·Ñ¶ä¹\93þ\93×óÁÄ~ÍE\8fú\17üÃOó\1a\8e&º\9bÖ\9bÑÖÊoÝðéW\8aï\80w%_ÀÎìé§ÎêÖh_:{ÝH)£^-kÉvOïÚ|vi3\8d\13\97í8Ìzø\9d¶®Ý:kãwk®\83dƬ±\8f§mÈ_Uγ4\ fƬ\95ÑΡ\91cË\1aÔ\eSÊNä²\19\¶ïËuíêËúô\81\99];W?}üC\FÏriç\9eö»Ä'_~ð\9eníZÎ;õØÉ×µ»Úy\17ýàgoã2£¬ø5\b\ 4\ 2\81@ \10\b\ 4ï\89ßUhÕ\98|àpîȼä\91ü-áÿáo0eýì\15\9d\10iY\95\82\1a³_å\b\13|C·Hk䲿õ´¦¦þP\8aVâ HÑ_ÆxüÆ\94i\ 5]\8eÉðäOíw\9eÈaúÁ \ f\1c~\1eHQ[Zª»¤³u¾¬µiù\ 5;~´<[ü\90`\f.«©i\ 6\9dí`Èoiñju¤\9bqàgñ«\17~V1.9g2\86\8dzQ3\8f\1cSð\86\1aB%\89ë¢;Ç\ f3\89.©#\r6~2A¦\0¯©,Ð\98à'\rëM»ÿÒ\a)!Ü?Q÷\ 5_ç\8c\vÔ\ 4ü \94é*SDÿ/\10\b\ 4\ 2\81@ \10\b\ 4\ 2ÁÑ\81Qþ\7fÎãk>;¾ô\98ÞÖÆÿß0Û]\xc7¥ßÛÏû\8f£mÓ5\v\7f\øykû½>óÚ«h\9b»ã\8eU¼?úØ\1f£}?4\8eàÆc»ãçï¸ã׸~ç}¿÷\ 4k´·Ó6ïÇ;\7fÂ:\ 2\15ô^âýàâ\97\9e»òéÂï»\fÝÉ´Þ¾¦\vØ4²é¡¢çw¹ðß[\9b¦ýª½F\15í}0E\v_b\r®£íÙ¿Yö/Eã\10|Õå·ëýõÜuåzÞT=ø\ 53º>xñþϼZtùÉ\17ýù«|½¿ íë?wÅîÒ\ f¶rñ;¹l\ em\e_;ý¼R\96m¹\87¢M\87~a˽k\8b~!ÅT®·¾é Ö\8d,x¸hï\9d-\1a\85E\9d\83Úû\12\93p.m\7f0sùî¢\85÷U¿po»\87åÛ\96ì-ã\eµè\ 2\ 4\ 2\81@ \10\b\ 4c\ 1~1û`Çj½\15í\80ØØ{f\83½+ÇYhª\83×ìX®RòÞ»è\ 3\bé\0\99´uôѬéC\16ß¹ A#}´\eZ\1cØî|ª\89µä´¾\0W\vYµÉ6ãlc\8b.\965øô?Ê)ÀV\9d>¶c\80\88=Y\ e>\b´\ f\9aêh\ 2XÚD×òF!}:\1dª\r\ 1úo\ 3ÒÛC}Mk
++\8d,ðYÓuÀ.;¥s\ e\88\83\8d\9en#C\f\ e\8d<\v¼\95£\9bð\89n\1c\89Ü5j\83²Þ$\97\92f\1e>9\95Ñ\b£}\b\90\84GÜ\8b§\8e1\1e
++ûÈ\8eï,²§®\83v?P»#ÈõD××\9e
++\1cu\8bRÙ*:\90«¶!B\8bî´É
++í(ñ\16Î\81ïÏ\19ùäC\b\1cCAk6pøÎ@hO7\ 3\9d=Ú\18¨J§©ß¡.×\19Ô55#Qý\90²Û¤\95ó:yêò¤¸¿3\ 2\1fhHÐ\179U&\9aF\9eG\96Ú\8e\1có\ e5Ó*Î`04Í\89Ä\947Ý\a54j\1d\83«\½Ó ®i]GS\815Ó\18o\8f\e\84\18!zêt\ e;0\ eT7Rܳá~Â^îb\9aKÐâS{m\8e
++Á\ 3\99\8eµ\90ü«@ó\93\ 6\13£ ë\1cáú£E\13Õ¢\rM$\9bsÕN\18ª9R'hãSÈ Íp\8a:\80\ e\85Æß@ÑOõR\9d:G¨\1c,Ú\95\ 3Í)´Ói\Ñ$\1c «ÿHí\8a\beè®;\10#\91èÿ£% ÷µ£\11\83 >p\1c\ 4-Ý<f\96w\8eî\15ê\ 4\8dX\ ezBh*@#@÷qç\ 6\8d\85\ 6\0â\ 4\85\9c\ 1Ô<z¸tN\18>L\ eD\bd\aµ\ 1u\98\ e\98å4+\ 2FÂ\bÿ/\10\b\ 4\ 2\81@ \10\b\ 4\ 2ÁQ\81Qþÿõ{õ\8bãK\8féí\98\86ÿ\82$Þ6ïc\9fa¿½dhÿâéÝþëNÛt ög\r]À<æ¶\au\ 1[øøA\1f\81>\1f\ fÞzÉ¢\9f\7f¼xª\19Óïd.\7f<ÿßïñ%¹\9e¹O^ÿ|ñ\17p©ßû\13þ\1d\ 3\95múý³øºÞXªg\88¯\vÿ¸yÏ\9dùnñ\1dÈtüÝÓ»vîX3ïr_!÷{\17p{VÓ6ÿ¿îü$ß\97ñÔþk¹~pïó\ f(ö\1dÌAÅi½EÍ\13îÁûW\17¾^\85P4\0EWp5m+NYóÝ¢UP\95\93\7flzWß \87ÁM|-h\a.ÕÃEW S.z\84\9bftçm\1a¹ò¶¢q0ºÄÿß<£»×U·\ e¿\˪\17Á-ÓGÏûĶR\96S©³h\0&ÖFÌn>zÃ#óï)㦫7ß9Ó»±{ôöu;K\99©\1a\87K¸\fÿºb÷\95wV?Ã\ÚY¼\1dÖÒö\93í¿õÃÎϰø\e<ÁçÁ\vPýéÚ\17KY6E\eq;·å>Ú.ÿoö®6X¯ê*çUÆÜ\90\90`¥àGlk\1a%&\ 1ö÷\87\ 1\1a:ÐR\86ò\11"ä³P $@ \ 5\996Ã8C\7f0Bi&Ä\ eÖ:2\9a\19\19\8d\ 3\12*q\8aÒ/g\98\ 1GF\89\80\ 4D\88\90y 4\ 4ì\8d:X:ø<{\9f³ors\13\7f´©´Y\ f\1cHÎ>gïµ×Þï½{½kg=õM_ã&Bè¸\1dÚþZõü#Ój[êÖamãZøô\eóî©1\15¶\8b·\98ßöñU»§ß^Û\82©r®?¶\9fßÁÜ\8aï4}^;<ÖvÜ\8a¦\8bý(\9f\19ò0\ôÌ¢c:¾\88nÝ7·ñV¾|áïuÜ\8aªÊrLÓõåÃóÏì¸$R\8dïØ1¥ßg\7fôU\95\aÑùXu}Bã\8bXþì_ëÊ3\11C]¿;Êxä}¸|Ïû~ºãOìæ¾sJ?ÞÊá¹\ ft\1c\14©Ê¹{F¿\97n9ye\1d/*Uû\9cSö˵ìs\97¾¿òS\98Ng©éeÙð\82G:î
++U×hÏÔþ3ºã¤e{J[¶¾\8ewBû\\7fìÙçO«?\aTáÃ\10\b\ 4\ 2ÁáAn/c\v#U,¹\9ez\8ccÌ\18æ¨æLG\93É\9a\9eCkbýsÀï&ºæ\14ËK\87\84.\14~ᦨ\99lk´¥70$Ü\ f\8e¾8\8d_W9FúM\99D\8cG|Ô\85_\8b^(\9c7<³qI¶å\98\89¬br\86¾-æ\ 2g«sïûë¹Á\8a/\fG5\8fþbç§óÙÑÃI\9f\96Ç\9c -~ù8z:\9dÂñ
++¿m¬·\11£àW®U\90Üá×¹\8e\9e È^¥R"\9b´[ETÅ<iz\81\99d\8b£\8b¢s1ù¤éþc±mü\1d\12:²¡yH\11³óè \a\92H\7f+º·©Ë\9f5tf¦à]ïÓÃ\99&\14_\9eÒ\98t¤¯5Z::\kè\9bzÁÜ2¤TQO:TÞ2i\94¡U® )\87\85¶vt c)èÛUÐy\b\1e+Cé+\7fS÷\1cæÌ_Â:Z\97«?\9eÞä\98}ò5~´pª±H8\16u¿÷ð[\1doñ\90åê\19\93ú\8fP\ fIÅ SÝÝÃB;zÞyt*Þ×@\17¸\r\81óÂÎÈ\81þj\8b~,½ÊX$\8bµ¢ÀP\8cűÐC\9d\91\19Ü\8e\ eURËéà\9cKe ¼Â\8eTA\85±yãl\87Ý\99lq±òÐY¹æ\8e\84ϼÆ3@î~]Éä§}ä¶óÝü\ få7vV¹\9a{\8f-n\ 2c\ 4,fc\14V\9b¾X\98 \99\95Ûq1È\ 1Ö\8aã\1d(Lûl\14>>P\bV-\al!\8b\8f)tÅ\82ò8ÁaÞ©ãs3\ 1Ó\82å\82Ï,ø\f\1d2\r\1f\e\8f»Ô`\86Ì\13·ü\fY\16\94\ f¬\f_\ 6Á:¹\1c2ÆOÌmW8\85\9b\12¦Àø\0f\91ã#\8bÏ/)\ 2é>G\7fÉ\96\1c|OZ@Ö\93\ fJY&¸ã1\ 6L\84\80åÈtÆãç\ 5Ùç\98Þ\8e£67\ 44o\1a'â\8f_<\ 6¦À%#\1d_À\1d\b¯Èë¨tb.? \10ÈxÀ \bü\aÃa¡\12ýøQ{ì\13Ì\88ÛÃAÅØÏ\10\12?:q/\91,±~\9eñ#\85|\90)\95ü|Å\80\18Æ\ exZ~Ø2Æá]¬¾#· ~Ä:|>8Yz÷}&\8b!\8fÒ\16\1fXþ\0\84^¬£"\ù\19\83\86T6=·\1dyí\18ÿ@2\a¬Iùy\80%r\9a,\ 2å§%ä¶\92ÿ/\10\b\ 4\ 2\81@ \10\b\ 4\ 2ÁÑ\0±ÿ\ 5\ 2\81@ \10\b\ 4\ 2\81@ 8\1a0\16ÿ?ãÚï}i|ëä.f\97ñ¼·Í{ù\82\1a?\1c&\1dXÿ靈j\8cº!o_\89Efüö±\17\7fðïJ\1coTzd°»ñ̽6:k´Äí[Æó¿Uúgݽ\8dÃy%\ eßeæ\ 5<Üâ\8f×\6·Æó{\eG\ 6·5\8e¿SF?÷\\89ç\8fF¡ÿ\16;=wtSáéK\8e¼\83ÓÊó¬Ï7ë\9c\13Þ-qûJ«)\83\9d\8d/o¥]^c»uìx\ 4w5®Â\eg®{µÆÃë®NàÂÒßB\ë\17¬xª¶9Uc´\1flµãß>îº\1a\7fo£«1Ó;ZÛÃ\ fݰ»ÆÊר¯\9eGð\8b¸V\7fç\v\7fYcÞûº}³gôrª{\97mïâèM\8d\99¾£q0\1eÌ?¸¯Å¼¯yý\9c\9fêx\18Umûù"Ë\97q]|æõ¯Õ¶¨ëxóÛº\1e\1c×>¿Õ\10\ºwA\8dO×ÞTn§§õã\1d\1c×>©í\89K\1e¾~{móº¾÷í\96ÿ±|ãuÏÖ¶ÔÉr|Ë8éäÕ5\ 6\9dE.K\9bj\9c\8d\8bî[]9\r\19Ò3i¬î"_~êw\97½YÛ¢¯}~¾í\9f\15ÃkO®ûÙv1ý\9b§÷{îÝi\97\ e»XyWu]ëZN\1có>»Õ\87|nó-/Õº\8bÖw1ýÓû9|ëW?;¬qí=\ fä\9eãúñ~[\7fô\95ÚæJ¬\9e@ \10\b\ 4\ 2Á\ f\ 3G¸æxÊ\16ç¶\18\18Îì\ Éf\88¸I6G\18²\1fqVdýtÖ\9a7\8e\9cp
++OáÏ)\93ë-y\86Ðã_Ç r\86\{¦>0i\80=¨\9cY)\8e¼t93\ 5!\97l\ 4N\80\95Î\9cÃð$£\e\9f3aBô¹ò\15z\16S\8b9\95Bs¦\8fë7*\18\e\8c\vªÄ\80\a\9c?«\9e\ 2k·ù\12l\9dµË\8aáÔ,\fïmÊ*[\f\1dJ?&°~|(\81õ\1eV\84F\17\98\90eU;ÃT\ 1Æõ\a²æAÕ\ 1/Gf
++\94ÊrÉaþä\89Ã=\87wÈàæ\99yCJ<\9f\13£Ì=E\83¶UÍ\ 5\18_G¾¯õ^*ñqA¡'SâË\19R\9eTvû=t\1d\99Oã\1dse¬bá@æT0ó¦Äì\eôbJ\82\r\93+<+\8b\17\1d¹R/\9eÌt¹ä\121Ý _w\13KH¿±\ e»\86YB8üÂørV\97\15M\9a\190\10\8b\19\1dXMf\17\90Ç\8ee ÷«Ww(þHæuX.2ËÖ%«°\80?ò|\14t\1cc/§õ\18"$&\11h¦ð0 \ 1=ÓD\84å\8a\85Ä\ 1\1f\92&È\83'\1dcûµgR\85µ.²Ä¢A\ f1\1a|Ðrɰ\80@xÁDJ¯\18ó\1f¹WI\ fè\99\90Å,\1c\92&*²/b÷b£\159\ 2?-4\ 6ñÉÃ.r9í\97Ë\82\ f\ 2\15Ó×1dÆ\8bá¢w:\85ø.$n\8d1ûÿÎ\8f]¸füÏ\8c\91Îþd^î\9cÇæ]Vùï5ìêÔìíÓF¿yNµy\\1e\19¬oùö\8fï\9dõv±Ãs\80}¾¹å\8a¯þä/ýCµÃ\1e\19\9c0½·Õ¾pëÜ}\1d\8f\80\e\19<X\9e?8\ f\7fq\19÷AÚ\9a¿ù³ÿXîû¤§\fN\9fÑÛY\açáo\99zh[ÿ¢fï\1e\9cO\7fz³Ï\9e{àÊ7k\9bíìÈ\99Í.\9fùÀ\92§ú¼øÚç×Ë\9c&Îo¯öàÄùíç\96¶%¸î¹óÒ¾-V\9bvÓÔ~~OýÆ\92:¿è:[\7fñ\8cþ;\8eÅ?sÑ«]=\81n~5÷}â\ôiÅf¿\10×è_\±»³Ù;{÷ì\19\87¶Ëg7;ùémK^9о>}zÿ=Àò]w\9eÞÙСËí/ãÃuÓ\9f^÷f\97oÞ}'q~[\87eÃs¶VûZ«jë¯8L¾ùæécïÝÿá\9aSnbý^%µ>/\18>~_Ý£ª\9bßW¦\1eÚf¿·}¯"5\11\ 4\ 2\81@ \10ü\10mqR§[Ò±kX²äcÏ5\17=æà\ f°¹p\Ûß\8e=²yæ\9a\89×4JYìÜ£k\bAê\b\vû\ 5f\7fb9qË,zئx\9f²Ã^Å\11?\92ñ\81 èüoÀQêGm£±DºÆùÎç\9c|f¡ôD»ÚFÚe<ÒgÖ´wL.Çü4³©¡\1c\16\13p\8eæ&¹Ô¡:X7\89O\18ÚôÌA'o\ 6&\91\8bé\8fÙÂÆ·Ífå7\0\86yÙ4Û¡Û\14»:ëI³Ò:\894`\99\19Úx\90É\99\94"yóa|\ 4,\82b¹ødH+Or\8bÈïY"ÞH\89Ìí\85w\1e\9aT¤:Hä\8a×^Ñì6äÃðdz·ÌÁW ½\aU¾¶Ñ¤¡àÂÁÚÓäò°¤¯çW=)A¨èÙSö:g*\80iêÊNÀ\1d\81±±ØÁù\9e7"{æÁ\93\15\ 1gy~Ã\90:\9e\bتJåÂ\81\81×Iý¡ÊW\1e4gaãbçÁÎ\84ÝP
++\10¸\9cÑ\11©é9?fºóË\ 6òm\91l?aG`Çzò\ 2\90\94\ 2ÛÌôÜ\16\87¨ùp¤óõÑ\97ó\85ßÃgU¾|«yìû\94\9eû¡ÿ\ e¦ÙßFsßaKbS\93Ï\ 3\1d¼'yX$þ_ \10\b\ 4\ 2\81@ \10\b\ 4\82\9f|\88ý/\10\b\ 4\ 2\81@ \10\b\ 4\ 2ÁÑ\80±øÿ?ù÷«ÿp|ëÈàîCÄÿ\9fÛî\1fX\87ïæ\96{ý\89·k\1d>\86Ýô±Ø\13ç¿o)m\13ǽ¯hã\1c\×í¶Ò6q^ùg\ e\13O>§Éò\8d;ÏÛÝå.\84Ú6{¿\98ñ\eîªmY\eÙ(\ 2\81@ \10\b\ 4\ 2\81@ð\13\8f>¦_;\1f\19<ß×ë\1cǯ0Q\1dÍ\89jpV>\ 12\ 1Àäìî\8dç \98(ßà\88äW\88ÿ_ \10\b\ 4\ 2\81@ \10\b\ 4\82£\ 1cþÿų\16½2¾uÊ`wãág{åW³:\8aâ\ 4\ 2\81@ \10\b\ 4\ 2\81@ xÏ\811\ 6ä\7f4\8eÞ\7f](7£\93ü\7f\81@ \10\b\ 4\ 2\81@ \10\b\8e\ e\8cùÿ\9fù¯Õ\7f0¾uò`gË¿ßp¼»°ÖBs¸?V_þö_[wQW·oÒÈ`g©ÕÆüùSG?°ªäë§Ìº\80åþR\s\9fØrIéÇy?2x¢ÔØÛ\86kÎ\7f<ùß\85G@Å0Òåý³\9fù£n{å\17PvdðV©Í¶\bׯ|ÿ\82³yßk\13G\ 67·qO\19ýÜs¼\1f¢Q\90§Õ\17<\90\8fàñV7î\86á?\9d\k\ 2ZWkØ=1½\9fó\95/\º¹ÖýSºÖ°Û\ä}\1f®ßzíæRoN×2\9a¶üB\ë\17¬¨5\ 1S\95ã`×´^\8e·\8f»îåÚ\16\9d/m/4Ù×\ eçník V\8e\83ÊcÀñÖì=ñ\eµ-ØÊ\8dpv\8b͸åÌUß©Ü\f!Õ>¿ÝjÒ«{\97m¯\9c
++\9¶=ÝÆ»~x¶\9c
++AÕùí+m_Æuñ\99׿VÛbW÷oÓ\8c~~÷¸O=_Úr\88u¼+\ eÃŰÕ\8a¼|xÞ\17»Z\82]Ý¿\1dM\96\15ÃG\1f©µ\ 4]W+ñɶÇV\f÷üqW/Ð׺\7f\e\8eë×hÉ\8b\8bïªü\ e9×ñ\1eoã\1d\\13ðáãúu8\98ûá¶6Þy»öN.mÚùªë\17öã\85Ø2µ¶%~\85&\10\b\ 4\ 2\81@ ø?Ðå@[o\951Ñ\ 6\13½c\1dsV¶c\ 5;g=Ny>f\9dx7àì\9d½Ç9\8cõ\ 3\8dÍQ±XbƳ\96eüTðÁZæE'§ÓXÿ\93\ e¨-\9f\821x¬«\7fnpLÖ\ 1\ 6\ 5\vÝÃnA'V\95\ 2\7fÞ¢Çlµbe¿Ì,jÖ\ 1\fÁâÏ\90-jô\ 3\81-\8e¡¦$b³\96bЬB\171@Ê\91Õ\19µ\8b>&\96Q\f¬A\18\83Ã;Ù°H \8c\95\180NN¬Hç\99ò´Vµ\9e^\8eèO%O\17m© ^d·I³\8c£ÂA5æCæ£×:}Î&\96Á\vÑZ¥£\8d\98\973¬=\1f\1dçOï¯\83 0\81lJ1a4\97XF\9ee\11Yú1²r\9c\81:YUÎ1Í\yÌ @®\ 4U`<\96»Çl rf1Gt\1f3ËÓ)çtðɳ ¤bi²p\\95\94´wXçäT¦\10\ 6Ê
++xÃ\97\÷\84£y\11ÏX\ak\82Õí\94õÉá\15íYì2iV´3\99açx-ZVÈ\83\80\90D\95\zh´ßS\«ì\14V5¦N/ãsí¡Ù\145¦¢=\9et!Bà\84ùy\96àceÈ\f\ 1¹ÓbbÀ\8c ]é\98XSR± ¥CsɰÇÔêz@4\16\9cTè\17\e\13\9b\8a\ 4\0½LãsûY¡\92\1d@¿>ÕÚ\95ø{à¨\9c\a+þqJ¬ÛÇ=\9f,+\ 6jkXÔÑb·\ 4\88j \15¬\94ÂÞM¬yhÊ\12øR\871\96Ý\17úÚ\89\906\18¯¸é [·ÿ18Ä\8fJüÿ\ 2\81@ \10\b\ 4\ 2\81@ \10\1c\r\18óÿ\9bÇ^¼z|ëäÎïI\9fèÆ9g]C¿gLfÒÈ`[ó\9f\9f:zé9Å\17¬¬\1e\19¬m~ÙSÿ~Æ\vÅ÷êU\1a\19,)÷é\8f>\7fá/<Vý§Æ\8c\f\1ený\9c6zü§ËýÌú\ 2Û\8a_ø3¸îzãç\1e-þÿÄú\ 2w\97~èó^sÙÜâÏ÷Þ¶z\ 4_Â5oßÇ\9f-þ\7fgÂÈ`Mó\ 5Ï\1dU+K\9cBPqÊ`v\93gÅ×\96<Så\8f¹ú\96w\1fÆç>¿¼w\12®\17\1fºøõ®ÍW\1føýÓú>ÿjÖåµOoúº\ 2e\9e\9bp}uÁÒ\7f®m.T\7fü1¥íý¸þík×쪾úä«\7füþ6ß%[¯>þ¤
++ÿÂ\94Á\15m\ e\8flíâ\r\92\ eu\ e\9b§õëvÕîé·×¶`jÛ£å½\85\93&òã\7f¾Å7,Ý»à̲~\98D\9dÃÝÍW\7fùp~õÕ\eg«_ý\9d\19cm«f\956krõã\7f¥éåÝ3ÖþKms®\8baØ/6àü:\9eõ©ö9³Å0¼sìõ/Õ¶ìªÎj|Ãí¸\16Ý·zg\8d\eP¹öùõ¶§V\ eÏ} \8b\eHõ½sËx\8cSøîW¯y¦¶E'~|\81@ \10\b\ 4\82ÿ?ô¾l\1d-ý»Õ\13\e¼ã½¨¬->Ýì#n3b@1F D\83c±¢K\14'`>¥RÄÓ8\9a+ç\18hà\1d\83\ 5r¤§4v\81\ 6>\a«h¶x¯a,(G·w\8cdm'kzàkÉ\17_»\r\95\97=d<Jæt\97\95ÓÑÃbhþø\ 4\83Æ%os,ïd\e\8aÌA\aß=\93\ 2\86H9\92«½\8fUÐ\19\87Z\83\ 3ª¶FóP\ÞQtÊÃæH\19æ\90u¹Æ\ah\1fa}9º¾\83³Þ)_ýÏ?¨ÏX«ì¡fç \b\12Çû\8eÓ^ãõ̹¸d½Õ\19¢\9aä¡vô\a\95\eÏ\90\fåcÈ\ HJ\97¹fì\83¦~\19\8e\80\89\86\98\19£Añ"\ 5óèËÐ)O\99 &\87\89GªU1øB%\8fep\ 1c©¤p\9b«b<\89õ!°Ñy|l\a¦ LH\f0\80 \a\99ð\10VU[¬7º\89Ø\1f\16ÚNôôc\8d\19åM\97¿5Ö\16!\12\f\8e\10±1\94ËÜK^\9b\84\17°½¨:Øh\ emÞ§À\98\84\18\12:\8e\9a\ 1ÓÐ\8d\8b\98y°5®ÀC\r\91n}¥3ghi8\99È\99ô\84¾¡\ fo0BÒ\l\86U\e\f\85÷<ã\8c3\ 466b\8bØ\9c³ö\90\1c\ 3`5]À®\8e\8e!\12\19*`E\ 1nYôÄ`9Y\1f¡½DAKH\8b6u_0\\86» \1e"î@òÿ\ 5\ 2\81@ \10\b\ 4\ 2\81@ 8*0æÿßð\91Çþu|ë\94Á\8eÃø×\14\9fïïãzèÄ«vÖ\q\eöÏ¡§ãwÉ®S>ØÅ\ 1\94\9cv\81@ \10\b\ 4\ 2\81@ \10\b~\10\94ø\90¨\8cSʼ\ac\164ÞG7Ù\19\95\ 2þuºÊ¢\82#¥@\89ëð^gÈÀ`\92 \86!\e6iå¼&'\ 49Ó2\99\10Hü`µ'\17CN\183©È\b\ eRÂØ\ 1\1dÂDGÏ\16b\90\fB3\84Æ¡·\90ð\94É%|Á1ÆZüÿ\ 2\81@ \10\b\ 4\ 2\81@ \10\1c\r\18óÿßøþ_Þ0¾udðtËë>0Ïÿéýòÿo:«òç\e?2ØÓê\ 5ÌylÞe5^\80ùü3Ëýñ<ÿ=\8f;ûY7\÷·\95kßå\1aC0qÊ\7fï\8c\8bk\9eº\r®æ°W\1e÷\aq-HË^è8ìMÍ\e\7fë0\1cöûZ®ýM¿xem˺ã¾_Óxÿ\97l_>¯æ¾\ 3\93ÆòÍ'Î\8b¿£ÍáSÃ\8d\1féÚBÍEßUæÀ\1cö¥³×¾Xsص®ñ\13O\1e&gþwÊx\1fŵø\8d\15\7fÖå·w²\8cñé¯\18îþóÚf}ísSã\vxzÛ\92Wj[ôuî{Z>ý-g\Wsß}T5ï\7fKy\8f\8a[¾ëÎÓk[
++U\96=-ï\7fÙð¾\9ek?V\ e\82\1d\8d\1fbÉë\1fÿ@åÚW]þþ\8e¦³O¾ü7[+×¾*ü\ 4\ 2\81@ \10\b\ 4\ 2Á\91F\9f§ÿ\1eåþ\1fãð÷ô9çh5Îß&g]Û}tÑ(\95C?\8fLj\0ï\9cc\16¹361óÝÁÎñÉæBæo1Ïè`1e\fé¼U ÏQz\8b;\ 6Ó±I{Ü´\1açyúÎ\9dÁ\90¤æç4\9c¶¤ìwF\ 5o\f¬+Ü"ï?5\ 4¹\13ýâ\16zÄÓø«Ê1[\15-\86\85Z<n:ü\95³Ä4u©?\8f×H·\10\98l?©ó×C%¬÷\15u\84é\ 3%f:ã\13V$\18ªÜ@Ö\88Gð\9c\85Y\b\az½½/÷\ fÉ\9fP×9bõ`ÛaH,xå½·©pðãf\82º,ÆÁzºj7\92G\ 1 ÚCL)þ\98ÖShûÈX(?\97ýb4Ä+ü\15>+l\80Ì\12\b´]Åÿ/\10\b\ 4\ 2\81@ \10\b\ 4\ 2ÁÑ\801ÿÿÞ\13w\ fÇ·N\1el\9aÊÿÓ'¾áxwañá\1a7id°¾Õ³ÿð¢\93¿[ùås\18\19<Ù¸Þ\ fäùß]î/Å5÷\89-\97\94ûÎû\91\81+÷é\8f\7fmtÖh\89\v°\11ý|¨ù\9cO\19ýl©'\1f¼Ñ#\83ÍÅO½\91ý?ÿ¡ÿ)÷\83\89\90§ÈI¿÷\9cçç}¿ÞÏid°kj/ç\17n\9d»¯ðÿkç¦\fÎoòÿç\86«_©q\r¾ã¤ßÕÆ¾a8ÅÖØ\86`ª\9f|Ú´^\1fW¾péæ\1a¯ tõ\93»âï\9e\8cëÖm+\87µÍ«ñ<÷ë\86\9fØXÛrª}ÞÛú\µýÆ_¯q\ eÍ\87Þô9söò\97j\eþ)m³Û\1cn\9c¹îÕ®-UYî-ó^\88ký\82®6\80uªöyz\8bÝX;\9c»õ\7fÙ»Ú »ªêü^\8bÍ\rI\bVl©¦\16\ 3S\83Iq\7f\7f 8ÔBý(""H\f Á\92h\8co\0)N\19\ 4\87±\1de\94bÚA\87\8eئ\95©ÄIù¨Q°µ¤u\98©Ö´F\89R\101Õx\r\88\15&X±¦¥ëÙk\9f}oÞ{ß÷O\91\81Éz\98\eà¬{öÙ_çÞsó¬õ<ìa -û\rÜÙÖcÜ\8bà5m\f\9b\ 6§Ú\9asQs'N/y\0·Óë\82{îò5Vs V·6Ýa«9'A»\9a«q ôå\rôÚ¿õ\82}ì) «Æÿêr½É9\10{Ú\1a\1eÜÍ^\ 4ιÚ\97EݼÜóþU?:8\aâ\94r=ä\94¼àøu_ã<\a[Çþø\82®\9fWÝ~>÷3tktf9ïdÄ\16\9dÃ~\ 3Ñ'\1eße#ù\11§ÝÊù\11Zqnȵ\v»}ùÍ[W~¿Æê|^3rÞ\e>Á1£¸\9f\9bËõ6Òkí^½Æª\7f\83jëwÆàæ\ 5|\8f¥(\1e\ 6\ 2\81@ \10<³\ 1mn\87Êâ\80Ò_ÐzNE=5\9b_÷ÿ×#ÝDT-\aç«\a:\9eJé\9d\9eNË>CY\9c\8fOòO/ï7\1eÊò®<C\15îÙ\83\12\86ú¹Ò\85+ïÚÍ9h\9b /Îçe\bÑ;\9d\1cÔÓ\83\1eõª÷tH{ö²ê®\13B\80~}Ö
++òÿ¨¨f\8e׺\10hd>Y\1f\9a\8fûdÍúNw\9f\ 6ïFµâ\87\r\0Í\1dM\8c\83¶¾vÕ\ 6\80ÚÔÞÇ\fó,¬\88¡\96i¬\ 6\85âÆæ\b\e\0Z
++\1a=,\ 4\14êÂ7`b;\rÿÖÿL«¨\13?O>Eü6\1c\ eh\12!\ 5\ f\96Ù\1a\14\88Ó\13²Õ\8a\ 6\10\91Ë\0\8b\ 1K?^hI©\89Rè\8d\1d¡\15-¬KÐðWt\9eÇZà·CL¡\10Ã\14I¥-¯]\ 2³\9cmq±¯\15åY\15\8f\ 4\9a\ 5lHºÀ\b·N\8b>ä\99i¹hÉh\89£c\9e?»à1\95¶T¤Ó\FHÜclt!ºF(N ôÈ\9aÐ)\1a»34±uo\85d\90Ñ\80Òw[V#\80\16·pcp\8aF\9d\8b\9e¾E=*ç\ 3\14ôµRQi\93hßS?iV#t÷]¦A#I\81¦\88\86jh\ ehãÓí£\82ªù\0Ô\17Ú\94HÖ\88(ò§\9bÐÑ\r\86yJ\16¼|¢Óh6\12]\8eú\fáþLíã\97nÔª´\1eñg »\91Û3\81n\búåià\10A·\1dõA{º}\93JXl\95\91¤\80ÓTDvE v2\ 4û3ÆI\97¦U¦u {H\95´\13PÿÑÑ\96¥ÕÀÍ\ 4\9b\vÚÆ´\1d©½\84»\1c"\ 6ŵ\80¶´R\16\e\85Þ\86$\84\10hÛelîè°¿"¶I¢ßd¸&ýt\91ú\7f\81@ \10\b\ 4\ 2\81@ \10\b\ e\15\fùÿøÞs\9f33:¯§
++\97:Îÿ_ݸç\97l<þ æ\89µí÷\9e\18Ñ\v8ê\ 2®¯Ït|C«KÿÊ\19Ëÿ·´c\83ï÷\8e.ÇÇùÿ=\85\8b}3½®\e,ÿq9\9e\1d\1d?ª\1c\a\1f¾ðÕ/ø\17\1c÷J¥~oKãù?¹\89ù\7f\1f|ì÷nl\éoîÿ\83ûJ^@4ªß[ÙjÓOxüÂûù¸5ýÊÓ£?;×,+×\8d)ä~ï\94Å]û¯ºð\84ÒÏìL\9cß[Ñjê\97l]Ë<»R\96kãokù\0\9f»c\15ç\ 3ÀZ´Ä.XÔ\9d·ú\8e\95_çXÌ\95ß-c¹\ 4ã?vÍ78ÿ@UÍ\0×®÷\17Ç\9eÏ~\føË«\12ÛÒbklÍ\15Ð1s_¶·<\8eñ¼\85?:¢[\9b·üÕôw8f2sÛ\8f6þú¾[.ü\11ÇlåÒoly\vëw?¸\83cÁW}\86¦¥0\9eÓ°¤ÕxÞÂm¥ÍS¦&å-LÏ\91·pu\99ÏÉ>\15G¶¹V7ú*ïUìbľ¸ Û\aïüá\83×p\1eK\97ï°ºå;l\1c\1cÎù\ ep^-±3\9bΟVľÒÏséõn½þ\91ª\a¡8¶bA׿¸VDjù\0k\a+8§Á8Ëc¿¹í\81Ã7}\9bµ"rÍ\938©\9c79OâȦw±fÇê\ 1ÇRÕÂØ\Î\9bäÑ1¿÷@ëçêÁ\11ÇrÌ\18îg¿Íç¸\8eÄ%mÝÏ»÷3ºÆ\ 2Ç\ e´Ï\865\83ã_Ê9\14ÖrlY[Ûñ\\88ݳêHÌï+mþ ½Îxàï?ÙÅø¼³Gò$\8e«çiËûlg\9bÏû¶\ñm\8eY_ïÛ\ 5Ãó.ú0Dzæ±OµýrÆ÷\9fÿ þ<Tv4¯\ 6s}Îu§?̱X8\ f\81@ \10<³P|±Q·\1d\12}R;\87/£R'¬r\9eÀ{óûa-®À!{x\89+T];ú3$\aßõHí\ 4çPà«]Ô>§\1cQªKm\96\92s(\85[\87â_Wø\7f\85Êm\ 3\1a?\16ê4\81_¦o\94\90}*5»\9a\ eÀ\91Ü\ fû0\89§7hÔêHý¢oø4R\aíÀ¦C\11\#Ñ@\87Â:kT$£ûð±w>\a\98\94C\81Ü\84\90Q;L_\95>Ä\ 4z¼°ÔÔ\ 64ÐÁ`\ f9ü§\82ß\8e¨\11϶<7ÎÔpGù´N*9ÍÏ\87OA.\84Fu¿Á\9a $?R\8fãÁµá´\13â\1c9\ e\13ó3@?#u\81v\12M\ 3?\ f4®Ü\ 6´KÍÐb£¤\1fLoá\8e+\aýÌÒ©G>\ 5]\89\ 6\82êù\1cãȾ+Æóe\ e½\ 2×\9f\15\98úlsÑ¥§\8b\8däC /ôR\ 1¥ð \9b\9b¾\ 1:J3\8f\85¯mc¥0@jÈÒ^¢\87z5\92\13\12}ÑÏG\1e\ 3úg\95\9b-'\84\86^r>&Õþ£ú\9e6\82J I\1c®TÁ\eH=ÐÅ<ݧx3ÝØ\ eé\15H´ §dTûÓ"Ð\18#tó\13¤\ 2èTÚ¾´=)Xr èöÄ$jÓÆ2AçÀ[\\86ï:\8d\84\0d*ÐÍHO¿
++)8%\83Åa\9e2}à(ºõi=\91\83\ 1~\83<\8eHû9ZÜe\8eÚu´\vp+\16=<ê;õ\ eª\ 3\99³D\12T)ðîL+\9b!\8e`i=i¹\91\15Ñåæ\94\97ðÿ\ 2\81@ \10\b\ 4\ 2\81@ \10\1c
++\18òÿ_8nÕ\17fFçõ®oºð×-ûw0\1fn¦ú½#\e÷{°Îÿ\8d\8dÛ=X\17àÑÆm\9e°ÿÅëêñÜïÝ]Þ\8fzì«O}ñ\97¹\96Ù©~ï\89Yt\ 1\98cCû\17¿çå\8f\15\9eß\80·¿¾qØ\eÎ}\19\1f÷\96ú3Õ¸¼\15û?²¾\1cO\9eÞ¿¼ÿOéµüñWß[ø\7fg¨ýÍ\8dó=Xw`[9\ e.ÿ;çýzéO\8cÑQ?[û/Û¿¹p¡É!ïà¦\85Ããç\97¼\83\14-\8dwOË\9b\18Õ#èò\vVáý?ÛúúrÜxÛï¥#\86í¨5åxPq~ïæ\85]\7fƵ\ 6n,m\9dE¯\8b\1e6ªú&\98Q\9dÿÉ\1cú²ÆëÞuÓÚ]\1c3\95K]XÆ9\99_ßÖ´\17®xåº\1fp,ÔºùÃZ¾Æ8÷¾ïðníÕ\1f\9fÿ-\8eeÃ\1cì\966ß÷\9c¸\92Ç\17]åå\99·\9eÌÙ?qxwÞ϶n`¾\e\12\9d%v å@\8csö;Ëõ¦§PoÿÛ\87U\8d\82ZÃ\7få\1cÞ\ fë\1a\8f|åâw~\83c¹ê\ 2¤Òædm\83/¶ý}ùûÞò\ 3\8eu9\ 2\8f¶9»}êí÷0×ßy1\1c7\87÷Ãt»7Æu\ f\1e\1fÑK\98Éç_Óæúã©Î\19êáJì\81ûû\7fÜ\17â¶6\86q½\84Ýí¾X3øW¾^4Õ»Ã-\1aÆfæ\ 1\9cÞîãq½\ 4Ö»\98¬\89°y$\7f`\e_\8f¶\12óò\9cÿ19\7f`{ËKºaÇ©\ fqÌE\1eß¿·}ýûúUß\9fM\89çåÑ\96\ fôkó_¿\97c±\8eAµñ\89>\83@ \10<ý\98¡\99\9esÂ\97\ 5}H»\f^=ÒáÆIv\9cï3Í3|F\8d|\ 6? ¢^»\<Â3ç+\ 4å\94Ãð¼Ï®ãMi\bÑ ÉÖyk\91}\90»\1aýä»<\82 \å\98FøÓ]\93=[\1eC9\9fM»ÀÐ\1c(ç\95\ f`mSL\9d\1eÀ\fí\83aþl\1a\ 6ãÜ1óÙÁ\86Ñó\9fâÚqz\83ëÚ\86ì\80¦ ö$6Uw\9c~a\19Ö2p\1a¢ñ´óh+\96Úûºv°\92§yó)!#\81þD\9a\84Q°.`\17\ 2Ú"\16vñp\ e\80pB\ 4?\ f\13\ 3\9b}R\99Ó6\12- -³Ç6\8e\ e\ 5í4\ eÚÔÐú7\86&½éBP'QË^yÿÙô\eÊ"OÒG\98E»_\aäJà\87B\82É\ 1îØªùài2#-\18¤óqwY<\88\83\8bÇ]\81¾Ñ½H?\b!1\80Faûf°\e!@\804\17\8b}KÛÐÛ\9c³ö\99îÎL·¹\86\a\0=¢!\84>(\f6 E2\8c¥ÉÔp< KGºs\13} ä\92Ç£M\1d\9b\82ëC\80\8e¿¥iÃ6Ä©t@Q\7fÐ`\84Ø\81£ùÆ\11\94úÓB¨D\1f*´wè7!Í3Ý6è-ÝfÈ\8c@\ eDõ|p4\9d4Lú¬\89 \13\ 5Õ
++,\91¥\157\183*ùsI\1f¢\ f\10ºõè.\87ÌE(6\ 16Ðå=]\9cº\fO\81Ú_\8f5\8b ¿\v\84ÿ\17\b\ 4\ 2\81@ \10\b\ 4\ 2\81àPÀ\90ÿ\7fá-Ûÿzf´ßÛY8·íôZöØ®\9f\14\1e^\81\87ÿÇækÿ7;\7fõ\våxá«Õ,<üõ³èùßÙjf\ f®·¿ñk¯ý)óüI\19:~CiçWèµô´£\9e,|¸Òª_ë\80Çyu®\v¿\8d^\vÏyÞ¿\95ã>Ñu¯,ï\a'ø²\ 3ûÞY\8eç\98:N\93µÿ¿òÒZ_ï\98C½©\9c\ 3\9eôÏN\;¨¾\0\919ÔÇ稡g\81É|ü\96V\13==Xñ\89ʹ×zâÍmLgÝð\8eïÖXæ¾\fùÇ;?}Ñ>\8e¥Àç-,±\95ôºñ\83oîxõÚO®MÇ ßúÃå72wn«^Á°^zã`ï\1d\1c\8b\9e¹Ð»[¾Á8¯~y\9b³ñ\9aömm|k\a¯û\10óÜI1\9fûŶ\ 6ç|ç²W0ÏM\8bSb\97µ¹þØ\8euµnÝG\1eû\99\9f«\a\e_Z5üu[ouùãõçW6¾úÇ\1f]ó½Ê-»êm0G=ø¶6g¯Ûû\9fó*\ fìy|»Úº\8fsÄÛ[®ÇL\8eX \10\b\ 4\ 2\81àPCãàá
++`\82\8f\11JüV»©\91:qäC\82É\84È\ 1þ'è¡þÁ\b\879\92Ëñlôk§§E\1dtÌ\14£N åD\e\9f\1dõ:\81\9cN1Óã+\ 4)èDd\9dh\9a2ãbfe\ 5\9dR2\9eº`\8d§Ë*PÅ)9\83¬\11PêÆÒ\ f\14¯,:\84\9c\8a\84JqU$\1f´\86D\ 5ò\0\90u\82T\fKÍ@&\82:ìèÁ\1f-eOCÖ¥^Ý+eçàæ»Úû\96«ðsà®s©Æ×:Ρ¹0[Þ\v\8d\bù\ 1ESc6½\ 14M\9d6Ô\vd`\98\98h?øl\ )¡ÆhV]ÎÙ£ò¾Ì;T?°Iu¢\91Ñ\16H\8a\16Ze\8f}\16\15¤=\92\99\90\83¢á\1cQú\91!<\82¤\rd\ 5Õ\1c\a\1a\11]=\8fÜ\v\99\86:ÌUBJ\91\v¹k\v>\r%WÈ@þ?EWô7¦fÓZÀLÑ\14«Ò¾ðÿ\ 2\81@ \10\b\ 4\ 2\81@ \10\1c
++\18òÿË?~Ï\97gFçõTãSGõÿçõ64Nô\ 3¿qñ\99\95o\9fê÷®m5Ö'|iñ\ 3US<õ+g;®ÿ\7fjã\87Wìw%/Àyeû½Ý\8b»÷/»\9fõüCÈÔÎ\9d®ø`=ÿ%\8dK>þÉ\97¬áúüìú½Ç[û£uøó{KæÐßg¾w²þþÎvýñü\80©VG=\9e\1f°½é%\8cëï_?GîÀ#Öý÷\1eºìت£_ëÒ\87^\v\17\ f>Tc&0g}RéË)S\93tô_Ór7þvéZ\1e»7\81Û<µô\ 5\83\¿gÓÖZ¯_ç岯»o\1aìäü\80\10\1d·9¬gÿÖ\1dïØË±®&\7fOÓ\99ßððiÏáZ~_s\0®,ý¼\9d^\17Üs\97çX¨¹\ 3[ZýõÊ[7²®@âZ¸ù½kÚþ[¿ï\88\ fp,ÔZð-sè\ 3\ÞöçÛv_z"kú»ê=pyi\13z\ 4÷þÝô79ÇÁ{\1eß\zÿ\9c{2Y;à°Ò\97É^\0\9foÚ\17oºsÓW«\ 6\80æó6´}6\9e7ñH[¿'O\9efÍ\ 1ë\1cÏÙê9¼\0vµý2®\1d°«õå\ 5ǯûZÍ©¨º\10j\ eMÿé\ 5Ý:¬\1e<òç¬\ 1 «\aÄ\81òw\8b\93ëõ\87^\0«\ 6g°×\ 1D\92§\86\1a\aX÷³\97\9eź\ 2\10ó\9d\1aj#L®ågí\87Ézÿý\91\9aüS\97r.\86©ë¾§i\96¼wÞé\ 3\8eùÄó²pQ\17\93\1c\ e\81@ xö£«³~\1aëÚ¹\16]»H_\9d\85\13T(©\ e(\12\ f¡rs)8oR\86\ e\7fó\96\a}\97P\84\1cLÀ·µòyè\ 3`T ®\19\17Tá\92'ú±«¬ ;n«¾þÓª\8dþTø\ 3LÐ\ 3\98ä\7f UöÁD\aýz\10³¾ò§ô\18J]KE\17A+\vÝt\9d\15D~x\1eG¹Õ\99y\ 5\9dv?R:i\1c`uuÙ\ e\10óy
++¼\b\9eu~ñ³pÊÑ"QÀÚ©¹|\ eèÑ\9d6wTu®éaÏ\14%|CÓU´\ 3LLèÝ\üüÓí½AÛ "ýp|H1ÎêÿÀ{]Y;«¦ÆÓ«Ë@\1fVe|\8e:\95ñY\16y\r Ê Fr4\84ÿ\17\b\ 4\ 2\81@ \10\b\ 4\ 2\81à\90À\90ÿ\7fì§ï¾hf´ßÛ;K}þqåø¸^=×\9eϬ·\9fßû|ã,ÇùvÖ\0@MÿÙ¿x&ûÁÇ\}ë¯\9e\83\93ÝÕôÎßtõ9µ&=VN}_Ë\1føé1ç²\8e8\bð\12»{q׿¥\9f\9dþzÕI¯^ã\aæÐPßÓøïqÝòÝC~øÁ³?Ì|fÎÌåÞÜÚÜñ±ßý\8f\83=Êo\9aã|sã]\7fçÞû_ÎÜ£*ܪ@ \10\b\ 4\ 2\81@ \10ü<ðsÖ¸\9f\99\aàaíPÒM¢×5¿\80s]è:0±ïr3è÷\,Z[F\87¬M6És¾\b¸pXv\fÏ\9dU+`¦\1fÁ³L\8b¡å§ \11\ 6v^Ñ\84âu\12³§é÷HW1Õ;DÃÒ\8b&Ú ×E²ÂHý¿@ \10\b\ 4\ 2\81@ \10\b\ 4\87\ 6\86üÿsßtë\8bfF;\1d~ðÿ\ fí_Z|ï\9d\85þÿÍ\8dÏ\7fî[_\ôÿcVª_õ×¹Þ~sáÖ\93ó±Ó¹Çû\97l]ËõèJUÝù¡\ eüÚG~é\17ªÇx\8d\ryüq?pÖÜßJ¯3\1f¼ëv\8eÅÊ«ïi×\9b©ç.\10\b\ 4\ 2\81@ \10\b\ 4\82C\ 3àÇsv&#IÀho\1c\f \LÖ\96\ 4\87¢\a\80 Cv\ 1\\1d À@G½\85óCÑÎÈ!Ð\7fD\13l\82«\ 1µ\16\1d½Y%$?\ 4\9f²2\ 1d½ò:\99\10\82+®\12Ô\88ñ&Ã\93¹LW¤7\14)\aH\14\18Pó.\ 4°ô\81Úö]N\ 22-J¾\ 35Pr\16¼7ôÎ\98\93Ò\99\9aítý\91n\0E\ 3äBh7\927Á¾\fè\86G¯\90\\11K¯\85ÿ\17\b\ 4\ 2\81@ \10\b\ 4\ 2\81àÐÀ\90ÿ¿ê/?{ÅÌh¿wváÑ?E¯¥ÿµü5ÌÛk×ï]ÒêÖGuõûµ\9e}¼þÿ²V˾á¾+rÕÆ¯:è×6\8d\81Ëß÷\96\1fT\1dô\1a»fÄëýnÖ \87Àª,\9c@ \10\b\ 4\ 2\81@ \10<£ÑùÙ;xTd\94Âë\98\86Ç!, \9cW>À]"ÅÔy8<Ëêòé\97-ý¶M98jÏ'\8c\95.®Té\94§î[W\8c@¬\85ÍCrÁÑÈ-l;\8a?\8551Á\13 G\1f(®\ 2½7{Xm¸hèZ Æ\eº¸0Àç#Úhaq\0\97\ fø: ¼\1fo3\1e)\ 5ÞÒ\149xz\94\94\ 5¤"\ 4j!$$Ê\vÿ/\10\b\ 4\ 2\81@ \10\b\ 4\ 2Á¡\80!ÿÿíÁ{_13:¯\97\8aÿ5xûk\8fto(uôÆÁ\17 ùÙ\1f÷Oï?«ðùÎ\85~ï¨vü\84/-~\80kùUêW\1ft4vì»VüOÕ¹×ýÞÑ¥}Ôéÿáë^øÏµýØïm/\7f/±\9d^Ë\1eÛõ\93¢; ; J;È\aX±ß\15Ïtç\95í÷N*y
++\97ÐëÃ?|þÝåxrtÝí%\7fàÍôºn°¼ø\17¸\8c~n[Üõçâ÷¼ü1\1c÷Æ\1aj§´\7f\1d½N¿ÿ\98ÿÆñ\10\fõç¨#º~\1e¬wp`A;þ½£¿\ò ²òýÞ\91m\o\7fý\8bÊñ¬¬\9eßÛÙüç/ü¦½¥æSt¾õeÌóèõ¹;V\r8\16\ 2k\1dìnz\ 6g\9d\ý\13´Ë£\1a hsýî\aw\94\18þ\8a¬Ä\8ejz\f\17\ f^{\1dÇrbÏ\82©\96\93±î«ï:¾Ä¬Jì\91°¡y¢¿kÉÅìÉ`uõK¿¼ÄÞ\88ó¾~à\95\1cs\8eÛ¼¦\8c\ 1Þ
++?;ù\8d÷s,8î\8b[Ø\8daÉ-+Y\ 3Âéªó°°õsÓ`ç\1d%\16bõkXRúù\11z}ú\97×ïa\7f\b[u\1eXo\ 2\roxø´çpÌ+\9e³\re\r>\8a¾¾rÓC\1c\8b\9aÏ;¦éJ¬¼ucÉ9ÑIU\8fùKÊ\18\90\8fré\v/äó²V<öÓÛýð¶Ý\97\9eÈ1Wçå\89\85Ýyãy,7´µ½ê\1f¦Ù«Â\84Ä×[ÖæåÉ\93§¿Qb4\9f¦ÄR\9b\97Õ\83}\9fäü\17ëÙ\9bþ\82E]\9b\1fÛ±\8eÛt>òøöµ}vÞ½\9fÑ|\1fÆÀktóáÝ\9c\9d·÷\83'U½\8dÀcXÒ®·f0ý©\12\v*ó:\1c³¨\eßU·\9fÿ]\8eu{éè\91ófzc\1ch±U\8338\87\a\15O%ƾ ðþxÞ1ÓemQ)ÅóräÈyÛ\8e±È}Ù¹°[¿³\97\9eÅ}\81Én\89íi÷¤h\7f\b\ 4\ 2Á3\ 3Å\83]¥ä\ 3}\7f«\bÓøÎW<\12è #\84\98\12|¬cHÅOÜYå¦\8a.¸\8bF©\1c\8a\a¹³Éª\9c\ 2(4z\18\80\e½3É\163ö@Ç¢²ôö\0³zj.y£`qNoÕÖ\ 6ú\8f\18KE®7:*z\8eÒ03Ï:\aX\87\a§4\èQíëé{?G\9dè|SD³Q»\8b
++_¯\8bÙºFk\ 6&Ûô´\99´w6à»-£\13F{zvÔôÍS´º\8d7Îxç;ýr\ 5\9fwº\9a¡\9eجa\eN\7fxz\18´¨Bö\11*æNë\98\833:+Mßa^Á&ÝP?u\80\19ºÆÿ%ú§Î¡¡CÙ;\97\8c͵~¸«ÿ\9däÛn"õ\16ÿ¦«&zÞ\8aU+\9c¦\80æ!GG\ 3Ò\95\9f\1dõ\ e§¯vWj\92\9d
++\1a\16òÎ`¦iÄ\10swÎj\ 5MxjÒÁD\9e\9eW\f}7Óh\1dÄÚuÂ`i¡P]mÀ\ 2\e\8fñ\83Ò\8c)xC\93O\91TÚú?ö®\ 5fϪ¾\7foÒ\8d·\17(Ë\98¨k&7¡\\84s¿\fu8\991¬r-\97ÖÖâ\84\81òÑ\ 2a¦qÎ\10%Ñ\r"\98\11C2¶\90IF\99r\v,¢¢2ÃB\97u\13E\11±Ó\8aå£Õ\8a\97â\ 6\13Æ~¿ó?Ïù¾~ßW\92eº \9c_úRú\9c÷9ÏÿüÏÿ\9c÷y\9eÿåçYá\1dÚÍÖáæ\8dÅå\93"»½Çí¯\87êIÆ\8e\v\18\19+}²¤;gás\ep³ yÐ\ 6\8a\83\88Ñpv\87Úï{ó5ã^\8f:ÁÌ
++/=tÎZô\89\9aÍ.ºªëùxà\8d"\1d{\80úM\bUÇ\9a\1a,ý\ 4êÃ\17"ú\f\9bS¤\9a\8f\89Þ`\8c0³T{(ùÜ\ 6\ 6hÑ\81¥\a\17j'I<,ÑÒ6\98\ 5\9eYK\9fÔð>\94\fô\1cY\9d¿8\94\13LÙ\86\bK¦£W\98å}\84\1dSL\9f\13®A't é(©¿\8f[wt\86[Ãd=SÂ'fä\9aÃ\12a\ 2\96Ó\v½Á*t)¬O\8f4 í!<\9a=o\8e¹\9a0°\80¿t²¸\ e&\8eõçMR°UÌ2nL)1×UNu\16UæòÂRrÌ\90÷\8e=ð\f\176-;\15s¡\7fÝ`\rBF7Ì\1dÌRÑ-\ fëãÚ\83éb±2¿\9eë\1e\eCqÞg\18´¢\rC£d\b\80º\15u\96´ãÂÇ^A\9a\ 1\8fM#'Ób\10f\7f¸d8N\b\1exç\8d}¢}WC¶H9\rW\82Õ\81r$\ 5C\83 \94*\ e~\bå\ 2\f\10\82É\8aN9c\r§B\9aPì\98%\ 1X
++\0ºÄö\ 5Ýa xRáÃ\1fwÄR\1c@j\0`© »!f¢¨\1f\86\8c\95mx}\98±p d\1f$\ e!avS.vÌ-\ fÂ%
++0Ä\tÿ\7fGGGGGGGGGGGGGÇË\ 1ÓþÿÓ?ð\93µ³[Ç£+\9b¿ýØÝ\97½IüÎÆ\8fGÇ\14\1fÛ5øl~xÙOÅß\17Üà·§ïmÅ ¯\12\7f¾6f<:§\1c_\85ÏQ[6\9dQ\8e;\8f~.oq\ 1{úá\174ÿóÍ\17\1f]â\ 5|ðq<zzÑ Ïëv¿·øÿ\837z<ÚÕ8\ 4\8e}ê]ÅïÌt\87qõ\ 1\9f\80Ïò/ýö\96â\9f×\19ý¬hýÌä)\18\8f>µïôñ\99u\r\1e,>èÕ<þó[ÞVüùÆÛñèÔ\19ßWkËñ âÂÑ\1dÍÿ¿æÓÕ_¯b\16_ðÖ¦ÓõS_>Btj\9dømoXÈ6úºOÓ\93Û¥-eñ£®l¾ç¹~þ\95m<\e¦®:Tüî&\88?ô#åz§ózß7ªúä\8dô¹|ñôy?Z,mÉ\8b,+\9a\9c\93SÇ|BüõÆVÿë¢a~î¹ký\ ei\93w«\vG÷\96>¯ÅçÎãW}µ´y\17Äg}aé\93_8\7fÛÅ·\88\9fßV½ÜÛb\aþôà5\ fU?¿\129\ fju%\8eO«·J\9bø\ e\16\8e\8e)sO?øåw¼Câ&RL¹´\9dÚüÄÏ\1ct¶ðG@×rÞ³Í\9fí\16¬\11\1f2\ 6(m\12ïÁ\93×>vÊÇÄ_\8f\19,m÷\94ó~\1f\9f\95?\ówâwWZÆðlóóÏõÉonq\1as}òW.\1cd\99ë[?µÍí\ßú\ 1\8b\a»?cç¥ciK5þÁµ8\86\9f}|íã\95;ÃUî\8c¢\975´³'Nü°´y%rnj6½zê\93×H[\8eÕ·Þâ{ÎùöÊ¡-\8b®·-\1at=×'ïÊØ?\86ÏÉ[?w³øäU\8dá¸dáÐç[¾ñèq²g¨j×[[\9cÎ\aöY1%m>\89-mmz9yjÓbiK|åßÑÑÑñ¢Ã^ø÷æcÄÿÓ\9d\1c5¶Ã`,óT#½CNã÷F\ 5z\12½\8dØÔ3Z\95QÆY\eÑ\8fµFy\95Jª¨¶¬r2N¤Û\9d^/:jmPø\11 ×,îfËôR:b]Ò8Ùë\183nÐÐ\1f]ªZ)toÓ oÆÍ\12=\8a1Ò\81euõ\9dÎü@2Å.\83\89\1eÒ\ 6ËLÛâî\82@BF\9dx´¸Ï½w¬Mm0\f\bj F6¬º\8d[\1f\15 µõ\86\1eöÁ\17\8d\9f\95à\8a\7fËRB¯4tTü¯\96ZQy\86<{ó ïá\9bÕ¸\88IÖ\r>[Vò¶*Zºú\9dþ¾\8a\81U¶=n9s,¾YÌ\ 1ÉÑ\93§\8f9á§)a\16ð=&*CÌÆÅHr.^>¦\bcÞrÀð\8dM±\84\ e\1a\86C@\ 2\17Ð94¦\18Ú@¢î¤xël\95Ã\rRvôú*Cg..\90a!Åÿ\97 \0¦úZüz'&FÓ'\|´AáÞ"§à\99XÌ«hú\875'\80á\13\1eC\8b\99º\8dL\v¶\f= /Ôá®Êg£¡b\aa# ×\15\1dÔ*qÔ\ e
++d\8c(\ eÓKɬèLW&ôÑü¥óð\8c36ÁÒ\91kíÄ<~Ìbë\ e7ò\10\0r\96ìç@\8b\81,¸\1dÅ_\90Ram \vf4ãâ\8e6\99ib¡\84^`m8FX@pÅ\8bNç\9aÏÇ\85n2Ã\ f\ÆÚ\81Ê\12ã\10`5\81k\ 5JSX7\89\ 3\80º\1dF\82Ùó,
++\8fE\8a\ 5Vt\80)§g\qñE\87%\90C\82\15¶ø\88¹¾V¨6\19h\1c«\12ã¡×7\86¨Ð9æ\17Æ\ 2Y\18\9cj"§\12\97ÒX\89´\ 4Ïð\8a<c]\r\9cïº|\19\8aÀy8Ç\ 4z±\93N\81K\80¦i$û\1d}£ÙA£\fT\b\f)àñêçgÜ\ 5F\ 2\15sEk5ÈÊ@\16\98cYk\8cNñ¸\10.\ 2\13³´V\98 t\95l.Á4XÄØ³\82ãæ\85n`\1fø\1e£\15`\9a\9e\11\1a\16v\87\830ç\94\19Å\ 1m\87ÄÐ\18\86-8,\94ä\18\9f\11XØ>\ 6\1cbÜ\r#"\14#3,\9f\8e°Æ-\8c\90\eYY\99¸,\16\ 4¬\ 3¶\8cYÀ?\8c\vÜ\ 3,\97#\86ÊRþ\1eªPXú\f\95ÀcYf\ 6½)nw¨ß9\1eaý}Ø;&Â\a\aá0\91\9añ\15\9a\8fO´\ 1L\93u1Õø\12ïÄÆ¡\12æÜ3â\0_)¹ÿ°\eì¢\9ef\8a.a\96\8eÛ0ö1îo k\8cq+\8cc0\8c}\89Pk´\9c9¬û\88\vh\86!\94Xi\1a\eÖ¯.åý\19Y\93\18íÁo\97B\ 2\\e6AJØ\f\9e¹ÓÀ\130O|\ f#!(¢Õõ;\;\98\8aÀ0(>ètÿ\7fGGGGGGGGGGGGGÇË\ 1ÓþÿS\ e~þáÙû\8c\9ej~Ð\8f.\7fÓ»KÞ{2\13ã\91ÚK^½øiçúí\ fkþù#\9f?¸øÉù\82y\s×é£Ü²vùϤÿ\90Ç£÷\97ã'Lìé·\1fò¶Å_}±ø¤\8d©¾×qËéþæmïú\91´ÙêË^ÒrÝçúÎ\1f)çÍ\9f³¾ ]ï=SÛ?]}Ë^r¥\85\9b`\12\9fuÛß¼ ú\8f\95øB'Úyë¦\8e\91\9cgãªï\rºç÷\1fß;#\8fú·\89\1fXW\7fç}m|×\7fñÄ\9dâC-¯¦::::::::::::þWØKÜÂìØ\98_Vî½I,) \8dó)¡1à¿ÆXg\14Ë\1fH%\ 3ã\19q\81«{ç¼ö&Ò\8fÍB\b6{\86o\94°\87äUÐA{zÃ#Óö\83eQ\ 6Ëø\ 1c²cm\11\86\19i\96Ø\98\99çÏê\v\86\11!,\99\10!W\9cæ%\88ÎѹÏ\8a\ f)Êñ_DüÅ/"&\84\91<,TBJ\85\94È\a\10æ§\92\14µ\1a¨5F|©ò,Úýÿ\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d/}ôçÿ\8e\8e\8e\8e\8e\8e\8e\8e\8e\8e\8e\8e\8e\8eþüßÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ\9fÿ;::::::::::::::~\150]ÿïþ\ f\³ÏìÖ}F'¶ºyWïïN)5ç\8c\9b\18\8f&Ûñå\ f\1c}¶p¼é8\1e=RøÁXÏïØç\8e}Njâ±Îß¶ÆÕuÜî/üA]\97Ç£sZ?GÿÓ\ 3Ò¿bý?×jÝ}ùä£ÿ»\1c·Á\8fG7\16®0rÙ\1düÜÉ'\96ú\82Úàº÷\8e\87ï_xöQÂ#è-\8eoo\9cdË\1f\95z\84!ä4\1emn¼i{ò\ 5^Rä?ab6_àõEN^ä×\1e\7få¿\94ãYA\9e\9b\8a\9c³y\ 1\17\8e^Y®ËÎÞ9õØß\bÿ\9fñR\e05]Ìåÿ»náp\9dÓßPy\ 3Y\a¢´½¾\9c7?7àMmü«þvò±Z\171\9bÒvØ¢a¬\7f´óòÊ\r¨j\9dÂ\83\9aþÏûÊ¥GÖ¶$u
++\9f.ºø0>\8füÃÊï
++Ç_ðr½»\97\fãÛð½\rKeþC½Þu\85?î*|.øÁ\9fß*\1c\7f\ 3×Û×\8a,óóÿÝÑø\ 6/\9eÚ"µ\16C¬\}ã2_óóÿm+c¿\13\9fs\1fú\82¯mAdyªèó\0|.zü\887J[¶¢Ïg\eWåÚÃW\7f§´e£\85\1fïÆ¢\97¿ÄçÌ]G\v?\9eÊVú\Qæül|þD\9f¿KlÜ+\19ÃÕ\8d÷ñýK/z¸Ú\7f\92ó&ÛøæÖ\84|jFÛ\8a"§±¾ÎÃ\15E\96\ 3ñYã×?YÛª®·.\1e®wçÄ\ 5\ fI[
++R\9frûâaþNÿä\ 5Ûj\9dÉzÞ\15û\ eówÎö×½F¸\b\95\95±ÿ¸É²fj¿C¥Í\189ï\91¢kn\14\7f\9d.\14~C\12þ\94¶{\1agçå\9f;ëñ\81Ãp&¯¥ÔµüWé3\9aZcó¾ÆÑøÛÏy¢ò\14z\91åkãá¼ÕS§|BÚLå)\и+O\9eÚüÉÊ)è¤V¦kuH¿øW\7føÝ=ù\ 6Ç\8d»òó\7fqÒ\8eº\17\85Ü\7f\f::^t(¼K1°º\91ÍäbÒNsÓ,üo\8a4IÁ\9aD\92*ërj5\9bBÒN8ÒLP,\ 3\95±q\901)»L
++QüS\91Ù®lë\9adsQE2Q\85\10¹c\93\18Êàç'\87ì\fú\ f¸(~©Èتl,õ\99²"\81\16úHdfË\19ý%[ø\9a¼#³\1d~\13\82R¶TkÒÑ¥ C\80ø\99\ 4xѱ.TÔ8\96ð[Åkúd*ÿ\96ɾp| ç\9cI\91|\7f¥ú\93Ã\17=+${\ f\85\90±JS|2çE\92¼\85\8ckf\9btLÙaD>JU-´yò¤åÒ\7fr\90_Ab\8e#\84 J\9d/ç\vAU\95ÁùR\v˨"\83M\85ÍK±àp\9eæl{\91ò\13Îä\9a+¶àÈp\1745\82Is*êZÃ\v¿\87C\8d¯_1\9e3\7³X\9b\1fø¿fs{\95Zm9y¶AÇÊ\84d1%ä&äȰnp)Ü?â\97/ÂZÃ\ 2£u\ 5åx7J3£Ú\v! '2ÄÈÂd¹X¶fE8Üx£\ 1ß\ f\18 lÖ'²È9r$Zò¢a¥8V\˰ð6\17¿\88\9ag\895äHÕÌ1\ 6\165\vXX"±°ó\89\8dc² 8\ 6Æ)ÒIÍâ¨äÔ8\18$.\89ÉrX\rX\86¸mD/d\85ó¤.\845 \9bÌZu$CdåoCºKë=\8bÜaÑá
++\81Äye\r°F\9d%×\1c¦&aSà\9a+,\89X\8ahÖ¬e§ EH\1c\fÆiÄ\ 6#-R\99¢\eÜ\84Qv®`\võ\91äÍi\95rä\96\ 1\85à,E\9aD\b\92Iܨ¹<\1c¶5ØPbM;ìkÑc%\91\ 6\ f\7fH_¨8xOJ?X\1d\19èpï\9fu±\1fL\7f¶\10\19{\b-\ 26\fóE\7f¸|â")¶\83\1d\11S Uúr\8fTä\8cÅðË3\v÷
++ÍÊx
++\96\12r6m\ f\83q;²MF[mÔ$\9fU¹0¹/«ÝRuÐ,Ôª¸¸3+\r\96\9a{0ÖÂé \ 5BN²òqñ\ 6L04ÂÍ\b»EÆ/\80\98\19ì£ÜÁb^±\8e¡q\12ìÁÔa_Ø\8f\ 2¶\95R\9f\ f\8b\80{/\17\ egÔrwÏ0_\98¨\83Aaôø}\80QÃü2\99¹yB^Çò\80\96·ë\85S2Q»\89t\9dø\85À®dë~\82ý\18Û\16z!q©\93%
++\91I\16\88Í\15ú(į\98Q\1eÆH±O\a\vÃ\bÜÝ2W\95\87ºq*ÙDÑ\13\8eOü29\rg>ÿ\1fuë\86ãgÿö\8eë³\ e\9f\ f\8fýç¥[ës\ 2\9e\9f·\95ûkÖÌ_tÚkþ±ÜCc\99\8cG\ f¶ûî#\9fyí\7f\14^\0Í÷\ 2×\96~.Áç\9a\1fþæýå8~\8eÆ£e\8dß{&_ÀÂÑýûíýùùÊ¥Ã3ÏÏïX'<ñJ8sñ\f¹ßð¬{á\93¯ø|}fÏmRË\9fÏQß¾ë´ïïù<{õÒ½?{nlüòÏ\1c¾Zøå1wÒç\89íç·Ôç!\ 5ÝNLóÒSÎçß0)Ï\82ÖÕó\ã\1cøé\9dïþº<+Åúìrn{÷ñ¾#ÖJ\9fQ)\91ó\8a¥ÓÏC³¹Ù\7fÜÆþ¶Ç>sûðÌ£û-dGGGGGGGGGGǯæ»àòÞ\92/4\15_n\84¹ï*K\13\9eÈ+\7f\ 1\1e\98uæ\8b\ 3\9eUÞ\89E\85g{>\8a«¤C}/\112ßfðÝ\a\9fÛ£Ïz>î\ 3¾`\92w¥Iã\81\e\ fë9òýZT9\94wNÁy>\8eáÉß\r×g ~>ð§\Þ~&C\87Xyï£T{\17å½öÃûÞ\94}41á¡Þ)¾k#¿BR
++Oø\94\97oGU\8a8\e\8f®Ê9«\f\19\19ø"'\9a\9cÊ\8b\0¯\v\ 3\83U|e\89®ù\ 6\9cï¡b\8cZ\85\10(\12OK¾Çÿwttttttttttttt¼ôÑ\9fÿ;:::::::::::::^\ e\98\8eÿßü\95'o\9cÝ:\1e][rsWásÈ\96M«$\7fÚ3ß¾äóÞ\8dÏò\9f<ø\9f%\9e_Å0\1eÝQò\8a\99ÿ¿s÷!»ËqËã»J?sãÿï+9¼sóöw\94ã\1fÅgÅ£\aý\97äí3ÏÿéÒÿ \13³óóßZbßgçá\8fGû·xù£v«µåxPø¾Äæ3Vþ¨gw\T\8eç\98\16\8e6\169\19Ïÿ\99O×X\7f\86LL0¾~Y\8bç\9f\9b\9b\7f}y\8fÂ<\89\v¿ù¾,m¡æ\84O4\19ÖO-´µÍH<ÿ²2Îùsú_Ùò\9b7Lmø¬äô»,9Ì\1fY2Ȳ찷KîºÕV®·y¿éó®ªùþ&\88\9c÷µ¶É©£n\97\1c\b]ó¾/)ºý=|κuÝÎÚ\96%çâ\806ö/Ü´îAi35\9fú\84¥Ã\18îzÅùÛÄFlmÛ¼ï \97ó\1eýÜ\12iKU\9f\9bZ^ûÊ_?õ\89\9a\9b_õ)¹\1a\1cäù;ö+ù÷\9a\99t¥mKË19ã\8a3kÎEÔ\92ó>Ñìé\99\83Î\96\rmk\1eÇÝ\8b\87>×>vÊÇ$ÿ^+¹Þ§Êü±®Ä\99;í¦Úf$\1fãÚV'`Õa\93ß\96<\ eÌ|i»¢ÙË\81G\ ²XcEg÷7]¯\9b:ï\90Ú\96EÎ5û\ eöwæc\97\1f?äûËø¶¶\1a\ 2Ï.ºø;Ò\96knÈ#-oä·\8e<ï«\92\8fc\87ù[4È277\7fGË)y~ÉYµ-\r}.\1eú\9c\9b\8b²µåù\9cý¡õÿ.mI\8b}n\4¬õ\9f}|íã5oß\89,ÛÛ¼¯þú\81\9f\956geì©Íß#\a®\96ú Ùz¹ÞMMg'O¿FrX²\96\9c\99]VÅ[¾ñèq¥M+/:;¬åá|ñµï\9d\926±Á\8e\8e\8e\8e\97\1a\18+\9a±¥b\7fL!Z«ð£ËlRg\98·\1dùëlUd2¢ L6M)&o\14Ë\10à«Ú\96\94ö\18Y%\88éÔQ1{ÕDå³Î!{\93\82Søõgª¸a\9ezÊø\8dÅù\86\99Ñ\1a×q:øäu)\88 Ù\9ba\98-îêðûà\98\88Ëb3\81Éü>0 ÞG;³.\ 3Sè\83 >F\ 6¬Z]ó³\8d\86¨Ì±Å\87\ e\99 Õ:ÖXÚà¬M1\98\1cX\8f\0Wcr²e\ e4\ 6\9dpñh\1cÓæ\99îÏlz[ÒÝ]Àw\9c±\18\99ɸQ\80.ð½!G^ó'R{¦Å&W\86f^ôõ\r,\93¹C\fé\ 5j`Ì\8eQf4±f\12½+©Ç\96éÞ¬J\80\9fPæ\ f3]\9eÅ(ð;\8c\9b\9b\98\rkeà@bæ:\8c wëÎp6 ¢.9ð¼\8fó\ 6\ 6\82\96TúòL¥g¤³uÌj\87]1\89<«\12\8f\fóàM/. úu\98¦2§Æ¤:ï.K|6\ 4fº¿O¬\1eäñ=¨RYL,\86\8dËÀ¾p/Ȭu\88 i\19)]
++\83xÌ\8ac^8\8c\97ßÄ,¨èq/SêKý\7fÇV\17Û2,ÿ\91¢£Àµ&C\80Å@w\90_a¾\f«ma\15\aWR¿\8dá`Ķ\8bô¬Â \1c¾\86\19\88C^=\95\rSÅòÄâ\1dbÓ\15Í<f\9¦\96[\8f9+rÐö\82cººj9üÿ·:\f¬f\0åÁ\8cj\7f¿¬\1cõ!F\1eóÉò\ e\89f \reÌñÌz\ eå;ÖâZè±Î7æ\1e&\9d±\ 4 nþ;b¹\95\14|lhUo2'¬\9e\12¼\ebð±\ eÂ\8c:,^Å$uh /SJªÀ8j\1c?\14©q\ 5\16\ f\bøãt\11À¨@[ÅD³Ù³<\ 5wZl\19ؾX1\ 6\82À\98\92WЯÂ\80X\86À³
++\82ç\9e\9bS]=*sëÅ6ë8\7fÞ±g\v\83㦯)vY¦,wÂ\8a\12:\ 6Wç\83e\v°~±Ëâ^¾È\99X\0"(ÏJ\1fµ\8eK÷ÿwttttttttttttt¼ôÑ\9fÿ;:::::::::::::^\ e\98\8eÿ¿÷\83\1fÝ<»u\9fÑ\95-\8ewOþ¿ÍK\86ã{òÿíh\1c`\a¿çȧ¥\8e¾¶ãÑëK|îÜ<\82\v\97\fß?ôÒc\9e\93x_Ç£\8d-\ 6úC'½ú\81z]ò\v¶Xå=y\a®nü|·nyÕ\97J~A\89ÿ_Yú\9fËówÝ4\9fß;\7f§|?f¥Æ£ÔâÇ7?yÈ3Âó\17Ô\90ï@þ¹%gþÆ¿\95|\ 1\9fôÀÍ6?OÁ¦\16£?\97§à©\96\ fqÖ¡k\1f\96¸\7fUcÊ\17´XíË\ eßð=iÓ56ü\80ÆO¸ñø5Ò§uJâÛ\97µóÞ\1eÏ\95ø}ëk\9f»¦ó\ 5n;ç¡!î¿æ\ 4\94óæ\8fû?µqÈÍå\0¼¾ÍÝ=wß!m)\88,»ÊüÍÏ»·\7fã\97{ÏÔváZHÑKl¸ð)2¦ü²W¿Kd!ÝGiÛØlî\8f¿vÙïJ\9bKÒö©\96\17r\83{Ç£Ò\16¢È9ÑbØ¿ñÙÉoI¾\80÷"çþ¥m\12\9fuÛß¼@ò\ 5\åF|zñ \8b[°æ{µr\ e^ßâ÷W=yü\e+\a \91ón(}\9e\82Ïî[ÎÝQs j<½Ä°³Ï\8d\1f\õ\ 3i\e¸\ 3ïk¹\ 4\7föùI\89Ñ7!\89Înh9$ë¦NºJÚ\92\92Xû+_ ?áÚ\17ÈOp/ÀOqc»Þ\9a©\1d7\vwà\10£\7fõ\vð\ 3¾¿Åï¯\9d\9aü{É\17PYt6Ù¸8çòZÜ»tú¼Ùü\80ÂU(mG\1e!mÖÊyçµy8cç¥ci\eô²µÉ9\97;ð\7fØ»ö ;\8bò\9eÓÑrrÅv \835b )·@Ø}÷>R\9bÒP¨\ 3\99ÈD ð%Ð\12J\80\90\ 4\9a¶\8c\97Ê\14F£bKg°\93\992\1d\86q$\16,P3åªX\87\16JÓ
++\1a\ 5\11\90\81ø\11î`"B\vµ¿ßî¾{Îw.\9f\7f´8@ö7\9e\ fóî{öÝÝg÷=ûìó<¿çòØ\96/ã³üѯß\94Ê\\8eYÙ2M\8e\8d\eË\9c\1fÎ+øXÉ\89ùÁ\9dÏï\93b\104Ý\1d+***þ_\11ý{=vWظ\84ÆÑ\a\9eyÙLÐt\86§\97¼wÁÙ\986\8b\9eð\rݦé¼îèuìð\r\1f³\ 2F¿j+\94h\985\909Ѥ\11ü¡kèïnè\80¯\98¯PxÔn\ 5Sz\19\89ß:Tgð(#o\94¢{¶¶x\82G£\9caMÁ`\13!ñæDýB¨i¸°\8bÏ\7f`6.úÏòÇT{mÑZ¯Tt*Æ%EWb£é\ 5Ìè\ 3&mÄU&ò¢ï<ö Árwç\1a«|Ì\ 4§\e\87æzAoZF+0\7f\18\e%\8côLæcô\ 3*Á8Щ[k\1dðÄ@çn\92\8cëèÊÝÐù\96Q\ 2\16u·ùöè\9e«èòË\f\8côù\rrÆ\9b)¯Ü\10ï¹cîÀ Lö\8dfêJÉ<i\18eFb´~Ü\91Ç<Ðï\9b>ÛJc\17¥,½\9d\rsû)\193ËAö\96\1eË\81\999\eé\98õ\92}\80 ÄØ\\84\92é×\ü\1d\8d<î\98}ÎjæP³}¾Ø%\1e\0£k±Å m\HæH\1fÌ=ç¬WãrËÅ\m1»\9a\94.\8e\81Ò1\16B0õ¡`¼\80a®CÁL\8f\1a\7f1\12\9eñ&\10\9eÅTà$\87\ 4Lðä\97ÇdÀo}\fú0\f*e\80\8c\8ey%\ 5³EÆùÉ$\8eØ\93Z\83ÉÄDæÆÇ\18\rÎ@\162dFµ~ã=\7fóQùó8[ øè\10/u\8a\99p\9e!8Ìû\87u\87"¶U2ë\1f\17¢ÂÚÄÎ\9cÎå\92\ 1\r\81\91\12B5M\f×1vLÞONq¦CÅn+¶§ñ)c¨FÓ1A-þr\1ap\8e5\90qLhgØSL<<\16B\81\14\1d_\11\98¿è/Ö D\8dõ\ fñch\fG\ 4\8b\10«\80ôúN1¿eì\90mßû¹û\19+\12ç&VJ\8cY\91\fRÒè"\93\ 4B^\ eRa\18\vÖ7ã\92<§\ fêU\16\v\83\81©L®\8a1¤Å\12f^>¾|02*å\14\14P\95´\11Æ2\80Ã;\9fç\16ã{Òú\84\80\8d¶\10ræèÇ<Ã\ 2Á\83\18å\83U"¦æ\ 1x\ 3cUú?LîÈà!´ÚÅ(\91¾µú\7f\8a'é×ÿÕó÷\fþÆt;Û\8a¾²áâÅ/%\1dVA¯ÞZöù\8bw\1f¸&ép!t;;\8a^}â\92w'½\1d/ÇnG\8cÑçç\97ýûá?;(Æç3ð õ\97øï£^úÕÿ\8ez8*êv\96Î\19\9fïWöåÇ\9eµ8ò\ eðåßí<<2þ¿?>ù¬\1f¨\7fHý\929¾üÅ\92\93ðÂù\e\9e̱õYÏ\Xt\8aáØúmÓÄÈo/ãò\8f\vÎHÜ\ 1\90vÒÃ\12GÁ\15øÜôþS¿\9dÊðþ\89ew\15}ø\91\9bÏMü\0ÖçÜè\97Ï\e¯G/\8fýûkê7ß=9ëµ!ë\84×\97¶\tÝù\ f´qð¾ï,`´\9eÙÝw¼.¹§ä\1e\1c\8eg¿º\8cËp<ûce¬¿ó©Ó^Hz&æx,;¬èS§ïüì19f=ç¶ïÎ\1d¯gê2\17\86óÐ÷ë\99\83º¤/Ü\15Ãñì)\ e~t\8eú\899ãuÉW\8a\1c\96=|ûµSõÅ+J\9d[î\úTÎCïRÿæÌmûðÞ\99'íLëÈÅvVTTTTTTT¼\11çJ\96\1a.OEzz\86aÖt\ 1í.Æ\933±¹ô?ï,ät\9e\93bØMCæ\ 5\9fÏ\16ð4*ý\8aÚ¹çÁE\9fÞ>\8e¿BE\9d\1d\8dâá\ fú\0Ý\94]Hÿ\1f\8d\95\fÕ\16¸àxn\16\8fî<ãì\19ô®\18\1d\ e\8d»á\89\vt\a\19\89#¨iC\13W\ 2·@¹¥:ÎÓ\172w ¹¤¸ày\0µB2\eð¼ O\87\ 6*C\e\v\ eÁ¡E<uÂ\13s\7f\19³\8e:ãhA¹6ñ\9cÎ\ 6v\97'G\10!Ï¡4Ïo¨¹
++¨öè\ 6ù\1c\18gÞÐ\90éBPN\91!@[\8c\82\83
++® \87£ñ¨Oò´PF\8a\ 22Nx´Jñn\92z\ 4\1el@Gå1N`×ûe@Æ\ 5\88\85ô\1fÐ\9e\19¿^Ê rÍs\ 1¥â [\90ÔcñÌÐò\1d\90Á!Ê\ 6m\88º1äÌ\19 \7f\17gPîû0/C9wÒÔãÑK\12\1f\18ÏCUc]\8aé·Â8h\12h\85bãx`
++}Z\92\13\82T,h\1côw\9eýð\88\86\a\1f\18dC=\17ó'ð¼Nñ¸\8f\87
++J(L^á¹ÎЪ¨µãr<Õ3\18!\1eÚ@aëãpÀ,à\99\865}ü\ 4½ó\81\80©\88ÉÊ32HÍè¾ó\ 1R\9e`\16ªvòð\10wD\1d«úÿWTTTTTTTTTTTTTì\rèÙÿÿôÂû\17\f\96î\93m©üóéC6,\8fösIÿÿä\87?ìÏ\7fIáè^üoû>\9cl¶Âw;[ÊõEÿrw\8a#\106t;\13\85Ï|ª?ÿ}Åf<çøýï\8dy\ 1\ 4ëYRìÿSó\ 5\YláGîþÂÙñº7M7Ûù\87ó\bÜ\11¯Ó\96ýøéïÛ\9dü\ e\9cîv^)Ï\9d\1a\17°©øù÷û#´~ü£s\ 2\R|\f\86s\ 2líù\1f<ü\91«\13·¿È\1cö\ f\16;û'·%?i\89ALþÕ\89O\9fã%>¿ú\91ä\ f\10\9aô¼\aç¶m\ûôq¿\94e\92m÷ÉæÏø\85÷ûÓ\1eNe6û²¿VüêWÞ\7fú¢ä+\0IJM±-§àó'òìg³\9f{îÃÊø½Ñ>\ 6W\16ûü\19\93GÞ\9eü\b´JÏK9\1fÈû?aÖ?\9f}\ 5Bæx/þêÃ\1cöÛ§ñ\11ß/>ï<>o§¼>ûzg\7f\8e/\96¶\9c6¹ìöÌE\9fÇsÝ4¾Þ[Êx®|úø\ 3\13O½ð9n ¯ÎëS[ \86TöX\89Ã\18¶ëßU¾·lré\82ì\1f\93}K6îÛ+Û:;\95y§ëKª¢¢¢¢¢¢¢\ fÑ>H×hOæpÁä\ 1Aéäëü\ 6ú&7^0\0Ä\89iò\ f¼\19íà½Ü\13\89×]I)\ 4©üu.ûݧû\98\1f\82\1e\ e\8aÆ\7f\89®K6Æ\8aF\vM\16xå\9cP´Û\92åÝ\92!\1f5¡q\18\14ÕXeè\92M˶\ eÑ\v\1d±:\9aß\15Ã=1\12Â\8ad×\1e\95ç"ñ·Ó\e!\ 4[|\13h\9e\87\b\eå|î\8fÁ \948\87à¹á\95\8e\12\88rñJ[\1fô\9b0÷C¿-\9bq.Ürki´ìë?ó\1cH\ 6\eaz\16Ûuà\143\18I\f#d¬¼aä\ 6æ¾ñ*Ä\84&\1ch§Ñ\9f`è ¡\ 4#\9aè\8b\0©\19¶Byè/\9eÊ\9b\ fl©fÀ\ eÓ\93\ 4\8e\bæ:T\ 3\f\93e\92\ 5\87é¥\99û\ 4\93H\bF\fP\94Ú0\86\ 1ÿ\14\9c]\ 2\93\90\942¸\b\rÇ5\8c³ÑV\8e\88Á)²ÕL\aàÐ\f\89AÓÉ\9dF@¼\98Ü\98Ùx`LRÀP©(0,kfv\89\91,\8dãÂ\89Îýø*\94#\81\9ap½\97\ 3AÄü\fPÅ\9aéü)b\8cEµÿWTTTTTTTTTTTTTì\rèÙÿo}ôww\f\96v;¯E[-mÃ\vÿùS'§\98vm»\9d«Æðÿm\19ã\17°$Ú=·ñþ\97îûiäç\13ζ¼\0üsí\ 5\8b"ÿ\9f±¼ÿ¾\12g\7fÔî?û~âíkD7Çß\ fóùùâ§0\95/`E©gjüÿ®i¸ù¶Å3\91ÑÜ|;J¿\87múW\14ûíúÉ\99*\975)¶|[± \9fzͺÇ\93M¿É6ï\85³Ûïm\98Üp[*Ó!Å\88û\12Wÿ\87OmÊ|\ 3"óÓí\99ÝöaþÂÓ\7f\98y
++TjËæ}{u¾0;\95ù\1cWßã\17üè\aÖ<\93dg}jç\89ñy\9fÃç\9cg>ó\95ä_ÐÆ«\1f\19Ç\85\ f=û±\v¾\9cÊTHÏÛ^Æù\82Éí\89\8bÀ:\9dìá+â÷VãóÓmç<×\96%\9bwò\9f\18íÏpå¾íX¯yèö9i.y\9b¹\bb\9d£ù\ 5ß\11ç\14ý\vVüòò'sYöÉèñJ\9c½kÞ§\13g\82Í~\ 2ÇÄ:é{°éÆÕ\93\99OÁ§±\9e_ü5\86¹\a\13ïâh\ eA?«\1d\973&×,È\9c !}oF\1f×Â\89\1fh9\13Ò\98%ß\8aÑ>\12{b[\8eeÿ\9e\9bøRâL\10Ù_cc\1f7ß oß\83óÚþýí\9dk\92o\856.Éö\92"\87\8bþiÝw3\ fCæÊ[:«]£Ã\1c\r\9bʺ[¹ó¨÷e\7f\1f\95dtÉì^[\ 6y\ 2_,~?û\1f¾æÛ©LåïÍ\9fÕ\96ýø¦sS[0_R\1f^,\\8e§\ºþ\91Tæe\9a»K§á}ØVü\86\86¹\a\97Ävþ\16>\9f\98ûáÇR\99ñ©\9d\87\15>ÐaÞ\87ËÊ»qå£+Zß\91Ì\9bùb\91òÉ{®Ë¼\ f¹\ f\89\93\84kú¤Ço½¡å\84Hò»±ï{\vs\19Vî\8c\1eo&\9f÷{\ f<ttò\ f\11&}ïò>ß\91A¿\92+Æò\12¶>5\1c³?ßçÄÉTf|ææ\98×\96U\ e\8a\8a\8a·/Æp\83\ræ\90w\8a¤~J\95X]iôÈ\18S\eS\7f\93\ f\10\9b9%\ 2yÈHýåiodÐ1£\8c\99\0\e\7f\1a¡'=¡õN\1a\11¹Å\18ÚË\fíø-1\r ïpÍÇøÙÌ\1d÷\8båo\9b1M,qü\825Ø ±IÞ\ecðãh\ríߤ`#ç[\1cEî%h@uØÜa`C\8e1\8f¶[\87¦
++æ\ 2§Y0\8fá\ei¿G\93CâÔ£ÓÑzn[\9bò\88\1c飸ü¦Ä#\ fð\ 1Lç\97\90â´\1d-é\826Q
++×q[@þÂA¾¾1\9c~ãx$Ëx\8e°©·ü\81£låãrË\8fâ(Ä\1d\86\ 6\7fÝ\8eMÐÊs\8acÎc\86;EKÆ\r\91@\11â\11ØFit\8e\86\\8f9\0Ic\82Ñ\97\ 1\83I\93µs\91µ\0\13Ð Z\86ÉÔ\18d°\9c¾\98¢\92ùàÉ\88ÀDð\81\8e\b\82¡÷t\93\10dM0\1e\1dsV\90¦ÓF¦7Òâa\93¢\95å¤\ fl\ 4&·¥\91\e«1\8e¿¤ç¬Öô¢àDU\81Áì\8c\85Oä}Mb\bm\$\8a\83lILh9\84¼\9eú-\94\8fVu\91sÉGÞH\Ã\0Pfh\1a\9bk,jóx\7fÐFn(éÀàx¼XP1Ý\f\ 4î¢Õ=ÐFí#»$þ§±ÿ\8a¯\vC~\88&îßqk\b2N\arÍÑ5#D/\rÁ´ö\90\94\86$$Ý\ eÒü\93~\14§\ 3Ö\81\85\90ñJó\91+ Î\aÚÚ\1dÉ\r4© |\13LösùÅr!öâùq\aú\fÑ&ý#¾\7f\1aç}â\9e ë&ù*.w\12¹§5©"Í\1fßNå\1d""\8f\86\80,d²ûKúhÛè\aàtµÿWTTTTTTTTTTTTT¼ýQõÿ\8a\8a\8a\8a\8a\8a\8a\8a\8a\8a\8a\8a\8a\8a½\ 1=ÿÿÿºçk¯\f\96v;\a\14ÿÐ\83O>ôÇ9Ï\9fíöå1\7fj÷\82È\9f§\95³ý9Å\87ùð\ e+eÃþêÇLã¯.JÙy\93³TÎíÞ$\1fÜg\8b/íp\1eöw\95ç\rç¹{Gñ\ 3\9f\98|öï\92¯°Ì¾´KbÙ¨|n\15\15\15\15\15\15\15\15\15\15\15\15\15o~dNA\92\15ºàcbÂ6¿eãpÍ8Ûôå\18dH´&Õy\e\8f\93cfúù#ßj9.Ñg\ 6\1cX)ñø\18ìÞ§ÿ/ظpDü\7f\8a\9bý{\96¿¼è\84\14'/uË\87?Ì\vpÙ\9cö\`ñë\8b_Ï\9cð¸\7fIáç?z÷×\8fË\9cè¡ÛYZâ\80/Yzà¿çØTÑíìWbÔ¿µlÑÿÄëÊ\9angs\89IÝð±£\13ÿ\7fÃøÿ#Ë9ÅT\1e\81M\85o}j^\80u¥=Gì^\1dù\ 5¼ShÏ\8eRÿg>yÄ\9e\9cï\0íÿx¬\87üùs>ü+ÿ\19¯\e/»\9doôÕÓÏ/°sÞøs\90µ±_ÀçCrÝÎTæC\8aE>s\9a¼\0G\961_sÿ\85\87g.\80\1c/¾+Æ"\9f\8cÏú§\e\91ÊZî\81\89Ò§\93·\9cûD\92U\93ù\ 5®*í\1f\8eÛ_ZÎx\1e¹ùÜÔNësìó\99%>}8Æþê\92×~å\rç%~\ 1\9fÖÑÌÎÅ%\16y8þ~ã¼Þ9ÏÎ\9bsü½I}\7f¶ð \9cÿÜ£\9bSYÛ\96cÊ9ϪCNKçJ\fä\8ae+
++\87ÀpÜþ\92\12óþÀmë~\10çª0&õý\96"¿×f]ðÃ\14\7f\1früö]%\ 6}8Vþâ2ß&&Ï;4ǵç¶,\9f&>}Kéûi\93ÇÝ\90ãÌ3\87À1sze\839
++f\94þ\rÇ _UbÞÿX\1eûD^[1\9e¨¢¢¢¢¢¢b¯Ð}\8c¶\fÀfÎr(\v\fh§¶Ñ\18©¨²\90Ï^bG\e"\r\ 2v¼\9a\91ÙAA\97°1\9c\aWÈÌá² \82±ç%Þ\9eêFÌ\1eßè\18\9b<È\ 506¶¾/\9e\99\ 4ôÐY\14Õ\12#\19ö\9d¿\8bæº\86\e\7f¨MªIÄW9ç\80 \1dRK§ñl¦\94'É\ 1ÚG&\ 5k\94\8e
++\9dÂö\98Ä\ f¨]0e»\951f\1d\1a\11G@0:\1dåÂâÞ@Â\ 6§\1d´\95àIA Éxà\18'íÐ~RG0²ÚB!Ä\95ÀÛ\1aC5Ë(è\8d\9a\1cîQ\8d£z\86M\1d6ÊVÍ\18ÇÛßãHÀ\8dØ73ù\81TL5\ f¥\ e»ÌÆ{T\1a¼\vx ÝÑd\ 6èãѱ\8b):\1f\e`\ f\91D>\b+ÐD\88\96l÷ÔZ©Þ5\90\19É\98H\f\80q\12Þ0\83=)õ1ƤÆ`Ì:³Í3-\ 1i%È×á=\1aå\fk
++\86j'$K\1a\ e\11y\ 3p\8bå xel?\1fÃ\98üód³ÀÜ\82\86<µß£x'¨-ã±¢?\aB¬Ã`¾6:Z|Éd%L\9e\ 3ÌIÐò\90\fpH4\14\10n7¡èýQ_oHú¡8\16²\89JÀ\18î\8dàÉBà-y\1f\9c\8e\19\1cFs? &¶Á
++-4)%\8cIù\16FðF \84+ÉI(ò\96s\1a\12$½\ 1ÄÁ\ 4\14\91\96\ 4Rõì(d)"³\85t\9c÷Â\b\1f§¥T<eÀ¼ÅÓÐ#t\9aI\19 ^´\A5#©BäVix¶`H»A\8d\ 6+>@4¨\ f¢åºFõ*ò½Uÿÿ\8a\8a\8a\8a\8a\8a\8a\8a\8a\8a\8a\8a\8a\8a·?ªþ_QQQQQQQQQQQQQ±7 çÿÿÕ;Ü¢ÁÒ\99\9dÇúrÚ}ëÐä«®tòYÞU|ôOwg>\95|ÎMÎ\93·ç\97|ÿé\8bR\1c\80Ì9Êî\89eô+¿ø/N}&Åå\9b\9cCïªRö\89\9bV?ÑúH'?ö\9d¥-\83>Ò\15\15\15\15\15\15\15\15\15\15\15\15\15\15oUÄ8 Ñ0\ f§\972\98 S~ú\94sT\bŰ\ 1ë\¾Ö\b-\846ÂXËD«Î\ fÄ\0\9d§\96^K\86Ôx©\r\ 3/ªý¿¢¢¢¢¢¢¢¢¢¢¢¢¢bo@Ïþÿê»¶^3XÚí|±ØÜ\17ï¾èw\92ý¿1ÝÎ\ 1cxþ\96\8eáí»cV{\7f\7f¾\80nGÄzè'°àÞÏE\ e6m´ïv®\8f|hä³;èõeK#o\9fl\·³µð¤Måó\9b\88¼kä\87[¼ç¬\87x\9dt\1cÝÎÚX?yÜÞù\a\a~\93×]\10¢Ûy6ÞÏ?¿ÿjâ\11ô¢ Ý̧¶\ 4\9fþù\9eíñº\fxîå³ÛçNå\v\1·Ôÿ£\ 3"\7f¡\ f\ 2ý]>»½~ÎIï\89×\83P²Û¹gN¯\9e\1e_`·/\8fÁ\11¯í:?^\ fÎÏì\\11ëÙ\8cϪë>ô½Ä¿ØH\9eùÌìLÌnûð\93Ëÿ(ñú £SÙ åù\137gþAáBò±x0¶a#>\1f9xUª\93¤\8e±lÝìV~\17\1d²!Õ)¥OßÛQÚ>ì\v²¥ð\16®ýþGC*³¢?\9fBúÞL\95Ë27áÆ"\9fU*ç\84\90.ó\b\8aÒ\96S¯Y÷xâBlBêßò³·arÃm©LgNÃ¥eN\9d½ãÑ;S\995ý¾'üò\85ó7<\99sPd>À\1d³Ú²Wç\9e\9f\9e§\9cNíÜR¸û\869\14\1f,²[ûü¯}-\95Y\95Ú¹¹|ï\96¯®ß\95Ê\12çÉÌÎÊÂ?(>¿ú\91į\18\9aÔ÷ÍsÛ²\8f\1d4ñ\9dį¨DjËæ2\17/\98\\9aÆÓÙ\9c×b]Y\7fÃÜ\8b»fµc}û\r¹NòÏIJñ{ûà³éÆÕ\93\99{Ñ'\1eÁ[¦áW\;Mn\8e\17gµké*½ú¡\æ²Üç¶í|õ7Ny2½?Tæ\9dL\9c££sz\9cPä¾zò/\7f;\97Ù4Öß(íüø¾ç\7f/¿\93|*Û^æÙp.\90;æ¶ï¦a\7f¤\eK\9d§.\÷hâ\81\94y¬,r8crÍ\82TÖ\84Tçæø=òcN\98õϧ2\93çîeeÌ&&w]\9bø#\95Iun-ü\98ÃyI..óå\94K×?\92ʼLãyu©sÕä\7f\1c\1cË\£óº-ýûÉ߬úQö\9bÒIF¯Å²Q¹Nð~)9RV>}ü\81±,´|£'\169,\9b¼çºÄç*2?æe³{e\voHeR¥qÙ9«W¶þ¯RYÈï³ëË;ù½3OÚ\99ø*\9d2õGº¢¢b\0Óðy\93»«i¬RjF\8f£ÌJkð_ç\9dô\8dÃæ\90|vVz¼Îe\90ª!\19\9a²BX\83÷4~\18\1d\19âðcí\85®Ã7$ß\8a¶7g\ 3v\f*X¥\9dÔR\89Ì\r¦"Ç\18+ó\85ç,\ 4rÎù\96\7f\eû3!ÉÂ\8d\97¥ÑV4~\8a\8d.Þã\15YåL#¸GòJ7\ e;nt\a?ñ\8e´z\8do´A\9f\1d7¦¸G\92ÍÛ\90±®qFI\92â¡ \12úE¶pöÆ\b2\8d7Î+tO ËøMA\ 3\9c"¡³hð\10V\84æøà5\9e<\r'\9f\13\82\8fÄFE'ÎêÈ·æHù'¼\96i/\15yÑI\88\86Í\9cÒÁG~7üpFÞ?gÈ\99\86\16C"Á¨àUäf\13\8a,h"\8cá\8e\9bÂÑ>Èc^d\9c¸Û\93=\14¿9Ü\ f\v4\1f»TTÞh\8d¿ÖkÊÜ¡>«u \11\1eäh\ 2)\fI\9e\ eÑD26Ã\r\89·ZÄaBs\94\8fä\88\ 2ÿ$\87´5V±ÍÁx? C¶ÜGy\e²\b
++ë$iÜR¿\fYÙÉ\1c\18\89\ 4}ÜÌǶ+2´a~ 5\1c?-ÉkHú>Ùrâa\ 3H\8e<çó¼\1egóÅtÕ\98(Ö8G®?%Û1Å\13m£m\b\8cÞ:ÜõyN`õB¢\10\17ä\82a5ÎC\0\ 6KÎê\0± i21K6(À
++\b\8a¬\88\18L'\8cCÅ(\8e¬\89>\12asLÑïÆ\ 5l¤HÐ\87\1dæ\98\13\1e;\1düÓ\91³\9dS\ 5}T\rV\8f\88OFo1¬Mhù\aÇñ\ 5Ê\86\12Ã;àçp\19&>CGMËqÒ\92¸/\90e°oN)\89\1dbÊC |\1f÷ â^5®/Ã7\9a6enàåÃÎbB\19¾\80b\1dèg\13\87\ 1\vBUû\7fEEEEEEEEEEEEEÅÞ\81\9eýÿKóç½<XÚÍ6 ÚR\ f»{Ñ)Ñ\86g¤ëvÖ\16ûò¥\1füõ»£¦Ñ¸~LÉ5wø«¿ùr´çKÞ\7fK±\93\7feû»£\1d^7Fu;W\94ës\8eßÿÞhÏ\17Âw;'\94ç\1eù¯ï|!Úó½ÐÝÎűþ%3\ 6íóÛ\8b=jª}~¿b\87[pÜ~?Kvx)ºÿËÞÕÇØUÜ×]Õ\88ç@0UÓ\86&¨\ 5CÁÆ\ 6æû#\80K©S\bu\bP\12À±ãPLø°\8d\81\86\14µi\83\9a(D\ 1\19H\91j)4\8a\82Õ\18°øh]\11
++\ 1\12¡\96D¨\85\0Å\ 4\8b\12p6\90\1apcÚB1¥çÌÌ\9d÷vßÛÍ?qeÉs¤\8bwïÜ{çó¾\9dÇ9¿ó\eßZùÀA~~ö¸©õ\9eÿ¬¾£ä;,ùéLª\9b\1cé½÷,Í\1c©p.óhÛf౯ªcuðá¥\8céERÙõÿ\ flXñXá\95\vÿöÉ\ 3º¶?÷wgü´ðÊ6ó}\8fU®l\98W¾,õá\ 6\1cw\1fwî\ fò\9c\19\97¹¹Ëj[Ä\86¥\8fgÎ\193\97Ê\16V®S\1f]ʼ(¼ëþ©\7fÌ\7fx\XºµpÎ*×wÿ\f¹\0s\1e½³q\)/Ø^øÚÂnO÷Ý\88ãô§Î\9cUøÚÂ>9\ 3_û|ê;µ!\1f}Yo,e¥\ f³ê}Ã|í¦:Öï\9c°:óÃÚ\14½ÄÕûu}\18æk7Ôû\86s\ 1n®ën8oßúôÌKp¬Ø&7å2UÖÒC3ð§W×¹}ð«¿ÿ£RVÖÄ\81sú÷MåO\97Ôü\90¿÷ô\ f\8fÍü©(ÜqÖgppNÝöê¾%\17 Uí\ 3°¡¡¡¡¡a·!åN˹î\92ø` \9føt¼\9f\vÊhEZ]kòÏÊQ· \9d\13Ê\bC&\8f\14¿v\11ç\12}\1f\18\10,¼`\80¯Æ\16\92t§\8fLC\16\13#\89
++\9c1&¤ô`䤵pÂ\8d\rr\8a*F\1d\99\15\8e5\aCÆ\9b¬9Úf\83\8e¨\9b<3\1e\9bI\ 6$\acµ`Æ9|%À.\8b¹\ 3\1dîÁþ.\ 4\8dfD\89\16\1a\15\1c3<먤1R\93ä5J8
++7¼Ã)oÑqͬd\18\ 56Ó`\7f¨#~\15ÑGÒí¨Öb7\86\93\ 6¿*ü¢\8c\933ä\16¬9Ü\8b\16£Ó\1cè¤\19\901b\97IE\ 4³\1ajåóÏ\ e\17GtD0\r s⥴|\81ܯ£ú#(j\a8\ 5$ıádû<¾\1d`È1\94AYOÍ\bçÊà_\8c\ 6¥\ 5\82:\13\83\9d²\ f\94b8Òáè\15&¿ä½cý\1c@Óñ¶ØÏ±\91I\b©\9f\18ÈuG5\85èøâ\88]÷3öð®ê\1e&ë(ÐZ\9d² :æ>\14øö£\8dÓ20ß` Aï\99QPcN<¥\ 6Ì4(\ 5f\98é!I_G\15\ 5Æ jÏõ\985\f\98\ 6\93ùmÒËX[E\9f`\19ª.¸Ò0©\9d6\84\ 4=z\87\913Q\18\94Dù\8bàÝq\ 5%"Xj2ð¹)í¤PX\ 6h´Ç¯"5Äà"\9cÆ[\15°Ü\98ÄÑ1;\1e':X\8c\ 4ne6B\8aM´ª\|¤þS¥¤|L\15\89·Eæ\9c\95&½»X\83\8cÈO/Sì´=\86\99\1c\99y2V½\ 6ª\88"µ\f˨ËEhÐ Íô\91è\98\rLúh\9d§\ 6\83Ù\191\b\91I15%FLèh} ü\ 6O¥`@:\8c\98å\9b\8feCá\92ų\14E\1dTù°\97X2\fô×\18+¼B\81*\16ÃÏ\b\11°\\fvü\92\19\1f#\ 5Mxë\eÿßÐÐÐÐÐÐÐÐÐÐÐÐа7 Ïÿ\9f³ò\e\8b§\96öÆW׸îÿóÅ33Ïl\oÀßÿ\98ïÍI|°²äíÅl\9e'?yìÎ\a>\98ùI\13{ã'VÞyÉ\89¿\9eõ\ 2R©Þø#5\86}²^àùýºçOö\ 5Èqí\8c]¿þ\95_y8\9d\ f<\9f9Ó\8fáX7±à?ÓùÈv¾Q¹âÉ>\ 2\aÍîê]û§9þß*ú\ 5lJÿ?ä+8\16¼~râ\9d\9dQxβĮcû\7fxÈÿ¤ó\8eÏ1µ¿Gïüãg²ï\80\12½ñ^}þd\7f\81Ggwã0Ù\17àõ:\ e'\9d\7fLòG`0Íì¢_\18\1dÿ\7fÖ\fz\84Ì\ 5\8f\8eÿß^=\14\86ãñ·Õøñgî8ÿµ\1c;¯mæ\9e\1fÚ¯«ïs\9b\97çúèP\99Êz\95\97^;ñ¡u¹¬ËÛðH]++\1f¿|~Ö?tqÄ\87\ fÄñ_{X.S.k\aNIsq\ 6ï{j×¢\fJ<þ·ú\9a\8a;ÎɱìFê|ßÖªcøÛ¹+rßr\99\93¿)é\ 3Fk#n®}ÿ\93E+sì¼u¥\ f;Ò\98ñæµ/®\9dSÊ\8a>ààý»qyâ\ 3çäqñÆæyØZß\9f5\8f\9d}[\8e«W1?óÄZö©'¯ø@\8e\8f7Å\8b ¤uò\978>º}Á5éý\12±x
++ÌKõ\1e£®àw\8bnÂ\14ÍÁ®:\ f+&\16Þ\97µ\11Fç±ÞRÇìãë:ME\90ynçÍîúðÞ#/\9c(±ì:?óÉÙýg.YT´\11eþö¯¾\ 1_}pe¾ÏX\9f\9fysõSxâ\8bK_Ëe¾¬¥y5&}ù\83ËÊ}][\ e¯>\13Ë&\ eȱìV©Ü÷]u\1e>¾íËÇç²àò\98ͪ\9e$ùCÎ\9a!\ 6~kêßh\9dÆ\96Ú÷¥\13·_\9fË¢Ïëì\8d^׿-ï]\9aµ-±\8bãß2 ï\98\1a\ 3¿ãÝÝ\98=ø[\9f\99È\9f\85:é;\1a\1a\1av?\12wE]_P²ðpScc\19\ 1k¥\17\1d\97ãðY9)Æ\97\7f\86e\88øÓ¢\ 5ã\q«dhu\14N«è\84óN\18\15¥$Ûª\9d
++NGɨި½g &ý9\9cö"\92èq¸Ó\e\8f'2¼\16\1f\a\8cÌ5Æ\aç\8cQ"à\8f\86!ÕK\87\11|\ 2E\ 6²Ê\88'à#Nó#~lJìùÿ;\87,l\88\18#\8c\93"\8b,\13\ 1Gf\18\7fÐ9\96^1\96\98ªHÖE\15¦¶Ø=`\17\85Ñ\8a¨\9c×ó7\fGçiMê\91\8dï86\81¿¹Á3¤UÈHæKÓ\18\86Ü\1dú\81\86*\8e°%\a\eRX¼÷¬\1c½²ÎRï\165ûï\19ÉL\12ØF\12£ØßI2´ÁÓa[EÌ\87£ñ\b\83ð±IÅ\8ci\89ÖZ\8f¿£X$h\14yA©bi#Æ.\9f\88.\92åÅØâ~ç8\99\18L\85'K\87aÆÝ\1e\vÊ8+\f\1e\95G\ 3SéIÆá2\86j£\89$)\ 5+§\10T\90±ó¤\99±±\93\813\87¿w6Å\98kc3w¯Fq±øS\9b8ðQñúÒ\91\17$\1586£Ï8ÉÆºÞC\8e\9e66\ 4Z\và¿\8aÆ\ 1´)PÞ&òÕ2:\1ece±KÃÄxƽ;j]#¶\v\11[L\86²\93LuÒ\92¾ô\f\85v¤\86=ÿ:rþ\8cßÓ8ÒÒ\7fc\19Ã\1e\1c\19r¬2ï»±ã»\89\15ÅØo×\9d\9b&þ\9eL3FÌS\19àDwÎ\902Ç&\14o\f\96\96äºI1òX2\86\1f-&
++.pÃ%é¨t ó\06 è8ºÌë=ÙnË-[èû! ¡Þ¡¯äô}©Ïò\13m7ÅÒw\1e\18\9d>\80o\82$ao\12\ 5¯i1A\15\bÞ'¼&\9e\16\13´åÀ¤qùaú\r\85\1c\92ï.:KC\ 2|\bâÅÁÌñu¦®\0\13Ï\80z\94\84ô,Kõ\aº\82i¥Ú\ 4³\18°\ 4©\8d Žä\87\1aÖ\82í\8fIàxáÕ\12I¯\80×Y\88~|¾\91aOòà\88Ô/pâ¥\89ülM_\1cØ\a|\80q\e\8aõ`º÷\9d²\ e̵Cs+\7fø\84\92' þHàÝâG+fÎc\8dø<\1e\8dÿohhhhhhhhhhhhhØ\eÐçÿ¿tÂÎ\13§\96ö\8aÿ5 «C/\99ÿF\8e\17\97ºW¼¶\87ýÿ7WnùØ\9d\a\9e\97¸H>_$Îk3\8eyÿñØ\7f'~^Ðÿÿæéü\ 2j,ódþ\7fKõ\84¿èì£2oo5®\ f\95÷<zçgR캳Jö
++Ï8ìÿ\7fÿ4þü7WïñÉ>ü«ë8\f{íß4À}¯¹¥øÔËÌ\1f\1eR½áÿðåO\17~[t\må\7f\87yñGkþ\83K\7fªD.ë8ú\ 3\ fè×÷Ú~¹,\14^5ë\bFóÛ\9fmYõÊs_Ê\t(<õM}ÿ\82!\8f÷»j}Ã\1eïë+ÿûÖ\17e\1eWh\93ùÑìIN¿ò§ÿaõ³¹ÌÚAÏ\80Ñ1üïIõ]ÃòÛ/|>sâpí;ê<\fsÊ\aÎÀ)\9b\ 1ÏõK\8e̼±îúW=×\879å\efðUß±_¿l~~¦×ºðÍõý\18æ\9b·Uïûgï<ç'¥¬Ìæ:ÖÃ|ó\17j.\81a¾ùøª]Xÿàâ\97\8bîÆç><\µ4þ\0[ê}\7f$Oz±ø\ 2$ßÿ\86\86\86\86\86\86\86=\ f\ 3z\8fQq×ÒÑ\93\9cæN\81r\fºð÷yá=\8c_\1fÒâtÞæSýʧp¶»%¶}:\9e¿ä/à \ 4-0Bx¦\90^3ª\1cÕi¥=\9d»´ oï1\8exn\b>X%LàT0 \0-\14\98,\ 1£Aa\87`\14»òh zÊT\ 4\8eÂ\16Úï\93H\96\ 2[?4\86íO (\ 4]ømÀ\1c{'¨\19t©×$à1C\86"#n\94\1d\99vëhº`}Êà\9cc®\8bÈEâ\93Sÿ´\9cq>oÑ|\17ø@I¹\ 2\e$$\13*\84\88\9bÑeÜ\8aÕAÕ\80\13\86ù\15(\1fÀ\18è´\10\98?\81©é£0\91Z\18FÛã\ 6å©>\12Ì»à\99»\ 3\9bl|«ó.påJ\99\ 5SL\8a\80\19\1a¥i\19<FéZðMǪ¬v`ؾJ\13MÙ\89fj\83DÇG\ebJã\80\85hÐ)\11©Äqi\bµóÌ \82vF\8a²\8a\87¿àÚ¢¬\8b\eê8©\1d|\e8Q\8cùÇ\fÄ`ÜÏÑ\7fLÎ\a¢\98`\82º/,ÿ$ü\9dÔ¿èÒz¤ÌÁ29\85Iþ!\-TX¥ýû\fy:øj{Åä{Æb=ä/\9dS5U\8dÿohhhhhhhhhhhhhØ\eÐçÿßzüµ_\9aZÚ+ü59ÇÃÎ<òg\993\8e®7¾¡\7fþò\85o\97øVÙ\eßZùË\85;Íã\99·\17º7þpåù'ÇÛ\8b\ 1Þ~0~>Ç[\93?}tù¼\14ÏÏè\94.Î|´×üK5æ}\98Ã~²ÆÊ¿yD\89\95\8fºð÷KÒ3é\1d°hþÇ^-¹È\8b·ýóõ\99Ã~ò9/úIlË+Ëþ¦ðÔ\85÷ß5\ 3ßlfàj7\ fø»oÜ/ó±Á\9b¶P\e\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1aFyµàGQµ.%·E§) "\ 5åÓ\9d\82Þ Bw>\fÓå\92°.\18¦,ócc?\8f÷×\82f\ 5\94\1aà\8b`ÒcĤ\96QÂ2é\80¶ÌaAÛ\83À\94\11^â¹tû\b^\19e½N^\ 3Lß\80¯|\82\12\91dÐ\91t\ 3\92\161Þ\ f´A¦ä\bÆ\18f\9d`b\v\9d|d\82cú\a\1am$W\b\\82ë4\8d\15p \95%Ö¦ó-þ¿¡¡¡¡¡¡¡¡¡¡¡¡¡aïA\9fÿ\7fæ²Ï_>µ´7þz\8dÃ\9fìÿ\7fHåÅ?\7fêû²\9f¿2¾7~V\8aQ\1e\8eÏ?°z²ïóã\83R¼}\88ÂÎ\1e¿©ÆÀ\9fÿ¬¾#ÇÕËâ½½ºÆ¤¿u×\8a'\8a\87}áìO¬Ï{`Ã\8aÇr»TÉ\91Þ\8f\11?sýÅ/\96²\98ËNIe£ãã·Õ>\89\rK\1fÏ^\aºÄ¤\7f:µ\85\81Ô\17<¿æÖRVüô\ f®mÑG\97û¼P9Æÿ Êç¯\99X\9ccç½+yì³\8fû{p¬úñ\91\8b\8a\96¡xØo¬¾\ 5÷ݹ,÷=H7èß?Z˰0\95\8dÖ2|!\95\9d\8dãJyA\8e\1fçÿØJew¥úè\rpî«Ç-*e¥\ f}oÿOL¬ûíRær}OÖv~vΪ\7f->\10!\97\1d^cà¯ú\8bsÿ=Çøwõíª\9eùÃ~óû\ fxد\9c[Êb\1e³×ë\9axç\84Õ¹>mJß·Öù»{ìÂ'rY\17Ç\9f}øGk5f¥²Ñ~\ 3[j\1f\86=\ 5æU˰OýuÕãý¯CñE°Öçþå8þµ8®¸eUö0pRdmÈÃé>z&üìî\8b\9fÊeÞ\fÆøgo\80\ fÞY|\ 3\8a\97Äñõ½;kî\99/\16o\0\99×ÒÕÕOÿ´\89K¯Ïz\93\98rH44444444L\aò¦\869\12l\8c\1eÿ:çD\8aÏ7ä.\19ñ.S\1a
++Ugð\1e ùÈ\9c\ 5^\87h¥Ö\1d\97I\vwÚbáéÁÒ_Þ\a\1f±§õ\8c7§\95V$\1fj\18@Ogz\ 6C+Ö¨\14¶~.\85§[Ú\ 4XÆ5\9b\88\16ÑjÞ{)\19ÏøþÀ4\19\96
++²o\82×b §Ç\9e\12ï\8e\82ä\9b?2¿¼Ãcsnz&Jpt\9c\97F\15ßý 1\16ÁêèyMJÎñ\vâ\88%#È;Þ{7ñÛtA\10Ê\8b\80¶1ß\81\95)\9d\84ÃÒ\11\16C\9eR\89Ð\v_¨\94H\0;pº.Ht\bÕF\8e¶Õ\98'\f§µB0\1f\88*ñö)W\86\fÊû\ 1]À¨<\fU/\80ùìr¨(gÒ}J\18!\8c\15Öåî\ 4Ó¿Gb\99»=ÐSc:\1f\v\ e4&0Fö¡ñÿ\r\r\r\r\r\r\r\r\r\r\r\r\r\r{\ 3\ 6øÿ\1füÕ§¦\96î[|èI ^sÄÚÓ\93\1f¾4c½\92£\9b|ã¿\9c¶à\7f\13§¨\9dí\rxÓOöÿ¿?ñ\9aô{?ôíÓ\16']\80T8\7f]õB\9f¬\17Ø\ý\ 2¾¹fAò\17°ÎúÎG`XG°±¶ó¼\89\17¾\96µ\ 2Êfnô®ÊÏ/»ç\9c§\8a\8e p÷\ejýW\1c±6k\ 5¤\f¹ì[\95o½tbvæîeçÁ¿¹ò×\9fÛ¼<sðÌ¢\9aÊ\ e©|ëÚ\89\ fËe]\1eò¾Æ`8oýK3ä\9f\7fr\ 6\8dÁU©\ f£u\ 4÷×>\f{÷oKí\1c\9dcþþ\9a\aaX\ f°½Îñ°\1e`cõÒ_þÂGn,¾þ"·å\91\9a+`\98ó\7fl\ 6Îÿ¡Ú÷]ïZóo¹,\16N|ë\9c®¾aïþ-uM,\9bØþµÂ³\17ßûM\ 3\úGn)9ßEæõ3\97¾\fÇ\19?Y\9cÇ%ØR6\96î»\15ÇéÏ=pw.óEw\92ó\16Ü\88ã´÷}3óì¢\94¯Þýßþò©/\15Ï\aWú\9eÊFûóï¨ïÁ\9fﻤä\8a·¡ùA4444444ì.\14\8e3\ 6òùØV)\8a\115\9d¬2\97¨"Ó´\ef\16wÖ\ 6æk\ f\82\16çÖy\17E\8c!\ 4f\91·ÞØ bÄîËbO¤´ÑÉ\85\9e\9eô\86§<9Q#¥\8eä\8e\93Ϲ4ÖË\18»¼õ¨Õh<5ä\98îÄï\8eâÂGåBPB1¿\0ªW\9a~ù\ eUK¦`\8fØ\9e©è\84ËT<Z\8aM<U\0Ôö¢e\11Ûh\8f\8a-s>9íEâÏ] g»Ç\13-ê\95ÚEÒøÆ\aç0\0\ 2]\8e\ 6-#M\1eU\88\91Áâhªa\1avj\16ôtz\8aét\13\12ÛA*\ 2\94¦HÂ8¡BÇå\ 6/©cµÑ`;é)JpÑÚ(\83£R"²}Ê)OÒ\19\13"Ñ\0\ft ÆBØ\94X\81\1eûäÁSÒ§\8eÓ¶¬]\90 §N\81îó\1amÇ mi¡Ï\81tè\87Æ÷\ 5\85\1eG\e´b\9azô\ 6\ f¤HÛsè4U\ah\16\ 6\8b\1eú1`¬P#æERñ\8a\ eaäÐ\aG\96\1aWG´\8f\89î\9d\ eܨc\101ßEÿ`lÊ_¯D\9a\7f\87ï\eA\9bn~\vg¯\98-\0C\92®ÁÀx\8b\82ô3.\1a\86H\81¹×Å?\1f\15böÈÓó\v\8ea¢\0´Vk&a ¥>®W\z\12EX\ 3ÆrP,'\1eOÅ\92ÁrwdíÙè´¦Ñw\83\8bE ÀÁY¦¡À*\8fÜÑ\aN´QYú\80·\82\89+\84Áû\83\1aq\ 1Ö£d\ 6\aEA \1e\85/¼\91\8bÁ[×\7f\17\15ÆP\ fè\15$\96\\1cв\fê\16\ 6seDê'<'Ép\88±Fmãÿ\e\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1aö\ eôùÿ+OzxÇÔÒÞø²Ä-ß\86cî\7f-8¥Äç\9bÞx¨\9cå¼\7fZpvæªÉóoOç\19/}ÌÛǼ]âÁqýuõúc¾7gkæiEè\95Øëa]À\96zýÂ\7fÜ'ÅH» ð\9cÌ\ 5\9fÈz¿ûþG\13ÿ/#®\9fUãÂ/üðû\93.
++-{\ 39ï\8fÚõÒªt>úÐqûä¢ï½§ÄÐ\vç2/þɪm8÷\e«_Èü½*ñàYgÀú¯:®Äåk#r|ýþ\95ã}óÝ«ò}Ú\9bÌß/©|úE¯þÚ·3ïï
++×~szæho\81õ\95û\1eö\ 1¸¡öaØ\aàëU\9fðÖ%þ\9ciIÇúy\12Fóþ\eëü\99YËr\1c¹4Å? WùíÓ\9f:sV\99Û\92\vá\9c4\8f\99¿?õÚÌû\87\12Ó~H}æ\9fÝý\89üL×é!¾^ó9üò!«sì}TE»pU\1d³\ f¿pï\9d\1d\9f^<\17\ 6bÚ\17Ïͼ¸
++E/Pç¯å´ohhhhhhh\18Fâ\97£L\1eé"8²¯Z\8fõùFK\1e\98¤:\89_\93ý·\12×j£H\91ÚÁË\92;>ñÙ9i»±¡x¢Kï\18ô¬£Ãþ\93bWQ¼\0¼Hü©@2_\e\9c±*Do¤5]Î÷.\ fº"=ON>\18FÑ;Ùù¶O\93ç\1cÛké£Õôhï|á§Ë\95¾Ûxt'\9c`¾4\\86\ 1Iô¶VBXeÐ4åØ:\92ÔZ\vô\ 1\1dÃN\9b!âÌ\11/Ñ'\95²Ø\8bèC¹p¸6¦H{\8a\ fb\f\f\80\97\1aöô ÷Ú\93³Oì¶³¨\17\95ð2eI'[í\9d2\8cOt5ihlÂ¥\v\14¨fÏ\0Ç\ 1Æ\ 4\1a\81±\ e:]\97\7fv\18D\86Ù\vVíèJ "\1aG{\ 1ü\86Öbl\ Ù\ 1\89r\8a-Ðh\8fo\8a\9eF\0¸ÄÒ\81\80|8ú\8b\99´\1c)\1a8\18º \b\1f0-Ñ\91&÷Qc\92ËÜ\ eúD`$0ÍX~J\9b\88¦9ÆÂ[ú)h\92ô\ e_\8bøt\15i{åHð³µVQî,öP\r\b*ÇØ¤åÃÞLÊ]Ðù=à\16k±,<¾ßÐ9A\ 6\9fò\12à\ 6\93çÍà\11x\ eÚ\8anS5ã¼\b´¢pÔ@D\8c|²\81À{\82\97#p\1d4\96?\86ªñÿ\r\r\r\r\r\r\r\r\r\r\r\r\r\r{\ 3úü\7fïöåÿ<µtßñí5¾zݼ߹\98\ª\ fj¬7¾8ñ½üÏ¡\97Ì\7f#sÖR÷\8a\aû¹8\8eztã\1f$îÕXÛ+qÚô5\7f×\19¿ù\9dtÞ\vÙ\e_Yyã\85;M\8ak7Và9\8fÔ¼\ 3s¿\7fí³ù¼ ½ñ³ªßüþ'ÿê÷\93^@PG°:\9dÿ
++\8e\ 5¯\9fütÒ\v\18åzã¢úÚÏ\7fçÐå©ý\9ez\84eõ9û\9c÷\eßMç£\10½ñY©^rÇ\8f¼:÷Íì/àÄìñÓSûé\11¿åïÏúQáïmæ°ß¨\1cýpÞ\80Pýã¯xßù/g\8e^\16ÿÿ\8b\ 68ó%9Æ^Û\90¹öy3øÇ\8fÕøûå\13«oË|º\88ù¾\83SÙèøô-\ 31ï\9b\ e+\{\8a¯jhhhhhhhhhhècÀ\9b_yc\18\bO'°À\84ìé\9c°JEmKL9\19æ\984\vJËÁXma]\f\9eò\b\86Ñã;\82¦©\16ýê\19\99\1d©q\88Æ\92'\ f\92¦\ 6Þ3Gýÿ±wí1~\15×Ù¿\86Ê?ã\a\16¥\85 \9a\12lñ0`æý\90\bJ ´\88\12\1eÁ\18ã\a¦µ)\16¬1Pªº\ 4µQ@\8aC(Ð\96V\96\82\14$P\ 3I\89¡@ã\ 6\ 2üad¤PÅ\84\97!\14Hq6\ 6L\bµ+h1¥ß\993wv½¿Ýý«®\0\9fO\¼{çÞ¹3gfîc¿s¾\93,ÎóV;\9fNÆF\8aB'¢Þç\18(\84>hbÑS$ï\f\93s"·\80h\897¶Ú8\8d³\14.\1d\9dU\89\12\11(\93¨`ÄOÁؤP\16HcÀ\12ÿ\9dõÇ.6>*e`³\90ÑÎ\u\ 1,ZHy \ 2\ es¤« q\ 1G²ûÖ\aMßSäLM^ ¤aàay\12ë76GºNFU\9e\b÷¬H\9bßz\92*h~)\1a\9f\9d »ÑÊHÉ\aLç\8fBI\1e0°\91\\8e1Îä×\80\ 1\ e¬ß qÍd(³\ 3Z\8a\ f`MÂþDé\93\ f\81¶h\83¦VP/\ 39¹¸¨5\19YaÂa\ eè\9ct²ägR\14ÿÉ«\80Òå¡k*F2 ¦CÔ¦\e×¢Ö@Î\ eä\95S4\ 2H×ÁøØåD\10þ_ \10\b\ 4\ 2\81@ \10\b\ 4\82}\ 1#üÿÒ]\9bÿ{li¿w\18\85¥\8fÃó¿Wb¬\89ç?âÉ».`ÍyÒ翵ñö{Æù\8fhðßóä§\vßî\8cG=\9cÓ|\90ç¿¢ü]bP\17àöæw0:/@\17\ f>¾þÿÃ\8dë\1fÔÿßXÚ{\ 5¶\85s\96=Ç\1aÿªÆ´ßÛÎûÖ\9c\v\7fÂe6òyG7}\82\15/-¼\9d5\ 2\94f^ÿ ¦EpØÜ%¯°\ e\80¶|\1eû\11PÅW\1e¶æ\17µ¬Æ_ßøù5Ãß\98Ãe&p,üK-OÁ\92x\11û\11X_ÛyZ\e£AÝ\81[\9a¯ÀÐð¼\r]¾\ 1\8eËWå¼ñ5 .jãõOG,g\9bySõê¯\9eÞ\95\rú;°ÿÄ\85ØÞ}à\92·¸,:îß®\96Û^ýÕ\85ÿÆeÙpÿ\86\9a\7fÈ\97?[u\ e¢UÜ\87kËõþ\1eÛ9'æ¾Ó\1fFù¼R6¾\ 6Â\89M\8fáܯ\9cW5\10b\1d£Me~-ÄvÒ1\v\7fÉZ\ 6¶ê\1c¬,ç\8d¯s°jT\9e\82ã\1eb\9d\ 3gù¼k'ÉoÀy\18Nƶà¥ÿPÊ(ÞlÊ\9ey&\96\ eoâ:\9d«6c½ ²ËUÿ<ô,\97Å\9a\8b`QómY¾ãÀOÕÜ\aU;a]Ë%ñá\8c\85Õ\7f$Õ\9c ·ÎìÖÊ`Î\84kKÙøZ\r«¦wí\6ü¯ì?B1Ql³Y][Î}ýÊ>\97uú\ fǵó\16\ f\9fº\81}R´b»\1cÝÖÿâg\ fþ\ 1\979ËmY0sä¼ïÞÌe9rÿ6\95²ñu#noklëÁ\8bwp\99õU§¢\95G¿ù\a?Û3GÃ)\9dg\ eÏz\13º¶e¨Ýw\ 6ó7\9cÑô&Ö?zÊëµ,òy\eg\8eÔy×tÖ¢H\91Û²vVgëón:ã\8dRf¢\16\7f\1c\81@ðIÄ^\8aµÞ[yÉÇòº\13ŸO\19'v\9eb§)ÊÜ\8d\8a¥o±½5\1f¹ñ\81BÒ}!dñ\86A¡Èª$«÷\94æ\9bx[C9½Ñ×@9íC°\14ÍuÔ¸\96\89Þ\92\92:±ÌÙ\eK*ê\9ar\8e\a\9c\1c\83Φ\ 4\97'\18ÕÂ\1a:SÐwôÄ&z\8a\b\8e\ 1×Éx\12\e
++H\ f\94c]¥\9aO>»<FsÝÒõ1bÄ?§\16{Oòû\94â¼öÙÓØDO1÷)QLzøÈÆ\96ã´\1cÉ\96ôî\93)w»Bçp\1e\8e2\1e×qè\ 1ZgqN$\95{KÜq\111 .ÙQÜ8.DGRH\7fÄ\10ñ7E7O(£\ 1l\8bq5ååq\9c\9c\ 6\13i+\8cÖm\1f«uOiÆÜ\18-ø\89bÄKÊx\9d\9c&\89\84\84\8b\aUyýDiâñ\86írÑÍ\ fä-\10\1c\ 6 \1fSVå¤(\ f½"\85\ 4XVÑk,\16\81¢\9cò\98-\ eF§µ\891òÊSö\ 6ô\1c#\8b\8f\0ün\88 ƾTòÖs\9b\89ñÇ.ëP¿å8÷\8cKÐÚÊ\ 1Ö¡\84\10iÄvãé@P¥0²!o\82b\17ÌWJ\93åH\84\ 2§+¬\b\876`®¸\ 4\13`\8a¸à\¦ÉàÐÐ\9ch.\93ë\86*Ë\r\ 6Ãi¸R1[ \91J¾ø4àWL\93D\9c?Ý\14²OE\e\ 3\9f¥¾x(\84¨ªÞÅx>\a\86Èy\92\v¨ë\1eÓÔÚ¦\a\81i\86^(jÑ\18Í~Ltò\ 5\b\8aD!\12½@V\1d\vC\82\ eX\buÎ`ÞyÝî'\14Ø\8fo\ 5Z\ 1´ÈlÑ&À¤\85\1dè6\81Õb#\ eÁqX\ f´VCÆm\11ÃHûEÿ_ \10\b\ 4\ 2\81@ \10\b\ 4\82}\ 3#üÿq\9bv.\19[:µ÷\8f-\87ú\9eñÿ[\e¯5\7fçU¿ËܸñýÊ\85ñþϬd½ú\9cû=×øòc\1fß|\16sd\ 1û\99×~\0ÛÑïly·ðÿ*\86~ováâ\ 6ùÿÃ\1a§»æË'¼Sö\ekú½³\eç>´ù7\1f/ñÿÚ¢þ;\eG:\7f×\8a\17ËþHÇ\1f×\8eÿõ\9f\1fò#\8eóWhÿ¦Ö¯y;UÑ\vÈAÅi½E\8dã{á{+Þf¾ßzæ\r¯h}[ùÔ\95Ç0ÿ®j\1cÿ\13Í\87`Ð\17à®QÜüqw0ÿn*\97|kéÿøz\ 3+§wm¹æ¤\95o27\1f*G»ßôn¼Ö¼¶æ\80ZVs\17\_Úù\rl\97¼ùõ{\98\7fï¸Ï¡òw ñ9ö[\1aO9¨a0â[±ìÈÅÜ¿l4ó¾[Ëyãsì³ËyCØ\96oûBåØ]å\84\99ï\1f?\aÁim~\ròï'6\85µ_½àM.ó\8am}mkç\92\9b.{¾æ'¨ýÛÒÊ>üÜÐsÌÛ»êCp[Óaøæ£+\99Gw>òyªic,ÚvüïT_\97ê[±¾Í£¥Ã³\98+§?^ò8\8c*»ô(.³Õf\9b\9aÿÌ\92ç\1fÔ\\16\ 3\8fíÆ¶\16\ayû\ 5¥-ãë>\8cæ ÇòÚë\1a¯ý\17SÏ\18f~Ú''7F\81@ \10ü\1fá#Ìw'Kñ·®ðÜ{Ã?aÜÜÛ\93iÚ\7fDb\88)ÊÛ£W\9d~~˳\9e\89\bvD\82G;*79ó\950Wù7P<;ù\ fÀ*ÑæÄ±òÚ:\f\1c^i`ôPyÔD\16´1\10\95ë\1cF\85\14ï5Nµh \ 6Ë\13ó\9bQ\89Ñ8Î8\87¡V8
++?\93,<1³¤\0\8fÿ\9cO¦ÐÖ\9eâÒ\8d\8e\94\91^©\9cuIU@ß"\96\18}â\9e1Òè3FÊ9\>atØö<\82¨)Á¸\ 1ÿ'Éy²\8f©³É\14Î\eFÃ\18xía\15¼)ÓdÄ´L*3õ\9a<\9a\130VÄEÃP\98˸\14\91êä3\91]ñÿp(\99 /=ç0Ð\89ó3P\1c:*ÄuÊ\vtã\7fñÊÜ|\ 1Øg\83X}Õ\95gô\8cèü@)\ 6P\10)¦\1ef-Bú\ 1û"%\ 53A\19\8c@B\9b\8dr)\90o\ 5.\84a¢\19A\ e1\98(°\ 5f?yÄ`e\ 5¢Õ\ 3\89\18\90\14\0¹|\94AÓ0>\96\&·\rE\8a\0>Á>\18W\98&\94 {\8a OI\17\1f\9d\84ÆS#\ffeÀ\190Õ$qõSÆÄ¯\8fö\91 iHY\10"5¯\8býßK>A´\8eQ£2Å\a\ 1?àv\86ö\97SSÍ'ñ±ÑM\10þ_ \10\b\ 4\ 2\81@ \10\b\ 4\82}\ 1#üÿ 'õÿfli¿wï\ 4:ü7\16¾q\90\9fßÖb\99çí¼ð\85«Gâá\7fÕbrO^1\7fgáÕ\9d\89\1dßIÜëû÷.\7fºÆæWîu[»ö`\8cýÒQ±òoOg^=U>~û$±ëgO¢ÕÿÞ$|õõí¼A\8exÑ$ñÛW·~_ýÐÂ\9fwñÔÕo \9d7\18Oýê(þ3\1fªqÑ\8a¯·¥ÙeÑË\vº¸èÌý{rÖÈy{jüw1ýÔ\96ß\9eöÅmÌõFëe\11\b\ 4\ 2\81@ \10\b\ 4\82\8f &\8a¹÷^ûê#\90cöF%¯È\99(N©¾\0\83Ú\15{Í? j{4\r~ò_Ñ1¦Ñ: ä\8bbtêr\17t>\e{Ã÷h\94öHÑ!Ð\81\94\ fLi®ðÿ\ 2\81@ \10\b\ 4\ 2\81@ \10ì\13\18áÿ×_uËo\8c-íW-mâ\9a\8fÞ|ìùÌ¥ëØïmi|øu§\1fº\99µ«\1döolºã?>óØÿ)ûmðýÞK³ºý«Î\9fÇqûÞâø]e?9\1e\1c»ë÷K\vp&ô{»Gù\11ÜR8üä(¿\0sû\14Ï?o÷öË\8a\1fA\8e©ËmOÜö\7fÞøÇ¯±\1f\81¯üüº\16\17>¨iþÀ\84\1c¼@ \10\b\ 4\ 2\81@ \10\b>\1e(\7©B\90\83wʤ\1càrª9H<>\0#¥ðP:{|¹ZíÉO:XRé }\ 6\9d\9d§Xû¤µ¶\86¤Ð\8cI\16çy«\9dÏV\93/\ 1EîSR\v\9fc0\19ß\9aô
++R¤L\ e&çd\ 29XSn\ 6«ñQIú&¸ttV%\17M.2(ÚäIsA\98ä³*\ e\ 3)êª\97Qü\1c\12õ-\85D \9c%\ 5±ª¯\11¼+õå\1c´M©ú\18X\9dqlq\11Àõ9\a\83ðÿ\ 2\81@ \10\b\ 4\ 2\81@ \10ì\13\18áÿÿö\87»ÍØÒ©½\1d-ÖüÆÙî¬ÊóOé×8sâÔç\7f0ÿ\83\9a#Ýõ{SÆÕ\ 5\98Ö[[ö¯Ã¶ì»ç<Çü¼ÑÌÏ?Ür\9c\ fæ~¿·i\9e_¼}Ö×8\9f@0\1c#¿½Åº/\1dÞþm\8e»ïò|/\98$¯ø¶IbäW5?\82±y¾\ 5\ 2\81@ \10\b\ 4\ 2\81@ðÿ\aâµKô;sÜ:Xomô\8ar\P\1e \1d\1cÅåk\12Ù×\94\ 6bÊ\1e1ðNë`¼¢D 9W~}oÄÜkÊHQTùCT\95³Çq>ê\9ccÕ\1f(98È5\80\12K ÍÎÄr\19\13\83\8a$\r`\92q\1e\1d\8bIgÊ\7fR\1c\11<¹\14\94D(9àº9\92Ã\82.\19\0|Fu\8a²\a ©V\ 5¯`\88\80]ÞErd ÿ\ 2g¨"ô8åD)-\84ÿ\17\b\ 4\ 2\81@ \10\b\ 4\ 2\81à\93\ fùþ\17\b\ 4\ 2\81@ \10\b\ 4\ 2\81`_À\88ÿÿº×\1e¿nléÔÞ3ä
++?\8eÿÿ®æÿ¿fíüwØ\9fßÚ~ï\89æ??çKGý\aûëçÐïÍ\9dÞö_yÜ\aìW¯u¿çÊ~òÅ?aç#§V\7fûÜïÍh:\7fÇ|øÙe´?F\8a/`\9d?\8a\a8þ\9d\ 3ß/º\80V\9b~oiiÏblóÞ¿û\8bE\17Ðx;\97èÐ â\ e\ e)eS±ýË÷\17\ fsY\b¡\94m/ý¾\ 2ÛÂ9Ëø<4Ç\16lk±\ 5\83y \8f\9eÙÕù\97\ f,ã:IÙ¡\94\9d8½;ïâg^~\94Ë\82çX\86\ 5ûwýý£×¯\9eÃù\f\95â\9c~\8f\95vRLÅåo\18ÅeÁp|ÄA3;û\ræA<¥\95\r\rÏÛPÊ\1cÎ,e\1c\8fq0¶\97ï?ç\r.\v\9eë<df7V\eï¿|;\97¥Àñ\11·L\92[ñ´rÞ7°]òæ×ïáÜ\8a*p[R\eçÕÃO~\9fË¢ã:Ï\9eÞÕi\8f¯9\19£2µÎiTöwØîÿ\8b_±!µÎW§usaÕ\e§þ\1a\97yÅý\e*ö¼\ fÛEO?â¹,\ 4\1e\87\11-ÊE\e.}\93ç¨Ò±\94©ý»:\aãMîm:\92W\1dºâõR\96µâq?|FWæö[Ê\1a\93ÚÕÜ\91\87\97óÎÇö§úâ\1d\æ\15×¹¥å¿\rÓeEÿÒ\98¤¹\7f«öïl6\18ß²hTìË¥G\952o5÷}Ç´n\9e-yþAÍe1ðØ\9e¸\7f×÷\ fg,\1cæ²ä¸Îõ\93èdNiç]s\14Ïk\13U\8dÑÙ:*\9eæÔ\r\1ck£ëÜ=¤\9d÷Ó\r\8b~QË|\1d£2îwc;ûåGîã²XÇVµûÎ`\8eË÷Ú\1c|áök^á{\86õ<~\87·yvæðå7sY®ë}Q[\7f¿÷ü\8b'pþKU×_\9aÖÍù±¹1§õ6¶{Ýy7\9dñ\ 6ß\ 3£Vòð\10\böI\8c\93×Iã½H{\9bqÓdz2\ 5§\8dñ\ 1/\ 6Á\91\8bhLTìé\81aLÆ=Þ\ 4üCN Z9¯)_\95I*d<429\8aZMúM&§llR¸Ûd\8fGMòxJ\93¯§£\9aóFå\1449§:Ô\16\12\8e29j<ë\çg\1a\92u((þ²9Z}\8c¸wû\9a;\v\8f7´Uáî\8a\87\8bE3\93~¶!àÉN\r¦ôTº\ 4A\8eõ¿µÉY\VyëÐ\15åbõ\7fUè\96±:«\91}å\g\82Ò9\84LÎÙà\8d.££¸tR)âµL\91³Ã\83,ª\b{ ¯Qg\12ÉÂ-\1c¯\v9À¼hiÐ\94x+ÓSMÙèÐ"\\8aD»"YT\91ô\15êKÖ [hiÀ\83\11ÏÛ \14zo2\ esd´àp\9aÅ\18Eü`lÔØ\ac\18º¦O¦Ú\8fµ¹4\9eZ!Æ8e\ f\7fb\ 3Kâ\8a*9S\9aRíãJþ/OR^0\1dizéjk<À\1c\r¾Ç\e\857\ eý3\ eÍ´\18hC.ËxT¡ÐÁØx$kR\17Óä"\8c"\ 3s`$`:ü\10M°©\8c\883Ñá`E³\ 4}L°\ 2F,ÓS-\99â\15Ì©Éð\ ejrÀ`8\97qE\1cPLJ\19¥ñø74©|Ì$\94\16»\9cd\ eG\97þàºZg\8c/f\91\83µ>JþËdg¼¶âÕ\aã\83+Á|!\90e0b\96Ì[ªÇhfOæÕè?NÇ,C¿\ 3ùk'\8bi\85Vaµf,%£GÆ\9c\92»a^æêCnt6\13å\97£-\91W¸Eç5:\8d\ 5\95r¤©\85å\84ÞÓ½ÂF\8cAÄðéD÷
++Z¯
++Gi\12§\83E\1cÞÚIÑ-`þ'ú\9cÀm\81æ\82Ñ1S\r
++ÃZdàð=\95µä\97nÈ\16\98× ¦v¸<Ý(&òs7JizÝqÔ@ë¨s8 ÿǨÂа\1eÌ\86VyX\12ëÁãÎ\13Ë\ 4Ág\béÔQÖ8\8buãT\19\ e\\18ß\19eÎÒ=%£\84òã¡ZX;µÜw\98\8dh\ 3Mo¼\98\eåè`\8f\1d4ÑI$\ fë\a\13Ø;G{hNb\16¨\84\ 5â°J±.°Ll \89\1306¸s\ 5\8béËkIQÿ3\8e¡{¦åØîr\8fÁ\92hyöb¹ï¢\ 1\81Þ\9c\95ç{\91ÅDr\16\13\1eË\1eMã÷ʲ\9e\1duØ\96\19M\8b\9dêpeFÂÆ0¼r\9cº\ fË\f\ 3§p\9fÆ]¹,rº\85bw\86\89póÅ·-&:ºG÷c\f,\96ªÂ4ó0%
++\rëúÁR\1aͦ;!ê\8d>ëÑyú&Ò\ 3¤I\83Õ\85o \15©âî>\ 5³â6äù;\86ò$jzjØà'Ê\7fHSPø\7f\81@ \10\b\ 4\ 2\81@ \10\bö\ 5\8cðÿ7ìX²}léÔÞí\85×\1cäÿ×5\8exO>ÿ±vü±\8foæãUÈýÞ-\85C#~{þ®\15/\96<\7fÑ\9a~ï\89²\9fxè#N=èÃÂÛ+¦õ65Nñòá\1f\1fÅü»uÌ\rÞU®Müßas\97¼Â\9c·¶Ìã±^á9ØV>»û$.s\8ey¼;Ûµ\ 69ïÛJ\9dD\10^üêê»\99\9f¶¹ò¾¥l\ 2\ eºé\13\ erÐ\ fÏèú°zø\14[9èÊ\17?SÊÆç§Ok\9a\8b+_|h\ 6\97¥ê\97°´]ï\ fß:ö6æ§eîóáÆ%/;r1Û\85H\81R6T8Ó¿Ævö³_Ú¯ê5V\7f\86EÍ×bù\8e\ 3?U9áZçúæC°xø¬;\98\875ªòÓ³º9°õàÅÌkç\8e\9f~`F×\96A\8evmãß×?zÊëÕç#²]>ßòGþ\89>ù5æa\8b¬\86@ \10\b\ 4\ 2\81`\1fÀ\ 4\vá.;\9e>{¯\95Ó\8e\9c ªïÂÇÑÏd<\1f\93hÉ¡ÇÚê\7fPúü\91õ3Räy\11Ñ#\1fSåÓ]*¹ô\8a?\0¹H£\1d¦ó\1fÁ\87\82&O\10\8c\9bN Öw\81ë!?\r\8dO(´Í\92q&åÊ\9dêæ\ 1>u<±î¦\90ÜôKÐcý\9f\8c¢9\80ÚØs@ëBÞkô\85ÒûY\8c³!ÿ\et+\935éKÔz¯ÈåÉ\90\9fA '
++²\ 2.\92:¿
++Ø3\1aJr\8fùd\r;m\17¿\99¤#yI`J\95\ f2oM g\1aL\rG\9e.ä}bMä\9fÉÕ\8a̪°#\ 6ô"+ÌÜ\84)C¿iK#\19`\ 1\eÈA\b\93\18c\15q\ 5Ìa\9a¦ Ǽ$? íðoö¤H\88\ e`1\90\97\0F\ eó5\90{PÄbÈeÜ\84ÿ\17\b\ 4\ 2\81@ \10\b\ 4\ 2\81à\93\ fùþ\17\b\ 4\ 2\81@ \10\b\ 4\ 2\81`_À\88ÿÿ{\9f¾ùÏÇ\96NëmiþØW\1d¹æ5öÃ×\89ýâw5\1d®o͹ð'ÕG?rÙöVöÈ\9dË·°¯½©>ó¿*e¬Ñ5wC\8d\1d°ìÿ½{TÙ\9eú]\ 2\81@ \10\b\ 4\ 2\81@ \10\b\18%~By¥u6Ö*å]P&ÕýÁ\86.VÂxEñ\10{|ÿÏ{7Ü7¶¾©½¹\13èÿÏ.1Ü\17`;âÉ».¨qï±_ãï\aõÿ\9f(õÌÆö\95S>ó£\1a×ú½+Z,ÿu§\1fº¹Ö\8fzn\9bÞÕ?ïÉ»Î-û\9d÷ýªÏN\7f\1f8~ç\9f½À:\ 2FMë=6¢ p÷ò§YË_Õ\18öÝ\ f+~j¿Çeºjº¯kõ\19^}\akò\eÍe×·óV>uå1U\93?±¦ûÖÖ\9f÷?wÎ\8bU\93ßñyk÷ïlð_3/ûw.\8bU\83`{Ó5\98H\93ÿkض>¸àg{ê\13\9cÑê\1cÔäOï\83\9aü/5½\805¯9\80ËBf\9d\81µ\93h\1el\1féû\80\ 6Á\19lõ\96ó¿Ãcl2·óöÖ\96A\r\82Ý¥-\v±\9dtÌÂ_²\ 6\81\1aùw\16½\80!lË·}¡ê\13¸ª!\7fQéû\ 4Úúe\9e\8c¯?»Ô9¾æ\81ku®ýê\ 5o²î~wÞª\ 3º±=wãê§j\99涬oý»`îÐË¥ÌêZççgv¶^²í\86\13«\8eBà¿k-mólÙðÐwX[_eîÃP±\vÆ«î¸ìm.ÓUCâ½éÝßß\ 6u÷×\952Òm8÷õ+û\\96êy³Û\18-~öà\1f°n\83«\7fc[ÐòW\fjë߸\7fg³3_zèÛü÷·.\87ÃÚ\96Ãã\877\9c¾½ê6ÔyvQÓ\ 3\19ÔÏg½\ eÑÏ\17\b\ 4\82\8fõû%k\89;¥\9cW>\90Òu\8a©ÓH\1f£\99>©~¼¢0Ü`\1d9\96â\9añ\8aU\14룦\80íÿeïêcþ¬Ês\7f\8bÎß\v-\9d\13²Íu
++µ
++´XÏ÷\87
++«¤LF\0Q¾Ji\ 1Gç\98m)c\8d!¸%d\9aI&A¶\18C\16\L \11&J·°@¶l a£sdÀdP\1cBçà\85j\11\ÁÉĹëºÏù=ïËû¾m²?H\98½¯äiés\9eç|Üç\9cç÷<Ü÷}]\99ÄÕ¤ä\8e¤q¯|¯¡L\813Õá\r Æ\82_\12\93\99Ój39¸\«Ï>;¼E¦\9cC¦\ eA-ònf#3}Ñ\ 1¼\910}Úá}Æz^]mÂï\1f{S\12éÛ+Sn{.ù«Æÿm\99~\8d\8e\ f|ú¦T\92©\a\9b¢÷=G\9aDõÙ'æI\eKf{GR}\e\98N\1eIÙ_x\96IÚ5Æ@½\ 6\18È£RÇätÇ\14wv\9bÜì>rÈÁ\96E\aÔ}xÍå(Kþ7SÛ-\86S
++å\ 2ð§£\18\0¥\a`\1a\99\90H&z´\14\ 3\f\14Ñ\9f\8cI'/\18\16\89©\14\ 4À\v,\93Âa82ÖgÒÂ'¦\94gz\1f\99§\1e²¬ÁP¢('¤l&yì\vp\10LxÚ#,á\fZ\10.\ 2Ì=¾\83D\8d`\92ç>O'¤igÌÎí·X ¸/a9Ç4ᢷÕ\97Y9îûã»§6\a9Þ\13ödÀh`\bÉuÏ\80ç$gXk?ùùè8ÙåCàLN¸\13°ªr\84µøîZ\v\97`0\9c#Ì\88\8bä\18ÀN@½T ÈÜ\85\9ek²\92\98\9fk\14VÅjÃ\9a\ fòno2Öd\96o
++á\ 3¨\\a\ 6K³ \97´
++ʸa-óòÑ\97b8\r0\vv\9d¥\ 2\ 1Ö
++\a\1e\ 2VVÄlcfñ\82OÎ3ìÒ\80"k°Àø\80ñ0\ e\96qªXèX\f¢É\80ÿ´üT\18\9e/¯äÈGW<\1f\14|Zà[\19û\fO\82\8cÅb"7¯\87\19°\97°Å
++»\9d1¸Ø\1ex\18vä¶Ä\84ñ\91\87î\9b&´\11\17íO#\ 2Æ@;xz%ìñÆiPD\85\80ôf\96Ò\ 4 Û<¥öí\8e5Z±[03x4aÉ[
++A a\8e\ak\1a{Ýr·S½#ñ¡
++\9bYj*`<è#\9eQEô9"¶\fv!LMõ:î\17X\8b \89ì\rNãÿ\15
++\85B¡P(\14
++\85B¡8\b ßÿ
++\85B¡P(\14
++\85B¡P\1c\f\98\89ÿÿÓ³~æØ¹¥ã®ÇƸåÕû.\7f_Ëñwq<Z,±Õ\1fÂqÔ\8fO_ËóѺ<\1e]#ç\19ð»íãïú¾\9cwÔù{l\88\1dþâÖU¢\17\18\13ó\ 5^\1eâ©·Ü{ÄßK<¿õu<ºHêY@/Pêaìòqÿðz\89\95NÅ\84ñèTéçz\1c+\7ftËi¢#è¢\9f\1a]=hðÍ×\11|a\88~ô+\17?×bÿ}leË\ 6-½ù\1a\83\87Ï\94}eÝ7&1ü-×à\ 6iï\ 2\1cÿuûo=Ûbêshq××ÉX×á¸á\8fÎùV+«¹Åâ¿ eoÀñ\8dw¯\9bnñö!¶Xîg\86¸òù\1a\83MWq\a\8e÷\94õ\8fu\1dÁ\1e\e¿và`ø\9bÛ6´~\16\9bºNâ¡\93ö¶ï¸ µWZ\ÐÔèuC\ eÇ\99W\9dÝbÎM¶m\f7K\9d\vÇð¯8l²&ÎÞãonqóÖµØø¦ùÇ\18ð\8dwmhu\86b\9b·\ fs=_\7fðå!\86\7fn<ºB¡P(\14
++ÅÁ\fÉSH\8cîöÔSË=6ÜÙ\14\93+^rO\19\83lchù¿\89ñî\94131g_Kî9\19®d\e\8cµ±\ 6\13R¶1Sz-2ô\9f\11Ù\94Íc\86A.\85\9al\ 6ﯾ 9Ær£¦\16¥_\18w\D´y\7fzn\vh£µó\9e±òfè\7fbp{ÂÈ0\90ìM-ÆK¸>^ùq-*`f\b\85íð\87C\87)ËV\12Æ\10\8dä\ 3dô9àuÑáß\8e\ 1Ñ8W,³4\16½VóM`àÌ´\bã\9cØ'\97\9c]Dó©\14Z0`\ eqsd+bif\0Ý\ 4Sä\18¬\ fÛø\84®\9al|6\18\v®\9a£\83\97k\8am\1d`zEÃ\8eù\ f\94\11ì}ÈX2³4\a\13LPðYQÑa¦\9a\18&,x|Lø\80Ù\86½²\v¹¢mÜ\88ÉöÌ\7f\80q\92$¬x\83ÞW\18\8dñù0f_\ 3\9c3N\16¯®¶æÜר«Tæ\8b!àJ¬"t\9faÿÌ \80ñ«\87 \8d·) öÀ\19*\ 1c.¸\8e¶ö8\835\8f{°\0JÁ´\16l\86\8c~aQ$Ç,\ f\eð©\86zq\8ey
++\8e \e!d¬\9fê1\fîç\bBdN\bþi\98\89b²G³ø\90e>@À?±mЧd'y\ 5 ëSò \12æ:Ut\18\v(1MJ\16pM\8cÍÇj\81¡\1c#÷Cà\19ÊMÂ6\ 6³ÈÝ\85}\88ÕàÐ\14zÈt\1aì>¦U\94W/WAýÿ
++\85B¡P(\14
++\85B¡P\1c\f\98ñÿß\7fúÅOÍ-\1d\8föNñï?DZü\a«NîÜya<zaàOÛvÅêï·óÞ\8fG\9f\1c¸Å\8e¹wÕ¹\8doÎæñè:©g>\9fßÚáúå_ÿô¿ñ|\88¡\8cG×Kýô3_;½êE9_C\1a\8fÎ\92zæÇ\11¬\15\1f9}ù;¿·ü%\9e/5\99 \8f \vO¼xõ>\89\v\b.O\8d\8e[<iw>'àgå\1eúÍ7ܱ®ñé\99Üyñ.\1aâ\ f~ó¡Çïj1\ 3)¶²÷Jß\1a\97à¯_ÛÊji\1ch÷,\9dôãw\96m{ºÇ\13\94æSß+}Y\83ã\8a÷t?½\ f¦ùÔ\17K{ô©_ú\1dg:Ï ku\96Yí=wh++=~a×\ 1ô\17ÂÐ\97ù\\82[\ 6½\87+OØôÝÎ\17ØÇðüÀa·uú¾;&±\rí¾k\ 6\9bùw®\7f°Å!\18×â ®\92~\92OïãGõñeß9ìÂ\92\99:×ú\1e¿`:g\9e\94}\ eÇ\aOغ§\95å\1e3pëÀ}·ùÙǯnñ\v¥ÇK¬\9bá·{ðüU-FÁÚÙº\14\1cßKG\9eût\8f_ècرtRçyß{Ï \9dK°\8fáj\89_X\98Kp÷`ëß[ºùá^VZ\G\19b76~û\ 3\7fÜc"L\8bmh1\1f\1fÀ±ï\96\8b\9eée¡Õi\ 6»\8}ʧ[Ù\84Ûoía\931<tûºÆ\87\18ò$ne\18ÃüX
++3ÄòÌç ¼dj\98÷y<\83Ç-\99¹ïØ£[\99ïÜ~\ f\ru®\9f>é¶Æ%h;oã\86Ã&ó0\9f\83ð\ 1\99¿\r\9cÛ§×~ª\95EÓÆ°FöÃ-´õã\7f÷\17,÷µ»ij¦½/M¸\vs\eßÝ\aà'¼l°ÙõwÝÓËrëË\9a©I?\7fí\91o¾«q\17\9a¾§·\ f1B¿kOü\8fÎ[Úãd®_:y\ 6*¯¡Bqð û}\16 ÿWÄ\ 3\8f¬L9Ú\89\ fk\8eßõ@|k6ù\88\7fGC\ e§W\9bó-\99dÈÇ\1c\18\XÄ\rI\92®H÷\1d*¢÷\18¿$x¸\9b\92q_
++Î\ 4\8fË,ý~\1eO7Òt\99\9añJ\90\9dI¸¶\8a÷)düâÕBÒ;KooÆï_È>Ó·Êת\9c0>\9c©¼ÌÅXðÃêsr\81|zÂ/'\84k\95î«ä;\ fY Y#\9d¿ø\91\82IÑFóÔ\1a\1f¼!\17_\885ål2jAïSE¹A{1åBsñzrgÁ¤tʺa.¼\17æjq\ 1½¬µó¡¡±è\1a{\9b\8cT\1c\98¤\8eó\85\8e74e+Ì\16Ù{üP\aü\92\9bÊéJôw\93)/\90r\vo}\ 6ÍÙîKÍøU/\ 6³ÐÞ÷Äß\8a\1f4Ø3aú`UoLíþî\90³¬\1f\9f¼ÌWä ÄU×îÃ{\9a'#\9cu¡\94E\vò\bº\8a^\84@ï>n/\ 5Ý$\ 1\1e¬\90rBÇj)ô-ºÈ%àj¥\9bÚÓO\8ce\89ÑV¬§\1ax*Ó\ e赯ô)\86ýðÅÁxÁU:\8fù²\14h(ü®z/NP\1a\8a®ÏH:@ôÄ&®N\9c\85\91-\16¹«\98Û$\v\80Îpi\1f¯ç\98Y²!\92'0Ò½LB@þ"\17R\97a¡\88û\12# CÚ`\1e*Z¬ô\vc\ 5\94À}@ÂÀ\94¸Y\12ê\8e½¯¨\12f§\1fÖ\a¬\1c²\14\1a\1fK`÷"\9d·Å\92\99\90.hFÑâ-\95L\87\98\ 2ºYgíùÆçF'lNEæ¥`Ý\15ánCϰ\rûÜc\9fpÈØ\83ôå\alJ4H\92ºè1.z\9c\19\89QéÅ'\97\1dÖ\ew\87µ\99Ä\86hÙÓ«-\81\0ô\v\93Î\10\93HKÕLO³lÖ\12*\96\vyô¸\89\1a\eb$##é
++#¶\94¡·:$òT\9a¾f0\11É\1aÞHî<<g2\8cHÚGÌ\ 1cv±\9a\1d\ 3\a|\92M]8.Ô\89'G&\1d_$·3þL°\9e¬9>\ 52\1eA$\1c\945Õ9ç\17àRô\911"x¶a²Jás"½vy'÷\17§2\87ç\94a\16è;¦\12¯\86C¬\r è\ri\17sî\9c\91\95<¡|`a)`\9a\1aiºp\ 1Æj\84Y\14CêvÚ/ß#\16\7f\15[y² ÷~FzùC\9cÍ¥Úùþ=yÍe.¸\e¸1äA\8c¿\9dúÿ\15
++\85B¡P(\14
++\85B¡880ãÿ_|ö\eÿynéxt\86ø¸vôrñ\9fÇbÕn
++\85B¡P(\14
++\85B¡8\98!<\1cäXË\12 @~\84\14\8b\95A8 PrÍ):o*Y\12\1c¥\14\83\84_1V w\14át\10Åd¼a\0\ 2Ù\r¨ZHw¿ó)»H\95?\9f\18\aTÈ0a$\14ÊZÆ4\909ÁEË\18 OÉF\86O\95\82NåÈ\9ajd(\8dð\Dc¼úÿ\15
++\85B¡P(\14
++\85B¡øé\87~ÿ+\14
++\85B¡P(\14
++\85Bq0`&þ\7fù%\9fÿðÜÒñhç ÛöJ\9e¿Æ]F>¿å÷Ý|^פËãγÕô\ 2ß²©ñ²Õ:î¼k<¿rßu©WBÌS£½ÃùmÓ[ol\9cy®sµ}aàj\9b¯ÏwìûærßÝ)e\vëå=0Ô¹î¶\8f6~»blã\ f;CúNM¼\97Þ±¾iâU\1f\1a\8fÛó\aà\7fûäÀÿvù\976?2áxkÜbÛ\ f \89·[ÊÈ\8bwæ\9d[\1fleÑ6n±çgñ¿\9dÚ¸è|,\8d«í\9ea|\e¦÷þYãq³\9d¯ìù¥\93:ÏýÄ¥ßjeÅ6®¶-RçGYç\93öÖÆ\9dæ:çáÞ¡½ù¼jë\ 6î´ù\1ch×\f\\82¿2uÚ\93,wn¸]R'¹èN\7fúM76~4ã\95\1fM¡P(\14
++\85Bq0\80:z\85úw¤\83ô^\18<S¶$KÆ\ 5\13¼\89\1c\93>U\12ÙQÈ®\90@Îdc]¡2¡§Äb¦Z`¨ÂÂg)\85't\8cBó\96²7É4>=Òt&Æ\81g\e\82\8f¯à,u1×L\9eA\17Kª\85\94£Á\90\ fOâÎÑr(\fLOèdÍT>ôä \14£#'i°d\17u\85W\92>4G\97\1a?:ãß³1\aâ¸\ô*é î\8fÓ\13å æ$\ 1bö¯Q\9eA\v# ÷«\89Ô¿Ìe6\8fßþ´:gé9r\8eñõ\9dDç\11\17a\99\91²\12\9dÄtÅúJ¾Z\87ö\93èGz\8dÿW(\14
++\85B¡P(\14
++\85â À\8cÿ\7fÙ®£\9f\9c[:îþdú¶O]óK÷6ÿ®sãÑ©\8b'ç?qÊ\9bÛy\17òxtÅàÓ>ä\83oýª\9cÏÆ\8eG7-\99\¿øýG|]tû\8c)ãÑîAßî¨\1f\9f¾VÎ[\87z~8ø\9c/9w¥Ä\1dÄèqþp©çZöç\9bGþ7ϧÄë/\91zè»ÿöùo\15\9d¿\9cs\18\8fn\90zÖãXù£[N\13þB\17ýx´Sê\99Ëk85Ú%ã¢\1füÒéûEëÌZ\1fZ\Á\96A3ð\92G¯¬,\99æ?¿~\88+8?_Ô´ê|ìñ\ 1\9f\1dêÜ2½ò¶¦·g}\8bGh\9as¿\8aã\9c/_¸§\97Õæ[ÿ9)û\14\8e]\7fuÖ¿·²\14\9boýÖÁ\9e\7f¹ü¦Q\18]×:ûá0g榮Å\97|\8f9عx2?óµøÎ\92²_ÀqÖÏ\9eÑ4
++s-\ 6`ÇPvûÊõ-\16£ÚÔb\1cÂ`\97\8f<tù»[YèÚ\86§\1e:iï\91¿Þ"ú\8eÎÄØâ\18\9a\96âÂ\1aw\ef\95Í\8d\7fxlX{/\1f²õ\89VV»nÞ¦á¾\rÓÏ|±iãùØÊ®\97û\18˲ñ®\rMã.\94®'xÕ`\97#\8eÝô/M7Ï÷9ºLêÜ\86ãò\e7?×ã-z?o\9f\1571WÿîêÃfÊæÆT¼<Øó\8dGnÙ-eÕu\9d¾\93\17ÏÜwëÛzYî:\8bRçÂ\1aww.\99\94Í\8fŸn¨óôé\9b\ fme%7»<9ØEuì\14
++\85B¡ø¿á#Û¶QzÎFüÆ»\10Ã\1c½¸h³\93k
++Ý\9dÆÄZK¬\94\ 3+ÔnóÔN«\f}Ÿ\1a²õ>T
++9\8a?\91b`!¸D\99=ò\83¡\19:\91CuÔ\8d³&SÇ\ 6O\9fhÁ{ \8f\ eïËâ'4\14\15\v\94R¬\ 1¯
++ÙÆ\R\8d\91îN¶P=Õ\0ñ\12]\8aC\81±¸\9b¬cì\9b¡Ã\99zmÂJV$èS|ËøwN\14\89Ki¶Æ%½½¢Gf9\1e\î,U\19«+¢\13W)ú\86&èÔÍ\13=3ÆÑ&Ñ\81˳m\16"õþJ¢÷\97ÚvyÐ@ÌTõ\13ÙK2¢ÑÖ\véh6.¶àê\ 1´Ô\9c\bG\9a\80¾:\93(\9b\99c;oè#Æ48Ì\85§\81E\99\19ó\10\1c\feS@\97Ñ *£?Þ\ 5\ e\94ê\81tSS\ 4\11íb\94\14\ 2¤\8f\1e\17\15ô¸Ö\84\92"uEZ\87j ^\14á*%\ 4³\86B\9f\11C³\9cjÌb\1f³©µùÖ½\9fè\ fÎñ\15ÿ¿â\9d\13\1d@\83áÂ\ 48ï&q s´,)ÉX±\9a)%\19MÂL\99L Ä\9a(*I\1dGl\ eö!\ 4\9e¡þc¬X\9c\18\ 3VvÆ|[ê&R*\8fî{¬|\860\94A\vÕR_\95sPa±Úµ\11K*\12IÀ ²t\9fó\ 33\89¶#Z\88\94Σ\ 2&Ö1µE\ 3wO¡F$ç9FöÆq\8fbsEF\ 1P½Ô9Z.bJjÁ¶¥¥\ 3\85=±\1f,eçÑ\rì`\8a[b¦²u-\8e\ 2K\ 4\93ÄÐ\ fØ\17\95\99®\11ê\19\ 4\82Í\8f\87\82(\9e\16\83\ 5\8dÍ\18at\8aEbè\12S!\91\19Øìø@`L\ 4¦Bî¯>\ 5Ñ£u9«ÿ_¡P(\14
++\85B¡P(\14\8a\9f~è÷¿B¡P(\14
++\85B¡P(\14\a\ 3fâÿ\7fcÏö·Í-\9dðóý|/oqíBå P(\14
++\85B¡P(\14
++\85â5\bÉ\ 5"ߢ·Õx\13r}å÷¿»óø?\99{Ïxtß\907¼zß9'uþ\7f;\1eí\90<äÏàØùð²ÿ\94\1cå\9cÂxt½ä 3\ fþþÓWý\8fä\12û\14Ç£÷\ ez\ 1+ï»ùL9\1f"ο0ä\1eïÙ·\òö\83Ïi<Z#õ_Æ6\9e}Ó=r¾\842\1eݳ\1f\1e\81\9dC?ß¹ïc\92ó\9e¢c?\87ë_ÿá·|Mx\ 1ª1ã\9eÏÞô\b.xTô\b²¯ãÑ
++¹\9eyÙËO:ü'Â\v`¬\99ð\ eð\8f\13/^-ý¬Áå©Ñí\aà\ 4¸iÈÃßèÏ\7f¢\95å\9eO¿ì°IÙ²\15½\8cyBRv«ÜGN\84K¿ãL+K®åqß=ä\9bo\9d^ë[\8e~êZ\ 3'Ë}\87ãØüÔÑ'ôüý\9eS¾}éÄÎ\97¿ùâ==\7f¿ß·f¦\9fïXßúÂ|¦E3¹álôÌ«În9ó&ÛvßÞa®_:òܧ\9b&\82\ f-Oý¡%\93ö®ø\83ó¾Ûµ\rº]Ì\ 1t\ f\16Ë}äqøý¿ÝÒÚs©´1\1c7äÓÏç\v¸o\98çó¯\9dh0LrûW\f¶þÉñ[\1en|\ 1¡ë:\3Øe>'À\ 3\ 3ÏÀ\95Çoþׯ \90;WÂeRv<û¹äì\96¿\9fciu¾nÐÌxñs\e\9fê\9c\0¡õs÷¬<ü\15·µü}ë\9b=w\rí=ú\85+\9fhe>¶±ß9Øå®·\7flºåïûÔú¹a\18\83æï+\14
++\85B¡x\r~\83xò\14¤h\13_wM)1Æ\90c\8aäe¯6\14\1flÂG\8a\v¶äÂ\ 4úl]p¶ÔY\9cè\vñ\b\fÜö¾t\9e÷\10êpÎW\87wÌÔ9ê]\8d\91Iø¹\16\83WÝê:·@NÅw>v¦gÛÉy\\83wW\97\q>\17þ\ 35I\ e»7Îe¼\9c\v/¾ÐÓ;fÄ\a\8f¶bÌÕ\16\9eMLÈÆ8\85´ 9_3n\8bµâZ\92\ e\90M?y\1f\9dq%Ø>\1et-Á>\89\1c\v9\bÛ\7fë;é È'a0òa|\8d\1fÀ\85,<òL\947!\9a\98\12Þ.aÇÐÇ!]\8aL\85/\1c<FØíQBL.Å\9cÙ{oûõ\ eS%¼\ 3ä\b\9bð\ eÌáÓG÷cvd¶'k\ 2Æ\9a2fË\98ì\9cÁàÉX`J¶Ù`ÒM\b4X\f\1ctÍhV\12ø\85ó ²«ø´\8c\11FL\86ùñ\99Ôú)%[¨\90àb\89ò\r\8bY¢à\fÕ\8c[±>\8a#Q@!ç\ 5Ú\8c¥\18,\1fCZ\ 3ïÐ_Ë\84þHÂ\7f´B
++\ 2ÔZ1Å\99kE¨Ê\1cÖaÂ'OHäùwè4\95\17`¨bHwG\8a-_a\v\12(\90ã\1f3\15ðý×òô\83¡\8dJ Ã?ZÉø\e\9d6\aà\9d°\86\v?áýÝdÉÚï|\aûå¼H9²\8d\b\eb!\90\9c\81ËÐ\89 \ 2¾\fñ\ 1\81¿¨\1dakÄ|8\8bÕ\12ð\89\83\86*-\9eÈÝA¥\83@ê\ 1ëªáäkü¿B¡P(\14
++\85B¡P(\14\a\afüÿ\9fÿò)wÌ-}C÷eÒ1yí1ïûmñ\9f\17·h<zl\8açé÷^ñÕ?üPã¦\ fi<º{à__½ïð\8b\9a/¹ú\89_\9dׯþÇ¥\8f5_*ýöÏÐݹ@\ÀºAWþØ\97Þþ\ 3ñÿ[\9bÇ£\9drýüx\81eòÿ1Îa?§W½(ç«ôGúÏÀ\86U/¼_üÂ)8\9c¿ZêY\83ã\98¯ýò}âÿ·5Oô\b$^à©_ü'9_\rú³I|³sõ\ 2Æ£{\86ñ®Üg6ÊùdòÔh÷xRϲ[.l<ûÆt_üó\87Llú¿ì]mÐ\9dEyÎÛ¡õ¼ù \14ã\a-£|\95\ 4\13âî³ßU0ãÄ\1a\99ðÙ\10\ 2$\10KR"¼\10¡©fü\982#S\19¥\88tøÁ´LaZ£\88¡¨ (Ö\19[¨ò\83\16\90\ fc\9a\92ø\1a, 4´\85&\8c½®Ý}ö=9Ï9oÿ\18\8dfï\993\90gßó<»÷Þ»ç¹÷¾ïëzïäÓ\7f\95Ú\1a\93âß«K\9c÷«÷\0\99Ú¬M±ãÍñ{\8c·?yç% \83¿Q&Å\80\8f8¼ÕïúG·\7f3µY\93âí\8f\8e\97¾tr\rf\97þo\9cüd®ïhlêçg\v\aC\97Ó`E\89·ß\7fûÅ\ f§ùor<zyiëò\ fl(±\7fñg\17ý µ\85&=ïÆ8¾UøÜò\89\95m\9bK1õ\rÑ\1enÂçîׯß\91y\vòót±Ñ\r?~ׯ¥6\93ó\ 2\8e\98ÕÎÛÛü\ 5Ûr¾D\93r\14ÖÅ~þ%>g\9fzE\1a\9fs9öÿõ¨³á\\b)7\8551\97?·ýºØÆã¼Øöà¬ö{]\9e\84\97ÆÛ¹}åÄ<·Aå<\84[\ foÛönÙ\90ó,\94NÏ[7ÞÚö©'|>çY4ý|\0ìËùÏ¿-ñ$HÓ$[Ú]¸5Î}F}6åDÈ<\ fëúr)\16Ý\97Ú´J÷Ü<M~ƾ2\86n~ƾ2ïç\9f0±=åYÈl/»g¶mÝ\1c\8c\15s§ú2ÈõðÆrÏ»f\úHjóY\9f«\8b]wy ^\18oïÙå\81XQÆwõW&R^\87v"Íû1%¿fÍä²;3×\83Ïß+¹0\9bî[\99ò:È\9e\eÛÞ>»]+\1f\9a¿&éÅ\89\9c+2Å\ 3±fò¤ù©Me^\86ÃÊ\9a^qÜ9;\13×\83\92Y\9f3Ûç=ñ\86\v\9eÍmy\f\9bf¶÷<còÁϧ\\11\91Ç>oÎTÛ`\8eÉÒñöy\7f$ß¹3å\91DXç\92'3\9c?ÂÏiíì\8c\1f½ö¶\94c"TÍ1©ò³\90\14¯ó\8d\vÖ3<Ø0"ä¬\13¾ \ 2ÿtR\aÇ͹qä\95\86©G4så\15I¬SìkDLO\121ú\0ÇêFq]·øã¸\80Ë\fÑ4Z\18\8d>à7\ 1cm\ 4Ã\9eXbFâ9x¼'4<\ 6+M
++Ü5º1ì²Á\90\15£kÄ\86ǦÚ\98\1c\v\1c\8e³ÞÆí\18\ fÓ\8dpÄn·9ÆÔÏÑÝÆ;y\v<K`\13\94\91~\9cÄ0ñûZ\128\9e`Þ\84ê\96\8cíññ\ 4"ǯE\88\0àÁ:'\\84R·6"R3vf1\1e¨\96\7fO\9cl¨\1fºôÍÿËk\8d©w¤Í\16\ftânÎ;ô\1fê·Þ3.\86çè\10"\7fµ\8c\98ådäfpVzèI M8l\8b)äh0Nü\ø¦/\86\89þò\99\8d\88}À\17¥od\9fn`Mx¬Ñ\9aLí^ãë\84Ü'\1e?&!(k\19¤´Úi«e0\f\9c*A¤tibf!r»ò\12/·\1e\8aò\81èî\9a â0j\15\88"\8fßn¯9/\96\ 6ë,.9\ 3ýB÷\82\93NÆsm` \ 1ÿ\14d
++\17°\ 1)\f~\15q\11zwP\19údå~qïá¸ø\r^wü\ 1â\g`V\93`\0Ó£H<À\1fÃ\18g\96¤2HïD¿\84ØôÉöC\8c7óÿ\89åNê&Ú^Yó\98\19Ë{:\12\ 3\98¬\8fƹhkVYÚ\1aÔ\99îeÉ\19\80î\92R\1e{\19\96²\88D\rFAõ\9cy®\86@k&\9f\ 3\94\8eÿ\8f±m"º;ì<\18S\\10ij·\92`ò\ e¯Û\9e} Q9ã¼\ eP\0¹$\1c\\1cg\88:ÏPµs\8cìcµ\bZ\8d\86fdLüMû\84\8a¶Á^aô.Ú\8bãÔ Ï }\1ek\87k \9f{^i\ f\e\81ÞñjéÓ}\15ó$\f{\8e¡´9\e\ 1³ÈÅM¤ý!y\ 49Ï\82\89\1a\11°_ê´W8\11ìtxøX\17x sØ\ 24£ßØ \14_\80aö\8c\87\93\9c\ 1\1aÁô)¦\95ðÆ|Åoø\e¤\13n_X\ 4è.¦Ga_Áï
++M\126ÊȺðN\93f\0\9do8H¦'pÿÃÒÇ\9cáÑ\ eSìµkB\9cZÙ\84¾ýÍ£OxB\eó\8f[\97"¥\ 4öbX\94\8c )Ð\82&Å\ 6\8c\81;(\93²ñ8ô\ fû\1a&Öc±
++ر\87}3×\99y\ 4\81$ èI\b\;\999\ 2\e^̦A¯qCîØô\1f°\8d\ 6\ f+e~\ 6\7f#hëd\18À®\13ó´kü¿J\95*UªT©R¥J\95*UªT9\14d*þ\7fÓM·?2Øú\9a\1c+c,éÚ\85O\9f\91âö\16×SÍq7/`m©û^üêâWS<2èÞØË¥\ 6û\v\ f\1d\15ëðucT/ÇÆºuþ\87\95\98àþõüKKóCk\16üWz®\r½±Uåþû×ùo.1÷¼òÖ\17c<_4a|lF¹ÿÄä[¾\98â×2ó½ß\18Çð\ e|V~áâgr[H1²£K^½w_¹;µ¥³õñ±Íñ{\8c+~øØÕ\8fä\18u\e\ 3,qýG~wU\8aý:\9dcÆ\8b¦©Í\9f\88m\9fÆç¬ÇÎ9,ë3ÇT\97\94¹Y=yÙüÌY\9fëö\97\96\98ø\85»>ñöÔÖÆM\1f\8e}\19Îg\7fÖ4\9cõ½Ø\17æ\18¬Ú¾¢mËzY\e¿7\9cÏ~ÃÜ©{\ eòÙ/+\18\ 27\7fsé3\99Ï>ÖtU©R¥J\95*UªT©r°JÌ/ÒR2·\b¯çÞËà øÄÜ\ 1Éx¬W\fi\e)½hkñ2J9#È\11Ï8w°ægÁï®=S;\ 4+ѽ \9aQ{æ\ 40O\88%ã\12=\83\ 3Ä|\16\85\e1í\81\80\ 2,T׺±\r\93]LãØWÏ¿h\98\8f \85s\92¸\r\8aù\1f¾±A±Ö^µ±nã´Co\82íÏGÉ8\ 51¬Ýà\9d^1ÖÍ\14*gR®\84v\8cþGÿá\17\81#\10\84éÏ\9f . \9b\8c³K\11ó\91c\8e\87\12¶ñ"´s6¢nß\v'ÐaèÍ2· åE\ eäU¤\1c7æ6H¦\19hL\82dE¾j\ú\7f\vÃax\1eO×D!P1]Æ3\83\ 3ÿ\92ÊÇL'\·\9a)9²an\10\ 6\ 6\95`¾ñ'\ 6Ú¡Ò-,ªi\ 2\93¨<'V3óLP³P\ e\9eÂ\8c"Ìe\8dÿW©R¥J\95*UªT©R¥J\95*\87\86Tÿ¿J\95*UªT©R¥J\95*UªT9\14d*ÿ\7fó)[\8e\1fl}ÍØ\85ßîú#ô\99 ÷Iãú£#p\ 1ßXpþ\16<°ð¼\98Ën\88Û÷þ>\1eÁ~\ÀÝåþûã\ 2¾Pòù\97/9ê\81\84EÕ4½±k"¦Y\17/pGÁô\9ayö\9b¿\15¯;!{\19·ª\8b\v\98rü\89\8dvì«g,\8d<\82²!þ_áÂÛ¿\8e`×\9cv¼'¿xäÞXG\80\ eõ2ÿ_\97/ð\88x\9f\vØÏ½[N\8f×\e£ÆÇ>Sòë¯\9c\1cW\99/0sûm\8ecc\8dÀ\9f|)a\88I(#a¤m\8aÏ!þÖ\1f<³)ãôE\98!´}¤ô¹\8bï7£Ô+\uôÆ\1få6\9fê\0¶\95¼ü\8d\93?\99\95Ú|Æ\13¼µäóo¿ûì\1f§:\akR?'JíÇÆ\9d\eç¦9¶!õss¹ç\15\93\ fÝ\930ü\æ\ 4ìÅñ\rÇ÷{!êw8¾ßuÅÖÖï>üã oÏ6i|/\17ܼM[/J:ó.ã\99í+Ü\92ݺ\8a\9bË÷ºX|ÿ0\r¦Þ¶8\86áõ\18_/zYóô\99\9fÎx{"Õ@\[æ¨\8b\7fw]±¡ÕæÊç3þ]Öç½e\1dt9\bo\8egwÃë8ÖÎjÇþÑ».ÚÙbÕ¥ï=TôÒå'L|\88Ãñèúqå\ 61ç\1e\9c;Õ6\889·«\8fópéqy-g\e\TÖÕi»\9e\7fMÆ£3iì·\97¾t±ê\1e*vÝŪÛ]ù\10«T©Rå\97T~\ 1yÌ\a
++w\90opøi2^\12.\90hb3Zìµæ@sÈ\1dtùÆ-6Ú \ fyÄ\bäÔx"\9b\89 =߯b\9e¸\8eïÇ\82 v!dÝ\8dâã\eÅc7
++ÃoT>w¼\17¬ND CrÄ¥ë0\v«h(\a\10\e\93p\8a\8eXv\11áT['\r+\9c\8dá\94ÑÒ\ 3{Ð\10Ò\8dTqè#¬\98\88\88\#Â8\82Éñí\8a³\11_\96X[ \89\10§¬9XqèbÝ\ 3Gd\8d\1eÀ(å\18q7®&M\9d:(¢\9fçq\18f`\7fÞ½\82¥\ 4N\10\16A\\8f\ 1\ 6\1d1OMÂf$#^CàÖ¼fH%\b[Ãþ\81¯ZR)\12ö\ f\17°<\1a\82\ 1²Ô\0S«5¯À\88¡\ 1è\12JÄì8\15°h±fØ\1d.#Ì\9eU± \996È9G'[.ÅA~Å\918¬#ðe1Dì9X®m}Á\0Nc\7f\1dÆP.Â~ÿ\7fù\86\ f\1e9¸\ f÷Æ>\12ý\88ÏÑ¿ýï\85Ë\12\1e½Ô½\'Î÷ïc/;éåäËIÕÖÿ'?ÿMë\92?\16Boì\969íß\1f\7fÕ¢W³\7f\0ÿüèâ\17}ì´ßz \9f/À\ f_Rþ~\7füÿ\97\8aÿ¼h\8f\8e¸\0\1a&Ù\e{°`sÿÝ\15\vãý\r¶\81^Æ9¿\81ã{ê\98ÿ\8d8\ 2\96~þDéçÉ{>ød¼î\1aøíûFà\b¬-ÏÝ\1fçÿ\84Øÿëèó}þìïe,\7fÙôùgÃqþ\97\95çìÝÚò\ 3¸ì\ f\1eVü\9e«Oܸ3\9d\11àG ù\913Ûó\92K¶¼5\9d\11\b\99|©^©¥?ÿo&\9eNmMö#\17Í\19}~°äðÑç\a/ÌmÏUö\9eröS©\r{F\1a_Ña\17Cá¬Â£Ðå\aH\ö\1fÇç\89/¯ø÷ýÏ\16\16Ì\1e}¶°n\1a^\81\89YE×Ï-¼%Ù\9dÊø\ 3:Þó/è\ f>»ðã [\1f»hêg¹çGæ^þ½ìÏûÔ¶ª`6¼aþ¥ Ó\9d\eul{b\1a\9f}ë4\98õwD}¾\93þõs«ÿ6aÏc!ô\9de$<\87Ã\13N\ 2ATÓ<\14|ù\9fÎ^9\99ñ\1c²ï½¹p8¬\99\9cø\òõ±ãŶ÷Ï\19}\ e0\85u\7fÁä\99·¥s\80&ãàß\1eíl\vÏ9¶ß\7fWjsyþVÍjm°\8b\ 3q]Y·ßøÄi»3\9e\83Mmwô\9d\1f\ù©Ô\16òZ9¡èú\9b¿ó\81Éäϧó\9f*UªT©ò+ëë+b\9eÃÛ\89î\áÂ\9eÂéÇ\8f\8b¦3B\8en¼\93ìZ³B:¾¤\93ì\9a¯æ\86n*~\12 ´N7\f~=^Ä\1c\99´\ 5üP:¾DL'c6î\ 6\9f\f\1e;½\16i\ráïé¨JAþmKÏ%Ñ,Hü\0³ Xk\r×Ý\a\16\16ã\17ËëXFÜÐÉ¡\83\8e·\10W°î3öû°zb¼Ý\13\8fÜ·ïëÒ
++\8b\97·\80\17*8¬\9e\9cöx/\11"\82ß\e¢Ãë\bí\1eK\9fñTôKh¸6xÓ¦ÿ\8c§ò(\ 4n¹±h\87\a\aç(2JÀ!Çp<ÝU¼ÈÁ\aa=ºSð2à<ÐEµFD
++xþYc8\14£X\8e\rßOFUQ\ 5xQ\80«fUÇwiø\8a\8b~Ë\bÚ\ fÝA¥ðúèÐC\15x1\86O"0c\92¾%\1c\19øp\8a(ì\fùñT\ 5\8e#\(\vç7\10îßzâdzÜ\9bS\86\9f}ζ\86¾1\11tS=þ\15\88\15¯Èp\ 1[À}á£iRHð¼'\9fßX\98\87ç©Á´ç äJÇS¬ rýÔù\ 3º`Y¹\ f£\82¿Æ\17YQ|(#àÀ\8d:·\18ÀyW\1crôA\e_Î;2/À\8ciÏ\83èN\87àúÏ à%³öݹþk\89\97\80\94\12\1acw\f\89H-xÖ\82i\83=Ñ#Æ\94CµðQ=Cl\82§IM,½§~¥2\86\1elÃ32\9e\8bب,."²(Àq\92<äR<C`ý|C\8dK\ 2\ e@m\8e\98þx\14¼÷f\80k$ò¬4\8eÜ\14AEî±¶ÏZð\1c\8a°úðÃ\15\ fâÈQ\81\ 5+èO\13"\ 16m\95ÑTM Ä\ 1fH\12¯\9fN\11Wu\13H¡\ 2ß?ö_Â6°2\ 3T\80UÌ{\19ª\81L\14\8aG\85"\9fF°Æ\9fT\ 1\92¬\1c\ 6\ f\98â\1fé÷\8dñ\18\93ôÆ\ 3Gøõ\8dÏ\98ýé<"ê"Â\18ÈÈÅ\82í#\1eÁ@ßx\b B<\8fì4<o\19ÈÙ\10\89\ 6\fW_$oà\ 2G\ 3 dÜ]à)\90¼\82\87,ÄoÀjô<G3x¸#Q\ 1mD³Ï<\ròX»xr<\13!\ 1\ e6#\9e¼ñpOÅõ\83Õ%Ð/øÇMbÌ@÷\b\b\ 1EòÐÌrjx=\9d\ 5A\14\91\10\9c÷®æÿW©R¥J\95*UªT©R¥J\95*\87\82LÅÿ×ÿá{:ùÿ½±y1îØÍ·?"Æëþ\1c\9f\85/½ûñ\18?×\8dmóü»ñö\1d%¾÷ô\85oÞ\13ãêÎéÞØ·K¬ôÒÓ\7fû»)\7f^ÉÞØ¶\12+Ü?Þ¾<ÆH\99'~¶\9cØ\95bã>¤xæ®\92·Ý\8dq§¼ôá1ç\87J\1fþþ¸\8b\1fK1ç&Ç,ß>\r_ý\86\18\a\1dÎ\1fÿh¹ç}_Ì\\0ä@\8dm«Kl|Í\89\17¤x;Ï»fLÅþù¼Ç¿6ñý\14«6&År·\96Ú\8aUÿráÂ\14«\969v<£Ô\a\fá\81/µ\ e]\1eø\ 5ñygâ³gËÚݹ-Ç\95×\95¸òÅ\93§}2µù\9c_~{ÉÛ^µëä7çº\8d\1cû_ZrÏ»ùåó¦á\10\98QbÇ]¾ó\97K\rÀ`\9ex\95*UªT©R¥ÊÏ[¦É;'+z(qÛ\83\93\ 3~Xþô\81¬I8ØbÁ\8cj7Ò72ÇÝ\ fF>y\8e\ 2z\13MÌS\90\82E\ 4ÂZçÚz\br\ e¤\9cy\15sâ¡@Óæ.H\17ãôV+åÙ\15Ë\1c\ 6ò\a(\8d.xü\87!fÁÀ²\v
++\93à\14\9e\ 1\ 5{*ÜÆÉÇà`\9aP"ëf \91&åF`\18\9e¥8NéÀç\9b\801ú\98K\80å `\89\8d#\ 2¿¦.E,×0ø¾\97\ 10EÜI9é\98Ó.\8cð1eE*fù\b\98\92fi\ 6+$h$Ê
++\1a¤7\9eÚVL~an\8faj\a=$¨\b³BF\ 5¦ÐCE¸½òm.È\90¼\8dþZ\ e¦óHÃ\12"\1dãýC¹\0`\96\166\8a\ 5ÆÄ\12¬\v§u )+¯èOy\r](ï\95\8d\897ÌïPX{>XÖ^\90\99\8dýÅ8\94\99q°äoÔø\7f\95*UªT©R¥J\95*UªT©r(ÈTüÿ\967ݹe°µ76£Ô\9b\9fð?='ÅÍ\89\9fwt\89\8b_³ôMßÍñXÑ\e{¶Ä¯\apøâõ/á³àÅ\87ÿ'Öí\v\87û,*ø\7fÇ}ç\93ßOõüÚãz|îûñùÔs¯ýv¼îy=a¥uñü\96Åë\8c©Ï~÷ë¾\13ëÿ\ 5q\ 4u\89\99/ú§_\8f\18iÖ\vÝ\e[R0ÉÞ²çÆ\18ó÷\9ax\ 1ûbì\9auÖ\ f>\7fÜ+ñz°\18×\86\118\7fkKÌú\9d\97,\8ey\r,.\eÏ8\88±¦~K[ß/r=ú¦ø\8cá\98\ 1×\8e·ßëâ\ 2LÕko\9c¼â¶\ß\9fãÿ×\8f·ý~òÎK~\92ÚTÆò»c|ê{\838\7fg\15½uëôW\15L\85sn~ßÎÜ\16RÛT=ú\87N]÷\1f¹N?×\95/\88ýä ×ï¸bK®Ó\ f©\9f\8b¢Ý\fÇ\0¼#Îù]ø¬}ä~\93ò)¬Í\98\b\ 5\8fpÅo\9c\95p\f]\bI\9f"ÚÖp\fÀ\84\83Ǽ\88Ë\9fÛ~]jó&å"\3»ý^\17\ 3p[ÑÙe\933\13Nc°MúÞËãí÷önÙ\90jñ\85Ò©/·Ìlí¿\9b¿\91jñ\87c\an(óÞÅ!¸½<ï£ß\98HÏk¬OÏÛWp÷.\9e\~jÆ!ðùyãm_®þÊDÂ\ eÔ.×÷/-ö¿zò²ù)\7fCå\1c\94Å\96ºX\ 3×\14½t±\ 6vÌn\9fwÞÇ®üAjó2ÙIJip\bæM\83Gxm\9c÷á8\ 4;Æ[\9bøÍc&v¤|\91&¯±\13¦Ã*\1comâô§¿\9a±
++EÎÍéM\83_0of«\97A<Â*UªT\19%}uÁ\8aÁAº0\ eSbév\96\ 5ÍM\13ëÞ\85qN\ 5nò¬Ù´¾pm\8fª_&,l¬uÇk\89\97¶¯öv8ÿ¶\13Áæg\vÝ\bG¼0Ûbq\8dÀ\9búyst\ fÆå\1aþ5~\87¡%¢\815.è ø\a\8dg\81¼\8c°>\92Ág'\9cbÁ¼eå{\ 4éj¬Ó\81\95å\r^è\b`Çðº³x'Ó¶at\98\81]\ eG\11£)à~^1p\r\1dp¤\86±3tY\12GÌi\82\99Yí\18ⳬ]g}-£®è}Ãg\1aß\14]â\8fYß.d£}\8e¹\1f$õÄ\f\8c+ÂÀ1VÉZ}¾¤M\93Ï@XCt\ 5ê×)ç¶¿\96Z\89\10úð\ fØ\15¦\ 4\14îô\11\98}\ 5çí\0áéñ\ fÑcâ6ÆØ8\ 6\1a³\ 2\9cÔ!âÛq Cêïcp¾o|N\11´N©\84-\80I\ f\\80°\856¯aD]?L\87\1d\93\8d\99qÐb2b\95\11W\13\93
++µC«XOq\8fÀÒ\14\9a!~\83\11\1d@\8cÌ_&|\8f\167\90(¢XjÁ[ÂsÀZ\1cïÓxf,Ð\83R\1c#&Á2ËÅc7á&\8c Æ\9fBUL%p.ö\82\9b\9f\801J"'`úa«Øu\98|ÂásÁcCÇ.\80\1d\ 5Ã
++4\ 3A-`\8b\94q\ 3\93¼\e3:\98\82\80÷mMÀ\r\r\95Y&N\18ìHX\11\11+q\10\v±Æÿ«T©R¥J\95*UªT©R¥J\95C@ªÿ_¥J\95*UªT©R¥J\95*Uª\1c
++2\95ÿÿ\81¯\8f¿w°µ?\7f~Á\ 3\vÏKyÞäá{t\8aÏï\9cùÿ\99yþloì\89x\9e\90øÿæMyÓAõÆvÇ\9c[æø.~uñ«9¿Y÷2.\1fï¿ø\9fçnË8rÌÿ/\hoÝsÿ»r\1enè\8d\1dS°ó\96/9ê\81Ì%Þôr.p\97Gð¥R¿°\7f}Á¼\11u\ 4[GÔ\11<\ƵhÏMëãuoðÜ\89ò÷\13\ f¼î\1fc}\81Tèç£åïOÞó\81ÈUgM#{c·\96\1câ\ 5O%\9eBk\ 3î¿`\ 4\1faª¿`®òâ\97.y*]Wxîg
++×üÉ/\1e¹7Ö)@\11½±^_]C?nâìÒÏÕ÷¬z,×\15ä\9cüÄSȶ¿>þ¢\7fM\98\8aÊ¥¶Må~\e'7~-Õ\15è\\ 3pc¹g\977P\14~È«\8eÞø£Ü\969ß\97\94¶Wæ\\9ex
++\95Ó)\17ü¥R7ÑGX\10ç~8\86c⣼\11\9f»Þv~\1a\83Ñ6å{o-|\8aÝZ\85\153[»üÁ=ïKx\92¶\ fØQ¸)ÕÉ\99oÐ\89\8c©øpÉÿð±\19ßÑ)\91î¹£`TÞýúõ;r[\1eÃ\e\ foíqÝS÷ÍNmÞæ\÷Ø\97yø\þÃù§æ\1a\87\9cϾ¨è¥\8b\19y}©\7fèÖ1ì*ëô÷¯97×*¸Ì\17¹uV»\ 6N=ieâ0\94\11Ú\85ó\1e¿w\1e>\7f,×?\9bñ$E\9aÛ)\8eÏ\8b&oxGnËu\1aSX\9aç\9f0±=Õ#È\ã°¯´ýô\94\89Tã tîç½qìÃù\14\97\95ïí\9byÅ¿¥¶ÐÖ#\94u¶zòÛ÷¥\1a\aÓøn-µHÝú\87\17ú¾7Xÿ0Qö\8c\v\1fÿ²LmΦ¹½7ÚüFÞó¶Ë\7f\92ê\18dÆÄ\Wt½é¾\95?lk\1cÒóRíÀ)ø|tι©VÁ\99\ßñàÜÖ\ 6»õ\ fÛJ_ºx\99½Yκõ\ f»\8bͯ8î\9c\9d\19KS¦¶³¦ÁÙ<¬Øçï=þÔ[Óþ*LÞ'JÍÏ`ýÃøØæRÃqî\rË\7f\9cö_\171\95ªT©òó\91\98o¬\88\82\85½Z;ÙÇaE`5æ\9a\13æÍHéE\9b\97Mî2lí\96i©\19×\v\17ð2ddd\8f#\9b·1Ú\11Þ\8c|RXòJ\13ü\8c4ØÞyf\8d;¼\14\90\10.óN\93\ 5Ü6NkÖ54¶1%\aÜE6:Â\82\99¾üq¯\99\9dlB`.¾µVÄZ\b#tÄ-k\ÌgÆoo
++\9a\93Óò»õ\7f\86áx\8dÊc\1fU'Ñò\85\1f,|kJ\10\ fM\93\f\ f\9d`®o\90Ö\ 5ê/B¢Aå*\10FÏ3%\9cDv\86Õ\16ä\15ǯ\98\8aõ\ 6\82å\ f0\81\94\ 4m¦jEH¹{ ¹í\e¼ë´s3\8c\8f¼\9fOnD\rJ[g@\88?Â{Ãj¼ Lé÷Ä=d\1eûÿ±÷íÑv\15e\9e÷,q87¹!H\83à4£\10P\12\12°Þ\ fyttÂ\88\ eÆ\ 4!äI¢\ 4\89\92\10t1=Y\88KÖèj\101Ä\19Û\85Kz\86Õf\rA\90Ç2=\8d B;\99\91Ql\83\ 4 \10#\rá\92`x\ 6\14\9a8Î÷ûªv\9dsï9÷þÑ\8a\13Mý\16Gswí]»ê«ª}v\9dï÷ý>$E¤QAÿ\ffµ\89\88Aa^<nJ¯\1c\10\0Dâw\8fµ\10p\86\82æ"8ÙàæÓàE\96f¤¯Eem'ö&ë9*º#u\95\ 6\9eæ_Ìs\eº\84}ô\ 4¹\f§"½a\93#Òp¤\ 6,\88$\9aT\fùGê\90õô'ô\19\11§ \14\8b$Ò¬\ 2»\9c\15ë\94G\80@°Ú8º\14Ñ;\b´ÐM.>Í:\80ôzkðºÖh×iH<R\9fåÀ\88\1c\95MÞy\8b°\ 5¾¥·²hæAú\8fn\16l\8a¥-9ó,f\92±e\a\87LtZ7ë(h\84¨D\f ¥%Coè4}pså¨wôFDCª\91j\91Þr Y\89Ç\91\81ÑiÖa&[(-j¬z<\9b Àè\1dG¸À\124HÔF\9a\83\10ͤ¥mAÒ§{\89@o)\86W\8fÅÂ\8e\10&äñà°\ 4\r¹Éàè?#S[\ 4=XðP ¼ð%\ 6Dq<\b-(D\ 1\91A\fÍ\rzv@ó\1cs4"@\84\96+xù1dUIzÒñ\13\12¡\ 20\vj¦'\91B`\80t\88\95Âk:BG°\82i\18\9b\98\v<\aèU\ eë§hc6±0T-4\ 3YÃqt¼Ø\98ñ+cÄì(g8÷$^Õ<\1e\9fx\18jhØ\9b\91ûÿ\8b\ e9nÒèï\93\ 3[\ 3E\ 3þsÓ\1f\9f\9dÞ\85\1d\1d¿£ä[¿â\1d«çð>\93îØÎñÏiÿ?ï´´Ï\84\9eÿ\8c\89Í;çÑ\1f\9föJÚgIÝÎqòÈ/0å¾\r\vÒ\9e\aqø\aLlÞÝGê\v|yBÿ}þæÉ\9dý¹¹?íó\ 5êç÷Ò^\1d\81\r¥=«?õÎ\17x?¯°¯>´Äÿ¯8çøtÜjªÿ\951öù\9bJ.ô\91ú\ 2§\97}þH\1d\813øü\85Ø\9f¿vã\aØn´ñh·\86&7í\19©#0TÞÇÏ{Tß\92ìIÏ\97\81N®\0ôù¢á\9f\1c\97÷í&í7®/v:ó\94¼ß§ ã»öí\ç¶y×§=½È{Â\81.\8d\81÷MeM\9cö\96ÉÍo\11½ù\15\9e/vX~ÿ'¦å²\1c\87¾\9eï\87ü\ 3\17=D*s*Õ¹»èH¼vÊÜGr\99ɱØãè\ fl\9d8ö\9e>í]ûï¿\8fâûÝF\9f\93ÂÂmYc ïy\8fäþõ×\1f¸|\9c½yg¯5ÿÖ\8f§¶\ 4\91÷Z\a\94ßOzu\ 46L\18{o~e\99o\9f¼éÂ\87r^\ 6\91Ê6\1f4ö>zïAcï\95_)sâÒS.|0ïkóo\16í2\97zãúO.k±7®\7fY\99ç\97\1e·$õ\81\1eb¶kOß\7fÏ{À¤±÷µ[K\1e\8fÞø|3aìýé\9a Íï w¿ý/\87SY\1a÷\8a\8a\8a\8a\8aßËo\fýö\vcÅ\92# \1f\e\19za\86Ú7½ô§|òMNõ¾{ÿü\9bEz¯µiO:j\ fó»þFAíå\98Ø~qδíF .íªètÚ\94\99\98âöGç6\1f\1d[NÛjÚÉ9\ e[¶\82ºE¯ÛØßÓ\9b\1fµ\1dÂï\90@ 3õ\19²ô\12òð´/¡^Ñ\8eÐÓ^XBÛ\1fÁþ\b÷Fx¯6>ß\9b^O-t\r\9a}2²ÎÓþS\8c\11\8f>Ö>\ 1²ït¶³´Ms]ûº\9exý?°Ö\83¤!\97lCê|4\82e\ 2ò^\89¶U´\ f\87"½\87t\80bQzd<×\b\15g\19\ 4Ú§F\8bPqÚ\ 4\1aè¿G´ÈqH´vdz¨Ð«(\10?Ýû[D?½wë£Gþ\ 5üd\13±§¥ÑD,=½öQOiïH»w¤^§Qô4·!° LÄ\80!g\ 2\r\85 F\a\9c©\15\99\8dæJò·íÃ{R¯°zñ+\16M\84ü[\85\8aX\ 2tÌ Ë\ 1u\13ò\14
++¿«Ð\f\8a\1cÈN\93ÃÐê5\10> M(Í\v:\ fÙ*È4\16ª\13ÔpK\aé±\10"æ¤Á\8fi\bKGÚ
++#¡Ô\ 1\r\12²\17M\ eG\87\10ó\8e\8c\b\ 2?\!\e\ 1mæèlh\9b@¹\80V\15Ý\96\96
++~뢩ç\91ÕBQ?»~Óè§\87B\13\ f?\ fÑT\ eÁwýfSÖÀ(\86?F½\91±ò\1dàgWÌ+ì>ðS\v=r+ÿ¿¢¢¢¢¢¢¢¢¢¢¢¢¢bÿ@Çÿ\7fç\86E\eG\97\1eØÚVxæ#ýü\1d\9eèȼ\0[ØWØëÏ\17cðù70\8f\1aÎÀi¯¾ýWì\9f\97\88/8¹\9c?\92?\7fDñû\8eäÏo*¾éi¿=\9ayïH\bÙnÝÌ~Æ\998ÿû\7f~\1fûáe¤ú\87J\1cÁ\e\9f<âGÉ?/l;ç\99\87\7fxèì7ý#÷×\ 69Ø
++ÅïØë\87Oþôþzþ;\v\87¼WÏ?q\1fÀM\98wÌ\92t\1dU\9a|µ\17sûàËüê»\96&N7XX\vmñ\9döúÚ÷\16\9fr/ï~}W\1e\80/dÿ½rÉO½\83Ëæ¢Î\a÷&ÿ¶6\99\93\7fsño/òËv¥2\9bÛy\ 6߯¿o\7fÃäÎýFç\1d\98_b\0z}û'\17}ö\15Ͼù»\99ç¯SßWðuýc\0¶ÁÌ\ 3çÒç×\e/x&qL|æ\82¯çvöÏ;peÉ\ 3ðÀ»æ'[{\93c\06¶\9bùÿág¦_\97|û:ûý×Mj®ëÍ\ 3ð|ásôúöE\89=éåݧØ\bð¨Í\ 1\8b\13o\9b\f\93Êæ\f6¶>{\97Þ\909\ 1*\8dCâ5ôÏ\11pDá\ 4,ZÛp \82Ì1\15¥ìö\81\v\1eH|\81àR;M©ókw/Ou\1aë3\9f½ð\82zùó[ÛMY/\97àú \9d²ÓoÉüù\90ú ¸Îþ|\81e.-\1c>íÖÌ\91ÏÜ\93{ÚÍü|ôÖùOå²<~k¸ÎÅ\98ÛOͺ"\95Ù\1c\ 3pÇ8ù\ 3®\9cÔ¹ßÍÇä2\9fú°y\9cü\ 1»'5m¹öîY»òsÎ'{^Ý\95\93`Ö\94\1c»\94׿óÅÖ\95»PQ16\98ûËy¸C`~£sÈ?\1eá\90ö¬þÜáª:v¿\82ÆìèÁ%b\10à\95
++°ß\152P#\8f´\85SÍ"3ºqA\ 5¸¦<\94Ó\16ô
++!%¼\9f\8aþV hÓ±À<Ôä\1f\82ß\1aK\98¾µmH>¦×#ÏvòWâ6ô\8c-yÔÇà«÷ñ{Q;á6\ 5Q\17\8ck\90Ë\ 5ȵR¥dÚÖ«ä½õ\11\1eHd6ÒÖ
++娱àg;\85óñ\17\f40¦¯ðõðÓ\ e¼\8eºã£¹Ìð\80\87\86\130FÜÁïÊ;@t@\1aÏ\88tö\ 6Ù\1eè\ 5& ¯}\10p\15Zç\1d\19\80¦78\0484·à\ 5´\10B\87\90¿æY\8e9\ f/²@BuO\83GÃ\80\89ø:û®_¯ø\ 3\10¿÷©Ü\b4åA-4 ú#è\ 1^oz\16ÐÌ¢A¦ I]s4|\10Ø7ôÀ\88\880\80p<Æ\b\89îi\96#õ\83á%ê$&\1dO|PBhä\ 2xî0\ 4\88Ð\9dg çåèÇÓ \93\aE\86
++\98\82
++ì
++ï¼ É!اLs Í¢eJK\90\9aA\8d2BÓõìEfýw²\rY <\11\9a\ 1Ô×ü|è\97\ 3Äxæc4¹GÈ\8e¡É\87 ÁX/ñ\0\91C&è%Î\81\81ÞÄ=\8cæ\93ì+ñ3\rïHâVôÀC\82\ 5<\9b©\12ê"\16!?½é\e\86l\8f`\13<¡\15\96\vUMOnxÞé\8aÀÏ\19^O\8eF\11K\10¬\aD]à\85]ѳ\8c¾44^â\105\12,¢\1f8lF\82¶\83à\1a\83H\ 5\9a)\1aË\12ßQ4$ôÍfQS´HW@S
++_=B\97ø\13\vÓÓ\ 32`Ñ\93!D~n\19L<Í+ÆûÎs³\8b#Ôä\98\19Á£ªþÿ\8a\8a\8a\8a\8a\8a\8a\8a\8a\8a\8a\8a\8a\8a?}Ôý\7fEEEEEEEEEEEEEÅþ\80\ eÿÿ\r\17\9f¼`ti»µ\9b¹Êß Ï\94_M?=óÞM»õ|áø\8eÔùû\ÑS_½æÄ\17òqÝní(ç\8fäÿï`~.\ 2\ f¦¾°ù×Ìÿ\17Þuë\b\8eÔóÛ8\86nß@9~ê\14\17`\1dâ\ e^*÷\1d\19Gð
++\1f\1f\1d/0ØÚÐnêyùê\8f&^º°\99¯¿\93Ëúkè//ñ\ 4½\1aú÷\16-·^-¾\8dE+~®\\99ôçeÒ¤\1dl}§\8b¯¿êëI\8bOÉTçõ%þâü-ÛïNe.ë ÝVtº{ùú\as;ûóõW\16\eöêòïèhýß2?Å1\18\99¹Ò7\97±Z9<ãë\99˯»ùÞ¸xõ\13«'g\9d¾¬ë~G»\99+½Úûg\8c£Å\97b:ÀÛ>ë_Íy*kñe{^Û¥··ãï\13_ßÛı¾n¨\19ó\v\9fÙ~e*kî·~\1c}ýËx\1cfÒç:sî#YÃÏ'»\Ì}\806ÞCw®|4ñüM}¿ºèØ-xö¤S³N~Î\1fpIÑâ»lò\85?Ëù0Bw|\a\1a»äñ\ f~©ÑþKý»\8d¯û }öܸlg.Ëú~\97\15NþÒá\19I\v_\99<\ e\97\15m¼Ã\8f» qù!ÌËe\9b\8a\8e|¯öþ=ÜwÄ[\9cyÓ\ 5\89#oD£Ë_bM\1eø«\85Ïe}ý\1cß±©pÝ{ã\ 3¶\95µÒ«Cxy»\99×½Úû_.kvéîCÞ\90ÊB\9e\83×\95¸ ß\ eÍ\eÎeÙ.CÜ\87þ\9aýóËóêÓ·\9fûD£Ù\9fÛÒÑ\98ìÑ6¼¸+\8eáÇ)>À«¬[yíÄNÙ´Ôw¯uºnsÑÞ\øàáw¦x\84¤}LÏ ¶Ù\8dô\99³ý{·§2\9fu+7\97¾÷Æ\1c\RbFªö~ž\fp÷\ 5=°,Ȳ\865ÞúiÂ#<É\831\e¥B¸aæ\9f\82\1c\1dB£¡=\86Æ|?þ{·¶yù»\ fgò\ f)NÕË v\rÞ»\93à\15Ë\b:3Õ§\1d-p\vö2\19C)\ 1r9â\17 ®\ 6\92xà ¥\7f
++å\ 2}\8b#\90\80\eA¯h /\87h\ô ª\eú¢s\9e¾y\85\ 1\97\99Ì\1d\10úÀÂÚà*;2\7f\14`\80Kð`AbWÔVj\ 28ÎTf-è»\96.\bPý\83h\98\80ú\98\8fÁ¹Ä\ fFØ\ 2úÝè\86\81W-!\14\bY0\93b\1es\9b©\13\16\9cTj*sq©%`\ 6\93I\15â\11\92\ el\93\e\0Zò\b\81kÆÍHh\8e\91ý5ìjéuÑPÃÁ\ 2§>)\89H\ 2\ 5\82¿¦ç¸\84P-D³<²SAS\eßB ÕR×t\8a\97 \1e;ô8Ͻ×Gk.å2\18\95>\9e>b\1aÛ\0\1e´\13\90ö\v\1d-¯ÑZ\80cåBh4\ e1û\ 2Â_\1c}\ f ê?Ôä\8dÂ\1cðÈ®¤\11\17AÃì 6\1f\82\ f\b, \90@ÄT\87¹i~\80¬\ fñ>\ 1õz,VZ\19\ eôwgÈ$Ð<\ 4µ\9cº\181©\11ßÂ\13U\18\1a0\e¬dñ3\89Ú\10\15ÃÆ\92\1c?\10ðBA\8d@\12!\88Â٢˨@ ×àOKeB\18\18\97\ 3\9du"©Nz§s\86ììE\9eGôõklÖu\14\98 \ 6\ 1\9e!J\17#\ 2\1c\98ØM\v\10f¦7\18ÏÒ\86\90s£i\a©z<whjÒ·*f\84\88Þ:*\17\8eÎ\8d\1cõ@¶#\13`º!*\84º
++n=\99\19!F\b\13öÐs£#\11§ÑêG\84\ 3\r\ 2=6èY\81\84^\9e\e\1c\116átæúÃ8´Þºó\ e\90u<çÜ¡I\81g£
++%ç\ 5-\1a\ 3±@\9aÌô<4\98¬\86V¹f1J\8e;@¡ÁÕ\18\11\88Ö!ÌBcÔøy\19\1d7\84º\108¾\84\ 6\90¬\11\ 4T\ 51\824f\ e¤tAO7Å\91\15)|\83&7\82\9dh\9c\r-s2ª`ù;\84Bàá\ 2\11BKKÛQÝMþ\83±r? \12\0K\ e\11\1dÒ¨<v\1e©\13D\80¸d>Ï"ü!p\f\0uW\83kï¡,Ií¥'\9fãð\v\8dÙA\9d§!\10¼²hâ Á\89¥o\ 5\f\15\9e\9b
++r\82\ 2ó\ 5+\ 1q-4?\ 5Ù\83¶!!\85Fi\ ejAd\0¢¹è»\ 6ÛD\8b\f+\90Ó\87B¡\12:ü±ê\ 5Vÿ\7fEEEEEEEEEEEEEÅ\9f>êþ¿¢¢¢¢¢¢¢¢¢¢¢¢¢b\7f@\87ÿÿã\8f\9eøõÑ¥\a¶Ö3·\14¤ÕµSßý1æÉ\a5Ðn\1dQø¯#ùÿI\9fÿ\1aúÜû³#_LÜWgÚ9·zâÿ\1füaæ¨Fèü\1fY8Ä#õÿ×\15]ò¡÷\1eöCæó\v\11Ú£¸\1eð×\8fþÍìY|\*:\7f/sg×Òç\8cG\8eúç\94\17\0Çï(\1cÞ{\9f\9dòjÒùw¢á\82÷×ì?´hö÷òü\8f\1dG³ÿê\92³à¢á\9f\1c\97c\0LæïNì\94\rê¬ç\9fy÷¯\94¾.Ñ\8b\12÷\úÌg¿d\9c\18\80½\13:eï[\9bÊ\1aî2\ fÙ\18zþ·ñýþ\ 2}øæÒ]\99Ë\9fs¯¯\19lÚò½õK7g.\7fæ _=Ô\8cU¯fÿå|Ý\17èsÁ/?ÿÍÄå\17ùºÅÜNÄ8|ëÍç?\96øú:\97}®hï_rÛ¹Ã\99¯\1fR[¾\r7ôòî·LjÚÒ«¯?«ä¤\7fõ¨s\9eÊúú&ñà/.1\0½\9cükË\ïåÝ\9fÅ×\81çÿ¡;VÝ\9fʬL×=_ÆoÁ±+·'þ¼Ìsb`\1cný\1a\9egý¹õ{»ôõwÞ\90Ê´Mu.\1fê\94mJ<\7fcr\9e\83\r%\86£\97\93¿¢Äpôòî\a¸-ýy÷C%\86cÑ\8e«NÎÜú\9c#`÷ÄÆ./Þþ±T§ó\99w?c\1cný\96b\97^íý\1dECÿ¬)g¦ë¢\96y=\94çÈìác3\ f^fþüK%Æ¡jèWTTì\8bh¸ÝÒipøCÔAjï 3n\fÓ§AÙTAG\8f\1c×V{ú~B\8c\0r\b@0\1e¬Ó\80(\81\10¡å\1d,ÒÎÓ\7f\90\89çÔ\ 6\16<_Å1q §G(ý#\8c F\rÅwpoñ²ãD\bT\1fÝ\1eIÃ\99W\v"3]áÆÊ90\ 6§_Z0|Aöe\92sà\17©}8Ïy£\ 1>\1ew\9e¾ø\1d¢P ãNC"¡ãOöu\92¾Á \97\1e¨¿AP\a\ 4äÀµÒ°½Q\ 6\19!\90õ\1eÒÝ4*Ñ\91mÀÃ\87ä{P\887¤6\19\10»\95òPg\170\ \97gd¤0\ e\8aé\11Âãôý+A]&ëõ\8d¯ \13h\98\15ñ\r°kìÊ\970Vn\bÉ\99 hÆP\8f\9as_\87Ü\10d\v§´SÆ\89..\7f\13\8bÐËñ¦\815ý4ã÷×\\0¿k\Ð\b\8dw¶/Èê\ 6Q\1e4z\8e\1e\e9¦\8aú A\19§~*\bÝc!ÒS\88Î2dä@\13\15¤qzïIJ\8fÈ\11AÆ¡ûJNb\86H\ 2\9a\96\1aôxÉ:ý´¤\1d="ÙÅ\ 4®Ë"Z\ 1Ñ-\1aáT"¯Ü(,²\17Ð\82ÅÀÒ\rTgîj\91r\15tÅ?`N ÷\9esºhOÏ6Z\bÔ\15¨ñ\v$÷ ÛÒ¬6\98Ä
++á)È»Â\99+\10é$\fâ\8aÈ\ 4i\rÐ\ 37å\86±q¬ø³®X1Ì\ 4\8f¸\ 2Φ`\10EE\9d\8c4\0\92n\1a±ú\14OJ\8fåíè¾\ eOtÚà s\b\1e\89\9c\v\9c-\80&Kì\8aíÙ\aⶪÿ¿¢¢¢¢¢¢¢¢¢¢¢¢¢b\7f@Çÿ\7fè[¿þ\1fF\97¶s®ò^=¿W\8a\8fü³ïÿ×?H\9aSÆ·[Ç\96¼î#ýù§\17½º\19ÿû\8dì\97tA\98vëäâs=á\85C^cÿ¼\96ª\9ds\8fÃÏwü\9es\1fæã^ÇÁÖ¡¥þ^}¾eEÃíµÛ\96>\90ýö¹,ù\rûûíw\14ßç\8a\87/\8dÙ7/\92\8fýô¢cÖë·_Áeð%\7fd×%Ç$\1f»È9É\17\97ëV\ f?71\95\85ì\87]Æ6íï\7f\9f_ü\9b½Zz§\97\9cò½þ÷Ó¹NøS·\7fkîÓ©ÌÙìïç²þþ÷˸\9d_¡ÏÜSW¥¶x\9fsÃ/\9eÜÔÙ«³·¸\8cO¯ÎÞ2.ë¯Q·³K£nù\94¬C\17»}É\18¿½\13Vý"\95Å|ÝK\85DZeãü'Fúµç\14½¼ù;Nx[òO\v\9dôÝ®/~û^ÿô¬®\9cò³ïÊZl"Í\973ºò¿ßtM*\8b>õ}¨h¸Íß~VS\96Çï¨Â\91ØzøÂÝÙw\9dýö¡Ølöð½7e\r·Ü\96ÄÉø\12ʶÝuC£ïV}×\15\15\15\15\15\15\15ÿR\14®\ 3½/²ÏÓjE¯Óеt\ 1\8aaI[/B\ 5O\80w\ 1\aù@Ö.\84\80]PM^÷±´\1aáû´ÒhpJ¢0Ò\83\90ð{ñ×\8eä,ì«\9c\92bcï\852B¨Æ\9f\9dó®Sï¡!(£èÒq´\ e>vË$\ 1jR\14 \ 1@$Ôê\10EÄ0¸Hí·ÊAKÔ±(\1csQ`9P\1c¨\1d
++Ã`\15\94\15éoÇ
++~Ñ;P~ f\18 \95é c
++\91A\1a\16¥\ 4¨%Þ;ºO$»(\b :Ð8D诵:\8a\aÔ|È\ÐÔtÜ?2\15M\1fM;\19é»Îû}ëubì%t\15!«(YI\96\f\13!åj!Í\19Y\rÖ@ê/*\9a$ÑÒm<8\a\18/\85\r!mb´§YI3Éyo<Æ\85îÁ\16±°(\94/cbE\ 4X\15g³X$\88+4wAÕ\8aÊ»Æ>ý¸+\ 3ãè5þ¡ù$\11\83âÀÔ\90el¨»ÖTÿ\7fEEEEEEEEEEEEEÅþ\80\8eÿ\7fñ\15ëÿçèÒvëÊâ\e\9fú\83éç¤ümðç\7f¹Ä<\9f1ó-Éÿ/\95j·6\8fÁ\vØTÎÿæ}où>ó\ 2\94ÕíÖü\92»j×\9e){ø¸Fþ?ÁõÌ£ÏÚáé/óñh\90\17p\f]\80½|\1c±¿\8f/zÛ\9e\94ÏÏ\9b\86w\0\7fì{Î;\91\8f#±Å`kké×y\8fê[r^C\95|þSK\1fzóõí,<\86^®À%]ñÿ£¹\ 2÷\95ë\96ßÿ\89i\99+\10\92_\7ff\89eÿÄ\91«\93\9f]§\\17\83ç¹-ð_¿vÊÜGr¾¾\9cgljÉ\83×ëó_Îeýãñ7\96þ\89õ\vïOe4Jé~|Ý|ú\wÕ¼\9f§²è\93Oürîáô¹ðÉãNÍ|\80&ÿÚäf\1c×ü§\ 5¿ÌññÙ.kÊØ|ú»+S¬¾r!]÷X\19ÏÛ\a.x ùü\9bØò\8b\8b={cà×\97:¿v÷òT§±>õ/iM\fñu»ÿkÎ÷\96s#\9e5©±ç9\9f½èç©,Èd³\9bË\|ù+K\9eL~}²(\97}\87ëì\9f\7fm÷81é\1d-\89\87¯¿ô\17©LÛÔ÷\ 3
++\9fã»W½\7fgÎ\89é\12\8f`ΤN\9d\17]\93Ê"ëSTTTTTTTTT¼þ\18\8fß\80l\8fÊ\1aÛ\95ÓÑ*çèµÙê\18´ÞÇ4>\94¤¦S\9b\ 5Ó\ 6\10.î=t\11\8c\vto&W\98\18¹í\92£Öá\95\16ð\89\aÚËÐ\v*è\eND\v5\ 1/àz\ e\8as+Â+\8dl\80\ 3M>F\vÚ¯\8f\81\9déÍñÂ\1dp\81ó\86\ 6c\9cBÆUä¹sÎ ¾\96ö8]Z\0Hø\98ê\fÆ\82µ@[;\vÁ\81F'\ 2z\ 2ìÓ6dxïlÐÖ5¼\14\e\83\1dÃ\aN;Ù¤!A\ 5¡&4\1c\17\f\ 1ç\1ed\ 6\85S]ù%¡\85\ 11\0ã¤D\1eKé\90Ø\8fÙ\b\ 2®|Ì\rè\7fx/<Ëp8Ǭ\17è|8Oû $ÑD¶Ad D
++î\90ó\1c\ 6\e\ 5\ f"´BrÛ\85\114ÔÂ:G\97\a\1f\8a.\86ò~\8c\·ì×\87}\15\94A¬1 \96tñ\14h[Ì´\1fjKðÕÿ_QQQQQQQQQQQQQñ§\8fºÿ¯¨¨¨¨¨¨¨¨¨¨¨¨¨Ø\1fÐáÿÿô\9eInti»µa\f\1eþºÂ]þüg\8e\7f\89yõÒ\98ÁÖîÂçîÍ\9d\97ò\9dAÃíá[Î{.å«ÓYÃmkáÇ\9f¿eûÝ©ÌeÎö½\85Ã\7fÇ·.Ú\99xîÁ%îüw¸\fâpç?¶êÆÌeÏ÷{\89Ëúçl»¾ð²\17½ð¡T\16²î]âe/¦Ïܧf]\91xàVdí¾Âs?{í\19O§ø\ 6ÏÚ(\15\15\15\15\15\15\15\15\15\15\15\15\15¯\ fÀe×\10bÔ:qå!£\17D£¿§¼WJ\ 6\11\8cL±Ô]yýFç§\84\96£\ 1çß«à¬\rÈkH59äèó.\8a\18C@rSe=\ 20b\84L ´ø´ÑZ\1a\17\95\93Ѱþ\1em"=ÝQG\ 4M\80\87\1f\91\9a\11\995Ys\92.hô÷ ì¨pGÈ1z\1d\11\10Íí\8e\8aÊ\8cmb\0\fÕ÷zÅ\1dTÿ\7fEEEEEEEEEEEEEÅþ\80\8eÿÿÿãó¯\8c.=°5\87\7f\1f\80_þê\83Í\a³\9e\1f\1d?«h¬\9dúî\8f±Þ^P\ 3íì\8f\87nÙ\89{>ùî¤\81§l£ÿw\r}îýÙ\91/²OÝ;Óná|i\eé3õ\85Í¿f~\81\80þßK|_p\ 5V\9cs<ç\1d´Vûvë\9eRÿ\8c=\7f}>\1f\ fVµ[w\94¼r'ìùKöõ;«d»5ÄÇ᯿oÉÔ\97S;]l·V\96\\81o|ò\88\1fq~Á(¨\9dÛÊ}ï}vÊ«é¸\13\83å%ç[¯^àr¾¦\7fnÁ\9b'5×õò\1a\8e-¶íÕ\ 4\WÚwä±\8b~\915\ 1uºnoW\8eÀãoÍù\ 3s¾»ï\94\1czß[¿tsÎ\11\98uÿ.æëúk\ 2.+:\83â\8bç6º\7f*çú+\9ay\9f:zñ\ 39\7f H\9ayC<\1e·Ñ礰p[*s*õ!pÿ \99wá3Û¯L9\ 2\83Mí< ðD\96¼caê\1f\92d$»p\1fþ\v}ÎÞ==ñ/DÔI\83ð²bÏù÷/\9aÎe\92Àe[&5cm\ eX\9cr\ 4RçS[6\14=½s\87×þE*³.ç\86,¶þäM\r\17\84S¡ Î ÍuK\87g¤\1c\81Êä|\8c÷r;¯ Ï\997]ðXÒ \141Õ¹©ÌÇÅÃ\9bÒuÆ\98\9cçpR3Çzs\19^;N.CSÆá°iË\7f\9aÊt.\9bÁeÐCü\9b°"é!Zë\13×å\9eb³E\ fý\9dLeÞ¥ñ[_ì²døÇǤu©²¾ä¬bÏ^=Ä9e=,|ðð;sîĬyxF±Yo\9eÃ]eU×°¢¢¢b_ÆXºZH@¥¥7ô\1adB(úR\865\8f\ 5\92\8bEþ.üÿ\90ïªäßÒ\81\8e\ 6\a%,ÈSC²\8dûã ¦\ 6Ñã\10\91MÌÄÔþ <\1d¥\17Gï¤Vð(6í\87²Y@j18Ú\943.Ò\v\ 2\92¹Q\1dô~è¼\13F!'\1e\7f[«\0\ e*\14Ç¢\86º\9a±øNuÚ\8b\18¨\8b.Àn\9ej´\9aÞ^´\8bHFgèÅ\94\8c Ø\16M\84\7fR#cX¤zèî\91j \93j¼~\94\9ccT§kþMCC-\v¸»\14tS\87\97\18 Ã\87Híõ4XÚÐ\v\98#\ 3Sk1\ e\12Ùö\94Ö\86FËÂÎ\8eZ\e\85\89t.½¤ª@\17(z¯×t>5ÍCÓ-Ð\98Yº PÅ\9c\0\ f\1d\87Ê\9bs:åg3ô\8eç\8cRÎ\8b<Wúi\91\91ytÐH«çµ\16ôBI\r¤ªÐ\1e\8f7V\r}9º%u*ê\10<\r¸ \81¦\ ey©\91ëNÀÁKf²ð\80J$\11ô\82\ 68:L#\9a*\12yýhܼeÁ=\19èzEí¤©D/#Ô¿`©ÿN\90Y\9cã\f\84HE\17¨ý0!^ä¨\11xItt\85e?1uÚ$ß-´äd\fÆy3\9e.\9dÓô\82æÀ¬fß.Õ\9c´òاK\93WÀA+\1c\f\9fç\1a\19&öÉ#8\96O["\8b#uÄ£û\8dö\1e¦"æ\1f5\10-kr7\8e\95÷\11«\98õî"\96\ 3\8d\93¡i\16\fV\19V*\19\9cV~d£ÓÄ0\9e&\ 32íQÕ´ºè<äÌ£Å@#As\96,H\ai¹Ñz¡>Ð\90º\0\13"\1d¡\81¢!b%\1cÄ\ 1i\99Ѭ¢ñA¦C\ 1\85;ê\8a6d/\1d¡i\17}Ä\12wÐHÔôä )C3\9bþPÆÉî\9c\8b\ 2óÑÃëMæàü\88p«c\84,½\ 6\vjR\bdM¬\vê\f+º\97QÆ\92\ 5à3G
++A\1a\84èè\95\99:àñH¡\85\8aÞSwiq\aEÖÅt¥\8a\14=Sh\9dCª\eÙþ\90yQ($T¤\eÐBF{\90\a\90nc¡Ñ\aî\80\82è"\9e2û\98\16dõÿWTTTTTTTTTTTTTì\17èøÿÿlÞ\ 1³F\97\ e¶\1e+1û\vþvåãÉ\7f²\8fó\15.\83Ïñ3\e\97\f§2+ª/¯¢¢¢¢¢¢¢¢¢¢¢¢¢â\ f\væ\98x\17e\b::m<\88â¢á\99¨êÿ¯¨¨¨¨¨¨¨¨¨¨¨¨¨Ø/Ðñÿ\7fñ\8d\1f¿dti»5Ä>þ\ 5ô9þ¾\r\1fâx]cm»5µ+\ eßp¼½±B·[\86\8fÿgúL\7fé½\1cKí\8críÖ\16>\8e á\13^8ä5\8e«×R5Zû\88½þoÇ\9cûÓ\14;¯}\8a?\9eÁ×\80_ðÕw-Mü\ 2¨\1erÙó\\86Øò\8fìºä\98\1c;/R¼ó½å^«\9fX=\99ˬË\9c\85\15|¿¯Ðgî©«v¥xu\9fuÿ\8f-}ê\8dÙ~¬ä\12xñö\8fq^\ 3å<Ç4WTTTTTTTTTTTü© +Î>z!S¼=í§\82\87½`M\ 1HI¨¨¼Ó\90\9f\87®½\8cÆ*-]\90´\9fSØb)\154]g5Bîµ\fJ{g¬\8ePÓ\8fÞ©HûDi\9c\12Á\eo¨\8a\18\14\ 4F4Âúi¯h á!èÖÞh\11 FÁÚ RŤÝ\ 1!\bÈ}AoB
++úO;Ë~î \95BÔ|ô\96Û®\ 3«\15\b-\8c\8fY\8bß
++è8h«\85R^;ÄÙC\1f\84êSPt0Ú: =-ª\fÚ\18\90\8b°\96zHÿB°¿\17\10\17\89t®\962D\ 1=\12j\ f\14%d\93{À\92-¨ÃÜè(\r¤C\84öÔG«é
++ô\r\19\ 1¢¢J\8dÐÊ9Mÿf-\ 3§¨QT³¥\8e(º\98Ìá\9cÔÐõ'\v\ 52\1eÂý\8d·>\98(µ£fÒ1C×ÐH\bH\13xȱØ\18è\1eÂ"í\81\90,pVýÿ\15\15\15\15\15\15\15\15\15\15\15\15\15\15û\ 3:þÿù«\7fóÅÑ¥í¬\8d\9eôüç\9d\96tïµl·æOì\1c?tYÒo\8fºÝj³\9f\1c\17M{õí¿b^\80\94¾Ý
++Ecý\9b÷½åû|\Y:ÿt>\1f\1aã»öLÙÃÇ5ôÿ\97\8dÁ/8\98ï\vÝñ)?üÂ£é¸ íÖó\85G0ôÞÃ~Èy\ 1\84 ã3'vêéÎ\17°¢Ô?2_ÀÖÂ9x|ÑÛ¸=Þ{Ón\9dÌõ\83o0í·G/IÇ#\1d\9f:©éïû^}'ç)\bBÅvÖF@ýÇïYÇ|\81`,ÙaKiçȼ\ 3+\8bÝÞsÞ\89|ßh\94\1fl\1dQ\8e¿|õG\9fHö·&q\196\17\rýÅ\7f?ÿÁTæcâN,+y\0zy\15\eJß/\1a\1eÔ\99W¡\92\1eüm¥Ý«\87W}=ë=d}ýå\93:e«ïLe&&îÄ\1d]×½om*\8b!Õ¹\82Û2\93>kNÊù\ 3´\11IC\7fùA\9dë\9e\9b\98ÊBÖ¿\99Ë\ e§ÏöoÍ}:å2p6Õ\99òF¬£Ïí'-Hý³Æ%\8dùï\14Í\8aKO]þËÌÿÈmÙTl&Ö/¼?å9@F\v\94Måë\ e¥Ï\85O\1ewjâ\86D\9dr \1cUæï]·æ>\ 4é\92].;¨\99\93«6\9fó\8dT¦bºß¬\89ͼéÍ\81°mrsÝG·|ò]i\r±\942\95\1d1ÔØì:sî#©ÌùTg\98ØÌÑ×nÌZÿ\90Êå²³Ê|üÐågç2/S\9d\eøº\95ôYºãß\1e\90ó#dÎÌÌIM;\17<{Ò©9?\82Je\8bË\1aêÍ\9d0³Ø³7wÂcel{s'\1c:Ô)[>\85Ë´\8aéºûº®;#µEÛ\9c\17c\a\97½\87>g=³ø¿ç\9c\vy~®á>ôÏǰ~\1cnÏ@Yó_»{y²\19ÕÌ *ã·t÷!oH¹\13B\9e\13+J®\86E;®:9\97¹Tç\9c²\1e\96\f¯üFâ\v\89\98ú°\82û\ e.Ñ9\9f½èç©,È4¶\9dÜ\1e\v\87O»5ç\Èc\94r®,¦Ïܧf¥¼\18\81\1e\8a\¶®ð¡>ðø·oÍ9\17òüL\-¬\87kï\9eµ+\95\19\9fÚ¹±Üoöð,\1e\a(÷¦²ùCÍ\ú7\83\1fØ\91ʼNíl\97Ü\10g¯=ãé\94\17ƳÎpEEEÅ\1f#à;\14\ 2\19\85\T&Ä¢§\ euq\ 1¿\9d\8a\10wçó¢ëä\19è\9f\v¡Û·\bñn\96¶§\93é\9b\;ú&¤o5z{Õ\92\15½\ 3ÝT\1aH°#\83\12=h\95P\1e\82æ\8e}\9a*Ð\97µ¤úm\bÈR@ÿ\8bª\94\80{0yú\94EF\ 4) àn%²\18x©á(ÔÑ"\9d¹\827\91¾1\1cÝÈBjÝ\eªÝé\10\94×Ð\WPòÏíö\ 1\92ùÐ!7pIJäi\90¬jn\f\12\ 2\bz\13\83ȸ¤f\b2J\bHtÎòú\169 4´Ì¥÷A'\e"!9YÕê\18´æ¼æA[M\9b\ 6úÞ\ fd\aEõ9ªËÂ¥*¬w18²\rB\97a}ëé\eR\92\ 5¢ÑÖHç#|¬h\1e:B\16\84\17\1ai\f\90==jÖC·\126¦÷k\11 \f\8f<íȯ\ 5ÝuäB·\18ä\bqö8^\9evj5û\8d\ 3ª§:rN\ 3I¯í\92ÿ_Áp\ enn\89\17s\9e\ f8\84®\f\94¹`\91ñAÐ(ìkù\1aà¡æyJ#Hvìø«c¤¹C÷O\7fÃêH¦@#@\8dâÜ\aÙ>)\97\ 1î¥à\85\8eT\rû±\aF¬\83|.\f/\9b2ZLÞÑ8i\8cp\93kÃz\1a\89(¡ÿ\1f¤\eQ\87
++4\81hP¡c\8f|÷\1e =xlh¢6çÐ\94Çü¢¹§Ê}á\ 2Çû\9e§\834ÌNs\1e\ eZ³"-
++j\92ö
++É\ 1¨Ø`ì\1c²GXËÇ\13¿À\80\9b@FñôÿÎ9^\93Þ I\89Æî)x?ÐYót\16¤û=µ\98\86\80®UX\80\18s\9aØ\ 29\ 1h¡\90\1d<DüÁ\80À3@`Úi\9e§\ eÙ\e°\9aa\192<MK°-FÙ\93\1e\15\ 69\16¼4´\8eTÚttå\99à\"Þ\19\9aãÎ56×tû¦\8eêÿ¯¨¨¨¨¨¨¨¨¨¨¨¨¨Ø\1fÐñÿOØþâ1£KÛë\8b/õ'³§ÿ_öóhgÛvÉ\17?aîÛþ\81\8f{!ÛÙ\ fÜëç\17|übú\óÌ\9fmâã\ 1~û\8dì\9b:\93>Gÿfö,öÏKåÛÙ÷Ë~ò\ f¿\95ëñQ\88vë\1e®\a>á)§\1dú[ö\93\v)\ 6[[Ëñ^_qâ\ 6ÀaõÀ_-|nd¾õ½ìǺ\91>s¶\7fïöäSó.\95\1dQê|ÓQ+\93?1ªìûëøÐ\17\ eß|L.óÕÿUQQQQQQQQQQ±/\82sÓGCÛ\16p\ f¤U´!s´1
++ZG§\94Vð?£ÐhIE\ 6ÁëZÒQKEʳ\8f>:\a\ 6\ 6¢ÐÙom\947t²\b\11±ÿ6D\ 1O6\9dhe\80Ó\1caý\bÙ\97ʪè´0ÆDºc\ 4§<J\15\fâèAtq\ eÁö\8eê¶\99\7f\90x8t1ÇðÓ&\rÚ\ 3ÒF#\f\18\12\1eÔ\0\eep&Jä¼\97\88Ì÷ \8f8Ú!º¨\83¤\e\19é\85õ\89ICe\96n\19bæ7\b\19\ 55\98\9a«\98\9f\ 2Ý\ 1a<5W8\84õ{\9b¸\ 6\91*ð\ 1Ê\08N\16P2\b\ 1\1aL\90Î\v\ 55ÎS³,õ\ f\82\ 2`N\84\18=È&>\v
++Xt\1fݶV\1aå\ 4\18)Þ{)ÈJÔ Ç\86\0ï$\ 6á¤\b\ e>|o4m¦åhþ µ\9cú
++A\85\80?\9c\1c\8f+¡¢ðÔ\1cÚÅ\ fÔøÿ\8a\8a\8a\8a\8a\8a\8a\8a\8a\8a\8a\8a\8a\8aý\ 3\1dÿÿ)3ï:\7fti»5«øÎ\8fùÄ\8cߤØQ)Û½E\ fÿòYoýQ\8a\r5¢É\17ÐË\17\98Qüù+\7fpØÿâx{©c»\15ÆðóÏ,1«÷>;åÕ\14'ïÄ`ë\80\12k½âáKc\8e]\179>½+\96ü\v9'\80rÉ_?¿ÜG\9f\90ã¾½ÈñÍÇ\16.ç\8eαÝ^\8bÄ\1dHqÑ·ÓgÙ\ 3ß³©ÌåØç#JÌmol·)u>tçÊGS\1c¶µ)þw%\97}\89>s\1e<3ÇasX\19âö»â\94wÞ\90¸
++Ú¦²#Küý\92áiÇq\99×9\1e÷¨\12¿ý¡]\9fh§² r[J\9còü§ßûÖÄU\109\9eú¬q8\ e/\95Xò\87/Ü\9dÊ\9a¶$ý\ 4ôaö¶»nhâ\8d\13oÂ\94>Ì\1eÞ01Í\8dàk®\84\8a\8a\8a\8a\8a\8a\8a\8a\8a}\19M,7¼ÙZxm¤³Zg½x¨\eD\8eåWðÞBF!*xZ\95\8f&ji\ 3ý)\ 2\ 2Ë\ 5\9cÑp\9d{ªD\ 5ã\9c\97\11ÂõQ£\eá5W\ 1Áá\82%ß½\13\1a1æt\96\80\90>ÜËZ \1c\9fê\vP\85\800\ 2Gü\vÚú\b-%|ÖÞ\ 4'\9d3t\19Äê½A,»\87zA ý
++îi\83Ê1öÔ(Iµ*\99ÿ\8e\bêwQhhB4ñÿ}4- .àFùâ\95\ eB\8b@6\80>?dð\93\7fZQS|wì¿Õ\91ºÈÞ\7f/a ²\ 6ÝSiö¼ÓeV9ÚëP\a#ÙTPsµBh{\8ctº\12Þ\90i£ö\1a\11üÆyê tüc\90Ú\19\89\0z2§dé\ 1Ã6"\83âlt\fÁñN\93}¬Ä\b¹FÓÀ #¨oÔh\eÍx¾v§iè=µ\93¬J\7f\83¦À=PÆ\1aÖ,\90
++¾\7fH\0\f\8cÃ\1dЬ\13!\91ò\80ª\884®L\9fHÿv4\ 6\91*\12t\80\9aH]#C@\85\ 3\rVR\a2\8f\v\10w\0!\ 32
++"\820@ó
++S'ÐÌ\81\16\a²\13\18úÿhÁn\90\ 2ú\1dP.\0cÁÒ4\85=i ¢ÁØWÿ\7fEEEEEEEEEEEEEÅþ\80\8eÿÿÛK>íG\97¶³\7fø\eô\99ò«é§'\8dyièø\18þü\93\8b\9eô {þãÃ|Ü+Ñèü÷êÞod\1fóBú\1cÿÚ\8d\1fàx~Ö\v\98Zx\a#õðg\16\1dþ\8fìº$ûøEÖÇ\ eåÞ+\87g$íz£²Þx»h/\7f䮡äÇ\ f.ùÇ\8fä2è\7fÿMÈzêÈõÈe\a\17ýýKî\9a÷dÒê\8e!ù¹¯\1fÇç>§K\1f`vÒ\eGt\v\97-æ²þ\9a\ 3G\15Íû^\7füuÅÿ?{øØ¬ñ-uÒê\ e¥\9dß½êý;³Æ·K}¸rRÓ÷\7f÷Ð#ïLþxa\13gâØ.ýïꫯ¨¨¨¨¨¨¨¨¨øC\80ó\ 3Ø@[+¨ô[Ù¥\9dß\8f\7f\80t\11\91ö!\bÓ·Â)a¨\Z:\80\80}ä\98@\98¹4Ö\18\1c\ 1ÕÀF%\82²\88\8e÷::\89\1còHY\0ײ´´ûà\84@ì§§ª\95\fMÜýX¾lp\1aØ9ßèögÍùn\9eÀ\1f\93¾\0"ïÉöÑ\ 6ëCÎñà\824cå.(Ç\85\ 6\ fAF\81¤J1ó\ 5\84\132Dg$\ 4þ\99\82 \95\10d\ 3º\81¢q¤^xëY*\0\94\10C\ 6Öt\9a亨U\ 1ù<"5\8eÊ\85£s#Y\ 5Ä\0EÝ¥s\90\1c\ 2ã\86<\f^{ð*@éðà\84Ð\91\88Óh\13\e`d¤ A\94lJ\98\886°`\85èêÿ¯¨¨¨¨¨¨¨¨¨¨¨¨¨Ø?Ðñÿßÿ\ f\17?0º´Ý\12üû\0üÃ'î\99wZòÿkÙnÍ\81+\9fó?¯^sâ\vù¸n·V´;ç\7fòÝ)>_Ùvk\aÜë\ 3\vè3å¾\r\v\92ÿÝúvk&\9fÏú\ 2g\1e÷b\8a¡\8f®Ýº\87ï\v\9fõ\89ÿgò¶ä\93\17¡Ýº¸ø¹Gê\11<v`sßwî9øÃ|<Jªÿr®¿7\1fÁòrþ\8c=\86õ\0\8c\15tü1¾ï<ú¬\1d\9eþ2\1f\8f\86ÚsGÉÿ>ôÞÃ~Èy
++\ 4·§´\7fõ§ÞÉv°J«vËLh\8eß°j:·Ó:ôw9ç\13_K\9f3\1e9ê\9f\99\1fá\90ï`C\89µ\7fß«©\9e Tlò ̤ÏÔïÿù}|\F:\7fc\19\97ã÷¬{\90\8f\eÔ\9fr\8bß\86v\9eý¦\7fdÞ\84\rd\9fÅE«àø½;/äãÑ\87ÁÖ\95\85\17qÞ£ú\96ÌïP\89\e°¾ôáå«?úD*³&q\18¦\96û_4ü\93ãÒ8k\938\f3ºÊ\ 6uÖhPI§às%×úWßµt8\97ùTç=l\83¿¦Ï\¹rG*K9x\a[×\16Ý\87ó¶Í»\9eË\94ÈyíCÉO¿zxUâ}(\95s¯àq\86\8eÄ\82¿]ùx.Ë9á·\16\8a\87o9ï¹T¦s^\88;&4íüÌÆ%©\9d4\ 1Óu\97\8f£3qe»\19¯5'e- mDâ \Îm\81&Äk§Ì}$\959\93ÚyIᵬxöÍßÍù+tºßõ\83(C^û\7fwÖ?\8dÌmq\ 4Ûl\1d}n?iÁO¹Ì\1a\974\1a®ævbB¬~bõäTærßÛ<OΥϯ7^ð\f\979o\92=\1fk7s褰p[Ö¼P©\ fs&6u\9e¿ó +Òzuy¾,\9eØØìÕw,L6\8b:Ï\97-eN||xB\9a\13Ñ©Ä\95¹îÀÆf×\99s\1fÉe>õo\16_÷Aúì¹q\19óZ\90d6õïË\13\1a{~è\8eU÷§2+\13çeey\ e-\1d~ÿ\17RYÃ͹\97ËÀ±Yl/z\96Ë´mæÄ\84f\9dï\9d°ê\17©,æûí>¨\19\873oº qs\8cÈ×=_ô>\ e\9b¶ü§éy\954V\a['OlÆvéîCÞ\90ÊBæôl+Ï¡%Ã?NyD¼Êsbþ8\1c¢Ûʺ]øàáwæ²Ì\ 5zibS6\7fûYפ²\18\93]Ö\1dØ\8c_¯\16Ȧ2\a?ðø·om4=R[Ö\r6Ï\82»¿öïÿi¤ÞÇu¥-£ùE\15ÅW\80¬ÞÈ\9c¬#|-ÒH\10Ó\90g\9b ¡øëCð£bK\7f×\1cÜE7ÙúèÅ7q\0{Íja\ 4b\ 3}D]
++WJ¤CÖôÝ\82èK\rucn¨5\ 2I·éN*àL¸1<µÅÇ\9cÛ\9a\1e)ÁH+d\8e}ÔtAØ%R)ÓÚù\7fì]\vÌ\9eeyî\97Iø
++¸\84)¸FMé ¶\8c=ç\ 3\ 3ÂHI\fé*-X
++´\1cF\19\ 5ËAÂ\92Æà Ó\f\19d²\ 5M\97\91\8clD\v«PF7\8d\1c·à`ÚÄ:\ 194Òpø-r\10i\99\10ØÜuÝÏû>ÿáûû/\19¢n}nýª}\9fï}\ e÷søÞ·×}_W¯\97=Îál©\v®ú<Ó\9eÇø\9dê£35\93à\94ÆÚË.ñä)8\15nÈTDwèNÂÐ\12\95¶ñeTn³\r\81Ï3ÁE\1c\9aÌBE\83V%|\8fù¤p\a\1a\b¸\a\ 3ÄÔiì#ê-;\93\ 2O=\9by\16ifõâ\1a}D\b\ 6\97¢G'Ð\11\85\9f(ê\93£/ÔW§¦5³/\15\86\87\1d\82S\a\17\1dU\9eñ\17ã\82\96\1cÑ(\8d»N7\9dM\89G1IL\ee\ e§\89Aòm\r\15Á1Ý\18]Ò!G\£ð9!:C$ÑzO\14Ð\ 4¢^Áù N"èÆT_<\90è\9c°¨È\83-\8aèÙÁ\85\8a?¬AÅH@-\98\1cµ\99ªã\r\9fÀ\89\89\1eî1BúÑair\12°f¢Ã$âÿÚ\ 4¯\13xK\98Wx0\bx\95\98+ì#\9fô"3T\99\1cÍ?\ 3f¼äÉ*8\9djëðÔ4Zä¥\ fYúÅqaZ"Ö ëµË\8b®9Ö\8aÜë\b«âG\91#W\86O\eºd!+<°(rc\93\8d\9b2Ú\ 2u\ 6lSìA<VzìI8Ô\8b:8¡Yo\99pl&ð\91cëi\85\8bð\1d \9c$ï\99¬ãAò\82Ñ\84*þQtFÉLÎ\16S¤äW\f+\84X-æÎ1QÛb\83\11\82äÞC?¹â5ó\9e\89\8e\1afg3¹Zæ\95±«rH $I]\9eËCÁ\11V\14Á3Ó²£ì-Íyç*öh ô=\13\85T \ f¼èH\9f³\1c\ 4B¦\9bð
++¿ð,ÁÿêÄ>\12`d¦6:\8csD\19åB2äVÇ\86óÊS©\9c[\9e\8cèxLÂ\84`Qá\1a&\e\1d*û\9cK\14\83cR3ö\83¡^½Ï\14FOØÎ9á\84Â\90Ð.\86Iqv\8d\9dH¸´(³ë$lír^a\95(:\9e»\94'\ fF\8f\ ebZ=Wµeî;Æ\86e¦dj1÷¬\8eG¦×Ì«¶<ö8N\1cz\ e[\855eO\18YrÒñ\/kÎñ\9c$\8c\8aþà\1cB\87±\1e\88e³f\8fÃ\9c\93ly¤³3\1ec¥¯u&]\17\16YÆ\16±<º¹ÿq\82aí8\f\94ç5}\825\10¹É\95Å´¡»Þ\88î;Î\1eL\99\93Ý\88Þf\1eæXé\12\aÀÛñ\9dî<íuÜáClEÙר\93\96~\88d\93wäÇWB\vï-eäqNÂo\8a)ö\11m3Ñ\1e\87\9aÀÉü¹\90tråp:Z®v.RìGô>`ô\9aG9\81iâò\9eÇ+Ṵ̀Ð2\96\ 3êsd:Ài\87s%ù\89¿yX¡Fèö9ÒÒï)¹òe=*á¦OÜk\98M%1\ e¤\aÀL\92Ö¾\8b1\80\vQ\1dêÔ\1c4Wv\f\11ßÀ\1e&_\82ÃY\15\99/Ï)Ãã\89¨\ 3à\ 4òÂ\90@\1fb\9c
++Ç\ f\8e\16üúEÆ% Ûø\ f~\80Q#V Ö\ fN\91DE\81\80ÕcùãCÒ\ 5üªqòèLt\9d\rfa`Ð<\ 5\19îÀ\9fcü\848\94yÏ#Û3\89\9f;Uã'\ 1[(c-ãWÞ\8a\ fp\8a3\1c!á·ÕóPão½á\89Î\93\1cÇIwÎM\17\13\82\85\8c9\12\18?ª~-xL\18ã%0\16ø¶ãjÀêÁé\8d\ 5\80Õ\1aqnÅî:¹\1e\187\80çý\86ÿ7kÖ¬Y³fÍ\9a5kÖ¬Y³fû\82\8dãÿÿ¹ñ\89_\9bZ:\1c¬¯¸÷Òã\ f}¨`;Æ\f\aoËõQ\9eÿ=õû\93ñö\83+~{ä¿î'XkHÊ\r\a\ fV<ø\993?,yþ1F\¿^ê9~ÖTÜ{\87\'v7ÿÄ\83\7f&8¶ÒjöàÆª\17pùá\97\16¬ZëT°+5\ 3v|Yå%\98·à̧\v&«íDü\8d\r®Øxá³\1d\9f@.\98׿\9a§ÿ\83»\96ÿh2&»CÊ®Ãç\82\17¯ýjÁV{¬ìú\19t\bÖ \8eFüû®÷\9f¿³Ó!èî[=·÷Ó÷\8e^U°Õè:\81\85Õ\87£¸ë¼\1aWpÊÕ\9f(Ü\ 6*vc?RÊ\18ÃáÞ³úÙ¢Cà:\9cwI\8d\178ý\95ß=®\94ù®\9fKê\1c\8fb¤kk?ÿúþµ¥=çc\19öª\191\8a\91®¯Xç\9a±\8fÝ^x\16t*un\9bÛß÷Ú\9d\17>ZÊ¢\9b¨C0½&Â\15u\8cr)l¨ã\eÅ:\97V\9fýñþKÇÊ\9a÷©q"4kÖ¬Y³fÍ\9aýÿ6ÁØm6\ 2ùw\7f7\8c¿È\ e\ f¦DxCÏ\9fßÇ\9a0\9a\84\81%¶û>\83\0J9\9e¸%\16É\ 67#?ü;÷\19
++fP\87·9ú\19´áû\98«½òÝ;Fj0K=W=\80>\96e:\\9e\91HY¸í)u`º|z2\ 2Ø\9cݬÉñ_\18[Þ\vfÝk\ 60\96¡Ä7a\94Þ\ 5eÒ¬\994í½\8ef\ 4Û\96\982\9b´\8dA1\9eÊ¡\1dfÔã» þaü\95·\11ï4\fÒÐ\fqp\f»Qø\16#º²\89DÚ\19y\86ÿ:\8a'0\14Æ\93¯\0SLU\ 2¥rÖÂ\97 SÎ\96ÑsÖ0¢Àà}\8f}DO5Ãp¤o\96³n\19\ 2\94P\1a\9c.±$*0þ\ en\96E\81þSôÁ\18²ý³^Ô\80F5cu\18¿\9aù\ 6Jâ\ 5¼\91ä̸\99.ÒGÁ1hÓ\93Ú\0oÜ\8e5[ôVeÊB\98\98$¤\88q.\8cèÒ14þÿfÍ\9a5kÖ¬Y³fÍ\9a5kÖl\9f±qüÿÐí\7f¶ljép°D0éQüÿÕ\8a\8d\7fôÍßú\ fÁùµ\8e³\a\8fÌ\80\8b\97üÒéó\91\97JÙôùÈ/U\8c÷ì±µó\vÞlr)\9b%÷\9d\80Ï©/¯þr\97\93Ûå~o\962âÛ\9f¹ó¬g{îþÒ\97]5÷û©;Vý°äÈê\ eOßTc N\9d¿âÙN÷^\17Üx{½oãýK^èxöcéË\ 35Î åÁ6kÖ¬Y³fÍ\9a5kÖ¬ÙÿÎ\84K\80$\ 3NE\92VX¼6F·×\1cù½Å \94\18\ 1¦Ý{«k\\ 3\ 3*\9csQ3®Â\ 42|$\92á¨`<ÞiMa 0\91\846\8eñ \81È»÷r}Ö¤¸\8ew\99C\83\fd\1c'ùS|vQb¼§ò&x¼\883vA\93\9aBb!ºØ\8a\10È!\94é¬(j
++\rÿoÖ¬Y³fÍ\9a5kÖ¬Y³fÍö\r\eÇÿ¯üË\r\7f1µt8¸QxÂGyû\9d\\1fåá\1fVÞþÅß|èãåzÈÃÁÇæöõ,Ú¶é\14¹î¼\1f\ eæÕïÏÿÖuO\15\1e~\97úø\ 2âìëN[Txõ½E»·ÔÜìɼú\eæôß_ød¹\1eBF=7ÈõQ\9eüÂ#P®\9fõ\84\\8f\16ýÜ"ÜÙ\8cwØïùC¾-׳B?\1f¬|\a\ f¿2ÿÍr=¨aÇO>\95o\7fö`^mw\94\93þaic\ 5>\97üȨ\8e\a¾ãÇßZÇ÷æÜO\16¾z\e])»©òz¯}òî9e.R(1\vkçôe\17o?í¶ÂËn:îü÷Õ¸\8bs_^|S)³]\1eü\e³û²Q>÷a\8dýXsø\19\85\e\81I$R6g\ 6®÷-U³`\94Ïý\98Ê«ÿÖë:>\ 2ëJ_¾.u2ÏÿûßXÿT)ó¾ð\11¼*ã;\r\9f?Òç¿Ôñ\11¨ÒÏÂ\85>=Gü8ßÂÏ\8e]ÿX\89\1dq]?\97ÌéËFy\f\ e\96¾LÏõþ\9eÊe¿zl×WJ\99õå¾]³û1\þOë\vW\81\8bj"gDás?ñ\8e.æD\15N\85Â_ÁX\95׿´æù®Ì\15_ï9 _{£±*;e½Ü\8aÏÉ?¸ïÎR\16;Î\88¥uO\8cƱÌ\13\9fqÃ/Ûq÷W&ó¹\7f¤®¥©q,³;=\10~á¤ç^Ù¿\949_üòÜì~|ËÆ6\1dXÊRl¼ Í\9a5kö˱\9e\8b\9b »ÞP\1a<\84)<õ\ 5Ã"(åÈ`\1emÇ?\1d\95Â3\viÈ]ÑáaÎ0ŧq5Jy\ eÿ'¹Ý§ÃÂ&ä8ÿªð\84O§IÞë¬SÊ\{\8cÊ8\99Cï\ 2\13\9aé<Q\ fç\9d\8e\b¦¥ìº\8dQiÔC=\v\8f\ 28\8céËp6³Ã\1d\95\19"5FÐGÌb2º®\9biñÕ)\1cî5ÿ}/\18É\94Å\88¥w]ÎxpdÆ\ fL}¦,\83c\9aô/D¯Ä1Å:*Ô\90\88\r\8bÜ=&;k«<¦\93 é\18¬c\1e6Å\1a°´1ÝJV=Ö(Gî±Âp«Á³)\93Üä\9e³\93¤Ç\ fFú@ï£O\94\ 4ÀRÐ\9eró\89W\99\98\8d©§*\a3óm\8eÔ¤Ï\18\85'\11\0{\8eqy´\9dª\9eÅT½\ræì\13©¶½F\88MØ7I4A\18\9eM¸»rëçì\98PN\86\7fO)\89\80\9d\87Çÿ\1cHéOi\15\16:N\9ds:°\17¸\8a©Òäú\87¯r\10áx4\97d§`Þ°õ\92bæ9úEÕ\89À\r\86'ÄÄ\8då\98¿ÎJ°\9c0%
++k\rk:eê¬\90ô\9e\v\97Âô\ e{\10N\81û¢ïÎ\enF%ë\85ì
++8Fb¤\a\9eÀ!ðN5qHŦ9?ÔÊÀ}.§nïãù\9eû*Q\80#§$\ûü\86*j!Zv\eÉ\ f\14Q|n§¬©â(¥ÀU\88yÅ\11\10©»Á\1c{Cí\8e\98³\8d\96\91\ 5\ eûÅ\11Í·9\89î\17Ö\1aO2t&\17e\10l{mùmx\ 5ÓÆ\19N\81Ô\ 5ØH¡×>ù¹j4ü¿Y³fÍ\9a5kÖ¬Y³fÍ\9a5Û\17l\1cÿ¿\7fÁ¡gN-Ý¿Ó\17'¦÷¹ÅÏ,+\9cí\ 1×w
++FÈ?þ|áï](¼ýÉÌ\1a\ en®¸÷Q»W\9eX4ã\1e\ eæT¾\80ÃV\1cñZÁ\99s\18v<ìÄ\1a\8fú·\83v\94úU\1a\ eÖÖë\93ã\bî©\98ígOú`á#0.\ e\aÃ\8a\9bOä#\18\ e®ß\vþÿp\8d_¸öªE{\ 4·×ÎÍ\1e,ý\1cÕ¼¿²¶ý7\87\9dõï\9dæ},¸è8gÀ¨Îüçê}£\1a\ 3kgÐo?D0Úéu\ 4\96Î \aðjÅ}WÝqÑ\8bÅתÃ}7Ö¾Ü}G§OÏ\7f»\972Wçú¢±ç¾VÊ¢/Ü\ 6\8fÏéÛ\eÅûÓÜ~®þð\91Ë\8f.e.\95ûNÜý£\98~áKX\89Ïq\1f]YtØùïµRvCmï3÷®/q\ 2&¤2\ 6W9&FõÛWW¼\7f\14ÓßSûyæ÷ÿQ\97µ\16C\89Kx©®\935cëo+\\11*wºè\13ʦj´ßXu\ 4NyáSÃRÖëÌÏ«ú
++£\98þ¼ ±\0\1fÿ»Rfº8\81[dÞWã³ü\87K®)e¾+ûHÝ\17£Úî\9bæô}\19Õ4¸¥\8eaÙØ\82®Lwzñã1\12OÜüé§K\99õÅ×Ã÷\8eß×0ýfÍ\9a5kÖ¬Ù;3ÉÅöÊMà\84\17|7¤\12û\10tð\13yã§Ó8·\13âWb6Ú\ 4ç»8\89>\96\83\10;ÑáØç\7fû(\ë9àËÖ;廨\8f)yá³þ\a\1cÚ\90á=\ 6\82!t¸|Ï÷?56Ã8Æ0è\9cIÜï\13\ 3d|\88\85ÿ=(<\83f\ 6âX&l3BÂǤ\198\0¯0\9b;°Ú` yG\82Ý\1eu\19 3á\88ñ\14N>z¦»+\9b²RÉ{\82ëhK%EÞ{O(\9eA<\19}ÕYøúY\11Fe¢ò~|LÚ\87Ĩ\e\1dǯå\98=Æê\19Òaj¼\a¡çD\16z\85'}¾ ø2G9\a<UöXu\1f\172]lQÂTáÑ5¢½\1aç \14ü¼\8fÑ\ 5VE\8bÁ{\ 69Hl Ü\ 4\aY ó@UV\95ëJY\82ëDØñ¦f\ 3Ö\b=\86×\f\ 6lX´l3\1c\1a0»¨\127z\86s0N\ 5\8b\82q× \8e£
++CR%pÁ\97þý*i\a !Ç&Ð<\96NJ\fRt5\96QȨ\8a!T\f\97\89l\f5{\ 6v(\83µ!1\e\8cÐ ú\80\8a\_x3\86\17á\ f×ðÿfÍ\9a5kÖ¬Y³fÍ\9a5kÖl_°qüÿéOí\8eSK÷\1f쨹ã\93qþGä:ñÙgÎüðn¹\1e£ë5Þ/Ãgåak\1e+\18¹Ò\ 5\7f½§b\89£9ñÇH}_Âgùq\17¿Pðì¨\væ¹µâ\93£yè7Ï S¿«òÿoø\93Ó_,\18r\9f3þà{ûþ\7fà\88\vÆ:M\ 1[î{`¯yÚÍ\9a5kÖ¬Y³fÍ\9a5kÖìÝ1\89UÀk\991AkK2\90I¹ú}\8cB0&\95\98\fRt(ò/xrr(\148\87?Crä À\e%¹72IC\Ô>3D\83\84\ 4ÄÊÉÙá\rnKÁ)'Ü\14(HB\98¡\18/\91QÂØ\ 1\ 6¢{á\a0>$R&ÈÍY»¬X\8c\17äà\19\8a\91\192Á¸\v\12\158eÉÉ\91)\1c £\ edbñ\96\f\00\8b.YfÿkÆ\85\ 4Ü\1c\ 3ßq\1dcA\98êOþ
++\s¸\87t\15\9e¢\ 5\91\91)9QIÀ\e\17È[¡
++\97\81×ÑL\8d}1Ê)\85®úPÂ\1f\12ßÉ\eþ߬Y³fÍ\9a5kÖ¬Y³fÍ\9aí\v6\8eÿ¿~Í5çL-\1d\ e¶ \ f:1ôK7\1cõ\93.\9fß\ e\a»äú¨.À\9e ùÿ\1fZÛåùçá`³äB\7f\ 1\9f\87\1f\9b÷ZÉ\93\ en8\98%\18ý¨\8eÀM\95\83|rþÿ15Ïþ;Ë\16ÿ\97\·Á\ f\a\8f×\18\81õ\ fýÆ7\85ÿ_\93Ïÿ²9}ÿ·Yøz\89_`=ë¥ÝãñYø/¿¹Mx\ 1t\8e³\a\9f¯í\9e÷\94½½\8cWw|øëjîü[[Î.¹ó*Nâ\92g¿.?üÒÂ\e u*÷½Ts¶×=ñé\ÊB\17\87ð\\8dC¸jë\9a\92WO\95G)ÛYó¹ÿà\85+\ e+¼\ 1ªã\8bß,ý_\8eÏÚGß>®\94¹N'`g\8d_X?¶Hâ\17\98.Sâ%VW~\83¯ßuÉ®R\96BÉs_-íqbÏßyñ\85oÀæ.^¢æã\8fò\r¼!ewâsÎ÷îó¥,\842\86\95gá\94«?ÑñýG]òÎ\ f\961L\9fÿ\7fj\9dÏ+\ fúdáí×9u<ó\aöã;{ìÈ»K\\87³]®~Õo\18Íÿ_/u^Äû\9eÓ\9b»\9cûnn·Õy?ãÑ\ f|£\94¹.?~K]Óg\8cm.ùÿÙÄÒ^ÑV(ùñ\97|¡¬Ó¬M;X\9a5kÖ¬Y³fï¢Mäß·\ e\ fB\14\11§\92¹-¼@¿\bN}<¹ç\8dÅó©wA\99\82CFKñ\ 5kKû^3\9f?©¨4å\17"\1eÐ\8dQ¶Ó\ 3\88\865xç\b¥ö\çÓä\8d\17¾{BÂL\9f\9f5)ï^3ëZ\18èCT=\ f\80²ä\G÷1à\98Çëp\ 6Ïà9\84l¨\12obvÙ2iß$\95(ú®2\ 1gÒ¥«hñ0\18Bä\13¨\90Ø\87\bÏd´\93\98\84\ 4Ö\8d\ 1¾tÁà[ÊPñÀèd\15SâQ_²Âï\ eß\903\1f\ ePÊb*2¾\86ÇoøÃEÒ´Sß\82:ó\91ì\a ÏÐl\93éãýX¨\15\115qjL&qd²F\ 5ôËS\8d ¡ÿI\19GÍ\8a\bïZæ\9dcI \ f\18 zÌlu¼F\ 5)
++M\97I\89Ú\0Á\ 5Tnð\kÑmT\ 4?PK\0^Ãð2As\8e\ 6-¢\ 1\f]¸\ 1\123Ü\13o\83G\84[¾ËãÇ;\8c`Î\84à\93Ê\1do\ 2¾è$Ë=1á\9dä\aäò·!PÿÁÁ³d9\10á\b\8bIÔ\94<PZqÁ\98Dæ}\8bnëH6|\97¥5\8dZ\9c,\19i2D´§:n\b\83\17½~®±4¥¿XH:dJ\89èØk+LѲx79\ 5P]ÂBÃ\1cfT®1'\11\v5Q&\84ëÆåÈ\10\ 5Cµ\0T\80IÈ\8e³áe¥\88?¹>\rÅ\1f\fÅ\v´\88U0\86\80[\89@?w\ 5\89ï2ý\97á<ôUQêÅ`öáP~\9f\7fÃìò\1d¥áÿÍ\9a5kÖ¬Y³fÍ\9a5kÖ¬Ù¾`ãøÿâß¿aÁÔÒý\a«kþÿ5\87_zrÇ\93?k8¸ºæÖO\8e\vØQqÔÉ|þW
++öº\15\9f\85?ÙþSáçW1\f;^râæ\v\9f\,ø\7f\b9õ\98òô8ü\92\83ú{F±öqý\81KƾsDÇÑï
++\8fÀÆzß\13·\9f÷ã\82µ[_Ê\9c\94\91§þc\97\17Ízj4JÙ\9cÊ\8b?\8a§\9f\ñíQ<}Kõݹ//¾©ÄBX[xÕï©ý\1cåÚ?GÊ\8eÇç&wVéK\ e±`û\v¤/ÓkÝ«\8aE\8fââ¯Vü~\94ïà\1e¹ï\ 4|N}yõ\97;û\8e\97á\81\1a\830Êo_¸è§ç©¿b\ 6]úGj\1cÅ(ßüº:G\eï_òB)s±øå}\95¿\7fª.}³fÍ\9a5kÖ¬Y³_\8eM\83ù¾S½vÁ\8d\9d\91|l§£ÊÄ\8a㸾ý´\ñ\1d\8füt\1có}®øtñ\ 6\92;\8d§p¼jhKNý\8e\eÿ窹N\1c:gg2\ 3\18HVæ\92\v\ 6ϸ\16ý \8aË|s\16:\vo8Ç\ 4s
++Ð{\8f"ø\81\1a\b9\ 4ª\ 10S\øÝá\1f\87/Ã\13\86ñ\ 5 N
++:g>\1d'\13$"B`h\8d)È\ 1OÔè>ZÌÔfËZRà\8dO\94\r\b\9eêó¨Û÷\1cþï\16÷¼äö;\ 6\eä\84ÑX\ 5\1fEöÍÀ§\16m\ 6\\8bÊ:\fS\99\fïÆä\8db¸\ 4¾ª-óåU\8c22o°24æ\87\82\ 6\19oKLñ\ fx\89Ét)®z!ð\873P}\94Å¥èY\9fÐY\ 6nhÖf¸¸\12ã`\ 4ó\87W2;\ 1×\87Àå\18m¯Q\ 1³:a\12Щ\19â_\f\15%ðÞÃX\b*9°#\fA@\v9¹\12§°·\98\1dMæ\0C¯3Ý?ÚLñ3jK¤ÈëÂ? %X\0\93\195c\ 6ÐÙL\ 1\89\14¸\ 5\19\1eb\18Kb\18\fÂP\ 6ÆÌ\ 4zÄ{¹ÞðÿfÍ\9a5kÖ¬Y³fÍ\9a5kÖlß°qü\7fѯ\9f{ïÔÒáàÁ\8a)\1fµ{å\89\1dί\87\83\e%Ï\9aXì\82\7fþÓ\15\ 5÷va8Ø Øî(/À\e³ûz~g÷}'v¸nFý\aôõLÎó/\9841â¥Ç\1fúPÁz\8d\19\ e\ e\96v\89Ó_½äCß.×\9dêóüùýÏ\9eôÁò}ãÐî\96ÚÏùߺNôç\9dwi8xà\80¾?Gîþâù¼î\93Gý\9b\ 4c\9eªk0ìp÷Q\1e\81M5ß|¿ç\ f\91þ¤¬<Ú\95ïó\8fk¯Z´§\8b\9b@=¯V¾\83\13Î;Jêç?ÞMÔ\9fwkÏ- ºX\81\ 5rÏçñYó÷Ë\8b¦\822ºä¯ªã^ýµU\8fv\9c\ 4]Îþ\9e\19b!ÆóäW\1cÛÝÇü\13){{vï\83¿:úì±\8e¯ \96ö6×ù:oÇÊ\9bK\f\85êòù\1f¯Øýé\7f»þ\99Nß!\97ûÖNÐ~øñ\81%¾"u±\17B9 1\ 6ë^yÿ½e-\ 5[î;¦úq4¾béÜ~\fÿ0ÿì2\ 6oB\89iØ.e×ásÁ\8b×~µp\19¨.þÀÉ\18ÎÂç§[/x¹\94EWÆðRõ§ýí3¾[Ö¯êô$ÖÉ\18¦ç9x¤Æ±¬ºã¢\17K<GÑQ\9d\18ËrñöÓn+e&\97x\8eyUGã[×uü\bÖ\95ûæU_¯úî\7f³wµÁzUÕ9·ÕæÞ|b\8bÂTjùPH\bØ}ö÷n+b\8b\95Á\80 $¹ÂM\825\f\bÁP&µ\8c\8d63e
++-4Ò\8eíØ\81¶ÌÀTPThÓª \86\1fLeZ¦¢\88PD\e$¾&\88\88\rubÅÚçÙ{\9fýÞÜ÷ÞÛ_t\8cYÏp.\93³ÏÙ\1fk\7f¼{\9fµÖ³.\U8\10ºj\97±g¢\97ÙhÜ\8b£ÛØÞ0Øñú\9aVëy~\96Ë[qÙgn¯ö#ºØ\8f<±¨\1fã£ñ2TËsãà¬ëKZo\aòPî¿k\99ïG/Ù]íGj¿?ÖÞ\9b\1aìýpI3®\94w`Qßö\9bvm*m·.\94>ºoi?ϯú§Í\8f\94´PmK>¸¨\97õ\97wN>UÓêXÚ=1,ï²\93\8aý\91©±B\1eh6>/_¹éK5Úñ¼:·a\vË»õòl\e¤\19¼uÁ\90k\83ïýçÝï*uÁx)mx¾µoý`e)/\18SúöÁÆS13\8eÈÄØK\16õãz×Mo~²¬{ýø<²å9\93S¢·\râ{ï_¸zPÖ?\17K]\96´5jÍ\8eÕO\9750tJ~ä\ 4\82Ã\12½\8et\16\ eí\12Û[uE_\1a¬f\9ck3|§ÄÜæ&Da\1dô!ÿþ÷þ´>\90©Ú"C\8f\ 5[%êl\83ÉA®é1LÓBCÏmºoke=ÝM£\8f¡sÊQ\13Hu\97År\87\9f\17§£\89x'Ä\1c˼r~;æ\97²\92-ë\14c\8dõmðûn\15\9e\ fQM«Ï\~â³q^÷2¡F¸øÔ¦T\82¿[\17\8bNÎã=zFkç\92Í:·DG_>\19q§\v!\92\8fÛ°~\89!¬\12ý|-\95\92\16-#«¸6Tüjkµ§\9aW;\1d(áÈ'4¹À©»¤&Ü\1a4\9b\94áÉÐ\87»÷\95\87 UÐÔbÖvêà5u~A)î\ 2<r\89©×O'ç{Ý$õ²JûH\ 5&ýÀYx\87.ìXWëSð\ 6\9bÀ.F\8fÞ@C¹#ì\1c\1dÔQ5\ 6\95'\ f:»;)zÿ£\83!\1c¼ \ 3=µ\15ùÓ\ 3å\8d\8eÁN\9aþè¦CC\ 2\92(\82\14!ëâsmr\9d0:h¸\eLÏ\15`¼³/6\1f\81C\ fi<âµçn\ 3\1dWääm\bmÌ Î8\9b\18j¥«\8c\13»\8c\9eÕ\1e\9bu*°«ÍÀ\\9c\ 53m\1d\90\911Ù^Á\98\bY¢¶1k\95!d:\83ã\7f\18hIQi\8bfR\17MWtcrWYH\8eÅ¢¶\10~àt\bô\97W\aqºk\b£CC\Õ\13sò ñ\9aÖ\0þ'-n=\97\89C\98o!¨ä\8b\8d ¤LÖ\ 5dDß~ô\e2ÃÄB\1dBGú\ 44 âÆ¨Ã`íèÚO\ 3\17\8dÂ3É\7fò¶ãÒ\14ò0òVÓâÅ)Zr`Z¡=NEÚ·`¥Ê\81\a¢£ù\ 4 \10ð\0\ 6LÄbÐå9\85á¤ÙCèÔ<\86\8d·ý¼×ä6Èv\ 5Áæµ;xZ\1a\98<eh°^Æ\11Äát¶\ 4Y ú\7f\81@ \10\b\ 4\ 2\81@ \10\b\ e\aÈù_ \10\b\ 4\ 2\81@ \10\b\ 4\82Ã\ 1Cûÿ\r?wü÷f¦\8eWÛåbÿ\7fÕ\e\8a-¸vãc[ç\88ÿ\17³ì(ÿߦüüh\9c¿ÕùùQ^@Õì\Wþà5ßÏ÷»\ eùïi\1cp\aÛó¿0+\8fàxµ\8f\9fiÏ?1vú<vó»\eßß\96Á\96{\8a\1d»MÕ67Û\80ÿ\ 5®\7fxÅÅ»K»Mo·\9bß\9bÝ>¼Øíþ%®óN»b_I\v]yïÌ\9cFûâGïÙüÕb\ 3î\±q_\92å¶\ e×ïv\17?Sm¹«Mö\vÍÞwÔ^{Ekß\85;.\7f´Úk×òîl¶ø\e\a\9b\8e¯\\80©ÆºËi³Ûr\ fãîM\r\96\958x4<Êi\a\96\ eÓfÚ]?Ôìû7>óó?[Òbõm(q$_\87ë}K×\94ò\82«qþ\1eXÚ÷éùÇ¿µØy'Smê\8bÏ\0\eyÖ\9eg\17V?\10'q÷\ 4\ 2\81@ \10ü_ Íw§½ÑØ[f\9f\80l\91«bìbR6\9b9k¥}ê\8cr\ 1ÿT\99\18Îâ!MJ2\e;2\96å\1ctH´\94wÆz¼J\v~äD/ÆYb\8c½\98¶ïÜæ\ 5TÐ a¤ê\9eæË\91¬w\1dÍÿ;´Ð9\87Ü<\ 3\9aÑÚ\9d&þ>[\17ÓOB»Dn1K#ïê\13¢m°]¶3¦«\ 4öv}ü´jçO
++9\9as\am³}\7f³WwÈÖ[§4\89ö a\ 5\89e\87\ag dlè(`\9dh.M¿\b\9f\8d»sl;\869£ù4¤§I\8dæ\18*®£çIf¾KÁÓ\f\1d\b\91Ô|\94\ 1îY¼Ãnc¨º\10<ÊI\91^(N[ÏþS±Éd.^ÁCÑV\9dd\81\81MPô<AÍðïgó\19\99Ï?\86~\ 1èb4BE\8fÿl\97\83-jŨr\10\16}+ÐE\9c,¤1D_jú\ 3\98H\97\9f\8e\1càô\r¥\ fE²è\ 6\88\8e¬s\89ì\84t\rPÉå\11HºAÌ\14Ë\9c\r6ï$\ 2dtºH\9f\ 4ÏÐ\91:e×\12;Í×ç'Å¿e6nÉC\8eÏPôÿ\ 2\81@ \10\b\ 4\ 2\81@ \10üôCÎÿ\ 2\81@ \10\b\ 4\ 2\81@ \10Èù_ \10\b\ 4\ 2\81@ \10\b\ 4\ 2\81\9cÿ\ 5\ 2\81@ \10\b\ 4\ 2\81@ \10\1c
++\18òÿíI'\9c03u|ìØÌÁö\11\Ç\7f\7fÕ\99\85'¯³ãcÛ\1aÏß\8aϯZWb¯\93\9fïÕ\99?n&ßÞøØ\95ù>¹ê\1e\¿â¿òýè\13òÏù\\80ëä\1fÞq6ï'íÌÄØ\87òóä¯;æ\8e\8d\ f\97rUå\8c\eo¼pW\9d¸å©ÂIØÅÂ{·¹qÛ\8dƼß=O|úSò{§ãºÙnx<§%\1fj\1cï\ÞZ\§\ûláàËa9\91¶3¿·\19ׯ=¿ù\92\92fk\8cï\esyoÁµÿ\8e\8böÖXë5nø\81å}ûî^pÉÃ\85\83/úÂÁw]ÎsöØçwµö\8dÆ\ 6¿%§±²¿4qö\9eÂ\89\17r,r\81@ \10\b\ 4\ 2\81@0\ 4¹Û:åT×%m\8cRÎz¥c\8d\97®¼ê"C¸\aëbê|J$]tØ\93'G\16C\9b)\bñZ\f¤\ 2´ZYÃPì&vÈL\87H6Â\14\9cGºòx6\91t1Ø »\94"É#;Óu\8e\f\826\98`\94&¥d\17È\ 5\88;\89\8fiç\18\81Þ\ 4¯-y)}@Æ(J{äà# ÈÉ\ 1\88#\92ÑÖküQ\99ó\rõ\bÉk\95K4Îu&\ 5¾ :£\18\14Þ\15â?m5Z\90cÛ+R\16vQ\91\86.\a\89\9fÆå\18")ç\ 2ʶ¤kì"êÝ%\86º·\96äyÊ;F¶\8fx\1c-&\8b¥B¹\99\9eÎùÊß\17UP\9d÷\ eÕÇ\8bZ\99\9e¿0j\13H'\1e´ç³8¹t.·Éi\94\1fbå¡Ì¼\85\914\84\9dF\7fDæ\86¿\9a\1c\99\8a\94\91\85ý\11\ 2c\vU\87ª¹\8e¥\85Î\90<Ò$\17\15DB\86Éè\94GG¡éø\87%á£\89h\1fDb\90G²!\97O\96IOÞ=\83ÇI\99È\9aá\86JìEVXc\b \1cÞ!\ 5$* ¢vÞ&4"!\7fÈ\ 6§PíQmÒó\19\eÊØÒÑ%\95YF!Ø´ rOv$\ 2$¡e\80t\1d\8a³\16\99 \83hÈý\17mDUb4>\ f\9eØ\91\1c2p\84¢¹\86¬ë\81\7f½ÂÉ/óB\ 6\9f:<\9eéC!6
++<ór¦è¦\9fÿ\9f^ø£]3çűS\1açû5«¾qNán÷¸ÿ|æ\97ç\9f\1d+Þð®r\9e×\vÆÇî_Þ?ÿÚý¯Ú\94ÏÑ1á\9c¿ñù\1fÌÿ¿gy\7fÖÝ~Æ«þµò¸«ñ±;'x\7f4.Àésðÿ/ÈÏ_\89ë\ 3ßù\85ûóýÈûÛÚw\84%ozù¿ð¾S\8cGpC\8b\17péº\93¿\97ïcv\8d\8f]\93\9fÿs\«\9e\7fSæÍÇ,C¹ççrwàZýø±ÿ]â\vh<¿»µ÷Ôý¿÷ïù>fùøØ\ 3ù>9ïWþø¸õå;H²}ü\ 2>\7fòþ\eóÙ>ZÆMØÚøú/9û\95Y\ eI\19Èçþ,ÿ»Xÿ5/û·|ßEÜÿÌâa>*ç\8f\ 1\19úx\ 1³\7f79:×é:\ë?zÞWJ\9a®ß\ e>µ¼ïÏw\f¾ñ75Í\95ï\18['ú<\7fxW\9f'\ 6~N\9b\<üÞ2aÊ÷\16¯Ëw\93©Å}_]üå¯ï*ß[¼+ßi\8e\ÜËÿÂpQ\89\87`\W¾\8d¬nyn\1e\9cü\89\9c\86a[b \9cÛÚ÷¹Û6>TÒt\8d¿0Ùúúï\8fßXb:`\95*mØÞÊ{ïi\9b¾]Ò|,õ´¹OøÀÅ»¯¸#§yScAܹ¸\1f\9fêO7|¤%]äy[«\8b9õ\82/\96\98\ eX7sÚ\87Z|\82K\9f~ãÏÔø\18ª´aÅÒ&ëךּ¹Ì\11SûHµ¶_6Xdêw(]Þ[ÐÆþä\17/\U¾5\ 1¥.KæþÖtËòþÛÛh\9c\bÛÊÛ88ëú\1a'¢Öó¾ii3ãD\´¨Ïsý®©AùFÕÇ\97¸¨}\ 3üëxiIs.\14¹\º¬\9f\17£± >8Ñ÷Ñ\8f\97¬ïÅÚ\86çÛø\9c\1a<\93Ç'~\7fêXº²Å\16ÙzïÚo\96´\14K]ö\8e÷õ|ßÝ\e\9eêÓJ¿ïmsqý`e\89Y\81\9fñ\92Vby°\9eoÛ÷;ã%\97Ë\13mÎ_0xË9-êú}î\99üÞeù{`wgMÓµ\9e\13Ã÷ι·¤YUæÑ¶ÖöÑX\17±ÅÏ8û\e\9fþDY;ñ«\94Ó®Îýðgü\1eøÄ½\1fîÓê÷Îñ¾\1fv½æ=\83²¶\96X%\ 2Áa²¯w
++\9b¼ßÁ¾\1ak0÷K\ e[»üûÅ}fL.\90s\1a»8î|½'9·RÜÂ\92³]å\8d=\16v\8bý¸µØ\9dc·ÛqS\13¸³åæ\ f[Ië\12wÒøÉÆ\1e\9bìá\96\14Î\ 1;2\8fÝ\ô\9e¯E×ï_ñ\90\9b\87³\e[=k4N\1e<\`Kn¹x\1e\8aüÒä\85G[#2G\ 54ùÙCå\1f'¿xdz\ e\8f:]f\8eÇ\ e\19\19b\ 5Vì"þvk\8b·\14\19ð\15¶=8ò`K\9fÈ ®¹\ 1 8\89A\ 6<íø\80ó\14Ï[Ø\13\e\1cÕðÓà°Ù@Ë\93&\8d9*À\1aàé|\80ÃÎ\1d[}þ\80\90Ý\1dç§Z§zæÀ0Á\8e#Zl¶q¤CçzÕÎ\1eí\fâ k´H¡×#\ 3\1dõüäØ;ôg\1dMqc0E\ e\98\9e#<\a\15被e&Æ\13\bl\98M\99K=¹zî\8cÆú\98È¥¯qjäY\ 4ÇEþ\98 \9a6ÅiuÁ0Â1&$H
++\1dm¹ÉÂÞ\rg2\8c\ 1ò®\87\84Ã$N\95 ÒD_ 26\1f_É&\8f7"rÅ \89±\aе\8a\ 1\ 4"æ\ 3N\87Ø\1eb^\18L \87yÀ\ 3T°*R²JñÌ\ 393;\1eÿp&Å Î0\84\81õl.ǶcN -Æ \84ý\8b½·É2¿g\89\8bÀ³6ºÌ£\96\89£Ã¦ø¢\9c\89<#\11àF(q\11P)Å\89\8aÞê×\ 4\8c~L&ÆDp¦\9cÑ\1a\9e #ë\1d\f\eeÌ\Üú\I:RøÛ\1c&\ 23BåÝ\18f9Ï\8b\8c\87@\12\7fã,\97¤ÄØ\ e\98í87wyc\8d\93\8bÕ\89GyÌ\ 2\ 6\9cÀC\11\1d\88É\89\94\98óÂ\0\8d\9c}\906GOeÖO*¯E\98\9aÜ\84£\0}иE\ fa]áèCG¡@\86\10 ë½gì\ 3Ô\ ek\18òâBdÈô\8f)MÁðÀ\8e\89\80Ù \99jÖ7àh\9b¥\8a\9ay\8b*ñ;\a:\17Ë\92òÊ×¹\84\ 6ä2±«\9f#.\ 5\87dâ³
++çi,WX\928õ1\9f1\ f5Ëa}²Ü±ôa\ 43D\ 5OÒ\f\9d¦Y;\ 6°àâkØ\ eT\v\8bJâ\ 1\9cÃ\1eó ³8°ÇÀÕ\1eÒ\8büÔÂ)Î\9c0¦\18{\ 2E\a,ê\91¤ÿ9DE§ëZ\e\r¿¸¸üQ\ 1k\ f\96\eô(¿/à\9cÅéËÐ\10è\85\80îL\8cU\91+æXD\ eZÁ\ fFH`\ 30x\19ç 1r\9bÎ\11FPsü\9aDö\81SÎ2\bEäïS\16:\1eÀ¤\89ü\9c1O\8c\ 64:pk©ÚZc-\17Ï\[N¨éý\8e<,\97\ eçÊz\12ò'+¯Åþ_ \10\b\ 4\ 2\81@ \10\b\ 4\82Ã\ 1Cýÿ\av¿ë\953S\17\8e\9d\92õ\8a£úÿë\9aýÿ\rGØ·dÝ\92¶¸\7fCÓ{^{â\96s³^º³\vÆ«N\97ʱã.[y èQ;3>vDÎ\7fTÿÿ@¾?ªÿ?¦\95{°þ\7f¼é\9aOùç\97~7ëᣲãcÛs>£þ\b{æÐÏ¿Ðt{'ïß\90õù1\984>6\99ï\1fÅrßxä\8f\8b~¾C=\8f\9dCo_ô\80£~\r±Õó\9d_5\1f¯þ\14U?øÜâ¾®\7fõ«\e\aU\97\1e\8a~pkÓ5¯7\17þGI\v©è\a·5½ð;\9fX{Kѳ«®èioiv\ e£>\ fSM¯øÛû¶\9ePtðª÷]XÚ\97wÌ«kyü\ e\99Ó>\94ÓÎõé\91\17N+iÖ\16½ilãeTw\7fÍÐ6áã\93\ f÷i¥\r\a\96\ fß;åÖª×7ÅÇâÆ¬3¾\9e2þö\1f\7f¬\8c\9d^Çy`\1eý¼j¶%¿\7fÜT)/\18U깩Õó\8aÁ\19EÏ\1e¼*2+¶!Gâºü\9b'\95ö\85Tëyz³{¹xï²k\8bîÞ×þ[Ñò¼l°ç\93%-¸\92ç\95müì<ù\82ï\16½~Wý=®ncô\a'^Pú=\99j_qfó\ 5yô\9eÍy¼kå\\91K±1\98Ý/åÁæëò\83c×}«¦Ù\92¦Zyïûìæ¢g×>\96ö]×Ú0j\ fpe³¯¸pÇå\8fÖ´ªó\1foy\1euÒ%\83j+`ÊXºr\1e;\82_\9fVÞêÓJ\9a\8b¥\9eÇ.îe6åÞýlM«c÷SmÝ\18õ\91¹zYßö/ï\9c|ª¦¹\92¶³ÙB\8cÚ-\1cXÔçùò\95\9b¾TÖ:SÇîê6\8fFm\13&\9boÓ¨\8dÁÍ\1f¾ú\89ÉÒ\ f±s%ÏmM.£ö\0§·÷Fí\ 1.m¶T\9fý\93³ö\16\9d¿v.Ç´<Gý\83¶OK;ãø²Öê¬\97\12\b\ 4\82Ã\ 59\8e=\7f\80isí\83Í:tjÐip\91ºPuõE·N\95sd\14s\95ðS\81_æ¬C\ e\9aÖâ.+?SÕåÓ\9a\ 2»+\93íÒ²^3Û\80wØ\126\e\8eü\9c\ f.M·%\bÈ4Û\ 3+*Ô\83z\11m¹SPÝ\82Yl <~ËgÓ\15öºú\16KÞGs\90\1d\ 4\ 3¶3zý<v+ù¹\8e¡à\13\8a_Ðë\87ÕtÛòl\en©¯ux\bÿ÷Þ«yì\97GìÅ\ fAÛ\18t\10v
++V±)±Ê\ 5ÃÒ¦¬÷ut\1cÀæ\92#\8av\0JÑö¡ã\1eOÓxA\17K$\8c \8b\97h|\84\8d!»C£Î\1d\ 4©h\8aK%q¬v\r/¦-»¥Y\ 2x´Íca.{+lÅl\97û\vã\18Y¢\ 2\11\99ÑB$§Gô\ e\ e\ 5\9evñ\10+Eí03Ñ\91\909}\ 1Øë\89>\b\1d\9eÓ\96¦\13
++Ou4\1aAçØèØLüg]ä1\88¦X\8eÃ2Ðr\bç\9bÔe\e\1c\9apÑ\f"e\8b\bÅa\8bao1\8a:\9aRÌeÛA³\r\83:(.\fóÙp%ÚØj\9a \18º\80ÐÕ Ø<\ 4Ú Ñ}\82v\1c\9aòÊòËvÓ8ã¢\7fR/+ïó\83 £\94\86\vy\937¯M\95CÞô\14É\8e#1\ewÏg\e ú\7f\81@ \10\b\ 4\ 2\81@ \10\b\ e\a\fõÿo?êìß\9a\99:>vfÖC\8dòÿ\rùë^úÍ£³Þ;&åz\9dëìzãç\9b\8ewjpÙIU¿Ö\15]XlºÚ\99º7\81@ \10\b\ 4\ 2\81@ \10\bþ¿1Í>cÄ~è\10â\89,6\ 1\9e\f\97Ãóÿ¢gϽqf{'Æ6·óüÔ''\1f©Üo\95\eíê\9cv-®Çþñü'\8bͶwÅîuk;ë\8fÚü®n6ü\17<rÔ=ÕîÕT^±ÆóuÖ\9eg\17V\7f\0ÒX\b\ 4\ 2\81@ \10\b\ 4\ 2\81@ð\93òm £÷\81ÏÇí *\9f\7fâÁ\9d~6ùÛ\81ñ¦Å0ðäØ4\81D\8e\9dU.\91PÞû\12\83\ 2Çü\14\19V\ 1§vzìtt` 7±Î|\90ÎÑK\83l\84.zò=ÒI\89>\1cdétÞu8í\93¿ÐiòÐêdé>B§pO/\17\ fè\14:-öÿ\ 2\81@ \10\b\ 4\ 2\81@ \10\1c\16\18êÿ\9fÚvÉ\933S\17\8eÝ\9c¿\ fÌäù\e\1f{0Ç«\1aõ\vØÞø¼^»\7fí\eË}òá\1d\939ãÈ\91µåê×~¯Þ7¸¿¤Ï\7fÅçW+qÙº0^c\9d\8dò\ 2^׸½¾pΪÿÉ÷\8dwãcÏ4{\83_Ù\7fÄ;òýÄ|\1ek\9cW§ì·_,|\81
++åÞßÊ=\98Gð3ÍÞáàx\81%vÞ[q\1d÷£sÎÈ÷;Æÿ»¯µ÷ÔýïÉù{§ÑÞÛ\e_Ø\8aÇWý¨Ä\vLÈç¾eÃç§Ç\vü`\96ó(OáÎ9âü\95¸_³Çù»k\9eX~\85\87\8eå|ú\93\95k\8e!\8arÚ5nï\1e|á¤Â1hláF»¿Å\0üÛ\136|©¦\85b\aò©y¸ \8fn1Ö¶\f®¸µò\ fÖ\98uw.\e¦m¹§¤ÙTÊ;bi_Ï?ع¾Ô\93\8c"9í±Öw£q\ 5'\e\1fã¨ÿ\89m\9cq?|Ýy\8f\974oKÚEK\86uùîâ\92\16+gÜ]Y֯ǵöc\e÷UÞÂTäyô4¾Ã\99¼\85·5¾¼ÑX\85O4îÅK\9f}Åg«í\8c)í{>·\9dÆ8wÿÚÛ\8b¬\9dõÓcù±Ð-OmY^ã\18VN<Ûd}ÅàÁÂ?èCåü;·ñ9\8eÆ*\1cor\19åIÜÞæÿ¦Çï]RÒb\1d/74;\9e+\1eZ÷\91Âw\98Ã\17q¼4\9e½«~ñ\9dû*ßaåW|"×\85\7fÞ¶}MáÒcH\95\ 5C¾JÖsÛòË¿Rx\vS,í»\7fY?\a×ì3·×\18\87ºÊ¥\8d¥QÞB5\8dcp¦-Òö<®\7f\ 3×ùß\99ú»Â\a¨êø¼¹½75Øûá\92f\)ï@ã;¼iצÊ#èBéÛ\a[û\1eþ£Âõ8ä\1f|¦ñGNî9õ\97\8b\9f\93ª\1c\83ÏÍé\ 3ÕÇb\9c\9d\7fps[ûÖ\ f6\7f¤ð\ fªTúý®Æ\1f¹î\ fßýµ\92\16»ÒG;Û\9a<Ê[øÜ¢¾¼÷\9eTæ\9f\ eª\8e\89mK\86åÍ\8c\9bxuãU\1d\8d\9bxç´¸\893ù\ e's]¦p\9d÷3®-i®ò9\16n×;p\9dûõÏÝ]ÒB\9dG\85Ç\93\1c\91/;vóîÂ\93¨ë:ø\\93Ù,1\15[|ÇÑ\98\8a%¾#\1fØuÓ\9b\9f<8¦âùí39\14ûØ\8f³Å[\9c\18;£q6¾\7fáê\9aæb\8dwºt\98çí\8bKZ\f%í\9a%}\1fÙ±úéòû\e:%\e\97\9f
++d\1e´\8e\1cPÖ\86\8e\91ìðû\90\18¢-z£J\90j]¢´¡×I\ 5\974m9\19¿Úåû\95ËΩCÍ\ 6µÅÚÃö\83AÐ\t(}ÁAñÆgçÄ2\fB\16\ré¶\18ÁNE´!zò~Y\92¥iR·aùÃ\1f\15\9cc¬-\9bE\17C\89ëå!\9eÿeïêcö¬îr\9f\bò´@\99
++\8a\80\8aP¥´\r\9cï\ fù°K\8ac\84o
++\14h¡:\b\1d}¡@j\82\8cEÂêd\1f\ eP¶ÔØ?\88,¡\b\f\b$6À6F@êÖ(8\ 2\11*\92Ò½-ÂØ\A×\80âïú\9ds\9fçá}\9e÷5Ñ4nöweO\97÷>÷}îóu\7fqý~×\ 5ç4\98\vF\1aëÒ\9e\9c³£[\87ñ\81Ú\ e\v6j=ÎÂbiè\ eè5ï ÷\ 5µ7ça\èithúØ\a0\aî(\8c\ 5Y©ËѰÑÎ*\81Î\v\1enm\ 1Fx
++Ú]ì\bVdùhò\fÌ#i d:cÆûrÖ|g4\18H\17\ 2T½èå v\9e\81Ã\1a\823jîAK\ f·'\ 51´âË6^Ù\14]³éüÉY\17\8d\0Ù¶\10S*\1eé\99W\81ÕCí«qÒÕ¿\ fFjð93P$\ 4\919¬!\98a\13\ f\95»\90ñöTb\81k\19\eËA\97\90Æ\13~i´´!ç ÑÖÚ3Î\83o\9c÷b\8c8R\19ÖuÔcõ\ e©ÝM\8fÐZfh³Æú1°\96\eêß4þ\8f\9dW£6\19V~\ e.m\81®\bxúÁx^[\1fbÈ
++ú\8b\10j£z T\a×:,2\98ÀY^?X-\ e\9b`AIKIÓð`"gÒÖË4*0÷ëô(-|ìiI×yi^¨.YXÔÑú£)N0\8c¤Fñ\8eôæà©y\10t´\90]Ĺé\1aÒð\15\84Ä¢w¬BéáÌ\aý>H\12Z8öÑE
++\87;\9aEÖÚóÚYeiÑ«DSÏýÁ\95
++M?0Ò\1e\93\95!@Ù\91\9c Ú\a)@ZÙ\8eÝ\ 5ÇzjÒm,ÐÁ\9en\93¶ãÒ\ 3\r\19;]\ 6Üǰ\18éV`¡\ f\b\vLZ-\117@ÈAÒOC5/Áh\117\1e¼¬S»1pÔô\b\7fDUµ;±èñ.H#¬\\88t×Kt^O£\ 25Dè\ 6²!`Ä Ñ\84R£,\9c33V(\8c\12iÊ\f;k&\97\ 6×$\r\8b\9bÎc\92\96S\f4vh_§\93\99 HIÍì|þ\86}ÿ\ 6þ\89*%\9a\12º\8bD¾\vÖc-4\1d¡£h\aëöCy\vÂÿ\v\ 4\ 2\81@ \10\b\ 4\ 2\81@°7`Àÿï¸ä\ f\96N-ݯòÒ£~~'òöÂó\1f¼²ð{Ùö{§6\9f¿£¯[ô\1f\85;Ñz\98\87?~×7N©\9eU\99¶3?\ 5\ eqá3Ï\96ø\ 2\15hûræDFýÿ
++o?ÊÃ\1fÚ8·5\9f:\9eã\v¼±¦_¹?p@«.\P¶{KûßÐ8ë\89g\ fy\86yx\r\9f¿§[û?¾»Ô\ 3û\94~ï\85!\1e~à\v8»·¸\8dÃ(g~\17\97}\99~çè\89í¥,U~ôþv\9eë\8eX³£òÔ\95G\9a?Ä\99Oå¢×Íé\8e;wý'_¯\9cråÌW\1dÔ\9dï\91_¼âµÊãVþ©p§ã=í\965\9fµ¥?{ö\8eZVùûͯp\94ã=²q\99¿ûý\85\eJ\99í|ò\9a\97áÚ\87.\9d¬^x©ðÍ\85\17\a÷¶úû¯ÞZÊRõD[Âý[L¿\rîÒÂÑç\10Ëù\9ehu¾wïªÊ\e[WÎ÷\16×9Þ\voSã᯿¯óë¸èâ\89\ 6~í\86[.z³\94yUxÀS\e/~Þ¦«\9f¯eºôa}ãïÏß¶ö\84η®\1c\97ÚÚzxÖ\95ß-e©zý-\9a\81S^ÖøßQO»%\8dW½ì\9fÿ\99ÊÿÖ±^2\ 3\8f[â!®ÂqÛõý\85;5Õ¯ð\9d6·£:\1c\8b\ eìÖÄ(¯:\88a¹xòþ£kY,cýÃ!\8f¹Í÷Uî´òÔ\1fáãî@ÙÖÇïù0¯Úo1\1d¿óÒËÇ\17\ eTÕ\98\8e#fà\¯mkb*ç*\10\b\ 4\82=\83aO¸\ 4;4\10\82ÎÀ¯*\81\16\84#\97wÎØ@7y\ fn0é\88è\ 2íR\ 2áËÖi>\14®-\ 6ð«®Ô;ì\83ç³\83}\1aò[=ícC¤G\8dó°)SZ±½\16½Ð\99D¯ Æ*£\98Õ\a\87FO\7f¯\12\87-à4ôÄÏt h2z\8eÁ[\8f\9e\13t^\e\92OÅRͲ±\9eñ°ù\83Ë®\86%´\a+\ eÊ\+EÕÛÔñË\9e\1e±Ì§{Wþ¦g\92\ e\11öZü7Õ\ fË®D\1d\ fYÓ\132ùa\ e\96ÞZS`\8eÞÑ\ 3ÒSç\8a}_ªc@\ 3 \98)w\1c\vRëô\18aç+\9f\17U\ e\85K\ 4ýêÂ0?=\1d\9f8]\9e²\a\9d¬\90]\1c½ö\83}©ë\19sÕy\0"Æ\84ö\v°[³4Ç.§Ê5ÒdX´B±·]HàRAÁÃd\rÄ2Ö\88\r\ 1\f¼³4]6F\ e@°ð¯£\89¤î+\15\15\r#MB° PéÔ1¸Ìl0µ,8¶[ä\90\80\10éCA\85=ÆÕ²Ç\1e\95\ e{AN\17Ç0\1d\1fÿÓèI¨=fUqd
++]tpô\83I!ìãè½\98º§\91wîpyeZ\8c*Ók(µ\8a\1di\10UD\ 3èËÂ"\9a\89¦"º\88Ø"º
++\11k\8b \a\9a\bêa6\99\8e¦^ÀÅ."È\82\96oFü\13\r\80§¾Ò̧\16Ç@£B\ 3L\1d6.¥\1a¯â\9d\9eÁ7\92>RhP\1c¢\16b\17\ f±§<5a\83\1di\11"\1e \9fÇcý)-V\8fE§S ÿ9]â-\14V?-ÃÄ\8b\vA²\98qºQãpñÐEé¼F,$âY\11\1f\93a¤I·\1dÌ}Ft\11ì
++i\1e4\82\0\10.\84[\ 4j¶t\9bÄâ\83\vd\82Ob ¯OÄ¥hº-p\°ðÿ\ 2\81@ \10\b\ 4\ 2\81@ \10ì\r\18ðÿÇ^}Û\1fM-ݯ·³ål®[¸íÌÂ;\86YýÞ\91mûq»~õòÂáæÜ¯Úþ£yû\9bxûhÞþrÞ~\11ý\16lÙx\1eow\9e¶ÏkõÌ9ç×¾ÅÛ£Ò³{ý\19ü\b\+\eÍ·~«å*/{þ\92\85\85\1fÖ5Ï÷¹\96«ìöY^øS$\pÙGZ¾õ\8amgÝÑqÇ\85\a\9dÕÎ7Ê+\9f8\ 3\97{D\e»©\1c©@ \10\b\ 4\ 2\81@ \10\bö\f\86â\b:m~\ 4-Ù\10C\1a\8a£áÈ\a\ 4O@McH\8f`*Ç?UKÂz«\10W\10Lô\ e13ôYi\1c¤\14¬\ fÚCÖ#a+\87fx\ fE\7fD©Ø\1c¡ý\91³\81Ê\b}W+è-X\8fp §k<Êtz Æd\ 4_Ñ~.$X\ 3\fÅýPeJ!Ì&\84\bé\18áÿ\ 5\ 2\81@ \10\b\ 4\ 2\81@ Ø+0àÿ/~oßw§\96î×ÛØòó\87õÿ÷«üö¨.À\8dg\9f÷Ï\9e[8x\17ú5\ fyT/`ç4ùÿ©é\95\7fæ´Ã\9eç\8dýÞú¦g=\1c\17Ðïl\ü\ 3[~ù)Ö\v0\9eêßÎùÁÈ\vÿÒäÂwy{F{V5\ e~Ñ®/_Áº\0É\9b~ïNnç\9f¢=ï|\8c9ýà\fí¿x\1aÝþ÷yûbúÍ\7fêð-¬\v 3µóÔ\16ï°ùí£vóö\1chÿUM¯ú¨S\ eþ\80ÇMiÚ¾¤å¨_yÆáß)Ûá\9b0¿é\1a|î\ f\17¼SÇÙuZÚãõÿWµ1ýÄ+ökÕ\9b¡æ|ßÕ4ªGõÿ\9f\9c!¶b#\1fw-Æòè\15/\16-\ 3¥K^÷ʦÙ>Æ\e ÕyîIµNíª¶ÀÒÖÎUÿxc.e¡æÞonósÍäl[ËLÉi_Ü´×ÿü·.\9b¬e±è\88¯mëïòç¯;¶h'¨Tb9\965m\81\eN¨:÷Ö©Röãv¾\89É\ 5\ fV\8dÿª½~jÓî\1eÕ\XÜægÓ#×ì,e)\94:\977ýñ\eO¾üͪÕ_óòomëXýÉ¥ÿT´ú³)ã2ÑÆlT«ÿÑÖΫ'\97\94q\89¡Æ\9cläþ=L¿\95ßý\86¯e¡\8c˺\96ë?ªã¿¡\9dïñ\aë¸$]µÐo\9aÛ]çWì\9cûÇ¥,Ôµ4Ðô¸jr\8eZ\r¦Ô¹yÿ®\7f/=6ñJÑjð¾\8cËkíÚØ}ä\85;ªVCõ)x¨é1\8cÆâ\14\ f\83³è·ëÞ\95;k¼MÕ\16Pm<Gµ\1aN\9fÛ\97O\7f}¢èF\98\90ÊX\7fµõý¢y\13¯\16\ 6]×õ\893ø\ 6¬\9f3(;ýäNÿ¡´së\fú\ fϵëüý9Wÿs)˵\ fkÛ\98\8dÆ\foké\85G\97½þaO\81÷Û\9aX>yÕ1Õ7@\97yx¢im\8cêF,oý»xò¾Û\8aþC\8e¥lË ^êÕ¥]Yõ¼¸y\ 6\86\rm\Fµ\1aîj\1e'£úøE\a\ 6\13ü+³ÏØ^Êbõ\148tn·&D\ 3_ øÉ\arréiÆiÎÆº\1c¢\rÐ\ 3÷ÉABßÓ;\1e=b æn2,9\ 2Äã\8d2ð·F:î\10÷6Ð,7ôn\90\ 3=%\13l\10bv\19\16\1aô'Ì\fÀ Yz\1aÐ\8d/*ª+¹\10àR`XL?DjC¦¶$\b°«`³á´hä\vÓ^H¹\85ÑB²ðIÊT_²\9c\9bì!#\ eo\83 \90\8c\ fþ/"A;\ 4G\87\81Ä\8b\ e¾\f\91º\12èq\8a$÷ìS§¿M\rtÐ\9c\8fôÊÃ9½Ù\8fÏ\r\1eã\81 á¼\10mf¡}Ö\87O3ò{°\vàlmCCÜ4ê\8bF\81ñ\ e©ýÈ
++Ö 1ñ¶¤K\86·²\ eêý°\13§Y¢¦r\8a{\bì¬`\15½°Ä\ 4º\92]( \ f@²lÈÓé¶ÓÖYc4\1c\ 6zãÕ\9b"CWɰ`\ 3l&<ÜV¦Ñ\1d\80ÔC¦IPÈéÇ8`Í@c\885\ 3X\8f\80FÀÃW\81V\91¦q\8aPp éó\81\16\0uÅBk Â¥!CY?C\1c\9e\16\90F\9ex\8aÈЧ\11M°³\80\r\ 5j2\8e&\94\1a¢|¤\11I.\1a$Ë£ ê\ 1ÀÜÂP\8dÝüØÀãl\90\10\ eeÿN»Âi$î»\8cW`\8c9\r)->4\93\16\95\81±C¢k"%\eØP\ 3\9a\ 1ÖG¸vÐ3\8dy\hPXZ\9d~X/Þ(¥ñ\98u0dÀ¤\ 5c\9c£\7fi\15@o\83\86À\ 5:\937 \ e\ e4óÐ\89w0èà~@\85\1fiô\8eå\v\ 2²Õé\83\87ý\ 5,ÖS\ 2Ç\8c¾Ð*L3x2LÕy(úü´:¡G\11\92å5á 1\9faF¯;ý\ 4úZ\82:\ 2\v8ä.¯\9f\15\19Ê8Â\ f\ 1Î`\11\8a\12c8÷±^ còîé\85ÐdÎõ÷Ðo\88©je\8cÕ\ 30Ô\9a\98i\ e 2B¯}tS\88\8a.6Å÷\ 5úNÁ°â>\86µ¥X]\82fÑó\9d`\8aN Òð-Rû1\9fÈíϺ^Çôj4Õ\eÂÒÝ ¦)TW¨ëÉÐÛ1½èFhP\84zMã®â\8b'\85MC\9e)µ?\1c¯ÐÅ-\94k\91¦_A+\0Wc\83Ã\f`$Â\ 6-ôÿ\83kWø\7f\81@ \10\b\ 4\ 2\81@ \10\bö
++\føÿ[\1e9ò+SKû½Y\8d÷>n×\ 5§\14N\18¼ôCÛ¯ÿhá`\8dï÷\96N£\vpDóTþ°/ÀüVÏ\87}\ 1\8el<Ù¾ß;ô;\85?W~vÕ\v\98\86\17\9eÁO~\9fÆ\83ýÞ\ek\8f®¼°*|Ö\17¹l¼ßúÊ\16ç0Ê\7f.\9aAǾÄG\80ç\7ftAñ\0Ç\7f\12«Úêm,FýÏ\v÷ûgô;ÿ\85Å\a\eÿa{Ö@\1f~<çXâ\aÆû\98\1fÚøÏ©^å\ 2\81@ \10\b\ 4\ 2\81`ïAÇß+\v\8d~\9d\15}|Å\yt]ânb0].ü8\1d~Þ\97Irç\ÔàÊM@\84Hbß
++ú6Ó\9a£M"í\82X\19\ 4ï\18\90øTäyû\90¿B²\9e\9a\91A¸ûäLð>Ä¢\93\1f\94\8f!#XÀf\r\e\a\1d}L\1aÉô°Yð\8e\95ü="D\107\83Ð\vĪÀ\18\ 3Þ#&[g\rbL\10\87Dß\92*!"ÂÁ\7fB%E\9b\1db\<¢p3\ 2\11ò8O\ fkÑvϱ±üw\84o\ 1§í#L\15±7ñ/Sc\1c\8c¢SÐ÷°ö\ 6A7&ÐéµJ\18ø`M\ e*Ä \1c\ 2|àp\ 1\8b\ 6\1aIÄúÀP!Âø#"¼ÄFÅã\e\12æ\ 2qK\1eþ\16\16\11N\99&!\85à`3\90è/Øk j\15Ñ\9b0¹Ð\99j ѧYrVø\7f\81@ \10\b\ 4\ 2\81@ \10\bö
++\føÿGÎ:ùå©¥ýÞ\96æEÿa\9e¿äçC·ÿ¨-\e/*ùÄ>vq\ 1È\r=îo\ fÚZòMUê÷În~÷Çîþ\8d\7fã<|iÿ-\9cK:\9a\9f¿³åå\1eð±C¾Íùù
++õ\1cÐr±?¾ûø\7få¸\0er¿z\99£\9d\vv]Êùù)ZÚ~6ï\ f\8e~Áû;Wsþ|\8eivïѦ/0\9aë¾a\86|ö\9bZÎì\9aÉ«ï.1\ 6¦òìgs\9b\17Ï\1a\97_~zËoÝ}àêm¥,º\12·°¡y¿úÈ9ÿRrÈ\83/eóù|ãsÈ\7fÜò\85GsÈ\9f8°+ûԯ׶D«ÊqOr\9dãc\1aÖµ\18\8a«&·ÿu)\8b¾Ä&ÜÞ|\12®?ì\13oÔ\98\86\9a{~yÓ5\18\8dwØØÆe\83»ôå\9a'\1eK[NmþíïÝ»ªÆBXWú°¸Íõh\9cÄs\avëæäc/x»æ\90×<ñþPÞö¢ÇK¾·³¥lã\ 1]\1fn¸å¢7k\9exÕ\1c¸³\89K¾Ôù9$]âGnnkb4Oü\88¦GðKÇ\9YóÄm\89-\99w`·þÎß¶ö\84.f£\9cïÄ¡¼í\9d÷\94¸\fëK\9dËçvó>\9aïýè\f9Ý?l¾\13?zø\93%\87<Ä\9a_¾¡åQ¿û\95\15ß+9Ý´Ò¸ì5.[N¿sv,)q'È#â²[[¾÷h.øW\87rÈïç¸\1aäé\95±^És{\aýÎÜúø=Õç¢æ{/n10_ÿüi;kÜO(unn}_ÿÍ%oÔ²Xæ}^;ßh~ùâ¦UpÚö·÷«Þ#¾êBÌ\90_>_òË\ 5\ 2\81@ð?\ 2ò\9bU\ e%ß=!+Øv:Ý?\89~ê³Æä[s[\13èRz\f×\9cä@ï?mÿi´\f¦r¢\96Þí\92\89ð4\aÓúßò¤]nóØÜåª\1dPòßéUÚyåC±dO]¾ý0¿º\87t\ eh\8a ÿ\90è pÚ5_;æè\91
++îSÈà©\81I+\1ayHÈS7SÒØ\9d\ 6$bf-´ßs \97[äð;p¾\9eÞ±\1c¿·ªH\8d)ß\1fÌ\83Ç¢IO5\83°NP¼ ¶G$\95\ få|ë@§µ\91Ö\91\8b]\8eù\9eò¸\9fN\ f\0ê\1a`\9f9¯]Ñw\ 4ýikÎýt\1a\16SsóY/$Ы\1a]\1cÔ\9e¦qo2\14.Lð´ê=$"º9\1f\93÷\8f\b\0\r\9d}h\11$MG\86º\86¨Nã\1cÔ\10è£*%ç Ö@W M9]\87¸\ e\90\1cO\9dw\9eÛè!\8a ÐEËñ\ 1\ 1\f<t\12pV: \r\ 1\94)Úúu\9e/Ö\9a³ÿ¿Õ=Ñô\99\9bhJhRè}\1fz\15õþ\92èÓÇ ¸\81æ\89Ú\ 4Í\aê*Ö\1aMG \17k\8f8\aj¢¡\9b\bV\1f&\fùþÔQ¾\ 6UÑ, ]h!&º-E/ü¿@ \10\b\ 4\ 2\81@ \10\b\ 4{\ 3\ 6üÿiÇ|öß§\96î×{k¬þ\7f¿7«ixÿý\99\vÿ\93·Ûàû½CyûÅô[ðÞ½g0ßÎ:ü¯1\ fú\10ý\ e8ÿçþ\8e·û¤g÷îäú/¤ßïë+Þ*<nÇÇ~\91ë:\97~ç¿a7V½oS¸Ì¢×>\9es½½qØË'\9f.ü¯s®p\84ï4ÎõâÉ3K\19D2g\r¸ÓÂ-Î{°j\14ØrÜk3ð\95k\e/.ü¡@ \10\b\ 4\ 2\81@ ø¿\ 2çñÃË)f\95é\9bÄ"¥^\e\9fA\82'\98"¤\98càttk\r\92ÊurÞ¸\98Kƾ\ 69î\rÇ4\ 4e\15(ð\94\9cqô\91\86H\ ecCDª:\8c| \v\90\10\8d¢8ÌBC\1a\1fÁ\18\ eYõÉX\8bÐ\b\84f¤D\8d\8a\1e5e¯\11\15\80\98\18¯Tó\13p\19A \8avL\88{ \9d\8cQ& \90ÆGúS±a\84£\9dh3UJB\10\ 3"\11¨ÈÚ\auN\87BU\1fÆ\14ÖÌ\9aÆC '\15\10·\90\f\ 2eÙ\7f¡Æ(\ 4:kÈ\81úèU@ø Ô÷i\ 3\8d¤\ 1¿\1f\8dA?\9dÃ\16Ø\8cøl\14\8dV ÖG\9b\ 3²ü\ 3Ü)\ 2â\v|DèG\9a1\96"8kyV\ 2ô\18TV0
++°:aÞh¬\14\ 2gh\f©[\11Ö
++\981¢\83y\bU£èüYEH\1dÐ~\1c\f=&>¡ûql\8f@ \10\b\ 4\ 2\81@ \10\b\ 4\ 2\81@ \10\b\ 4\ 2\81@ \10\b\ 4\82\9f~Hþ¿@ \10\b\ 4\ 2\81@ \10\b\ 4òý/\10\b\ 4\ 2\81@ \10\b\ 4\ 2\81àÿ\ 3\ 6ú\7f\8f¿\7fò¾SKû½}ØÃë6úm~ñ\88\1f±^^\f®ß{\88·Ã\ fí3§\1dölÕ\ 5\8cýÞföç\82/à\82-\eÏãíÎû~oûll\87¶Þ¢]îyöùóÊö{;y;ô\ 5\8fúö\17^)Û]ê÷Nl^l\13Ï\1eò\f¶\a\r?¿Ó\9b\1eᢿÙ\97}æBRÔ\9e'\9bÇÜü§\ eßÂþ\7f:S{f\rù\ 2ÞÎ~hÉÁ§p^óÜ;ê\94\83?`=B¥ÕìÞÓ¼ýVú¸ï\9c\17\8b/ ÑE\1fð}nëµô»àè\15¥L«ê\ 1·±y\96]ÿ\9bk^/eºú¼-k\1e~\17ýåĶê\19\98K\9dÛçtí[3¹æ±RærñH[?wPö\83ý\8bg`ª\1epOr¿~\emyà²âÅçtõd\9b\98ÓõmÔOp ÷\ fÿlzä\9a\9d¥,\85â×vç\9c®\9d£^\83Or[¾@¿+ßüÜ\ 3Åk°ór\9bà:\97ÑoÃç/è|\bcéߺæ·7ê\19ø(\9f\ f^u/=6ñJñ÷ó¾¶eÿ®-»\8f¼pGõ÷sÕW®ùµ¹}\96\17o<íª÷\1fÛ¿M£'¹©Ù\9b\ eZýb)c\8b\97æ\8d\87\83Wl;ë\8eª5©\8a§ÞÒ\ 3»ó\8dz\ 6®k}8oÓÕÏ×2]æá\86¹Ýù>8i¢\9cÏ:WÎwzÓ\9a¼lòô\93;_ÀÒ\87¼Î mù\17ß¼¼h[Ò\9a-cýt;ß!Ç^þ\ fÅûÏÚâáwÿ\9cî|7\9e´ºxÿùX=\1f74ß¼\15\93\13\7fU|\ 1U.ç+¾\95k0Gw¯þA)ÓªÖ¹ÿà¸S¿VËRYó/ÌéÖÒÚÇ/(~\82pÂá²\87Ú¼\7fúáK_ïÊJ[v\ eÖÙ1+Jÿ¢ªí¼«y>\8eêl^Û¼<ÏÜñ\vw\97{\8eª¾\8e7\8b\87\9f@ \10T°\8e\96nþmt\875ôJ\12²q ÖmÅSMi«\15üȼ\86AZ0Æ9ú7$\a\7f©\18éÅÁ¹\f!/\17µÏ .ZN\19øc%z`y<\94SpÊE«\ 3\1c¹\12m\82W\16\1d\9d©\ 4ÞbTmö)ÍàgF·ñ`,\9cçèÀ\19½æ\12\97S\v\f;éÑsѱÇ\17Ì\86Ùó+òß,\18¦\93\1fò»Ó)\ 4\b\86¥\f³½\98L²\832\15\ 3\1cÅÐ\9f\1c=u\ÓI!\0FÝ¡7\92D'KÊÐá\90D³\86Ú«!\82æsf?9È\97Ñ\ 33ÓKVD\eÑu:\ 1\9dßè@m\82¸XT6Ág\8e¶+Kï\7fx¬Ù\9c1¸VÑsZ\e:Av¦øÍù\98±+ÔØ"<¼Ì ¶xÝY¼\83°ÿ\9d\8dFÇdi"-»ÙÑû°¥9a 4c`:W´ÄØeÎÓ\9e4òp\87KqOjÁÝ\fNl\96-ïèøÎ7OýW{g\ fbW\11\86anw\15d\9b4b#\bbL\90ùÿi\82\85\82\85\11\11\8dA\13;Q\91°),ìba\13\fÑBÁJ\ 4\9b\14B,\ 2"\b\96\16\16¦S\14\r¨H\ 4\11ü©DÄ÷ýfîÉÆì¦\v
++y\9feYö\9c;sf¾ù¾á\9ef\9e^\vÏ\83õ\14Ǻîå<Ûíü2Ì: ïÜ<å\89©¦y\8e\e\ 5|ôÛ\95`~=;\12-ð\14:<¤\8c\806^-\fFÎÉd\84È:t\8cH"ÍR¦â\8fV¾\12c¦JqñÐ!$\993fÎׯ\7f\8a\1fn¹ÚÌÆ\1c§Unã§ÛËU\88ÌBB¡ï`îºÚjų\91÷\88>}>#á{¦ÝÑÎÝc%òÁôsS0È¥Å×¶ì\90M,hV\92åvD\8e {\9d7\7f_
++TGbñk¡0;sà\bEª\95/Eø\8cç±tè>Ò\98GccB4kDÉù\822á\98xÀ\9fe\ 6ò¥ \ 4\189ÌÈ
++½q\rR`G\8e\aÓ¡\16\9c·\âI\83XA\94cÝ8üÐ\v÷\ 2dr¡ÍÏÏu¤yÒ]ç,¼±/P`\88ò±Ï;¬\ 1V"bóÉØ)B\9b¾½\88Øa¢\94\"K±+à!ئ°²\9e\9eÁ\88\90wzóx\8e\1eE\80\81éFs\1eU}\99uÂ\13\0\8b§þ\ f«\85\85ãcQS4p:\87\1a·¢@nôH\9b#ÇË\97Ââ¸\8faÀhSýfÌØ])VtH©\86ü¤å\10©G\81': p³Ó«\88\8a\88\11\95Ç£\ f\91\v\9eAÀ«\ 1V\ f«\96©ÏÌXT|"$ǽ\ 5;1\83\18y¶_CqFîKqÄ(¡\96:ö¯\9e¸°¨\96\82j\ e(ÈÂ\1aÃ\1cÐ\98NB\84\ 4µ\8c1q'¢¸Ò^\17\85\10B\b!\84\10B\b!\84\10B\b!\84\10B\b!\84\10B\b!\84\10B\b!\84\10B\b!\84\10B\b!\84\10B\b!\84\10B\bq\83\91ÿO\b!\84\10B\b!\84¸\19¸âÿ»üÛ¾\aÿ}w½ztñjm¿|߯Ã\87\17ãzõ±9Ãèá»çÓ\ 3O\ eW\9c¯ëÕó\8bóìáûo\1f^@\1fÂzõêÖæúÕ¾ÀËv\9d.°Ï\1f9ð·]\8f%¯Wg\16?ÚÁßßz\96×sËìÇú?Ëþ¿ºóOóÿ\95\80~Üm\9bñ\í\ 5tËx\9e;|ÇgÃó\17ýzÕì:\e\9d>uï\1fvݧtËêÜuü\7f¯ìðñ\9dxozüüðÀ]47\19\9dm§.\f§\99§©Äî½±u¥Ýkw\r\8f_(Ã-÷®Ýcãíï··¦soº\ 1\ fnmbÿÍ\87/ü0¼zÃi³qËñy/}ðÌx^«mxÒ\1eZæ|üî§.\rç^ð£Ý\976Î#ø=´ÿÈ/Ó«7Ýy\17\97µ¸Ö¹7¼\81\8fá÷\89\9fâ¹éÇ\vÃ\ 3÷¶ÝÛÝ\81waY÷§Ï¾øÅ¸×üpĽ¿ÜûëÖ\13\97\86\ 3¯§Ñç¾eîÇ?96\1dx\9bv'\97ù]ë¹{s\89ç±\1f\7f~gúêòô0.óûúüÑ1¿æg<\1fXòùè·\8f¿>îõéS<i÷è\9d;üÝGç\87\93\8e\ 6\18!\84\10B\bñ_c\8e½>ü\83ÎѨWh:tÔÈ\85îKí%¸LqaÌÙÇ^\9b§`/Ò4éó\90õ\85\84o\93Ñ<zÔúEO_[À[Ìt\15îâ¸+)ÆVñ\84\12Ûp-ÆÄ\86øC=\9e\vè´öè\12\9e\e=M\7fÍ»\9a\8aI
++£Ë=t\8c\80n·\90ìËø.NÌÿ\8dã\ fó6\97gEûPRî#\ 6¾&×9n4J±vOÇ$¾Ï÷y\1f³+i\87Ã3ú\9c\16ÇcÂ×i
++é\92)&)¼ÃÛEJÑ#d\81\8b\940²\12s¢ú±Si\89\81!¾\9eaÄ\8bAJ\88 Úeº\ 6#~j+9ô^p§Y_\88\f\17¢õhfQ,(¥}ÝQ\10\99\8bç<±þyx6\13\92£\85V¸R\1dA«Ó\97ê]G\9ckâ}Ê\19óô:v$Dp\88Xd0ç|\11d:&\11_ª\ e½I¬Í_Y\1d{uλÆ\97²\1dNÏ%\1eHÇ\9a\91Pô\ebP\9ezsË=ÌÓâU\937\9fjîÎä\84t\8eÎ1îá\ eí\8d\96ÃF\15i©È2¤\84ö\v!\84\10B\b!\84\10âfà\1fx2 Ñ\0\0\80\0
+\ No newline at end of file
--- /dev/null
+Index: e2fsprogs/tests/f_mmp/name
+===================================================================
+--- /dev/null
++++ e2fsprogs/tests/f_mmp/name
+@@ -0,0 +1 @@
++enable MMP during mke2fs
+Index: e2fsprogs/tests/f_mmp/script
+===================================================================
+--- /dev/null
++++ e2fsprogs/tests/f_mmp/script
+@@ -0,0 +1,24 @@
++FSCK_OPT=-yf
++touch $TMPFILE
++
++stat -f $TMPFILE | grep "Type: tmpfs" > /dev/null
++if [ $? == 0 ] ; then
++ echo "skipped for tmpfs (no O_DIRECT support)"
++ return 0
++fi
++
++$MKE2FS -q -F -o Linux -b 1024 -O mmp $TMPFILE 100 > $test_name.log 2>&1
++status=$?
++if [ "$status" != 0 ] ; then
++ echo "mke2fs -O mmp failed" > $test_name.failed
++fi
++
++$FSCK $FSCK_OPT $TMPFILE > $test_name.log 2>&1
++status=$?
++if [ "$status" = 0 ] ; then
++ echo "ok"
++ touch $test_name.ok
++else
++ echo "e2fsck with MMP enabled failed" > $test_name.failed
++fi
++
+Index: e2fsprogs/tests/f_mmp_off/name
+===================================================================
+--- /dev/null
++++ e2fsprogs/tests/f_mmp_off/name
+@@ -0,0 +1 @@
++disable MMP
+Index: e2fsprogs/tests/f_mmp_off/script
+===================================================================
+--- /dev/null
++++ e2fsprogs/tests/f_mmp_off/script
+@@ -0,0 +1,30 @@
++FSCK_OPT=-yf
++touch $TMPFILE
++
++stat -f $TMPFILE | grep "Type: tmpfs" > /dev/null
++if [ $? == 0 ] ; then
++ echo "skipped for tmpfs (no O_DIRECT support)"
++ return 0
++fi
++
++$MKE2FS -q -F -o Linux -b 1024 -O mmp $TMPFILE 100 > $test_name.log 2>&1
++status=$?
++if [ "$status" != 0 ] ; then
++ echo "mke2fs -O mmp failed" > $test_name.failed
++fi
++
++$TUNE2FS -O ^mmp $TMPFILE > $test_name.log 2>&1
++status=$?
++if [ "$status" != 0 ] ; then
++ echo "tune2fs -O ^mmp failed" > $test_name.failed
++fi
++
++$FSCK $FSCK_OPT $TMPFILE > $test_name.log 2>&1
++status=$?
++if [ "$status" = 0 ] ; then
++ echo "ok"
++ touch $test_name.ok
++else
++ echo "e2fsck after MMP disable failed" > $test_name.failed
++fi
++
+Index: e2fsprogs/tests/f_mmp_on/name
+===================================================================
+--- /dev/null
++++ e2fsprogs/tests/f_mmp_on/name
+@@ -0,0 +1 @@
++enable MMP using tune2fs
+Index: e2fsprogs/tests/f_mmp_on/script
+===================================================================
+--- /dev/null
++++ e2fsprogs/tests/f_mmp_on/script
+@@ -0,0 +1,30 @@
++FSCK_OPT=-yf
++touch $TMPFILE
++
++stat -f $TMPFILE | grep "Type: tmpfs" > /dev/null
++if [ $? == 0 ] ; then
++ echo "skipped for tmpfs (no O_DIRECT support)"
++ return 0
++fi
++
++$MKE2FS -q -F -o Linux -b 1024 $TMPFILE 100 > $test_name.log 2>&1
++status=$?
++if [ "$status" != 0 ] ; then
++ echo "mke2fs failed" > $test_name.failed
++fi
++
++$TUNE2FS -O mmp $TMPFILE > $test_name.log 2>&1
++status=$?
++if [ "$status" != 0 ] ; then
++ echo "tune2fs -O mmp failed" > $test_name.failed
++fi
++
++$FSCK $FSCK_OPT $TMPFILE > $test_name.log 2>&1
++status=$?
++if [ "$status" = 0 ] ; then
++ echo "ok"
++ touch $test_name.ok
++else
++ echo "e2fsck with MMP enabled failed" > $test_name.failed
++fi
++
+Index: e2fsprogs/tests/f_mmp_corrupt/name
+===================================================================
+--- /dev/null
++++ e2fsprogs/tests/f_mmp_corrupt/name
+@@ -0,0 +1 @@
++repair MMP when it is corrupted
+Index: e2fsprogs/tests/f_mmp_corrupt/script
+===================================================================
+--- /dev/null
++++ e2fsprogs/tests/f_mmp_corrupt/script
+@@ -0,0 +1,41 @@
++FSCK_OPT=-yf
++touch $TMPFILE
++
++stat -f $TMPFILE | grep "Type: tmpfs" > /dev/null
++if [ $? == 0 ] ; then
++ echo "skipped for tmpfs (no O_DIRECT support)"
++ return 0
++fi
++
++echo "make the test image ..." > $test_name.log
++$MKE2FS -q -F -o Linux -b 1024 -O mmp $TMPFILE 100 >> $test_name.log 2>&1
++status=$?
++if [ "$status" != 0 ] ; then
++ echo "mke2fs -O mmp failed" > $test_name.failed
++ exit 1
++fi
++
++# create a corrupted image
++mmp_block=`$DEBUGFS -R "dump_mmp" $TMPFILE 2>/dev/null | grep "MMP Block" | awk '{print $NF}'`
++echo "mmp_block is: $mmp_block" >> $test_name.log
++echo "corrupt the mmp ..." >> $test_name.log
++dd conv=notrunc if=/dev/zero of=$TMPFILE bs=1k count=1 seek=$mmp_block >> $test_name.log 2>&1
++
++echo "the first fsck ..." >> $test_name.log
++$FSCK $FSCK_OPT $TMPFILE >> $test_name.log 2>&1
++status=$?
++if [ "$status" != 0 ] ; then
++ echo "the second fsck ..." >> $test_name.log
++ $FSCK $FSCK_OPT $TMPFILE >> $test_name.log 2>&1
++ status=$?
++ if [ "$status" = 0 ] ; then
++ echo "ok"
++ touch $test_name.ok
++ else
++ echo "the second fsck with corrupted mmp failed" > $test_name.failed
++ fi
++else
++ echo "the first fsck with corrupted mmp failed" > $test_name.failed
++fi
++
++rm -f $TMPFILE
--- /dev/null
+The f_random_corruption test enables a random subset of filesystem features,
+picks one of the valid filesystem block and inode sizes, and a random device
+size and creates a new filesystem with those parameters.
+
+It is possible to disable the running of the test by setting the environment
+variable F_RANDOM_CORRUPTION=skip. By default the test script is run only
+one time, but setting the LOOP_COUNT variable allows the test to run multiple
+times.
+
+If the script is running as root the filesystem is mounted and populated with
+file data to allow a more useful test filesystem to be generated. In some
+cases the kernel may not support the requested filesystem features and the
+filesystem cannot be mounted. This is not considered a test failure.
+
+The resulting filesystem is corrupted with both random data and by shifting
+data from one part of the device to another and then repaired by e2fsck.
+In some rare cases the random corruption is severe enough that the filesystem
+is not recoverable (e.g. small filesystem with no backup superblock has bad
+superblock corruption) but in most cases "e2fsck -fy" should be able to fix
+all errors in some way.
+
+After e2fsck has repaired the filesystem, it is optionally mounted (if the
+environment variable MOUNT_AFTER_CORRUPTION=yes is set) and the test files
+created in the filesystem are deleted. This verifies that the fixes in the
+filesystem are sufficient for the kernel to use the filesystem without error.
+Since there is some possibility of the kernel oopsing if there is a filesystem
+bug, this part of the test is not enabled by default.
+
+Signed-off-by: Kalpak Shah <kalpak@clusterfs.com>
+Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
+
+Index: e2fsprogs/tests/f_random_corruption/script
+===================================================================
+--- /dev/null
++++ e2fsprogs/tests/f_random_corruption/script
+@@ -0,0 +1,272 @@
++# This is to make sure that if this test fails other tests can still be run
++# instead of doing an exit. We break before the end of the loop.
++export LOOP_COUNT=${LOOP_COUNT:-1}
++export COUNT=0
++
++while [ $COUNT -lt $LOOP_COUNT ]; do
++[ "$F_RANDOM_CORRUPTION" = "skip" ] && echo "skipped" && break
++
++# choose block and inode sizes randomly
++BLK_SIZES=(1024 2048 4096)
++INODE_SIZES=(128 256 512 1024)
++
++SEED=$(head -1 /dev/urandom | od -N 1 | awk '{ print $2 }')
++RANDOM=$SEED
++
++IMAGE=${IMAGE:-$TMPFILE}
++DATE=`date '+%Y%m%d%H%M%S'`
++ARCHIVE=$IMAGE.$DATE
++SIZE=${SIZE:-$(( 192000 + RANDOM + RANDOM )) }
++FS_TYPE=${FS_TYPE:-ext3}
++BLK_SIZE=${BLK_SIZES[(( $RANDOM % ${#BLK_SIZES[*]} ))]}
++INODE_SIZE=${INODE_SIZES[(( $RANDOM % ${#INODE_SIZES[*]} ))]}
++DEF_FEATURES="sparse_super,filetype,dir_index"
++FEATURES=${FEATURES:-$DEF_FEATURES}
++MOUNT_OPTS="-o loop"
++MNTPT=$test_dir/temp
++OUT=$test_name.log
++FAILED=$test_name.failed
++OKFILE=$test_name.ok
++
++# Do you want to try and mount the filesystem?
++MOUNT_AFTER_CORRUPTION=${MOUNT_AFTER_CORRUPTION:-"no"}
++# Do you want to remove the files from the mounted filesystem?
++# Ideally use it only in test environment.
++REMOVE_FILES=${REMOVE_FILES:-"no"}
++
++# In KB
++CORRUPTION_SIZE=${CORRUPTION_SIZE:-64}
++CORRUPTION_ITERATIONS=${CORRUPTION_ITERATIONS:-5}
++
++MKFS=../misc/mke2fs
++E2FSCK=../e2fsck/e2fsck
++FIRST_FSCK_OPTS="-fyv"
++SECOND_FSCK_OPTS="-fyv"
++
++# Lets check if the image can fit in the current filesystem.
++BASE_DIR=`dirname $IMAGE`
++BASE_AVAIL_BLOCKS=`df -P -k $BASE_DIR | awk '/%/ { print $4 }'`
++
++if (( BASE_AVAIL_BLOCKS < NUM_BLKS * (BLK_SIZE / 1024) )); then
++ echo "$BASE_DIR does not have enough space to accomodate test image."
++ echo "Skipping test...."
++ break;
++fi
++
++# Lets have a journal more times than not.
++HAVE_JOURNAL=$((RANDOM % 12 ))
++if (( HAVE_JOURNAL == 0 )); then
++ FS_TYPE="ext2"
++ HAVE_JOURNAL=""
++else
++ HAVE_JOURNAL="-j"
++fi
++
++# meta_bg and resize_inode features should not be enabled simultaneously
++META_BG=$(( $RANDOM % 12 ))
++if (( META_BG == 0 )); then
++ FEATURES=$FEATURES,meta_bg,^resize_inode
++else
++ FEATURES=$FEATURES,resize_inode
++fi
++
++modprobe ext4 2> /dev/null
++
++# If ext4 is present in the kernel then we can play with ext4 options
++EXT4=`grep ext4 /proc/filesystems 2> /dev/null`
++if [ -n "$EXT4" ]; then
++ USE_EXT4=$((RANDOM % 2 ))
++ if (( USE_EXT4 == 1 )); then
++ FS_TYPE="ext4"
++ fi
++fi
++
++if [ "$FS_TYPE" = "ext4" ]; then
++ UNINIT_GROUPS=$((RANDOM % 12 ))
++ if (( UNINIT_GROUPS == 0 )); then
++ FEATURES=$FEATURES,uninit_bg
++ fi
++ EXPAND_ESIZE=$((RANDOM % 12 ))
++ if (( EXPAND_EISIZE == 0 )); then
++ FIRST_FSCK_OPTS="$FIRST_FSCK_OPTS -Eexpand_extra_isize"
++ fi
++fi
++
++MKFS_OPTS="$HAVE_JOURNAL -b $BLK_SIZE -I $INODE_SIZE -O $FEATURES"
++
++NUM_BLKS=$(((SIZE * 1024) / BLK_SIZE))
++
++log()
++{
++ [ "$VERBOSE" ] && echo "$*"
++ echo "$*" >> $OUT
++}
++
++error()
++{
++ log "$*"
++ echo "$*" >> $FAILED
++}
++
++unset_vars()
++{
++ unset IMAGE DATE ARCHIVE FS_TYPE SIZE BLK_SIZE MKFS_OPTS MOUNT_OPTS
++ unset E2FSCK FIRST_FSCK_OPTS SECOND_FSCK_OPTS OUT FAILED OKFILE
++}
++
++cleanup()
++{
++ [ "$1" ] && error "$*" || error "Error occured..."
++ umount -f $MNTPT > /dev/null 2>&1 | tee -a $OUT
++ [ -d $MNTPT ] && rmdir $MNTPT
++ cp $OUT $OUT.$DATE
++ echo " failed"
++ echo "error: *** This appears to be a bug in e2fsprogs ***"
++ echo "Please contact linux-ext4@vger.kernel.org for further assistance."
++ echo "Include $OUT.$DATE, and save $ARCHIVE locally for reference."
++ unset_vars
++ break;
++}
++
++echo -n "Random corruption test for e2fsck:"
++# Truncate the output log file
++rm -f $FAILED $OKFILE
++> $OUT
++
++get_random_location()
++{
++ total=$1
++
++ tmp=$(((RANDOM * 32768) % total))
++
++ # Try and have more corruption in metadata at the start of the
++ # filesystem.
++ if ((tmp % 3 == 0 || tmp % 5 == 0 || tmp % 7 == 0)); then
++ tmp=$((tmp % 32768))
++ fi
++
++ echo $tmp
++}
++
++make_fs_dirty()
++{
++ from=`get_random_location $NUM_BLKS`
++
++ # Number of blocks to write garbage into should be within fs and should
++ # not be too many.
++ num_blks_to_dirty=$((RANDOM % $1))
++
++ # write garbage into the selected blocks
++ [ ! -c /dev/urandom ] && return
++ log "writing ${num_blks_to_dirty}kB random garbage at offset ${from}kB"
++ dd if=/dev/urandom of=$IMAGE bs=1kB seek=$from conv=notrunc \
++ count=$num_blks_to_dirty >> $OUT 2>&1
++}
++
++
++touch $IMAGE
++log "Format the filesystem image..."
++log
++# Write some garbage blocks into the filesystem to make sure e2fsck has to do
++# a more difficult job than checking blocks of zeroes.
++log "Copy some random data into filesystem image...."
++make_fs_dirty 32768
++log "$MKFS $MKFS_OPTS -F $IMAGE $NUM_BLKS >> $OUT"
++$MKFS $MKFS_OPTS -F $IMAGE $NUM_BLKS >> $OUT 2>&1
++if [ $? -ne 0 ]; then
++ zero_size=`grep "Device size reported to be zero" $OUT`
++ short_write=`grep "Attempt to write block from filesystem resulted in short write" $OUT`
++
++ if (( zero_size != 0 || short_write != 0 )); then
++ echo "mkfs failed due to device size of 0 or a short write. This is harmless and need not be reported."
++ else
++ cleanup "mkfs failed - internal error during operation. Aborting random regression test..."
++ fi
++fi
++
++if [ `id -u` = 0 ]; then
++ mkdir -p $MNTPT
++ if [ $? -ne 0 ]; then
++ log "Failed to create or find mountpoint...."
++ else
++ mount -t $FS_TYPE $MOUNT_OPTS $IMAGE $MNTPT 2>&1 | tee -a $OUT
++ if [ ${PIPESTATUS[0]} -ne 0 ]; then
++ log "Error mounting file system - skipped"
++ else
++ df -h $MNTPT >> $OUT
++ df -i $MNTPT >> $OUT
++ log "Copying data into the test filesystem..."
++
++ cp -r ../{.git,lib,misc,e2fsck,po} $MNTPT/ >> $OUT 2>&1
++ sync
++ umount -f $MNTPT > /dev/null 2>&1 | tee -a $OUT
++ fi
++ fi
++else
++ log "skipping mount test for non-root user"
++fi
++
++log "Corrupt the image by moving around blocks of data..."
++log
++for (( i = 0; i < $CORRUPTION_ITERATIONS; i++ )); do
++ from=`get_random_location $NUM_BLKS`
++ to=`get_random_location $NUM_BLKS`
++
++ log "Moving ${CORRUPTION_SIZE}kB from block ${from}kB to ${to}kB"
++ dd if=$IMAGE of=$IMAGE bs=1k count=$CORRUPTION_SIZE conv=notrunc skip=$from seek=$to >> $OUT 2>&1
++
++ # more corruption by overwriting blocks from within the filesystem.
++ make_fs_dirty $CORRUPTION_SIZE
++done
++
++# Copy the image for reproducing the bug.
++cp --sparse=always $IMAGE $ARCHIVE >> $OUT 2>&1
++
++log "First pass of fsck..."
++$E2FSCK $FIRST_FSCK_OPTS $IMAGE >> $OUT 2>&1
++RET=$?
++
++# Run e2fsck for the second time and check if the problem gets solved.
++# After we can report error with pass1.
++[ $((RET & 1)) == 0 ] || log "The first fsck corrected errors"
++[ $((RET & 2)) == 0 ] || error "The first fsck wants a reboot"
++[ $((RET & 4)) == 0 ] || error "The first fsck left uncorrected errors"
++[ $((RET & 8)) == 0 ] || error "The first fsck reports an operational error"
++[ $((RET & 16)) == 0 ] || error "The first fsck reports there was a usage error"
++[ $((RET & 32)) == 0 ] || error "The first fsck reports it was cancelled"
++[ $((RET & 128)) == 0 ] || error "The first fsck reports a library error"
++
++log "---------------------------------------------------------"
++
++log "Second pass of fsck..."
++$E2FSCK $SECOND_FSCK_OPTS $IMAGE >> $OUT 2>&1
++RET=$?
++[ $((RET & 1)) == 0 ] || cleanup "The second fsck corrected errors!"
++[ $((RET & 2)) == 0 ] || cleanup "The second fsck wants a reboot"
++[ $((RET & 4)) == 0 ] || cleanup "The second fsck left uncorrected errors"
++[ $((RET & 8)) == 0 ] || cleanup "The second fsck reports an operational error"
++[ $((RET & 16)) == 0 ] || cleanup "The second fsck reports a usage error"
++[ $((RET & 32)) == 0 ] || cleanup "The second fsck reports it was cancelled"
++[ $((RET & 128)) == 0 ] || cleanup "The second fsck reports a library error"
++
++[ -f $FAILED ] && cleanup
++
++if [ "$MOUNT_AFTER_CORRUPTION" = "yes" ]; then
++ mount -t $FS_TYPE $MOUNT_OPTS $IMAGE $MNTPT 2>&1 | tee -a $OUT
++ [ ${PIPESTATUS[0]} -ne 0 ] && log "error mounting file system - skipped"
++
++ [ "$REMOVE_FILES" = "yes" ] && rm -rf $MNTPT/* >> $OUT
++ umount -f $MNTPT > /dev/null 2>&1 | tee -a $OUT
++fi
++
++rm -f $ARCHIVE
++[ -d $MNTPT ] && rmdir $MNTPT
++
++# Report success
++echo " ok"
++echo "Succeeded..." > $OKFILE
++
++unset_vars
++
++COUNT=$((COUNT + 1))
++done
+Index: e2fsprogs/tests/Makefile.in
+===================================================================
+--- e2fsprogs.orig/tests/Makefile.in
++++ e2fsprogs/tests/Makefile.in
+@@ -27,6 +27,8 @@ mke2fs.conf: $(srcdir)/mke2fs.conf.in
+ $(CP) $(srcdir)/mke2fs.conf.in mke2fs.conf
+
+ check:: test_script
++ @echo "Removing remnants of earlier tests..."
++ $(RM) -f *~ *.log *.new *.failed *.ok test.img2*
+ @echo "Running e2fsprogs test suite..."
+ @echo " "
+ @./test_script
+@@ -66,7 +68,7 @@ testend: test_script ${TDIR}/image
+ @echo "If all is well, edit ${TDIR}/name and rename ${TDIR}."
+
+ clean::
+- $(RM) -f *~ *.log *.new *.failed *.ok test.img test_script mke2fs.conf
++ $(RM) -f *~ *.log *.new *.failed *.ok test.img* test_script mke2fs.conf
+
+ distclean:: clean
+ $(RM) -f Makefile
--- /dev/null
+Running tune2fs on a filesystem with an unrecovered journal can cause
+the tune2fs settings to be reverted when the journal is replayed. Print
+a warning if this is detected so that the user isn't surprised if it
+happens.
+
+Signed-off-by: Jim Garlick <garlick@llnl.gov>
+Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
+
+Index: e2fsprogs/misc/tune2fs.c
+===================================================================
+--- e2fsprogs.orig/misc/tune2fs.c
++++ e2fsprogs/misc/tune2fs.c
+@@ -1855,6 +1855,17 @@ retry_open:
+ ext2fs_mark_super_dirty(fs);
+ printf(_("Setting stripe width to %d\n"), stripe_width);
+ }
++
++ /* Warn if file system needs recovery and it is opened for writing. */
++ if ((open_flag & EXT2_FLAG_RW) && !(mount_flags & EXT2_MF_MOUNTED) &&
++ (sb->s_feature_compat & EXT3_FEATURE_COMPAT_HAS_JOURNAL) &&
++ (sb->s_feature_incompat & EXT3_FEATURE_INCOMPAT_RECOVER)) {
++ fprintf(stderr,
++ _("Warning: needs_recovery flag is set. You may wish\n"
++ "replay the journal then rerun this command, or any\n"
++ "changes may be overwritten by journal recovery.\n"));
++ }
++
+ free(device_name);
+ remove_error_table(&et_ext2_error_table);
+ return (ext2fs_close(fs) ? 1 : 0);
--- /dev/null
+Index: e2fsprogs/debugfs/set_fields.c
+===================================================================
+--- e2fsprogs.orig/debugfs/set_fields.c
++++ e2fsprogs/debugfs/set_fields.c
+@@ -583,6 +583,8 @@ void do_set_block_group_descriptor(int a
+ current_fs->group_desc, set_bg),
+ sizeof(set_gd));
+
++ set_sb = *current_fs->super;
++
+ if (ss->func(ss, argv[3]) == 0) {
+ memcpy(ext2fs_group_desc(current_fs,
+ current_fs->group_desc, set_bg),
+Index: e2fsprogs/misc/mke2fs.c
+===================================================================
+--- e2fsprogs.orig/misc/mke2fs.c
++++ e2fsprogs/misc/mke2fs.c
+@@ -284,6 +284,9 @@ _("Warning: the backup superblock/group
+ ext2fs_group_desc_csum_set(fs, group);
+ ext2fs_free_blocks_count_add(fs->super, 1);
+ }
++ /* The kernel doesn't need to zero the itable blocks */
++ ext2fs_bg_flags_set(fs, i, EXT2_BG_INODE_ZEROED |
++ ext2fs_bg_flags(fs, i));
+ }
+ group_block += fs->super->s_blocks_per_group;
+ }
+@@ -2378,6 +2381,8 @@ int main (int argc, char *argv[])
+ }
+ no_journal:
+
++ if (!super_only)
++ ext2fs_set_gdt_csum(fs);
+ if (!quiet)
+ printf(_("Writing superblocks and "
+ "filesystem accounting information: "));
--- /dev/null
+Change to Lustre patch version number
+
+Index: e2fsprogs/version.h
+===================================================================
+--- e2fsprogs.orig/version.h
++++ e2fsprogs/version.h
+@@ -7,5 +7,5 @@
+ * file may be redistributed under the GNU Public License v2.
+ */
+
+-#define E2FSPROGS_VERSION "1.41.14"
+-#define E2FSPROGS_DATE "22-Dec-2010"
++#define E2FSPROGS_VERSION "1.41.90.wc1"
++#define E2FSPROGS_DATE "18-Mar-2011"
--- /dev/null
+diff -ru e2fsprogs-1.40.4/lib/et/Makefile.in e2fsprogs-cfs/lib/et/Makefile.in
+--- e2fsprogs-1.40.4/lib/et/Makefile.in
++++ e2fsprogs-cfs/lib/et/Makefile.in
+@@ -113,9 +113,9 @@
+ for i in $(srcdir)/test_cases/*.et ; do \
+ t=`basename $$i | sed -e 's/.et//'`; \
+ ./compile_et --build-tree $$i ; \
+- diff -c $(srcdir)/test_cases/$$t.c $$t.c > $$t.failed; \
++ diff @UNI_DIFF_OPTS@ $(srcdir)/test_cases/$$t.c $$t.c > $$t.failed; \
+ if [ $$? -ne 0 ]; then echo Test case $$t failed; exit 1 ; fi ; \
+- diff -c $(srcdir)/test_cases/$$t.h $$t.h >> $$t.failed; \
++ diff @UNI_DIFF_OPTS@ $(srcdir)/test_cases/$$t.h $$t.h >> $$t.failed; \
+ if [ $$? -ne 0 ]; then echo Test case $$t failed; exit 1 ; fi ; \
+ $(RM) -f $$t.c $$t.h $$t.failed; \
+ echo "Test case $$t succeeded" ; \
--- /dev/null
+e2fsprogs-discard.patch
+e2fsprogs-version.patch
+e2fsprogs-misc.patch
+e2fsprogs-osx.patch
+e2fsprogs-dblist.patch
+e2fsprogs-bigjournal.patch
+e2fsprogs-e2fsck_exclusive.patch
+e2fsprogs-bad-ininode-ea.patch
+e2fsprogs-blkid-zfs.patch
+e2fsprogs-fiemap-lustre.patch
+e2fsprogs-count_wrong_valid.patch
+e2fsprogs-specdotin.patch
+e2fsprogs-extended_ops.patch
+e2fsprogs-lazy_journal_init.patch
+e2fsprogs-size_high.patch
+e2fsprogs-tests-f_many_subdirs.patch
+e2fsprogs-extents.patch
+e2fsprogs-tests-f_bad_ea_value.patch
+e2fsprogs-tests-f_extents_bad_blk.patch
+e2fsprogs-tests-f_extents_ee_block.patch
+e2fsprogs-tests-f_extents_ee_len.patch
+e2fsprogs-tests-f_extents_ee_start.patch
+e2fsprogs-tests-f_extents_eh_depth.patch
+e2fsprogs-tests-f_extents_eh_entries.patch
+e2fsprogs-tests-f_extents_eh_magic.patch
+e2fsprogs-tests-f_extents_eh_max.patch
+e2fsprogs-skip-extent-tests.patch
+e2fsprogs-tests-f_extents_ei_block.patch
+e2fsprogs-tests-f_extents_ei_leaf.patch
+e2fsprogs-tests-f_extents_imbalanced_tree.patch
+e2fsprogs-tests-f_extents_inrlevel-incons.patch
+e2fsprogs-tests-f_extents_orphan_blks.patch
+e2fsprogs-tests-f_extents_overlap.patch
+e2fsprogs-tests-f_extents_res_blk.patch
+e2fsprogs-tests-f_extents_shrd_blk.patch
+e2fsprogs-tests-f_extents_unsorted.patch
+e2fsprogs-tests-f_extents_split.patch
+e2fsprogs-config-before-cmdline.patch
+e2fsprogs-new-opt-shrdblks.patch
+e2fsprogs-tunefs-dirty.patch
+sles/e2fsprogs-SLES10--m-support.patch
+sles/libcom_err-no-static-buffer.patch
+sles/libcom_err-no-init_error_table.patch
+e2fsprogs-uninit-fixes.patch
+e2fsprogs-tests-f_uninit_enable.patch
+e2fsprogs-tests-f_uninit_disable.patch
+e2fsprogs-tests-f_uninit_blks-used_blk-uninit-not-set.patch
+e2fsprogs-tests-f_uninit_blk-uninit-set_inode-uninit-not-set.patch
+e2fsprogs-tests-f_uninit_checksum_invalid.patch
+e2fsprogs-tests-f_uninit_incorrect_free_inodes_count.patch
+e2fsprogs-tests-f_uninit_ino-ref_beyond_bg-itable-unused.patch
+e2fsprogs-tests-f_uninit_restart_fsck.patch
+e2fsprogs-expand-extra-isize.patch
+e2fsprogs-tests-f_expisize.patch
+e2fsprogs-tests-f_expisize_ea_del.patch
+e2fsprogs-ibadness-counter.patch
+e2fsprogs-tests-f_ibadness.patch
+e2fsprogs-tests-f_ibadness_bad_extents.patch
+e2fsprogs-tests-f_random_corruption.patch
+e2fsprogs-mmp.patch
+e2fsprogs-tests-f_mmp.patch
+e2fsprogs-tests-f_jchksum_bblk.patch
+e2fsprogs-tests-f_jchksum_blast_trans.patch
+e2fsprogs-tests-f_jchksum_remount.patch
+e2fsprogs-i_size-corruption.patch
+e2fsprogs-attr_cleanup.patch
+e2fsprogs-large-ea.patch
+e2fsprogs-tests-f_large_ea.patch
+e2fsprogs-lustre_ismounted.patch
+e2fsprogs-lfsck.patch
+e2fsprogs-add-trusted-fid.patch
+e2fsprogs-add-io_channel_readahead.patch
+e2fsprogs-e2scan.patch
+e2fsprogs-tests-s_basic_scan.patch
+e2fsprogs-data_in_dirent.patch
+e2fsprogs-tests-f_data_in_dirent.patch
+e2fsprogs-rpm_support.patch
--- /dev/null
+e2fsprogs-devel
+---------------
+Since the e2fsprogs libraries has been split out into own packages,
+each having its own devel package
+libext2fs-devel
+libblkid-devel
+libuuid-devel
+libcom_err-devel
+the e2fsprogs-devel package is deprecated and is provided for temporary
+backwards compatibility only.
+
--- /dev/null
+Index: e2fsprogs-1.41.7/e2fsck/splash.c
+===================================================================
+--- /dev/null
++++ e2fsprogs-1.41.7/e2fsck/splash.c
+@@ -0,0 +1,100 @@
++/*
++ * add support for switching the splash screen on boot
++ */
++#include <stdio.h>
++#include <string.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <fcntl.h>
++#include <unistd.h>
++#include <errno.h>
++#include "splash.h"
++
++static int verbose = 0;
++
++/* nop implementation
++ */
++static void nop(void)
++{
++}
++
++static struct splash_ops nop_ops = {
++ .splash_on = nop,
++ .splash_off = nop
++};
++
++/*
++ * bootsplash implementation
++ */
++#define BOOTSPLASH_CTL "/proc/splash"
++
++static int bootsplash_exists(void)
++{
++ struct stat sb;
++
++ if (stat(BOOTSPLASH_CTL, &sb) == -1)
++ return 0;
++
++ if (S_ISREG(sb.st_mode))
++ return 1;
++
++ return 0;
++}
++
++/* write msg to splash control */
++static void bootsplash_msg(const char *msg, size_t size)
++{
++ int fd;
++ size_t written;
++
++ fd = open(BOOTSPLASH_CTL, O_WRONLY);
++ if (fd == -1) {
++ if (verbose)
++ printf("cannot open %s\n", BOOTSPLASH_CTL);
++ return;
++ }
++
++ written = write(fd, msg, size);
++ if (written != size) {
++ if (verbose)
++ printf("size = %i, written = %i\n", size, written);
++ }
++
++ close(fd);
++}
++
++static void bootsplash_on(void)
++{
++ if (verbose)
++ printf("setting bootsplash silent\n");
++ bootsplash_msg("silent\n", 7);
++}
++
++static void bootsplash_off(void)
++{
++ if (verbose)
++ printf("setting bootsplash verbose\n");
++ bootsplash_msg("verbose\n", 8);
++}
++
++static struct splash_ops bootsplash_ops = {
++ .splash_on = bootsplash_on,
++ .splash_off = bootsplash_off
++};
++
++/*
++ * Initialisation
++ */
++void splash_init(struct splash_ops **ops)
++{
++ if (bootsplash_exists())
++ *ops = &bootsplash_ops;
++ else
++ *ops = &nop_ops;
++}
++
++void splash_set_verbose(void)
++{
++ verbose = 1;
++}
++
+Index: e2fsprogs-1.41.7/e2fsck/splash.h
+===================================================================
+--- /dev/null
++++ e2fsprogs-1.41.7/e2fsck/splash.h
+@@ -0,0 +1,13 @@
++#ifndef _SPLASH_H
++#define _SPLASH_H
++
++struct splash_ops {
++ void (*splash_on)(void);
++ void (*splash_off)(void);
++};
++
++void splash_init(struct splash_ops **ops);
++void splash_set_verbose(void);
++
++#endif /* _SPLASH_H */
++
+Index: e2fsprogs-1.41.7/e2fsck/Makefile.in
+===================================================================
+--- e2fsprogs-1.41.7.orig/e2fsck/Makefile.in
++++ e2fsprogs-1.41.7/e2fsck/Makefile.in
+@@ -63,7 +63,7 @@ COMPILE_ET=$(top_builddir)/lib/et/compil
+ OBJS= crc32.o dict.o unix.o e2fsck.o super.o pass1.o pass1b.o pass2.o \
+ pass3.o pass4.o pass5.o journal.o badblocks.o util.o dirinfo.o \
+ dx_dirinfo.o ehandler.o problem.o message.o recovery.o region.o \
+- revoke.o ea_refcount.o rehash.o profile.o prof_err.o pass6.o $(MTRACE_OBJ)
++ revoke.o ea_refcount.o rehash.o profile.o prof_err.o pass6.o splash.o $(MTRACE_OBJ)
+ @LFSCK_CMT@OBJS += lfsck_common.o
+
+ @LFSCK_CMT@LFSCK_OBJS = lfsck_common.o lfsck.o
+@@ -101,6 +101,7 @@ SRCS= $(srcdir)/e2fsck.c \
+ $(srcdir)/rehash.c \
+ $(srcdir)/region.c \
+ $(srcdir)/profile.c \
++ $(srcdir)/splash.c \
+ prof_err.c \
+ $(MTRACE_SRC)
+
+@@ -475,3 +476,5 @@ region.o: $(srcdir)/region.c $(srcdir)/e
+ profile.o: $(srcdir)/profile.c $(top_srcdir)/lib/et/com_err.h \
+ $(srcdir)/profile.h prof_err.h
+ prof_err.o: prof_err.c
++splash.o: splash.c splash.h
++
+Index: e2fsprogs-1.41.7/e2fsck/unix.c
+===================================================================
+--- e2fsprogs-1.41.7.orig/e2fsck/unix.c
++++ e2fsprogs-1.41.7/e2fsck/unix.c
+@@ -53,6 +53,7 @@ extern int optind;
+ #include "e2p/e2p.h"
+ #include "e2fsck.h"
+ #include "problem.h"
++#include "splash.h"
+ #include "../version.h"
+
+ /* Command line options */
+@@ -941,6 +942,7 @@ int main (int argc, char *argv[])
+ int sysval, sys_page_size = 4096;
+ __u32 features[3];
+ char *cp;
++ struct splash_ops *sops;
+
+ clear_problem_context(&pctx);
+ #ifdef MTRACE
+@@ -970,6 +972,7 @@ int main (int argc, char *argv[])
+ exit(FSCK_ERROR);
+ }
+ reserve_stdio_fds();
++ splash_init(&sops);
+
+ init_resource_track(&ctx->global_rtrack, NULL);
+ if (!(ctx->options & E2F_OPT_PREEN) || show_version_only)
+@@ -1284,6 +1287,7 @@ print_unsupp_features:
+ fatal_error(ctx, 0);
+ check_if_skip(ctx);
+ check_resize_inode(ctx);
++ sops->splash_off();
+ if (bad_blocks_file)
+ read_bad_blocks_file(ctx, bad_blocks_file, replace_bad_blocks);
+ else if (cflag)
--- /dev/null
+# Deutsche Übersetzungen für e2fsprogs
+# Copyright (C) 1996 Theodore Tso (msgids)
+# This file is distributed under the same license as the e2fsprogs package.
+# Olaf Klemke <olke@users.sourceforge.net>,2002
+# Marc Langer <marc@marclanger.de>,2003
+# Philipp Thomas <pth@suse.de>, 2007, 2008, 2009
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: e2fsprogs-1.41.4\n"
+"Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
+"POT-Creation-Date: 2009-01-26 20:41-0500\n"
+"PO-Revision-Date: 2009-03-09 19:33+0100\n"
+"Last-Translator: Philipp Thomas <pth@suse.de>\n"
+"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: e2fsck/badblocks.c:22
+#: misc/mke2fs.c:165
+#, c-format
+msgid "Bad block %u out of range; ignored.\n"
+msgstr "Bad block %u außerhalb des gültigen Bereichs; ignoriert.\n"
+
+#: e2fsck/badblocks.c:45
+msgid "while sanity checking the bad blocks inode"
+msgstr "während der logischen Prüfung des »Bad Block«-Inodes"
+
+#: e2fsck/badblocks.c:57
+msgid "while reading the bad blocks inode"
+msgstr "während des Lesens des »Bad Block«-Inodes"
+
+#: e2fsck/badblocks.c:71
+#: e2fsck/iscan.c:112
+#: e2fsck/scantest.c:109
+#: e2fsck/unix.c:1037
+#: e2fsck/unix.c:1120
+#: misc/badblocks.c:1148
+#: misc/badblocks.c:1156
+#: misc/badblocks.c:1170
+#: misc/badblocks.c:1182
+#: misc/dumpe2fs.c:505
+#: misc/e2image.c:576
+#: misc/e2image.c:672
+#: misc/e2image.c:688
+#: misc/mke2fs.c:181
+#: misc/tune2fs.c:1515
+#: resize/main.c:309
+#, c-format
+msgid "while trying to open %s"
+msgstr "beim Versuch, %s zu öffnen"
+
+#: e2fsck/badblocks.c:82
+#, c-format
+msgid "while trying popen '%s'"
+msgstr "beim Versuch, »%s« mittels »popen« zu öffnen"
+
+#: e2fsck/badblocks.c:93
+#: misc/mke2fs.c:188
+msgid "while reading in list of bad blocks from file"
+msgstr "beim Lesen der »Bad Block«-Liste aus der Datei"
+
+#: e2fsck/badblocks.c:104
+msgid "while updating bad block inode"
+msgstr "beim Updaten des »Bad Block«-Inodes"
+
+#: e2fsck/badblocks.c:130
+#, c-format
+msgid "Warning: illegal block %u found in bad block inode. Cleared.\n"
+msgstr "Warnung: Nicht zulässiger Block %u im »Bad Blocks«-Inode gefunden! Bereinigt.\n"
+
+#: e2fsck/ehandler.c:54
+#, c-format
+msgid "Error reading block %lu (%s) while %s. "
+msgstr "Lesefehler - Block %lu (%s) während %s. "
+
+#: e2fsck/ehandler.c:57
+#, c-format
+msgid "Error reading block %lu (%s). "
+msgstr "Lesefehler - Block %lu (%s). "
+
+#: e2fsck/ehandler.c:60
+#: e2fsck/ehandler.c:109
+msgid "Ignore error"
+msgstr "Ignoriere Fehler"
+
+#: e2fsck/ehandler.c:61
+msgid "Force rewrite"
+msgstr "Rückschreiben erzwingen"
+
+#: e2fsck/ehandler.c:103
+#, c-format
+msgid "Error writing block %lu (%s) while %s. "
+msgstr "Schreibfehler - Block %lu (%s) während %s. "
+
+#: e2fsck/ehandler.c:106
+#, c-format
+msgid "Error writing block %lu (%s). "
+msgstr "Schreibfehler - Block %lu (%s). "
+
+#: e2fsck/emptydir.c:56
+msgid "empty dirblocks"
+msgstr "leere Verzeichnisblöcke"
+
+#: e2fsck/emptydir.c:61
+msgid "empty dir map"
+msgstr "leere Verzeichnisliste"
+
+#: e2fsck/emptydir.c:97
+#, c-format
+msgid "Empty directory block %u (#%d) in inode %u\n"
+msgstr "leerer Verzeichnisblock %u (#%d) im Inode %u\n"
+
+#: e2fsck/extend.c:21
+#, c-format
+msgid "%s: %s filename nblocks blocksize\n"
+msgstr "%s: %s Dateiname nblocks Blockgröße\n"
+
+#: e2fsck/extend.c:43
+#, c-format
+msgid "Illegal number of blocks!\n"
+msgstr "Blockanzahl nicht zulässig!\n"
+
+#: e2fsck/extend.c:49
+#, c-format
+msgid "Couldn't allocate block buffer (size=%d)\n"
+msgstr "Konnte keinen Blockpuffer (Größe=%d) reservieren.\n"
+
+#: e2fsck/flushb.c:34
+#, c-format
+msgid "Usage: %s disk\n"
+msgstr "Aufruf: %s Laufwerk\n"
+
+#: e2fsck/flushb.c:63
+#, c-format
+msgid "BLKFLSBUF ioctl not supported! Can't flush buffers.\n"
+msgstr "BLKFLSBUF ioctl nicht unterstützt! Kann Puffer nicht leeren.\n"
+
+#: e2fsck/iscan.c:46
+#, c-format
+msgid "Usage: %s [-F] [-I inode_buffer_blocks] device\n"
+msgstr "Aufruf: %s [-F] [-I inode_buffer_blocks] Gerät\n"
+
+#: e2fsck/iscan.c:83
+#: e2fsck/unix.c:818
+#, c-format
+msgid "while opening %s for flushing"
+msgstr "beim Öffnen von %s für die Puffer-Leerung."
+
+#: e2fsck/iscan.c:88
+#: e2fsck/unix.c:824
+#: resize/main.c:285
+#, c-format
+msgid "while trying to flush %s"
+msgstr "während des Rückschreibeversuches auf %s"
+
+#: e2fsck/iscan.c:121
+#: e2fsck/scantest.c:116
+#: misc/e2image.c:482
+msgid "while opening inode scan"
+msgstr "beim Start des Inode-Scans"
+
+#: e2fsck/iscan.c:129
+#: misc/e2image.c:500
+msgid "while getting next inode"
+msgstr "beim Laden des nächsten Inodes"
+
+#: e2fsck/iscan.c:138
+#, c-format
+msgid "%u inodes scanned.\n"
+msgstr "%u Inodes untersucht.\n"
+
+#: e2fsck/journal.c:507
+msgid "reading journal superblock\n"
+msgstr "Lese Journal-Superblock\n"
+
+#: e2fsck/journal.c:564
+#, c-format
+msgid "%s: no valid journal superblock found\n"
+msgstr "%s: keinen gültigen Journal-Superblock gefunden\n"
+
+#: e2fsck/journal.c:573
+#, c-format
+msgid "%s: journal too short\n"
+msgstr "%s: Das Journal ist zu kurz\n"
+
+#: e2fsck/journal.c:858
+#, c-format
+msgid "%s: recovering journal\n"
+msgstr "%s: stelle das Journal wieder her\n"
+
+#: e2fsck/journal.c:860
+#, c-format
+msgid "%s: won't do journal recovery while read-only\n"
+msgstr "%s: Das Journal ist nur lesbar - Keine Wiederherstellung\n"
+
+#: e2fsck/journal.c:881
+#, c-format
+msgid "while trying to re-open %s"
+msgstr "beim Versuch, %s erneut zu öffnen"
+
+#: e2fsck/message.c:110
+msgid "aextended attribute"
+msgstr "aerweiterte Eigenschaft"
+
+#: e2fsck/message.c:111
+msgid "Aerror allocating"
+msgstr "AFehler beim Zuweisen"
+
+#: e2fsck/message.c:112
+msgid "bblock"
+msgstr "bBlock"
+
+#: e2fsck/message.c:113
+msgid "Bbitmap"
+msgstr "BBitmap"
+
+#: e2fsck/message.c:114
+msgid "ccompress"
+msgstr "ckomprimieren"
+
+#: e2fsck/message.c:115
+msgid "Cconflicts with some other fs @b"
+msgstr "CKonflikte mit anderen Dateisystemen @b"
+
+#: e2fsck/message.c:116
+msgid "iinode"
+msgstr "iInode"
+
+#: e2fsck/message.c:117
+msgid "Iillegal"
+msgstr "Iillegal(er)"
+
+#: e2fsck/message.c:118
+msgid "jjournal"
+msgstr "jJournal"
+
+#: e2fsck/message.c:119
+msgid "Ddeleted"
+msgstr "Dgelöscht"
+
+#: e2fsck/message.c:120
+msgid "ddirectory"
+msgstr "dVerzeichnis"
+
+#: e2fsck/message.c:121
+msgid "eentry"
+msgstr "eEintrag"
+
+#: e2fsck/message.c:122
+msgid "E@e '%Dn' in %p (%i)"
+msgstr "E@e »%Dn« in %p (%i)"
+
+#: e2fsck/message.c:123
+msgid "ffilesystem"
+msgstr "fDateisystem"
+
+#: e2fsck/message.c:124
+msgid "Ffor @i %i (%Q) is"
+msgstr "Ffür @i %i (%Q) ist"
+
+#: e2fsck/message.c:125
+msgid "ggroup"
+msgstr "gGruppe"
+
+#: e2fsck/message.c:126
+msgid "hHTREE @d @i"
+msgstr "hHTREE @d @i"
+
+#: e2fsck/message.c:127
+msgid "llost+found"
+msgstr "llost+found"
+
+#: e2fsck/message.c:128
+msgid "Lis a link"
+msgstr "List ein Link"
+
+#: e2fsck/message.c:129
+msgid "mmultiply-claimed"
+msgstr "mmehrfach beansprucht"
+
+#: e2fsck/message.c:130
+msgid "ninvalid"
+msgstr "nungültig"
+
+#: e2fsck/message.c:131
+msgid "oorphaned"
+msgstr "overwaist"
+
+#: e2fsck/message.c:132
+msgid "pproblem in"
+msgstr "pProblem in"
+
+#: e2fsck/message.c:133
+msgid "rroot @i"
+msgstr "rRoot @i"
+
+#: e2fsck/message.c:134
+msgid "sshould be"
+msgstr "ssollte sein"
+
+#: e2fsck/message.c:135
+msgid "Ssuper@b"
+msgstr "SSuper@b"
+
+#: e2fsck/message.c:136
+msgid "uunattached"
+msgstr "unicht verbunden"
+
+#: e2fsck/message.c:137
+msgid "vdevice"
+msgstr "vGerät"
+
+#: e2fsck/message.c:138
+msgid "xextent"
+msgstr "xErweiterung"
+
+#: e2fsck/message.c:139
+msgid "zzero-length"
+msgstr "zNull-Länge"
+
+#: e2fsck/message.c:150
+msgid "<The NULL inode>"
+msgstr "<Der NULL Inode>"
+
+#: e2fsck/message.c:151
+msgid "<The bad blocks inode>"
+msgstr "<Der »Bad Blocks«-Inode>"
+
+#: e2fsck/message.c:153
+msgid "<The ACL index inode>"
+msgstr "<Der »ACL Index«-Inode>"
+
+#: e2fsck/message.c:154
+msgid "<The ACL data inode>"
+msgstr "<Der »ACL Data«-Inode>"
+
+#: e2fsck/message.c:155
+msgid "<The boot loader inode>"
+msgstr "<Der »Boot Loader«-Inode>"
+
+#: e2fsck/message.c:156
+msgid "<The undelete directory inode>"
+msgstr "<Der »undelete directory«-Inode>"
+
+#: e2fsck/message.c:157
+msgid "<The group descriptor inode>"
+msgstr "<Des »group descriptor«-Inode>"
+
+#: e2fsck/message.c:158
+msgid "<The journal inode>"
+msgstr "<Der Journal-Inode>"
+
+#: e2fsck/message.c:159
+msgid "<Reserved inode 9>"
+msgstr "<Der reservierte Inode 9>"
+
+#: e2fsck/message.c:160
+msgid "<Reserved inode 10>"
+msgstr "<Der reservierte Inode 10>"
+
+#: e2fsck/message.c:323
+#, c-format
+msgid "regular file"
+msgstr "'reguläre Datei"
+
+#: e2fsck/message.c:325
+#, c-format
+msgid "directory"
+msgstr "Verzeichnis"
+
+#: e2fsck/message.c:327
+#, c-format
+msgid "character device"
+msgstr "zeichenorientiertes Gerät"
+
+#: e2fsck/message.c:329
+#, c-format
+msgid "block device"
+msgstr "Blockgerät"
+
+#: e2fsck/message.c:331
+#, c-format
+msgid "named pipe"
+msgstr "named pipe"
+
+#: e2fsck/message.c:333
+#, c-format
+msgid "symbolic link"
+msgstr "symbolische Verknüpfung"
+
+#: e2fsck/message.c:335
+#, c-format
+msgid "socket"
+msgstr " Socket"
+
+#: e2fsck/message.c:337
+#, c-format
+msgid "unknown file type with mode 0%o"
+msgstr "unbekannter Dateityp mit Modus 0%o"
+
+#: e2fsck/pass1b.c:215
+msgid "multiply claimed inode map"
+msgstr "mehrfach beanspruchte Inode-Liste"
+
+#: e2fsck/pass1b.c:567
+#: e2fsck/pass1b.c:700
+#, c-format
+msgid "internal error: can't find dup_blk for %u\n"
+msgstr "interner Fehler; dup_blk für %u nicht gefunden\n"
+
+#: e2fsck/pass1b.c:743
+msgid "returned from clone_file_block"
+msgstr "zurückgegeben von clone_file_block"
+
+#: e2fsck/pass1b.c:762
+#, c-format
+msgid "internal error: couldn't lookup EA block record for %u"
+msgstr "interner Fehler: EA Blockliste für %u wurde nicht gefunden"
+
+#: e2fsck/pass1b.c:774
+#, c-format
+msgid "internal error: couldn't lookup EA inode record for %u"
+msgstr "Interner Fehler: EA Inodeliste für %u wurde nicht gefunden"
+
+#: e2fsck/pass1.c:430
+#: e2fsck/pass2.c:780
+msgid "reading directory block"
+msgstr "lese Verzeichnisblock"
+
+#: e2fsck/pass1.c:552
+msgid "in-use inode map"
+msgstr "»in-use inode«-Liste"
+
+#: e2fsck/pass1.c:561
+msgid "directory inode map"
+msgstr "»directory inode«-Liste"
+
+#: e2fsck/pass1.c:569
+msgid "regular file inode map"
+msgstr "»regular file inode«-Liste"
+
+#: e2fsck/pass1.c:576
+msgid "in-use block map"
+msgstr "»in-use block«-Liste"
+
+#: e2fsck/pass1.c:630
+msgid "opening inode scan"
+msgstr "Starte Inode-Scan"
+
+#: e2fsck/pass1.c:654
+msgid "getting next inode from scan"
+msgstr "beim Lesen des nächsten Inodes"
+
+#: e2fsck/pass1.c:1122
+msgid "Pass 1"
+msgstr "Durchgang 1"
+
+#: e2fsck/pass1.c:1181
+#, c-format
+msgid "reading indirect blocks of inode %u"
+msgstr "lese indirekte Blöcke von Inode %u"
+
+#: e2fsck/pass1.c:1225
+msgid "bad inode map"
+msgstr "fehlerhafte Inode-Liste"
+
+#: e2fsck/pass1.c:1247
+msgid "inode in bad block map"
+msgstr "Inode in »Bad Blocks«-Liste"
+
+#: e2fsck/pass1.c:1267
+msgid "imagic inode map"
+msgstr "i»magic inode«-Liste"
+
+#: e2fsck/pass1.c:1294
+msgid "multiply claimed block map"
+msgstr "Den Eintrag in der Liste belegter Blöcke verdoppeln"
+
+#: e2fsck/pass1.c:1393
+msgid "ext attr block map"
+msgstr "ext attr block map"
+
+#: e2fsck/pass1.c:2134
+#, c-format
+msgid "%6lu(%c): expecting %6lu got phys %6lu (blkcnt %lld)\n"
+msgstr "%6lu(%c): erwartete %6lu erhielt phys %6lu (Blockanzahl %lld)\n"
+
+#: e2fsck/pass1.c:2449
+msgid "block bitmap"
+msgstr "Block Bitmap"
+
+#: e2fsck/pass1.c:2453
+msgid "inode bitmap"
+msgstr "Inode Bitmap"
+
+#: e2fsck/pass1.c:2457
+msgid "inode table"
+msgstr "Inode-Tabelle"
+
+#: e2fsck/pass2.c:284
+msgid "Pass 2"
+msgstr "Durchgang 2"
+
+#: e2fsck/pass2.c:803
+msgid "Can not continue."
+msgstr "Fortsetzung nicht möglich."
+
+#: e2fsck/pass3.c:79
+msgid "inode done bitmap"
+msgstr "»inode done«-Bitmap"
+
+#: e2fsck/pass3.c:90
+msgid "Peak memory"
+msgstr "Peak-Memory"
+
+#: e2fsck/pass3.c:146
+msgid "Pass 3"
+msgstr "Durchgang 3"
+
+#: e2fsck/pass3.c:334
+msgid "inode loop detection bitmap"
+msgstr "»inode loop detection«-Bitmap"
+
+#: e2fsck/pass4.c:196
+msgid "Pass 4"
+msgstr "Durchgang 4"
+
+#: e2fsck/pass5.c:70
+msgid "Pass 5"
+msgstr "Durchgang 5"
+
+#: e2fsck/problem.c:50
+msgid "(no prompt)"
+msgstr "(nicht interaktiv)"
+
+#: e2fsck/problem.c:51
+msgid "Fix"
+msgstr "Repariere"
+
+#: e2fsck/problem.c:52
+msgid "Clear"
+msgstr "Bereinige"
+
+#: e2fsck/problem.c:53
+msgid "Relocate"
+msgstr "Zurücksetzen"
+
+#: e2fsck/problem.c:54
+msgid "Allocate"
+msgstr "Gebe frei"
+
+#: e2fsck/problem.c:55
+msgid "Expand"
+msgstr "Erweitere"
+
+#: e2fsck/problem.c:56
+msgid "Connect to /lost+found"
+msgstr "Verbinde nach /lost+found"
+
+#: e2fsck/problem.c:57
+msgid "Create"
+msgstr "Erstelle"
+
+#: e2fsck/problem.c:58
+msgid "Salvage"
+msgstr "Rette"
+
+#: e2fsck/problem.c:59
+msgid "Truncate"
+msgstr "Verkürze"
+
+#: e2fsck/problem.c:60
+msgid "Clear inode"
+msgstr "Bereinige Inode"
+
+#: e2fsck/problem.c:61
+msgid "Abort"
+msgstr "Abbrechen"
+
+#: e2fsck/problem.c:62
+msgid "Split"
+msgstr "Aufsplitten"
+
+#: e2fsck/problem.c:63
+msgid "Continue"
+msgstr "Fortsetzen"
+
+#: e2fsck/problem.c:64
+msgid "Clone multiply-claimed blocks"
+msgstr "multiply claimed block map"
+
+#: e2fsck/problem.c:65
+msgid "Delete file"
+msgstr "Lösche Datei"
+
+#: e2fsck/problem.c:66
+msgid "Suppress messages"
+msgstr "Ausgaben unterdrücken"
+
+#: e2fsck/problem.c:67
+msgid "Unlink"
+msgstr "Unlink"
+
+#: e2fsck/problem.c:68
+msgid "Clear HTree index"
+msgstr "Bereinige HTree-Index"
+
+#: e2fsck/problem.c:69
+msgid "Recreate"
+msgstr "Zurücksetzen"
+
+#: e2fsck/problem.c:78
+msgid "(NONE)"
+msgstr "(NICHTS)"
+
+#: e2fsck/problem.c:79
+msgid "FIXED"
+msgstr "REPARIERT"
+
+#: e2fsck/problem.c:80
+msgid "CLEARED"
+msgstr "BEREINIGT"
+
+#: e2fsck/problem.c:81
+msgid "RELOCATED"
+msgstr "ZURÜCKGESETZT"
+
+#: e2fsck/problem.c:82
+msgid "ALLOCATED"
+msgstr "FREIGEGEBEN"
+
+#: e2fsck/problem.c:83
+msgid "EXPANDED"
+msgstr "ERWEITERT"
+
+#: e2fsck/problem.c:84
+msgid "RECONNECTED"
+msgstr "WIEDER VERBUNDEN"
+
+#: e2fsck/problem.c:85
+msgid "CREATED"
+msgstr "ANGELEGT"
+
+#: e2fsck/problem.c:86
+msgid "SALVAGED"
+msgstr "GERETTET"
+
+#: e2fsck/problem.c:87
+msgid "TRUNCATED"
+msgstr "BEENDET"
+
+#: e2fsck/problem.c:88
+msgid "INODE CLEARED"
+msgstr "INODE BEREINIGT"
+
+#: e2fsck/problem.c:89
+msgid "ABORTED"
+msgstr "ABGEBROCHEN"
+
+#: e2fsck/problem.c:90
+msgid "SPLIT"
+msgstr "ABGESPALTET"
+
+#: e2fsck/problem.c:91
+msgid "CONTINUING"
+msgstr "SETZE FORT"
+
+#: e2fsck/problem.c:92
+msgid "MULTIPLY-CLAIMED BLOCKS CLONED"
+msgstr "DOPPELTE/DEFEKTE BLÖCKE DUPLIZIERT"
+
+#: e2fsck/problem.c:93
+msgid "FILE DELETED"
+msgstr "DATEI GELÖSCHT"
+
+#: e2fsck/problem.c:94
+msgid "SUPPRESSED"
+msgstr "UNTERDRÜCKT"
+
+#: e2fsck/problem.c:95
+msgid "UNLINKED"
+msgstr "GETRENNT"
+
+#: e2fsck/problem.c:96
+msgid "HTREE INDEX CLEARED"
+msgstr "HTREE INDEX BEREINIGT"
+
+#: e2fsck/problem.c:97
+msgid "WILL RECREATE"
+msgstr "ANGELEGT"
+
+#. @-expanded: block bitmap for group %g is not in group. (block %b)\n
+#: e2fsck/problem.c:106
+msgid "@b @B for @g %g is not in @g. (@b %b)\n"
+msgstr "@b @B für @g %g ist nicht in @g. (@b %b)\n"
+
+#. @-expanded: inode bitmap for group %g is not in group. (block %b)\n
+#: e2fsck/problem.c:110
+msgid "@i @B for @g %g is not in @g. (@b %b)\n"
+msgstr "@i @B für @g %g ist nicht in @g. (@b %b)\n"
+
+#. @-expanded: inode table for group %g is not in group. (block %b)\n
+#. @-expanded: WARNING: SEVERE DATA LOSS POSSIBLE.\n
+#: e2fsck/problem.c:115
+msgid ""
+"@i table for @g %g is not in @g. (@b %b)\n"
+"WARNING: SEVERE DATA LOSS POSSIBLE.\n"
+msgstr ""
+"@i Tabelle für @g %g ist nicht in @g. (@b %b)\n"
+"WARNUNG: GROSSER DATENVERLUST IST MÖGLICH.\n"
+
+#. @-expanded: \n
+#. @-expanded: The superblock could not be read or does not describe a correct ext2\n
+#. @-expanded: filesystem. If the device is valid and it really contains an ext2\n
+#. @-expanded: filesystem (and not swap or ufs or something else), then the superblock\n
+#. @-expanded: is corrupt, and you might try running e2fsck with an alternate superblock:\n
+#. @-expanded: e2fsck -b %S <device>\n
+#. @-expanded: \n
+#: e2fsck/problem.c:121
+#, c-format
+msgid ""
+"\n"
+"The @S could not be read or does not describe a correct ext2\n"
+"@f. If the @v is valid and it really contains an ext2\n"
+"@f (and not swap or ufs or something else), then the @S\n"
+"is corrupt, and you might try running e2fsck with an alternate @S:\n"
+" e2fsck -b %S <@v>\n"
+"\n"
+msgstr ""
+"\n"
+"@S ist unlesbar bzw. beschreibt kein gültiges ext2\n"
+"@f. Wenn @v gültig ist und ein ext2\n"
+"@f (kein swap oder ufs usw.) enthält, dann ist der @S\n"
+"beschädigt, und sie könnten e2fsck mit einem anderen @S:\n"
+" e2fsck -b %S <@v>\n"
+"\n"
+
+#. @-expanded: The filesystem size (according to the superblock) is %b blocks\n
+#. @-expanded: The physical size of the device is %c blocks\n
+#. @-expanded: Either the superblock or the partition table is likely to be corrupt!\n
+#: e2fsck/problem.c:130
+msgid ""
+"The @f size (according to the @S) is %b @bs\n"
+"The physical size of the @v is %c @bs\n"
+"Either the @S or the partition table is likely to be corrupt!\n"
+msgstr ""
+"Die @f Größe ( laut @S) ist %b @bs\n"
+"Die physikalische Größe von @v ist %c @bs\n"
+"Entweder der @S oder die Partionstabelle ist beschädigt!\n"
+
+#. @-expanded: superblock block_size = %b, fragsize = %c.\n
+#. @-expanded: This version of e2fsck does not support fragment sizes different\n
+#. @-expanded: from the block size.\n
+#: e2fsck/problem.c:137
+msgid ""
+"@S @b_size = %b, fragsize = %c.\n"
+"This version of e2fsck does not support fragment sizes different\n"
+"from the @b size.\n"
+msgstr ""
+"@S @b_size = %b, fragsize = %c.\n"
+"Diese Version von e2fsck unterstützt keine von @b-Größen verschiedene Fragmentgrößen.\n"
+
+#. @-expanded: superblock blocks_per_group = %b, should have been %c\n
+#: e2fsck/problem.c:144
+msgid "@S @bs_per_group = %b, should have been %c\n"
+msgstr "@S @bs_per_group = %b, sollte %c sein.\n"
+
+#. @-expanded: superblock first_data_block = %b, should have been %c\n
+#: e2fsck/problem.c:149
+msgid "@S first_data_@b = %b, should have been %c\n"
+msgstr "@S first_data_@b = %b, sollte %c haben.\n"
+
+#. @-expanded: filesystem did not have a UUID; generating one.\n
+#. @-expanded: \n
+#: e2fsck/problem.c:154
+msgid ""
+"@f did not have a UUID; generating one.\n"
+"\n"
+msgstr ""
+"@f hat keinen UUID ; generiere einen.\n"
+"\n"
+
+#: e2fsck/problem.c:159
+#, c-format
+msgid ""
+"Note: if several inode or block bitmap blocks or part\n"
+"of the inode table require relocation, you may wish to try\n"
+"running e2fsck with the '-b %S' option first. The problem\n"
+"may lie only with the primary block group descriptors, and\n"
+"the backup block group descriptors may be OK.\n"
+"\n"
+msgstr ""
+"Hinweis: Wenn mehrere Inodes oder Bitmap-Blöcke\n"
+"neu geordnet werden müssen, oder ein Teil der Inode-Tabelle\n"
+"verschoben werden muss, könnte es helfen, e2fsck erst einmal\n"
+"mit der Option »-b %S« zu starten. Das Problem könnte\n"
+"im primären Blockgruppenbezeichner liegen, und seine\n"
+"Sicherungskopie in Ordnung sein.\n"
+"\n"
+
+#. @-expanded: Corruption found in superblock. (%s = %N).\n
+#: e2fsck/problem.c:168
+msgid "Corruption found in @S. (%s = %N).\n"
+msgstr "Beschädigung gefunden in @S. (%s = %N).\n"
+
+#. @-expanded: Error determining size of the physical device: %m\n
+#: e2fsck/problem.c:173
+#, c-format
+msgid "Error determining size of the physical @v: %m\n"
+msgstr "Fehler bei der Feststellung der Größe des physikalischen @v: %m\n"
+
+#. @-expanded: inode count in superblock is %i, should be %j.\n
+#: e2fsck/problem.c:178
+msgid "@i count in @S is %i, @s %j.\n"
+msgstr "@i-Anzahl in @S ist %i, sollte %j sein.\n"
+
+#: e2fsck/problem.c:182
+msgid "The Hurd does not support the filetype feature.\n"
+msgstr "Hurd unterstützt das Dateityp-Feature nicht.\n"
+
+#. @-expanded: superblock has an invalid journal (inode %i).\n
+#: e2fsck/problem.c:187
+#, fuzzy, c-format
+msgid "@S has an @n @j (@i %i).\n"
+msgstr "@S hat einen defekten ext3 @j (@i %i).\n"
+
+#. @-expanded: External journal has multiple filesystem users (unsupported).\n
+#: e2fsck/problem.c:192
+msgid "External @j has multiple @f users (unsupported).\n"
+msgstr "Externes @j hat mehrere @f Nutzer (nicht unterstützt).\n"
+
+#. @-expanded: Can't find external journal\n
+#: e2fsck/problem.c:197
+msgid "Can't find external @j\n"
+msgstr "Kann kein externes @j finden.\n"
+
+#. @-expanded: External journal has bad superblock\n
+#: e2fsck/problem.c:202
+msgid "External @j has bad @S\n"
+msgstr "Externes @j hat ungültigen @S\n"
+
+#. @-expanded: External journal does not support this filesystem\n
+#: e2fsck/problem.c:207
+msgid "External @j does not support this @f\n"
+msgstr "Externes @j unterstützt nicht @f\n"
+
+#. @-expanded: filesystem journal superblock is unknown type %N (unsupported).\n
+#. @-expanded: It is likely that your copy of e2fsck is old and/or doesn't support this journal
+#. @-expanded: format.\n
+#. @-expanded: It is also possible the journal superblock is corrupt.\n
+#: e2fsck/problem.c:212
+#, fuzzy
+msgid ""
+"@f @j @S is unknown type %N (unsupported).\n"
+"It is likely that your copy of e2fsck is old and/or doesn't support this @j format.\n"
+"It is also possible the @j @S is corrupt.\n"
+msgstr ""
+"Ext3 @j @S ist eine unbekannter Type %N (nicht unterstützt).\n"
+"Es ist möglich, dass ihr e2fsck älter ist und/oder dieses @j Format nicht unterstützt.\n"
+"Es ist ebenso möglich, dass @j @S defekt ist.\n"
+
+#. @-expanded: journal superblock is corrupt.\n
+#: e2fsck/problem.c:220
+#, fuzzy
+msgid "@j @S is corrupt.\n"
+msgstr "Ext3 @j @S ist defekt.\n"
+
+#. @-expanded: superblock has_journal flag is clear, but a journal %s is present.\n
+#: e2fsck/problem.c:225
+#, c-format
+msgid "@S has_@j flag is clear, but a @j %s is present.\n"
+msgstr "ext3 Recovery-Flag sauber, aber ein @j %s ist vorhanden.\n"
+
+#. @-expanded: superblock needs_recovery flag is set, but no journal is present.\n
+#: e2fsck/problem.c:230
+#, fuzzy
+msgid "@S needs_recovery flag is set, but no @j is present.\n"
+msgstr "@S hat das ext3 »needs_recovery«-Flag gesetzt, aber kein @j.\n"
+
+#. @-expanded: superblock needs_recovery flag is clear, but journal has data.\n
+#: e2fsck/problem.c:235
+#, fuzzy
+msgid "@S needs_recovery flag is clear, but @j has data.\n"
+msgstr "ext3 Recovery-Flag sauber, aber das @j enthält Daten.\n"
+
+#. @-expanded: Clear journal
+#: e2fsck/problem.c:240
+msgid "Clear @j"
+msgstr "Bereinige @j"
+
+#. @-expanded: Run journal anyway
+#: e2fsck/problem.c:245
+msgid "Run @j anyway"
+msgstr "Starte @j trotzdem"
+
+#. @-expanded: Recovery flag not set in backup superblock, so running journal anyway.\n
+#: e2fsck/problem.c:250
+msgid "Recovery flag not set in backup @S, so running @j anyway.\n"
+msgstr "Recovery-Kennzeichen in Backup @S nicht gesetzt, @j wird trotzdem gestartet.\n"
+
+#. @-expanded: %s orphaned inode %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n
+#: e2fsck/problem.c:255
+msgid "%s @o @i %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n"
+msgstr "%s @o @i %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n"
+
+#. @-expanded: illegal block #%B (%b) found in orphaned inode %i.\n
+#: e2fsck/problem.c:260
+msgid "@I @b #%B (%b) found in @o @i %i.\n"
+msgstr "@I @b #%B (%b) gefunden in @o @i %i.\n"
+
+#. @-expanded: Already cleared block #%B (%b) found in orphaned inode %i.\n
+#: e2fsck/problem.c:265
+msgid "Already cleared @b #%B (%b) found in @o @i %i.\n"
+msgstr "bereits bereinigt @b #%B (%b) gefunden in @o @i %i.\n"
+
+#. @-expanded: illegal orphaned inode %i in superblock.\n
+#: e2fsck/problem.c:270
+#, c-format
+msgid "@I @o @i %i in @S.\n"
+msgstr "@I @o @i %i in @S.\n"
+
+#. @-expanded: illegal inode %i in orphaned inode list.\n
+#: e2fsck/problem.c:275
+#, c-format
+msgid "@I @i %i in @o @i list.\n"
+msgstr "@I @i %i in @o @i Liste.\n"
+
+#. @-expanded: filesystem has feature flag(s) set, but is a revision 0 filesystem.
+#: e2fsck/problem.c:280
+#: e2fsck/problem.c:647
+msgid "@f has feature flag(s) set, but is a revision 0 @f. "
+msgstr "@f hat Eigenschfts-Kennzeichen gesetzt, ist aber ein Revision 0 @f. "
+
+#. @-expanded: journal superblock has an unknown read-only feature flag set.\n
+#: e2fsck/problem.c:285
+#, fuzzy
+msgid "@j @S has an unknown read-only feature flag set.\n"
+msgstr "Ext3 @j @S hat ein unbekanntes Nur-Lesen-Flag gesetzt.\n"
+
+#. @-expanded: journal superblock has an unknown incompatible feature flag set.\n
+#: e2fsck/problem.c:290
+#, fuzzy
+msgid "@j @S has an unknown incompatible feature flag set.\n"
+msgstr "Ext3 @j @S hat ein unbekanntes Inkompatibel-Flag gesetzt.\n"
+
+#. @-expanded: journal version not supported by this e2fsck.\n
+#: e2fsck/problem.c:295
+msgid "@j version not supported by this e2fsck.\n"
+msgstr "@j Version wird von diesem e2fsck nicht unterstützt.\n"
+
+#. @-expanded: Moving journal from /%s to hidden inode.\n
+#. @-expanded: \n
+#: e2fsck/problem.c:300
+#, c-format
+msgid ""
+"Moving @j from /%s to hidden @i.\n"
+"\n"
+msgstr ""
+"Verschiebe @j von /%s zum versteckten Inode.\n"
+"\n"
+
+#. @-expanded: Error moving journal: %m\n
+#. @-expanded: \n
+#: e2fsck/problem.c:305
+#, c-format
+msgid ""
+"Error moving @j: %m\n"
+"\n"
+msgstr ""
+"Fehler beim Verschieben von @j: %m\n"
+"\n"
+
+#. @-expanded: Found invalid V2 journal superblock fields (from V1 journal).\n
+#. @-expanded: Clearing fields beyond the V1 journal superblock...\n
+#. @-expanded: \n
+#: e2fsck/problem.c:310
+msgid ""
+"Found @n V2 @j @S fields (from V1 @j).\n"
+"Clearing fields beyond the V1 @j @S...\n"
+"\n"
+msgstr ""
+"Fand unvollständige V2 @j @S Felder (vom V1 Journal).\n"
+"Bereinige die Felder hinter V1 @j @S...\n"
+"\n"
+
+#. @-expanded: Backing up journal inode block information.\n
+#. @-expanded: \n
+#: e2fsck/problem.c:316
+msgid ""
+"Backing up @j @i @b information.\n"
+"\n"
+msgstr ""
+"Sichere @j @i @b Information.\n"
+"\n"
+
+#. @-expanded: filesystem does not have resize_inode enabled, but s_reserved_gdt_blocks\n
+#. @-expanded: is %N; should be zero.
+#: e2fsck/problem.c:321
+msgid ""
+"@f does not have resize_@i enabled, but s_reserved_gdt_@bs\n"
+"is %N; @s zero. "
+msgstr ""
+"Für @f ist resize_@i nicht eingeschaltet, aber s_reserved_gdt_@bs\n"
+"ist %N; @s Null. "
+
+#. @-expanded: Resize_inode not enabled, but the resize inode is non-zero.
+#: e2fsck/problem.c:327
+msgid "Resize_@i not enabled, but the resize @i is non-zero. "
+msgstr "Resize_@i nicht aktiviert, aber die zu modifgizierende Inod ist nicht-Null."
+
+#. @-expanded: Resize inode not valid.
+#: e2fsck/problem.c:332
+msgid "Resize @i not valid. "
+msgstr "@r ist kein @d. "
+
+#. @-expanded: superblock last mount time is in the future.
+#: e2fsck/problem.c:337
+msgid "@S last mount time is in the future. "
+msgstr "Der Zeitpunkt des letzten Einhängens von @S liegt in der Zukunft"
+
+#. @-expanded: superblock last write time is in the future.
+#: e2fsck/problem.c:342
+msgid "@S last write time is in the future. "
+msgstr "Der Zeitpunkt des letzten Schreibens von @S liegt in der Zukunft. "
+
+#. @-expanded: superblock hint for external superblock should be %X.
+#: e2fsck/problem.c:346
+#, c-format
+msgid "@S hint for external superblock @s %X. "
+msgstr "@S Hinweis für externen Superblock @s %X"
+
+#. @-expanded: Adding dirhash hint to filesystem.\n
+#. @-expanded: \n
+#: e2fsck/problem.c:351
+msgid ""
+"Adding dirhash hint to @f.\n"
+"\n"
+msgstr ""
+"Füge Verzeinishash-Hilfe zu @f hinzu.\n"
+"\n"
+
+#. @-expanded: group descriptor %g checksum is invalid.
+#: e2fsck/problem.c:356
+#, c-format
+msgid "@g descriptor %g checksum is invalid. "
+msgstr "Prüfsumme von @g -Deskriptor %g ist ungültig. "
+
+#. @-expanded: group descriptor %g marked uninitialized without feature set.\n
+#: e2fsck/problem.c:361
+#, c-format
+msgid "@g descriptor %g marked uninitialized without feature set.\n"
+msgstr "@g -Deskriptor %g ist als nicht initialisiert gekennzeichnet ohne eine gesetzte Eigenschaft.\n"
+
+#. @-expanded: group %g block bitmap uninitialized but inode bitmap in use.\n
+#: e2fsck/problem.c:366
+#, c-format
+msgid "@g %g @b @B uninitialized but @i @B in use.\n"
+msgstr "Die @b @B von @g %g ist nicht initialisiert aber @i @B wird verwendet.\n"
+
+#. @-expanded: group descriptor %g has invalid unused inodes count %b.
+#: e2fsck/problem.c:371
+msgid "@g descriptor %g has invalid unused inodes count %b. "
+msgstr "@g Deskriptor %g hat eine ungültige Anzahl ungenutzter Inodes von %b. "
+
+#. @-expanded: Last group block bitmap uninitialized.
+#: e2fsck/problem.c:376
+msgid "Last @g @b @B uninitialized. "
+msgstr "Die letzte @g @b @B ist nicht initialisiert. "
+
+#: e2fsck/problem.c:381
+#, c-format
+msgid "Journal transaction %i was corrupt, replay was aborted.\n"
+msgstr "Journaltransaktion %i war beschädigt, die Wiederholung wurde abgegrochen.\n"
+
+#: e2fsck/problem.c:385
+msgid "The test_fs flag is set (and ext4 is available). "
+msgstr ""
+
+#. @-expanded: Pass 1: Checking inodes, blocks, and sizes\n
+#: e2fsck/problem.c:392
+msgid "Pass 1: Checking @is, @bs, and sizes\n"
+msgstr "Durchgang 1: Prüfe @is, @bs, und Größen\n"
+
+#. @-expanded: root inode is not a directory.
+#: e2fsck/problem.c:396
+msgid "@r is not a @d. "
+msgstr "@r ist kein @d. "
+
+#. @-expanded: root inode has dtime set (probably due to old mke2fs).
+#: e2fsck/problem.c:401
+msgid "@r has dtime set (probably due to old mke2fs). "
+msgstr "@r hat dtime gesetzt (vielleicht durch ein zu altes mke2fs). "
+
+#. @-expanded: Reserved inode %i (%Q) has invalid mode.
+#: e2fsck/problem.c:406
+msgid "Reserved @i %i (%Q) has @n mode. "
+msgstr "Reservierte @i %i %Q hat einen falschen Modus. "
+
+#. @-expanded: deleted inode %i has zero dtime.
+#: e2fsck/problem.c:411
+#, c-format
+msgid "@D @i %i has zero dtime. "
+msgstr "@D @i %i hat \"zero dtime\". "
+
+#. @-expanded: inode %i is in use, but has dtime set.
+#: e2fsck/problem.c:416
+#, c-format
+msgid "@i %i is in use, but has dtime set. "
+msgstr "@i %i ist in Benutzung, aber hat dtime gesetzt. "
+
+#. @-expanded: inode %i is a zero-length directory.
+#: e2fsck/problem.c:421
+#, c-format
+msgid "@i %i is a @z @d. "
+msgstr "@i %i ist ein @z @d. "
+
+#. @-expanded: group %g's block bitmap at %b conflicts with some other fs block.\n
+#: e2fsck/problem.c:426
+msgid "@g %g's @b @B at %b @C.\n"
+msgstr "@g %g's @b @B auf %b @C.\n"
+
+#. @-expanded: group %g's inode bitmap at %b conflicts with some other fs block.\n
+#: e2fsck/problem.c:431
+msgid "@g %g's @i @B at %b @C.\n"
+msgstr "@g %g's @i @B auf %b @C.\n"
+
+#. @-expanded: group %g's inode table at %b conflicts with some other fs block.\n
+#: e2fsck/problem.c:436
+msgid "@g %g's @i table at %b @C.\n"
+msgstr "@g %g's @i Tabelle auf %b @C.\n"
+
+#. @-expanded: group %g's block bitmap (%b) is bad.
+#: e2fsck/problem.c:441
+msgid "@g %g's @b @B (%b) is bad. "
+msgstr "@g %g's @b @B (%b) ist ungültig. "
+
+#. @-expanded: group %g's inode bitmap (%b) is bad.
+#: e2fsck/problem.c:446
+msgid "@g %g's @i @B (%b) is bad. "
+msgstr "@g %g's @i @B (%b) ist ungültig. "
+
+#. @-expanded: inode %i, i_size is %Is, should be %N.
+#: e2fsck/problem.c:451
+msgid "@i %i, i_size is %Is, @s %N. "
+msgstr "@i %i, i_size ist %Is, @s %N. "
+
+#. @-expanded: inode %i, i_blocks is %Ib, should be %N.
+#: e2fsck/problem.c:456
+msgid "@i %i, i_@bs is %Ib, @s %N. "
+msgstr "@i %i, i_@bs ist %Ib, @s %N. "
+
+#. @-expanded: illegal block #%B (%b) in inode %i.
+#: e2fsck/problem.c:461
+msgid "@I @b #%B (%b) in @i %i. "
+msgstr "@I @b #%B (%b) in @i %i. "
+
+#. @-expanded: block #%B (%b) overlaps filesystem metadata in inode %i.
+#: e2fsck/problem.c:466
+msgid "@b #%B (%b) overlaps @f metadata in @i %i. "
+msgstr "@b #%B (%b) überlappt @f metadata in @i %i. "
+
+#. @-expanded: inode %i has illegal block(s).
+#: e2fsck/problem.c:471
+#, c-format
+msgid "@i %i has illegal @b(s). "
+msgstr "@i %i hat unzulässigen @b(s). "
+
+#. @-expanded: Too many illegal blocks in inode %i.\n
+#: e2fsck/problem.c:476
+#, c-format
+msgid "Too many illegal @bs in @i %i.\n"
+msgstr "Zu viele unzulässige @bs in @i %i.\n"
+
+#. @-expanded: illegal block #%B (%b) in bad block inode.
+#: e2fsck/problem.c:481
+msgid "@I @b #%B (%b) in bad @b @i. "
+msgstr "@I @b #%B (%b) in bad @b @i. "
+
+#. @-expanded: Bad block inode has illegal block(s).
+#: e2fsck/problem.c:486
+msgid "Bad @b @i has illegal @b(s). "
+msgstr "Bad @b @i hat unzulässigen @b(s). "
+
+#. @-expanded: Duplicate or bad block in use!\n
+#: e2fsck/problem.c:491
+msgid "Duplicate or bad @b in use!\n"
+msgstr "Doppelter oder unzulässiger @b in Gebrauch!\n"
+
+#. @-expanded: Bad block %b used as bad block inode indirect block.
+#: e2fsck/problem.c:496
+msgid "Bad @b %b used as bad @b @i indirect @b. "
+msgstr "Bad @b %b benutzt als bad @b @i indirekt @b. "
+
+#. @-expanded: \n
+#. @-expanded: The bad block inode has probably been corrupted. You probably\n
+#. @-expanded: should stop now and run e2fsck -c to scan for bad blocks\n
+#. @-expanded: in the filesystem.\n
+#: e2fsck/problem.c:501
+msgid ""
+"\n"
+"The bad @b @i has probably been corrupted. You probably\n"
+"should stop now and run e2fsck -c to scan for bad blocks\n"
+"in the @f.\n"
+msgstr ""
+"\n"
+"Defekter @b @i ist wahrscheinlich beschädigt worden. Sie sollten\n"
+"nun eher innehalten und »e2fsck -c« ausführen, um nach defekten\n"
+"Blöcken in @f zu suchen.\n"
+
+#. @-expanded: \n
+#. @-expanded: If the block is really bad, the filesystem can not be fixed.\n
+#: e2fsck/problem.c:508
+msgid ""
+"\n"
+"If the @b is really bad, the @f can not be fixed.\n"
+msgstr ""
+"\n"
+"Wenn der @b wirklich defekt ist, kann der @f nicht repariert werden.\n"
+
+#. @-expanded: You can remove this block from the bad block list and hope\n
+#. @-expanded: that the block is really OK. But there are no guarantees.\n
+#. @-expanded: \n
+#: e2fsck/problem.c:513
+msgid ""
+"You can remove this @b from the bad @b list and hope\n"
+"that the @b is really OK. But there are no guarantees.\n"
+"\n"
+msgstr ""
+"Sie können @b von der @b - Liste löschen \n"
+"und hoffen das @b wirklich in Ordnung ist, es \n"
+"gibt aber KEINE GARANTIEN.\n"
+"\n"
+
+#. @-expanded: The primary superblock (%b) is on the bad block list.\n
+#: e2fsck/problem.c:519
+msgid "The primary @S (%b) is on the bad @b list.\n"
+msgstr "Der primäre @S (%b) ist auf der bad @b Liste.\n"
+
+#. @-expanded: Block %b in the primary group descriptors is on the bad block list\n
+#: e2fsck/problem.c:524
+msgid "Block %b in the primary @g descriptors is on the bad @b list\n"
+msgstr "Block %b im primären Deskriptor @g ist auf der bad @b Liste\n"
+
+#. @-expanded: Warning: Group %g's superblock (%b) is bad.\n
+#: e2fsck/problem.c:530
+msgid "Warning: Group %g's @S (%b) is bad.\n"
+msgstr "Warnung: Gruppe %g's @S (%b) ist ungültig.\n"
+
+#. @-expanded: Warning: Group %g's copy of the group descriptors has a bad block (%b).\n
+#: e2fsck/problem.c:535
+msgid "Warning: Group %g's copy of the @g descriptors has a bad @b (%b).\n"
+msgstr "Warnung: Gruppe %g's Kopie vom Deskriptor @g hat einen bad @b (%b).\n"
+
+#. @-expanded: Programming error? block #%b claimed for no reason in process_bad_block.\n
+#: e2fsck/problem.c:541
+msgid "Programming error? @b #%b claimed for no reason in process_bad_@b.\n"
+msgstr "Programmfehler? @b #%b verlangt ohne Grund in process_bad_@b.\n"
+
+#. @-expanded: error allocating %N contiguous block(s) in block group %g for %s: %m\n
+#: e2fsck/problem.c:547
+msgid "@A %N contiguous @b(s) in @b @g %g for %s: %m\n"
+msgstr "@A %N grenzt an @b(s) in @b @g %g for %s: %m\n"
+
+#. @-expanded: error allocating block buffer for relocating %s\n
+#: e2fsck/problem.c:552
+#, c-format
+msgid "@A @b buffer for relocating %s\n"
+msgstr "@A @b Puffer zum Verschieben %s\n"
+
+#. @-expanded: Relocating group %g's %s from %b to %c...\n
+#: e2fsck/problem.c:557
+msgid "Relocating @g %g's %s from %b to %c...\n"
+msgstr "Verschiebe @g %g's %s von %b nach %c...\n"
+
+#. @-expanded: Relocating group %g's %s to %c...\n
+#: e2fsck/problem.c:562
+#, c-format
+msgid "Relocating @g %g's %s to %c...\n"
+msgstr "Verschiebe @g %g's %s nach %c...\n"
+
+#. @-expanded: Warning: could not read block %b of %s: %m\n
+#: e2fsck/problem.c:567
+msgid "Warning: could not read @b %b of %s: %m\n"
+msgstr "Warnung: kann @b %b von %s: %m nicht lesen\n"
+
+#. @-expanded: Warning: could not write block %b for %s: %m\n
+#: e2fsck/problem.c:572
+msgid "Warning: could not write @b %b for %s: %m\n"
+msgstr "Warnung: kann @b %b von %s: %m nicht schreiben\n"
+
+#. @-expanded: error allocating inode bitmap (%N): %m\n
+#: e2fsck/problem.c:577
+#: e2fsck/problem.c:1378
+msgid "@A @i @B (%N): %m\n"
+msgstr "@A @i @B (%N): %m\n"
+
+#. @-expanded: error allocating block bitmap (%N): %m\n
+#: e2fsck/problem.c:582
+msgid "@A @b @B (%N): %m\n"
+msgstr "@A @i @B (%N): %m\n"
+
+#. @-expanded: error allocating icount link information: %m\n
+#: e2fsck/problem.c:587
+#, c-format
+msgid "@A icount link information: %m\n"
+msgstr "@A icount link information: %m\n"
+
+#. @-expanded: error allocating directory block array: %m\n
+#: e2fsck/problem.c:592
+#, c-format
+msgid "@A @d @b array: %m\n"
+msgstr "@A @d @b array: %m\n"
+
+#. @-expanded: Error while scanning inodes (%i): %m\n
+#: e2fsck/problem.c:597
+#, c-format
+msgid "Error while scanning @is (%i): %m\n"
+msgstr "Fehler während der Suche @is (%i): %m\n"
+
+#. @-expanded: Error while iterating over blocks in inode %i: %m\n
+#: e2fsck/problem.c:602
+#, c-format
+msgid "Error while iterating over @bs in @i %i: %m\n"
+msgstr "Fehler beim Iterieren über @bs in @i %i: %m\n"
+
+#. @-expanded: Error storing inode count information (inode=%i, count=%N): %m\n
+#: e2fsck/problem.c:607
+msgid "Error storing @i count information (@i=%i, count=%N): %m\n"
+msgstr "Fehler beim Speichern von @i count Informationen (@i=%i, count=%N): %m\n"
+
+#. @-expanded: Error storing directory block information (inode=%i, block=%b, num=%N): %m\n
+#: e2fsck/problem.c:612
+msgid "Error storing @d @b information (@i=%i, @b=%b, num=%N): %m\n"
+msgstr "Fehler beim Speichern @d @b Informationen (@i=%i, @b=%b, num=%N): %m\n"
+
+#. @-expanded: Error reading inode %i: %m\n
+#: e2fsck/problem.c:618
+#, c-format
+msgid "Error reading @i %i: %m\n"
+msgstr "Fehler beim Lesen von @i %i: %m\n"
+
+#. @-expanded: inode %i has imagic flag set.
+#: e2fsck/problem.c:626
+#, c-format
+msgid "@i %i has imagic flag set. "
+msgstr "@i %i hat Imagic-Flag gesetzt. "
+
+#. @-expanded: Special (device/socket/fifo/symlink) file (inode %i) has immutable\n
+#. @-expanded: or append-only flag set.
+#: e2fsck/problem.c:631
+#, c-format
+msgid ""
+"Special (@v/socket/fifo/symlink) file (@i %i) has immutable\n"
+"or append-only flag set. "
+msgstr ""
+"Spezielle (@v/socket/fifo/symlink) Datei (@i %i) hat immutable\n"
+"oder append-only Flag gesetzt. "
+
+#. @-expanded: inode %i has compression flag set on filesystem without compression support.
+#: e2fsck/problem.c:637
+#, c-format
+msgid "@i %i has @cion flag set on @f without @cion support. "
+msgstr "@i %i hat @cion Flag gesetzt auf @f ohne @cion Unterstützung. "
+
+#. @-expanded: Special (device/socket/fifo) inode %i has non-zero size.
+#: e2fsck/problem.c:642
+#, c-format
+msgid "Special (@v/socket/fifo) @i %i has non-zero size. "
+msgstr ""
+"Spezielle (@v/socket/fifo/symlink) Datei (@i %i) hat immutable\n"
+"oder append-only Flag gesetzt. "
+
+#. @-expanded: journal inode is not in use, but contains data.
+#: e2fsck/problem.c:652
+msgid "@j @i is not in use, but contains data. "
+msgstr "@i %i ist in Benutzung, aber hat dtime gesetzt. "
+
+#. @-expanded: journal is not regular file.
+#: e2fsck/problem.c:657
+msgid "@j is not regular file. "
+msgstr "@j ist keine reguläre Datei. "
+
+#. @-expanded: inode %i was part of the orphaned inode list.
+#: e2fsck/problem.c:662
+#, c-format
+msgid "@i %i was part of the @o @i list. "
+msgstr "@i %i war Teil der orphaned @i Liste. "
+
+#. @-expanded: inodes that were part of a corrupted orphan linked list found.
+#: e2fsck/problem.c:668
+msgid "@is that were part of a corrupted orphan linked list found. "
+msgstr "@is, die Teile einer defekten Liste mit verwaisten Links waren. "
+
+#. @-expanded: error allocating refcount structure (%N): %m\n
+#: e2fsck/problem.c:673
+msgid "@A refcount structure (%N): %m\n"
+msgstr "@A icount structure: %m\n"
+
+#. @-expanded: Error reading extended attribute block %b for inode %i.
+#: e2fsck/problem.c:678
+msgid "Error reading @a @b %b for @i %i. "
+msgstr "Fehler beim Lesen @a @b %b for @i %i. "
+
+#. @-expanded: inode %i has a bad extended attribute block %b.
+#: e2fsck/problem.c:683
+msgid "@i %i has a bad @a @b %b. "
+msgstr "@i %i hat defekten @a @b %b. "
+
+#. @-expanded: Error reading extended attribute block %b (%m).
+#: e2fsck/problem.c:688
+msgid "Error reading @a @b %b (%m). "
+msgstr "Fehler beim Lesen @a @b %b (%m). "
+
+#. @-expanded: extended attribute block %b has reference count %B, should be %N.
+#: e2fsck/problem.c:693
+msgid "@a @b %b has reference count %B, @s %N. "
+msgstr "@a @b %b hat den Referenzzähler %B, richtig wäre %N. "
+
+#. @-expanded: Error writing extended attribute block %b (%m).
+#: e2fsck/problem.c:698
+msgid "Error writing @a @b %b (%m). "
+msgstr "Fehler beim Schreiben @a @b %b (%m). "
+
+#. @-expanded: extended attribute block %b has h_blocks > 1.
+#: e2fsck/problem.c:703
+msgid "@a @b %b has h_@bs > 1. "
+msgstr "@a @b %b hat h_blocks > 1. "
+
+#. @-expanded: error allocating extended attribute block %b.
+#: e2fsck/problem.c:708
+msgid "@A @a @b %b. "
+msgstr "@A @a @b %b. "
+
+#. @-expanded: extended attribute block %b is corrupt (allocation collision).
+#: e2fsck/problem.c:713
+msgid "@a @b %b is corrupt (allocation collision). "
+msgstr "@a @b %b ist defekt (allocation collision). "
+
+#. @-expanded: extended attribute block %b is corrupt (invalid name).
+#: e2fsck/problem.c:718
+msgid "@a @b %b is corrupt (@n name). "
+msgstr "@a @b %b ist defekt (ungültiger Name). "
+
+#. @-expanded: extended attribute block %b is corrupt (invalid value).
+#: e2fsck/problem.c:723
+msgid "@a @b %b is corrupt (@n value). "
+msgstr "@a @b %b ist defekt (ungültiger Wert). "
+
+#. @-expanded: inode %i is too big.
+#: e2fsck/problem.c:728
+#, c-format
+msgid "@i %i is too big. "
+msgstr "@i %i ist zu groß. "
+
+#. @-expanded: block #%B (%b) causes directory to be too big.
+#: e2fsck/problem.c:732
+msgid "@b #%B (%b) causes @d to be too big. "
+msgstr "@b #%B (%b) macht @d zu groß. "
+
+#. @-expanded: block #%B (%b) causes file to be too big.
+#: e2fsck/problem.c:737
+msgid "@b #%B (%b) causes file to be too big. "
+msgstr "@b #%B (%b) macht die Datei zu groß. "
+
+#. @-expanded: block #%B (%b) causes symlink to be too big.
+#: e2fsck/problem.c:742
+msgid "@b #%B (%b) causes symlink to be too big. "
+msgstr "@b #%B (%b) macht den Symlink zu groß. "
+
+#. @-expanded: inode %i has INDEX_FL flag set on filesystem without htree support.\n
+#: e2fsck/problem.c:747
+#, c-format
+msgid "@i %i has INDEX_FL flag set on @f without htree support.\n"
+msgstr "@i %i hat INDEX_FL Flag auf @f gesetzt ohne HTREE-Unterstützung.\n"
+
+#. @-expanded: inode %i has INDEX_FL flag set but is not a directory.\n
+#: e2fsck/problem.c:752
+#, c-format
+msgid "@i %i has INDEX_FL flag set but is not a @d.\n"
+msgstr "@i %i hat INDEX_FL flag gesetzt, ist aber kein @d.\n"
+
+#. @-expanded: HTREE directory inode %i has an invalid root node.\n
+#: e2fsck/problem.c:757
+#, c-format
+msgid "@h %i has an @n root node.\n"
+msgstr "@h %i hat einen unvollständigen root node.\n"
+
+#. @-expanded: HTREE directory inode %i has an unsupported hash version (%N)\n
+#: e2fsck/problem.c:762
+msgid "@h %i has an unsupported hash version (%N)\n"
+msgstr "@h %i hat eine nicht unterstützte hash-Version (%N)\n"
+
+#. @-expanded: HTREE directory inode %i uses an incompatible htree root node flag.\n
+#: e2fsck/problem.c:767
+#, c-format
+msgid "@h %i uses an incompatible htree root node flag.\n"
+msgstr "@h %i benutzt einen nicht unterstützten htree root node flag.\n"
+
+#. @-expanded: HTREE directory inode %i has a tree depth (%N) which is too big\n
+#: e2fsck/problem.c:772
+msgid "@h %i has a tree depth (%N) which is too big\n"
+msgstr "@h %i hat eine zu große Verzeichnistiefe von (%N)\n"
+
+#. @-expanded: Bad block inode has an indirect block (%b) that conflicts with\n
+#. @-expanded: filesystem metadata.
+#: e2fsck/problem.c:777
+msgid ""
+"Bad @b @i has an indirect @b (%b) that conflicts with\n"
+"@f metadata. "
+msgstr ""
+"Defekter @b @i hat einen indirekten @b (%b), der mit\n"
+"den @f Metadaten in Konflikt steht. "
+
+#. @-expanded: Resize inode (re)creation failed: %m.
+#: e2fsck/problem.c:783
+#, c-format
+msgid "Resize @i (re)creation failed: %m."
+msgstr "Erzeugung von Vergrösserungs-@i scheiterte: %m."
+
+#. @-expanded: inode %i has a extra size (%IS) which is invalid\n
+#: e2fsck/problem.c:788
+msgid "@i %i has a extra size (%IS) which is @n\n"
+msgstr "@h %i hat eine zu große Verzeichnistiefe von (%N)\n"
+
+#. @-expanded: extended attribute in inode %i has a namelen (%N) which is invalid\n
+#: e2fsck/problem.c:793
+msgid "@a in @i %i has a namelen (%N) which is @n\n"
+msgstr "@h %i hat eine zu große Verzeichnistiefe von (%N)\n"
+
+#. @-expanded: extended attribute in inode %i has a value size (%N) which is invalid\n
+#: e2fsck/problem.c:798
+msgid "@a in @i %i has a value size (%N) which is @n\n"
+msgstr "@h %i hat eine zu große Verzeichnistiefe von (%N)\n"
+
+#. @-expanded: extended attribute in inode %i has a value offset (%N) which is invalid\n
+#: e2fsck/problem.c:803
+msgid "@a in @i %i has a value offset (%N) which is @n\n"
+msgstr "@h %i hat eine zu große Verzeichnistiefe von (%N)\n"
+
+#. @-expanded: extended attribute in inode %i has a value block (%N) which is invalid (must be 0)\n
+#: e2fsck/problem.c:808
+msgid "@a in @i %i has a value @b (%N) which is @n (must be 0)\n"
+msgstr "@h %i hat eine zu große Verzeichnistiefe von (%N)\n"
+
+#. @-expanded: extended attribute in inode %i has a hash (%N) which is invalid\n
+#: e2fsck/problem.c:813
+msgid "@a in @i %i has a hash (%N) which is @n\n"
+msgstr "@a in %i hat einen @n Hashwert von (%N)\n"
+
+#. @-expanded: inode %i is a %It but it looks like it is really a directory.\n
+#: e2fsck/problem.c:818
+msgid "@i %i is a %It but it looks like it is really a directory.\n"
+msgstr "@i ist ein %It aber es sieht so aus, als ob es tatsächlich ein Verzeichnis ist.\n"
+
+#. @-expanded: Error while reading over extent tree in inode %i: %m\n
+#: e2fsck/problem.c:823
+#, c-format
+msgid "Error while reading over @x tree in @i %i: %m\n"
+msgstr "Fehler beim Iterieren über Baum @x in @i %i: %m\n"
+
+#. @-expanded: Failed to iterate extents in inode %i\n
+#. @-expanded: \t(op %s, blk %b, lblk %c): %m\n
+#: e2fsck/problem.c:828
+msgid ""
+"Failed to iterate extents in @i %i\n"
+"\t(op %s, blk %b, lblk %c): %m\n"
+msgstr ""
+
+#. @-expanded: inode %i has an invalid extent\n
+#. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
+#: e2fsck/problem.c:834
+msgid ""
+"@i %i has an @n extent\n"
+"\t(logical @b %c, @n physical @b %b, len %N)\n"
+msgstr ""
+"@i %i hat eine @n Erweiterung\n"
+"\t(logischer @b %c, @n physischer @b %b, Länge %N)\n"
+
+#. @-expanded: inode %i has an invalid extent\n
+#. @-expanded: \t(logical block %c, physical block %b, invalid len %N)\n
+#: e2fsck/problem.c:839
+msgid ""
+"@i %i has an @n extent\n"
+"\t(logical @b %c, physical @b %b, @n len %N)\n"
+msgstr ""
+"@i %i hat eine @n Erweiterung\n"
+"\t(logischer @b %c, physischer @b %b, @n Länge %N)\n"
+
+#. @-expanded: inode %i has EXTENTS_FL flag set on filesystem without extents support.\n
+#: e2fsck/problem.c:844
+#, c-format
+msgid "@i %i has EXTENTS_FL flag set on @f without extents support.\n"
+msgstr "@i %i hat EXTENTS_FL Kennung auf einem @f ohne Unterstützung für Erweiterungen.\n"
+
+#. @-expanded: inode %i is in extent format, but superblock is missing EXTENTS feature\n
+#: e2fsck/problem.c:849
+#, c-format
+msgid "@i %i is in extent format, but @S is missing EXTENTS feature\n"
+msgstr "@i %i besitzt das Erweiterungsformat, aber dem @S fehlt die Eigenschaft EXTENTS\n"
+
+#. @-expanded: inode %i missing EXTENT_FL, but is in extents format\n
+#: e2fsck/problem.c:854
+#, c-format
+msgid "@i %i missing EXTENT_FL, but is in extents format\n"
+msgstr "@i %i fehlt EXTENT_FL, aber hat das Format einer Erweiterungs-@i\n"
+
+#: e2fsck/problem.c:859
+#, c-format
+msgid "Fast symlink %i has EXTENT_FL set. "
+msgstr "Schneller Symlink %i hat EXTENT_FL gesetzt. "
+
+#. @-expanded: inode %i has out of order extents\n
+#. @-expanded: \t(invalid logical block %c, physical block %b, len %N)\n
+#: e2fsck/problem.c:864
+msgid ""
+"@i %i has out of order extents\n"
+"\t(@n logical @b %c, physical @b %b, len %N)\n"
+msgstr ""
+"@i %i hat unregelmässige Erweitertungen\n"
+"\t(@n logischer @b %c, physischer @b %b, Länge %N)\n"
+
+#. @-expanded: inode %i has an invalid extent node (blk %b, lblk %c)\n
+#: e2fsck/problem.c:868
+msgid "@i %i has an invalid extent node (blk %b, lblk %c)\n"
+msgstr ""
+
+#. @-expanded: \n
+#. @-expanded: Running additional passes to resolve blocks claimed by more than one inode...\n
+#. @-expanded: Pass 1B: Rescanning for multiply-claimed blocks\n
+#: e2fsck/problem.c:875
+msgid ""
+"\n"
+"Running additional passes to resolve @bs claimed by more than one @i...\n"
+"Pass 1B: Rescanning for @m @bs\n"
+msgstr ""
+"\n"
+"Doppelter @bs gefunden... starte Scan nach doppelten @b.\n"
+"Durchgang 1B: Suche nach doppelten/defekten @bs\n"
+
+#. @-expanded: multiply-claimed block(s) in inode %i:
+#: e2fsck/problem.c:881
+#, c-format
+msgid "@m @b(s) in @i %i:"
+msgstr "@m @b(s) in @i %i:"
+
+#: e2fsck/problem.c:896
+#, c-format
+msgid "Error while scanning inodes (%i): %m\n"
+msgstr "Fehlen beim Prüfen von Inodes (%i): %m\n"
+
+#. @-expanded: error allocating inode bitmap (inode_dup_map): %m\n
+#: e2fsck/problem.c:901
+#, c-format
+msgid "@A @i @B (@i_dup_map): %m\n"
+msgstr "@A @i @B (inode_dup_map): %m\n"
+
+#. @-expanded: Error while iterating over blocks in inode %i (%s): %m\n
+#: e2fsck/problem.c:906
+#, c-format
+msgid "Error while iterating over @bs in @i %i (%s): %m\n"
+msgstr "Fehler beim Durchlaufen der @bs in @i %i (%s): %m\n"
+
+#. @-expanded: Error adjusting refcount for extended attribute block %b (inode %i): %m\n
+#: e2fsck/problem.c:911
+#: e2fsck/problem.c:1227
+msgid "Error adjusting refcount for @a @b %b (@i %i): %m\n"
+msgstr "Fehler bei der Anpassung des refcount für @a @b %b (@i %i): %m\n"
+
+#. @-expanded: Pass 1C: Scanning directories for inodes with multiply-claimed blocks\n
+#: e2fsck/problem.c:917
+msgid "Pass 1C: Scanning directories for @is with @m @bs\n"
+msgstr "Durchgang 1C: Prüfe Verzeichnisse nach @is mit doppelten @bs.\n"
+
+#. @-expanded: Pass 1D: Reconciling multiply-claimed blocks\n
+#: e2fsck/problem.c:923
+msgid "Pass 1D: Reconciling @m @bs\n"
+msgstr "Durchgang 1D: Gleiche doppelte @bs ab\n"
+
+#. @-expanded: File %Q (inode #%i, mod time %IM) \n
+#. @-expanded: has %B multiply-claimed block(s), shared with %N file(s):\n
+#: e2fsck/problem.c:928
+msgid ""
+"File %Q (@i #%i, mod time %IM) \n"
+" has %B @m @b(s), shared with %N file(s):\n"
+msgstr ""
+"Datei %Q (@i #%i, mod time %IM) \n"
+" hat %B doppelte @b(s), geteilt mit %N Datei(en):\n"
+
+#. @-expanded: \t%Q (inode #%i, mod time %IM)\n
+#: e2fsck/problem.c:934
+msgid "\t%Q (@i #%i, mod time %IM)\n"
+msgstr "\t%Q (@i #%i, mod time %IM)\n"
+
+#. @-expanded: \t<filesystem metadata>\n
+#: e2fsck/problem.c:939
+msgid "\t<@f metadata>\n"
+msgstr "\t<@f metadata>\n"
+
+#. @-expanded: (There are %N inodes containing multiply-claimed blocks.)\n
+#. @-expanded: \n
+#: e2fsck/problem.c:944
+msgid ""
+"(There are %N @is containing @m @bs.)\n"
+"\n"
+msgstr ""
+"(es gibt %N @is, die doppelte/defekte @bs enthalten.)\n"
+"\n"
+
+#. @-expanded: multiply-claimed blocks already reassigned or cloned.\n
+#. @-expanded: \n
+#: e2fsck/problem.c:949
+msgid ""
+"@m @bs already reassigned or cloned.\n"
+"\n"
+msgstr ""
+"Duplizierte @bs bereits neu zugeordnet bzw. geklont.\n"
+"\n"
+
+#: e2fsck/problem.c:962
+#, c-format
+msgid "Couldn't clone file: %m\n"
+msgstr "Kann die Datei %m nicht klonen.\n"
+
+#. @-expanded: Pass 2: Checking directory structure\n
+#: e2fsck/problem.c:968
+msgid "Pass 2: Checking @d structure\n"
+msgstr "Durchgang 2: Prüfe @d Struktur\n"
+
+#. @-expanded: invalid inode number for '.' in directory inode %i.\n
+#: e2fsck/problem.c:973
+#, c-format
+msgid "@n @i number for '.' in @d @i %i.\n"
+msgstr "Falsche @i Nummer für ».« in @d @i %i.\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) has invalid inode #: %Di.\n
+#: e2fsck/problem.c:978
+msgid "@E has @n @i #: %Di.\n"
+msgstr "@E hat falsche @i #: %Di.\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) has deleted/unused inode %Di.
+#: e2fsck/problem.c:983
+msgid "@E has @D/unused @i %Di. "
+msgstr "@E hat @D/unbenutzt @i %Di. "
+
+#. @-expanded: entry '%Dn' in %p (%i) is a link to '.'
+#: e2fsck/problem.c:988
+msgid "@E @L to '.' "
+msgstr "@E @L nach ».« "
+
+#. @-expanded: entry '%Dn' in %p (%i) points to inode (%Di) located in a bad block.\n
+#: e2fsck/problem.c:993
+msgid "@E points to @i (%Di) located in a bad @b.\n"
+msgstr "@E zeigt auf @i (%Di) in einem defekten @b.\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) is a link to directory %P (%Di).\n
+#: e2fsck/problem.c:998
+msgid "@E @L to @d %P (%Di).\n"
+msgstr "@E @L nach @d %P (%Di).\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) is a link to the root inode.\n
+#: e2fsck/problem.c:1003
+msgid "@E @L to the @r.\n"
+msgstr "@E @L zur @r.\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) has illegal characters in its name.\n
+#: e2fsck/problem.c:1008
+msgid "@E has illegal characters in its name.\n"
+msgstr "@E hat ein unzulässiges Zeichen im Namen.\n"
+
+#. @-expanded: Missing '.' in directory inode %i.\n
+#: e2fsck/problem.c:1013
+#, c-format
+msgid "Missing '.' in @d @i %i.\n"
+msgstr "Fehlende ».« in @d @i %i.\n"
+
+#. @-expanded: Missing '..' in directory inode %i.\n
+#: e2fsck/problem.c:1018
+#, c-format
+msgid "Missing '..' in @d @i %i.\n"
+msgstr "Fehlende »..« in @d @i %i.\n"
+
+#. @-expanded: First entry '%Dn' (inode=%Di) in directory inode %i (%p) should be '.'\n
+#: e2fsck/problem.c:1023
+msgid "First @e '%Dn' (@i=%Di) in @d @i %i (%p) @s '.'\n"
+msgstr "Erster @e »%Dn« (inode=%Di) in @d @i %i (%p) @s ».«\n"
+
+#. @-expanded: Second entry '%Dn' (inode=%Di) in directory inode %i should be '..'\n
+#: e2fsck/problem.c:1028
+msgid "Second @e '%Dn' (@i=%Di) in @d @i %i @s '..'\n"
+msgstr "Zweiter @e »%Dn« (inode=%Di) in @d @i %i @s »..«\n"
+
+#. @-expanded: i_faddr for inode %i (%Q) is %IF, should be zero.\n
+#: e2fsck/problem.c:1033
+msgid "i_faddr @F %IF, @s zero.\n"
+msgstr "i_faddr @F %IF, @s null.\n"
+
+#. @-expanded: i_file_acl for inode %i (%Q) is %If, should be zero.\n
+#: e2fsck/problem.c:1038
+msgid "i_file_acl @F %If, @s zero.\n"
+msgstr "i_file_acl @F %If, @s null.\n"
+
+#. @-expanded: i_dir_acl for inode %i (%Q) is %Id, should be zero.\n
+#: e2fsck/problem.c:1043
+msgid "i_dir_acl @F %Id, @s zero.\n"
+msgstr "i_dir_acl @F %Id, @s null.\n"
+
+#. @-expanded: i_frag for inode %i (%Q) is %N, should be zero.\n
+#: e2fsck/problem.c:1048
+msgid "i_frag @F %N, @s zero.\n"
+msgstr "i_frag @F %N, @s null.\n"
+
+#. @-expanded: i_fsize for inode %i (%Q) is %N, should be zero.\n
+#: e2fsck/problem.c:1053
+msgid "i_fsize @F %N, @s zero.\n"
+msgstr "i_fsize @F %N, @s null.\n"
+
+#. @-expanded: inode %i (%Q) has invalid mode (%Im).\n
+#: e2fsck/problem.c:1058
+msgid "@i %i (%Q) has @n mode (%Im).\n"
+msgstr "@i %i (%Q) hat einen falschen Modus (%Im).\n"
+
+#. @-expanded: directory inode %i, block %B, offset %N: directory corrupted\n
+#: e2fsck/problem.c:1063
+msgid "@d @i %i, @b %B, offset %N: @d corrupted\n"
+msgstr "@d @i %i, @b %B, offset %N: @d defekt\n"
+
+#. @-expanded: directory inode %i, block %B, offset %N: filename too long\n
+#: e2fsck/problem.c:1068
+msgid "@d @i %i, @b %B, offset %N: filename too long\n"
+msgstr "@d @i %i, @b %B, offset %N: Dateiname zu lang\n"
+
+#. @-expanded: directory inode %i has an unallocated block #%B.
+#: e2fsck/problem.c:1073
+msgid "@d @i %i has an unallocated @b #%B. "
+msgstr "@d @i %i hat einen nicht zugewiesenen @b #%B. "
+
+#. @-expanded: '.' directory entry in directory inode %i is not NULL terminated\n
+#: e2fsck/problem.c:1078
+#, c-format
+msgid "'.' @d @e in @d @i %i is not NULL terminated\n"
+msgstr "».« @d @e in @d @i %i ist nicht NULL-terminiert\n"
+
+#. @-expanded: '..' directory entry in directory inode %i is not NULL terminated\n
+#: e2fsck/problem.c:1083
+#, c-format
+msgid "'..' @d @e in @d @i %i is not NULL terminated\n"
+msgstr "»..« @d @e in @d @i %i ist nicht NULL-terminiert\n"
+
+#. @-expanded: inode %i (%Q) is an illegal character device.\n
+#: e2fsck/problem.c:1088
+msgid "@i %i (%Q) is an @I character @v.\n"
+msgstr "@i %i (%Q) ist ein @I Zeichen @v.\n"
+
+#. @-expanded: inode %i (%Q) is an illegal block device.\n
+#: e2fsck/problem.c:1093
+msgid "@i %i (%Q) is an @I @b @v.\n"
+msgstr "@i %i (%Q) ist ein @I @b @v.\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) is duplicate '.' entry.\n
+#: e2fsck/problem.c:1098
+msgid "@E is duplicate '.' @e.\n"
+msgstr "@E ist ein doppelter ».« @e.\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) is duplicate '..' entry.\n
+#: e2fsck/problem.c:1103
+msgid "@E is duplicate '..' @e.\n"
+msgstr "@E ist ein doppelter »..« @e.\n"
+
+#: e2fsck/problem.c:1108
+#: e2fsck/problem.c:1403
+#, c-format
+msgid "Internal error: couldn't find dir_info for %i.\n"
+msgstr "Interner Fehler: kann dir_info für %i nicht finden.\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) has rec_len of %Dr, should be %N.\n
+#: e2fsck/problem.c:1113
+msgid "@E has rec_len of %Dr, @s %N.\n"
+msgstr "@E hat rec_len von %Dr, sollte %N sein.\n"
+
+#. @-expanded: error allocating icount structure: %m\n
+#: e2fsck/problem.c:1118
+#, c-format
+msgid "@A icount structure: %m\n"
+msgstr "@A icount structure: %m\n"
+
+#. @-expanded: Error iterating over directory blocks: %m\n
+#: e2fsck/problem.c:1123
+#, c-format
+msgid "Error iterating over @d @bs: %m\n"
+msgstr "Fehler beim Durchlaufen der @d @bs: %m\n"
+
+#. @-expanded: Error reading directory block %b (inode %i): %m\n
+#: e2fsck/problem.c:1128
+msgid "Error reading @d @b %b (@i %i): %m\n"
+msgstr "Lesefehler @d @b %b (@i %i): %m\n"
+
+#. @-expanded: Error writing directory block %b (inode %i): %m\n
+#: e2fsck/problem.c:1133
+msgid "Error writing @d @b %b (@i %i): %m\n"
+msgstr "Schreibfehler @d @b %b (@i %i): %m\n"
+
+#. @-expanded: error allocating new directory block for inode %i (%s): %m\n
+#: e2fsck/problem.c:1138
+#, c-format
+msgid "@A new @d @b for @i %i (%s): %m\n"
+msgstr "@A neu @d @b for @i %i (%s): %m\n"
+
+#. @-expanded: Error deallocating inode %i: %m\n
+#: e2fsck/problem.c:1143
+#, c-format
+msgid "Error deallocating @i %i: %m\n"
+msgstr "Fehler bei der Freigabe von @i %i: %m\n"
+
+#. @-expanded: directory entry for '.' in %p (%i) is big.\n
+#: e2fsck/problem.c:1148
+#, c-format
+msgid "@d @e for '.' in %p (%i) is big.\n"
+msgstr "Verzeichniseintrag für ».« in %p (%i) ist gross.\n"
+
+#. @-expanded: inode %i (%Q) is an illegal FIFO.\n
+#: e2fsck/problem.c:1153
+msgid "@i %i (%Q) is an @I FIFO.\n"
+msgstr "@i %i (%Q) ist ein @I FIFO.\n"
+
+#. @-expanded: inode %i (%Q) is an illegal socket.\n
+#: e2fsck/problem.c:1158
+msgid "@i %i (%Q) is an @I socket.\n"
+msgstr "@i %i (%Q) ist ein @I Socket.\n"
+
+#. @-expanded: Setting filetype for entry '%Dn' in %p (%i) to %N.\n
+#: e2fsck/problem.c:1163
+msgid "Setting filetype for @E to %N.\n"
+msgstr "Setze Dateitype für @E auf %N.\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) has an incorrect filetype (was %Dt, should be %N).\n
+#: e2fsck/problem.c:1168
+msgid "@E has an incorrect filetype (was %Dt, @s %N).\n"
+msgstr "@E hat einen falschen Dateityp (war %Dt, sollte %N sein).\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) has filetype set.\n
+#: e2fsck/problem.c:1173
+msgid "@E has filetype set.\n"
+msgstr "@E hat Dateityp gesetzt.\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) has a zero-length name.\n
+#: e2fsck/problem.c:1178
+msgid "@E has a @z name.\n"
+msgstr "@E hat einen Namen der Länge Null..\n"
+
+#. @-expanded: Symlink %Q (inode #%i) is invalid.\n
+#: e2fsck/problem.c:1183
+msgid "Symlink %Q (@i #%i) is @n.\n"
+msgstr "Symlink %Q (@i #%i) is invalid.\n"
+
+#. @-expanded: extended attribute block for inode %i (%Q) is invalid (%If).\n
+#: e2fsck/problem.c:1188
+msgid "@a @b @F @n (%If).\n"
+msgstr "@a @b @F ist falsch (%If).\n"
+
+#. @-expanded: filesystem contains large files, but lacks LARGE_FILE flag in superblock.\n
+#: e2fsck/problem.c:1193
+msgid "@f contains large files, but lacks LARGE_FILE flag in @S.\n"
+msgstr "@f enthält große Dateien, aber das LARGE_FILE Flag in @S ist nicht gesetzt.\n"
+
+#. @-expanded: problem in HTREE directory inode %d: node (%B) not referenced\n
+#: e2fsck/problem.c:1198
+msgid "@p @h %d: node (%B) not referenced\n"
+msgstr "@p @h %d: Node (%B) nicht referenziert\n"
+
+#. @-expanded: problem in HTREE directory inode %d: node (%B) referenced twice\n
+#: e2fsck/problem.c:1203
+msgid "@p @h %d: node (%B) referenced twice\n"
+msgstr "@p @h %d: Node (%B) doppelt referenziert\n"
+
+#. @-expanded: problem in HTREE directory inode %d: node (%B) has bad min hash\n
+#: e2fsck/problem.c:1208
+msgid "@p @h %d: node (%B) has bad min hash\n"
+msgstr "@p @h %d: node (%B) has bad min hash\n"
+
+#. @-expanded: problem in HTREE directory inode %d: node (%B) has bad max hash\n
+#: e2fsck/problem.c:1213
+msgid "@p @h %d: node (%B) has bad max hash\n"
+msgstr "@p @h %d: node (%B) has bad max hash\n"
+
+#. @-expanded: invalid HTREE directory inode %d (%q).
+#: e2fsck/problem.c:1218
+msgid "@n @h %d (%q). "
+msgstr "Invalid @h %d (%q). "
+
+#. @-expanded: problem in HTREE directory inode %d (%q): bad block number %b.\n
+#: e2fsck/problem.c:1222
+msgid "@p @h %d (%q): bad @b number %b.\n"
+msgstr "@p @h %d (%q): bad @b number %b.\n"
+
+#. @-expanded: problem in HTREE directory inode %d: root node is invalid\n
+#: e2fsck/problem.c:1232
+#, c-format
+msgid "@p @h %d: root node is @n\n"
+msgstr "@p @h %d: root node is invalid\n"
+
+#. @-expanded: problem in HTREE directory inode %d: node (%B) has invalid limit (%N)\n
+#: e2fsck/problem.c:1237
+msgid "@p @h %d: node (%B) has @n limit (%N)\n"
+msgstr "@p @h %d: node (%B) has bad limit (%N)\n"
+
+#. @-expanded: problem in HTREE directory inode %d: node (%B) has invalid count (%N)\n
+#: e2fsck/problem.c:1242
+msgid "@p @h %d: node (%B) has @n count (%N)\n"
+msgstr "@p @h %d: node (%B) has bad count (%N)\n"
+
+#. @-expanded: problem in HTREE directory inode %d: node (%B) has an unordered hash table\n
+#: e2fsck/problem.c:1247
+msgid "@p @h %d: node (%B) has an unordered hash table\n"
+msgstr "@p @h %d: node (%B) has an unordered hash table\n"
+
+#. @-expanded: problem in HTREE directory inode %d: node (%B) has invalid depth (%N)\n
+#: e2fsck/problem.c:1252
+msgid "@p @h %d: node (%B) has @n depth (%N)\n"
+msgstr "@p @h %d: Knoten (%B) has @n Tiefe (%N)\n"
+
+#. @-expanded: Duplicate entry '%Dn' in %p (%i) found.
+#: e2fsck/problem.c:1257
+msgid "Duplicate @E found. "
+msgstr "Doppelte @E gefunden. "
+
+#. @-expanded: entry '%Dn' in %p (%i) has a non-unique filename.\n
+#. @-expanded: Rename to %s
+#: e2fsck/problem.c:1262
+#, no-c-format
+msgid ""
+"@E has a non-unique filename.\n"
+"Rename to %s"
+msgstr ""
+"@E hat keinen eindeutigen Dateinnamen.\n"
+"Benenne in %s um"
+
+#. @-expanded: Duplicate entry '%Dn' found.\n
+#. @-expanded: \tMarking %p (%i) to be rebuilt.\n
+#. @-expanded: \n
+#: e2fsck/problem.c:1267
+msgid ""
+"Duplicate @e '%Dn' found.\n"
+"\tMarking %p (%i) to be rebuilt.\n"
+"\n"
+msgstr ""
+"Doppelte @e '%Dn' gefunden.\n"
+"\tMarkiere %p (%i) für die Neuerstellung.\n"
+"\n"
+
+#. @-expanded: i_blocks_hi for inode %i (%Q) is %N, should be zero.\n
+#: e2fsck/problem.c:1272
+msgid "i_blocks_hi @F %N, @s zero.\n"
+msgstr "i_blocks_hi @F %N, @s zero.\n"
+
+#. @-expanded: Unexpected block in HTREE directory inode %d (%q).\n
+#: e2fsck/problem.c:1277
+msgid "Unexpected @b in @h %d (%q).\n"
+msgstr "Unerwarteter @b in @h %d (%q).\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) references inode %Di in group %g where _INODE_UNINIT is set.\n
+#: e2fsck/problem.c:1281
+msgid "@E references @i %Di in @g %g where _INODE_UNINIT is set.\n"
+msgstr "@i %i wurde in @g %g gefunden, für die _INODE_UNINIT gesetzt ist.\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) references inode %Di found in group %g's unused inodes area.\n
+#: e2fsck/problem.c:1286
+msgid "@E references @i %Di found in @g %g's unused inodes area.\n"
+msgstr "@i %i wurde im Bereich ungenutzter Inodes von @g %g gefunden.\n"
+
+#. @-expanded: Pass 3: Checking directory connectivity\n
+#: e2fsck/problem.c:1293
+msgid "Pass 3: Checking @d connectivity\n"
+msgstr "Durchgang 3: Prüfe @d Verknüpfungen\n"
+
+#. @-expanded: root inode not allocated.
+#: e2fsck/problem.c:1298
+msgid "@r not allocated. "
+msgstr "@r nicht zugeordnet. "
+
+#. @-expanded: No room in lost+found directory.
+#: e2fsck/problem.c:1303
+msgid "No room in @l @d. "
+msgstr "Kein Platz in @l @d. "
+
+#. @-expanded: Unconnected directory inode %i (%p)\n
+#: e2fsck/problem.c:1308
+#, c-format
+msgid "Unconnected @d @i %i (%p)\n"
+msgstr "Nicht verbundene @d @i %i (%p)\n"
+
+#. @-expanded: /lost+found not found.
+#: e2fsck/problem.c:1313
+msgid "/@l not found. "
+msgstr "/@l nicht gefunden. "
+
+#. @-expanded: '..' in %Q (%i) is %P (%j), should be %q (%d).\n
+#: e2fsck/problem.c:1318
+msgid "'..' in %Q (%i) is %P (%j), @s %q (%d).\n"
+msgstr "»..« in %Q (%i) ist %P (%j), @s %q (%d).\n"
+
+#. @-expanded: Bad or non-existent /lost+found. Cannot reconnect.\n
+#: e2fsck/problem.c:1323
+msgid "Bad or non-existent /@l. Cannot reconnect.\n"
+msgstr "Falscher oder fehlender /@l. Wiederverbinden nicht möglich.\n"
+
+#. @-expanded: Could not expand /lost+found: %m\n
+#: e2fsck/problem.c:1328
+#, c-format
+msgid "Could not expand /@l: %m\n"
+msgstr "Erweitern nicht möglich /@l: %m\n"
+
+#: e2fsck/problem.c:1333
+#, c-format
+msgid "Could not reconnect %i: %m\n"
+msgstr "Wiederverbinden nicht möglich %i: %m\n"
+
+#. @-expanded: Error while trying to find /lost+found: %m\n
+#: e2fsck/problem.c:1338
+#, c-format
+msgid "Error while trying to find /@l: %m\n"
+msgstr "Fehler während der Suche nach /@l: %m\n"
+
+#. @-expanded: ext2fs_new_block: %m while trying to create /lost+found directory\n
+#: e2fsck/problem.c:1343
+#, c-format
+msgid "ext2fs_new_@b: %m while trying to create /@l @d\n"
+msgstr "ext2fs_new_@b: %m während des Versuches /@l @d zu erzeugen.\n"
+
+#. @-expanded: ext2fs_new_inode: %m while trying to create /lost+found directory\n
+#: e2fsck/problem.c:1348
+#, c-format
+msgid "ext2fs_new_@i: %m while trying to create /@l @d\n"
+msgstr "ext2fs_new_@i: %m während des Versuches /@l @d zu erzeugen.\n"
+
+#. @-expanded: ext2fs_new_dir_block: %m while creating new directory block\n
+#: e2fsck/problem.c:1353
+#, c-format
+msgid "ext2fs_new_dir_@b: %m while creating new @d @b\n"
+msgstr "ext2fs_new_dir_@b: %m während des Versuches /@l @d zu erzeugen.\n"
+
+#. @-expanded: ext2fs_write_dir_block: %m while writing the directory block for /lost+found\n
+#: e2fsck/problem.c:1358
+#, c-format
+msgid "ext2fs_write_dir_@b: %m while writing the @d @b for /@l\n"
+msgstr "ext2fs_write_dir_@b: %m während des Schreibens von @d @b für /@l\n"
+
+#. @-expanded: Error while adjusting inode count on inode %i\n
+#: e2fsck/problem.c:1363
+#, c-format
+msgid "Error while adjusting @i count on @i %i\n"
+msgstr "Fehler während der Einstellung von @i count auf @i %i\n"
+
+#. @-expanded: Couldn't fix parent of inode %i: %m\n
+#. @-expanded: \n
+#: e2fsck/problem.c:1368
+#, c-format
+msgid ""
+"Couldn't fix parent of @i %i: %m\n"
+"\n"
+msgstr ""
+"Konnte Parent von @i %i: %m nicht reparieren\n"
+"\n"
+
+#. @-expanded: Couldn't fix parent of inode %i: Couldn't find parent directory entry\n
+#. @-expanded: \n
+#: e2fsck/problem.c:1373
+#, c-format
+msgid ""
+"Couldn't fix parent of @i %i: Couldn't find parent @d @e\n"
+"\n"
+msgstr ""
+"Parent von @i %i konnte nicht repariert werden: \n"
+"parent @d nicht gefunden.\n"
+
+#. @-expanded: Error creating root directory (%s): %m\n
+#: e2fsck/problem.c:1383
+#, c-format
+msgid "Error creating root @d (%s): %m\n"
+msgstr "Fehler beim Erzeugen des root @d (%s): %m\n"
+
+#. @-expanded: Error creating /lost+found directory (%s): %m\n
+#: e2fsck/problem.c:1388
+#, c-format
+msgid "Error creating /@l @d (%s): %m\n"
+msgstr "Fehler beim Erzeugen des /@l @d (%s): %m\n"
+
+#. @-expanded: root inode is not a directory; aborting.\n
+#: e2fsck/problem.c:1393
+msgid "@r is not a @d; aborting.\n"
+msgstr "@r ist kein @d; breche ab.\n"
+
+#. @-expanded: Cannot proceed without a root inode.\n
+#: e2fsck/problem.c:1398
+msgid "Cannot proceed without a @r.\n"
+msgstr "Kann ohne @r nicht fortsetzen.\n"
+
+#. @-expanded: /lost+found is not a directory (ino=%i)\n
+#: e2fsck/problem.c:1408
+#, c-format
+msgid "/@l is not a @d (ino=%i)\n"
+msgstr "/@l ist kein @d (ino=%i)\n"
+
+#: e2fsck/problem.c:1415
+msgid "Pass 3A: Optimizing directories\n"
+msgstr "Durchgang 3A: Optimiere Verzeichnisse\n"
+
+#: e2fsck/problem.c:1420
+#, c-format
+msgid "Failed to create dirs_to_hash iterator: %m\n"
+msgstr "dirs_to_hash Iterator konnte nicht erzeugt werden: %m\n"
+
+#: e2fsck/problem.c:1425
+msgid "Failed to optimize directory %q (%d): %m\n"
+msgstr "Verzeichnis %q (%d) konnte nicht optimiert werden: %m\n"
+
+#: e2fsck/problem.c:1430
+msgid "Optimizing directories: "
+msgstr "Optimiere Verzeichnisse: "
+
+#: e2fsck/problem.c:1447
+msgid "Pass 4: Checking reference counts\n"
+msgstr "Durchgang 4: Überprüfe die Referenzzähler\n"
+
+#. @-expanded: unattached zero-length inode %i.
+#: e2fsck/problem.c:1452
+#, c-format
+msgid "@u @z @i %i. "
+msgstr "@I @o @i %i in @S. "
+
+#. @-expanded: unattached inode %i\n
+#: e2fsck/problem.c:1457
+#, c-format
+msgid "@u @i %i\n"
+msgstr "@u @i %i\n"
+
+#. @-expanded: inode %i ref count is %Il, should be %N.
+#: e2fsck/problem.c:1462
+msgid "@i %i ref count is %Il, @s %N. "
+msgstr "@i %i Referenzzähler ist %Il, @s %N. "
+
+#. @-expanded: WARNING: PROGRAMMING BUG IN E2FSCK!\n
+#. @-expanded: \tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n
+#. @-expanded: inode_link_info[%i] is %N, inode.i_links_count is %Il. They should be the same!\n
+#: e2fsck/problem.c:1466
+msgid ""
+"WARNING: PROGRAMMING BUG IN E2FSCK!\n"
+"\tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n"
+"@i_link_info[%i] is %N, @i.i_links_count is %Il. They @s the same!\n"
+msgstr ""
+"WARNUNG: PROGRAMMIERFEHLER IN E2FSCK!\n"
+"\tODER EIN TROTTEL (SIE) PRÜFT EIN EINGEHÄNGTES (AKTIVES) DATEISYSTEM.\n"
+"@i_link_info[%i] ist %N, @i.i_links_count ist %Il. Sie sollten identisch sein!\n"
+
+#. @-expanded: Pass 5: Checking group summary information\n
+#: e2fsck/problem.c:1476
+msgid "Pass 5: Checking @g summary information\n"
+msgstr "Durchgang 5: Überprüfe @g Zusammenfassung\n"
+
+#. @-expanded: Padding at end of inode bitmap is not set.
+#: e2fsck/problem.c:1481
+msgid "Padding at end of @i @B is not set. "
+msgstr "Auffüllbyte am Ende von @i @B ist nicht gesetzt. "
+
+#. @-expanded: Padding at end of block bitmap is not set.
+#: e2fsck/problem.c:1486
+msgid "Padding at end of @b @B is not set. "
+msgstr "Auffüllbyte am Ende von @b @B ist nicht gesetzt. "
+
+#. @-expanded: block bitmap differences:
+#: e2fsck/problem.c:1491
+msgid "@b @B differences: "
+msgstr "@b @B differieren: "
+
+#. @-expanded: inode bitmap differences:
+#: e2fsck/problem.c:1511
+msgid "@i @B differences: "
+msgstr "@i @B differieren: "
+
+#. @-expanded: Free inodes count wrong for group #%g (%i, counted=%j).\n
+#: e2fsck/problem.c:1531
+msgid "Free @is count wrong for @g #%g (%i, counted=%j).\n"
+msgstr "Die Anzahl freier @is ist falsch für @g #%g (%i, gezählt=%j).\n"
+
+#. @-expanded: Directories count wrong for group #%g (%i, counted=%j).\n
+#: e2fsck/problem.c:1536
+msgid "Directories count wrong for @g #%g (%i, counted=%j).\n"
+msgstr "Die Anzahl Verzeichnisse ist falsch für @g #%g (%i, gezählt=%j).\n"
+
+#. @-expanded: Free inodes count wrong (%i, counted=%j).\n
+#: e2fsck/problem.c:1541
+msgid "Free @is count wrong (%i, counted=%j).\n"
+msgstr "Die Anzahl freier @is ist falsch (%i, gezählt=%j).\n"
+
+#. @-expanded: Free blocks count wrong for group #%g (%b, counted=%c).\n
+#: e2fsck/problem.c:1546
+msgid "Free @bs count wrong for @g #%g (%b, counted=%c).\n"
+msgstr "Die Anzahl freier Blöcke in @g #%g ist falsch (%b, gezählt=%c).\n"
+
+#. @-expanded: Free blocks count wrong (%b, counted=%c).\n
+#: e2fsck/problem.c:1551
+msgid "Free @bs count wrong (%b, counted=%c).\n"
+msgstr "Die Anzahl freier Blöcke ist falsch (%b, gezählt=%c).\n"
+
+#. @-expanded: PROGRAMMING ERROR: filesystem (#%N) bitmap endpoints (%b, %c) don't match calculated bitmap
+#. @-expanded: endpoints (%i, %j)\n
+#: e2fsck/problem.c:1556
+msgid "PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't match calculated @B endpoints (%i, %j)\n"
+msgstr "PROGRAMMIERFEHLER: @f (#%N) @B Endpunkte (%b, %c) passen nicht zu den berechneten @B Endpunkten (%i, %j)\n"
+
+#: e2fsck/problem.c:1562
+msgid "Internal error: fudging end of bitmap (%N)\n"
+msgstr "Interner Fehler: fudging end of bitmap (%N)\n"
+
+#. @-expanded: Error copying in replacement inode bitmap: %m\n
+#: e2fsck/problem.c:1567
+#, c-format
+msgid "Error copying in replacement @i @B: %m\n"
+msgstr "Fehler beim hineinkopieren von @i @B: %m\n"
+
+#. @-expanded: Error copying in replacement block bitmap: %m\n
+#: e2fsck/problem.c:1572
+#, c-format
+msgid "Error copying in replacement @b @B: %m\n"
+msgstr "Fehler beim hineinkopieren von @b @B: %m\n"
+
+#. @-expanded: Recreate journal
+#: e2fsck/problem.c:1597
+msgid "Recreate @j"
+msgstr "@j zurücksetzen"
+
+#. @-expanded: group %g block(s) in use but group is marked BLOCK_UNINIT\n
+#: e2fsck/problem.c:1602
+#, c-format
+msgid "@g %g @b(s) in use but @g is marked BLOCK_UNINIT\n"
+msgstr "Blöcke von @g %g sind in Beutzung obwohl @g als BLOCK_UNINIT markiert ist\n"
+
+#. @-expanded: group %g inode(s) in use but group is marked INODE_UNINIT\n
+#: e2fsck/problem.c:1607
+#, c-format
+msgid "@g %g @i(s) in use but @g is marked INODE_UNINIT\n"
+msgstr "@g %g @i(s) sind in Benutzung obwohl @g als INODE_UNINIT markiert ist\n"
+
+#: e2fsck/problem.c:1725
+#, c-format
+msgid "Unhandled error code (0x%x)!\n"
+msgstr "Unbenutzter Fehlercode (0x%x)!\n"
+
+#: e2fsck/problem.c:1820
+msgid "IGNORED"
+msgstr "IGNORIERT"
+
+#: e2fsck/scantest.c:81
+#, c-format
+msgid "Memory used: %d, elapsed time: %6.3f/%6.3f/%6.3f\n"
+msgstr "benutzter Speicher: %d, vergangende Zeit: %6.3f/%6.3f/%6.3f\n"
+
+#: e2fsck/scantest.c:100
+#, c-format
+msgid "size of inode=%d\n"
+msgstr "Größe des Inode=%d\n"
+
+#: e2fsck/scantest.c:121
+msgid "while starting inode scan"
+msgstr "beim Starten der Inodeprüfung"
+
+#: e2fsck/scantest.c:132
+msgid "while doing inode scan"
+msgstr "während der Inodeprüfung"
+
+#: e2fsck/super.c:187
+#, c-format
+msgid "while calling ext2fs_block_iterate for inode %d"
+msgstr "während des Aufrufs von ext2fs_block_iterate für Inode %d"
+
+#: e2fsck/super.c:209
+#, c-format
+msgid "while calling ext2fs_adjust_ea_refcount for inode %d"
+msgstr "während des Aufrufs von ext2fs_adjust_ea_refcount für Inode %d"
+
+#: e2fsck/super.c:267
+msgid "Truncating"
+msgstr "Kürze"
+
+#: e2fsck/super.c:268
+msgid "Clearing"
+msgstr "Bereinige"
+
+#: e2fsck/unix.c:76
+#, c-format
+msgid ""
+"Usage: %s [-panyrcdfvtDFV] [-b superblock] [-B blocksize]\n"
+"\t\t[-I inode_buffer_blocks] [-P process_inode_size]\n"
+"\t\t[-l|-L bad_blocks_file] [-C fd] [-j external_journal]\n"
+"\t\t[-E extended-options] device\n"
+msgstr ""
+"Aufruf: %s [-panyrcdfvtDFV] [-b Superblock] [-B Blockgröße]\n"
+"\t\t[-I Inode_Puffer_Blöcke] [-P Prozess_Inodegröße]\n"
+"\t\t[-l|-L Bad_Blocks_Datei] [-C Dateideskriptor] [-j externes_Journal]\n"
+"\t\t[-E erweiterte_Optionen] Gerät\n"
+
+#: e2fsck/unix.c:82
+#, c-format
+msgid ""
+"\n"
+"Emergency help:\n"
+" -p Automatic repair (no questions)\n"
+" -n Make no changes to the filesystem\n"
+" -y Assume \"yes\" to all questions\n"
+" -c Check for bad blocks and add them to the badblock list\n"
+" -f Force checking even if filesystem is marked clean\n"
+msgstr ""
+"\n"
+"Notfallhile:\n"
+" -p automatische Reparatur (keine Fragen)\n"
+" -n keine Veränderungen am Dateisystem vornehmen\n"
+" -y \" Ja \" auf alle Fragen annehmen\n"
+" -c suche nach defekten Blöcken\n"
+" -f erzwinge die Überprüfung auch wenn alles i.O. erscheint\n"
+
+#: e2fsck/unix.c:88
+#, c-format
+msgid ""
+" -v Be verbose\n"
+" -b superblock Use alternative superblock\n"
+" -B blocksize Force blocksize when looking for superblock\n"
+" -j external_journal Set location of the external journal\n"
+" -l bad_blocks_file Add to badblocks list\n"
+" -L bad_blocks_file Set badblocks list\n"
+msgstr ""
+" -v sei gesprächig\n"
+" -b Superbloc Nutze Superblockkopie\n"
+" -B Blockgröße erzwinge Blockgröße beim Suchen vom Superblock\n"
+" -j externes-Journal Angabe des Speicherortes des externen Jounals\n"
+" -l bad_blocks_file zur Liste der defekten Blöcke hinzufügen\n"
+" -L bad_blocks_file Liste der defekten Blöcke definieren\n"
+
+#: e2fsck/unix.c:132
+#, c-format
+msgid "%s: %u/%u files (%0d.%d%% non-contiguous), %u/%u blocks\n"
+msgstr "%s: %u/%u Dateien (%0d.%d%% nicht zusammenhängend), %u/%u Blöcke\n"
+
+#: e2fsck/unix.c:150
+#, c-format
+msgid " # of inodes with ind/dind/tind blocks: %u/%u/%u\n"
+msgstr " # von Inodes mit ind/dind/tind Blöcken: %u/%u/%u\n"
+
+#: e2fsck/unix.c:157
+#, c-format
+msgid " Extent depth histogram: "
+msgstr " Erweiterungstiefe Histogramm: "
+
+#: e2fsck/unix.c:207
+#: misc/badblocks.c:916
+#: misc/tune2fs.c:1567
+#: misc/util.c:151
+#: resize/main.c:248
+#, c-format
+msgid "while determining whether %s is mounted."
+msgstr "bei der Prüfung, ob %s eingehängt ist."
+
+#: e2fsck/unix.c:225
+#, c-format
+msgid "Warning! %s is mounted.\n"
+msgstr "Warnung! %s ist eingehängt.\n"
+
+#: e2fsck/unix.c:229
+#, c-format
+msgid "%s is mounted. "
+msgstr "%s ist eingehängt. "
+
+#: e2fsck/unix.c:231
+msgid ""
+"Cannot continue, aborting.\n"
+"\n"
+msgstr ""
+"Fortsetzung nicht möglich, breche ab.\n"
+"\n"
+
+#: e2fsck/unix.c:232
+#, c-format
+msgid ""
+"\n"
+"\n"
+"\a\a\a\aWARNING!!! Running e2fsck on a mounted filesystem may cause\n"
+"SEVERE filesystem damage.\a\a\a\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"\a\a\a\aWARNUNG!!! Die Benutzung von e2fsck auf einem eingehängten\n"
+"Dateisystem kann das Dateisystem STARK BESCHÄDIGEN.\n"
+"\n"
+
+#: e2fsck/unix.c:235
+msgid "Do you really want to continue"
+msgstr "Wirklich fortfahren"
+
+#: e2fsck/unix.c:237
+#, c-format
+msgid "check aborted.\n"
+msgstr "Prüfung abgebrochen.\n"
+
+#: e2fsck/unix.c:310
+msgid " contains a file system with errors"
+msgstr " enthält ein fehlerhaftes Dateisystem"
+
+#: e2fsck/unix.c:312
+msgid " was not cleanly unmounted"
+msgstr " wurde nicht ordnungsgemäß ausgehängt"
+
+#: e2fsck/unix.c:314
+msgid " primary superblock features different from backup"
+msgstr "Eigenschaften des primären Superblocks unterscheiden sich vom Backup"
+
+#: e2fsck/unix.c:318
+#, c-format
+msgid " has been mounted %u times without being checked"
+msgstr " wurde %u mal ohne Überprüfung eingehängt"
+
+#: e2fsck/unix.c:324
+msgid " has filesystem last checked time in the future"
+msgstr " hat einen in der Zukunft liegenden Zeitpunkt der letzten Püfung des Dateisystems"
+
+#: e2fsck/unix.c:330
+#, c-format
+msgid " has gone %u days without being checked"
+msgstr " wurde %u Tage ohne Überprüfung genutzt"
+
+#: e2fsck/unix.c:339
+msgid ", check forced.\n"
+msgstr ", Prüfung erzwungen.\n"
+
+#: e2fsck/unix.c:342
+#, c-format
+msgid "%s: clean, %u/%u files, %u/%u blocks"
+msgstr "%s: sauber, %u/%u Dateien, %u/%u Blöcke"
+
+#: e2fsck/unix.c:359
+msgid " (check deferred; on battery)"
+msgstr " (Prüfung nach nächstem Einhängen)"
+
+#: e2fsck/unix.c:362
+msgid " (check after next mount)"
+msgstr " (Prüfung nach nächstem Einhängen)"
+
+#: e2fsck/unix.c:364
+#, c-format
+msgid " (check in %ld mounts)"
+msgstr " (Prüfung nach %ld Einhängevorgängen)"
+
+#: e2fsck/unix.c:511
+#, c-format
+msgid "ERROR: Couldn't open /dev/null (%s)\n"
+msgstr "Fehler: Kann /dev/null (%s) nicht öffnen\n"
+
+#: e2fsck/unix.c:581
+#, c-format
+msgid "Invalid EA version.\n"
+msgstr "Invalid EA version.\n"
+
+#: e2fsck/unix.c:590
+#, c-format
+msgid "Unknown extended option: %s\n"
+msgstr "Unbekannte erweiterte Option: %s\n"
+
+#: e2fsck/unix.c:612
+#, c-format
+msgid ""
+"Syntax error in e2fsck config file (%s, line #%d)\n"
+"\t%s\n"
+msgstr ""
+"Syntaxfehler in der Konfigurationsdatei von e2fsck (%s, Zeile %d)\n"
+"\t%s\n"
+
+#: e2fsck/unix.c:680
+#, c-format
+msgid "Error validating file descriptor %d: %s\n"
+msgstr "Fehler bei Überprüfung des Datei-Deskriptors %d: %s\n"
+
+#: e2fsck/unix.c:684
+msgid "Invalid completion information file descriptor"
+msgstr "Ungültiger »completion information«-Datei-Deskriptor"
+
+#: e2fsck/unix.c:699
+msgid "Only one of the options -p/-a, -n or -y may be specified."
+msgstr "Nur eine der Optionen -p/-a, -n oder -y darf angegeben werden."
+
+#: e2fsck/unix.c:720
+#, c-format
+msgid "The -t option is not supported on this version of e2fsck.\n"
+msgstr "Die -t Option wird von dieser e2fsck-Version nicht unterstützt.\n"
+
+#: e2fsck/unix.c:801
+#: misc/tune2fs.c:549
+#: misc/tune2fs.c:833
+#: misc/tune2fs.c:850
+#, c-format
+msgid "Unable to resolve '%s'"
+msgstr "Nicht möglich »%s« aufzulösen"
+
+#: e2fsck/unix.c:831
+#, c-format
+msgid "The -c and the -l/-L options may not be both used at the same time.\n"
+msgstr "Die -c und -l/-L Optionen dürfen nicht gleichzeitig verwendet werden.\n"
+
+#: e2fsck/unix.c:879
+#, c-format
+msgid ""
+"E2FSCK_JBD_DEBUG \"%s\" not an integer\n"
+"\n"
+msgstr "2FSCK_JBD_DEBUG \"%s\" ist keine Ganzzahl\n"
+
+#: e2fsck/unix.c:888
+#, c-format
+msgid ""
+"\n"
+"Invalid non-numeric argument to -%c (\"%s\")\n"
+"\n"
+msgstr ""
+"\n"
+"Ungültiges nicht-numerisches Argument für -%c (\"%s\")\n"
+"\n"
+
+#: e2fsck/unix.c:929
+#, c-format
+msgid "Error: ext2fs library version out of date!\n"
+msgstr "Fehler: ext2fs-Bibliotheks-Version ist zu alt!\n"
+
+#: e2fsck/unix.c:937
+msgid "while trying to initialize program"
+msgstr "bei der Programminitialisierung"
+
+#: e2fsck/unix.c:951
+#, c-format
+msgid "\tUsing %s, %s\n"
+msgstr "\tBenutze %s, %s\n"
+
+#: e2fsck/unix.c:963
+msgid "need terminal for interactive repairs"
+msgstr "Benötige ein Terminal für interaktive Reparaturen"
+
+#: e2fsck/unix.c:1010
+#, c-format
+msgid "%s: %s trying backup blocks...\n"
+msgstr "%s: %s versuche es mit Backup-Blöcken...\n"
+
+#: e2fsck/unix.c:1012
+msgid "Superblock invalid,"
+msgstr "Superblock ungültig"
+
+#: e2fsck/unix.c:1013
+msgid "Group descriptors look bad..."
+msgstr "Gruppen-Deskriptoren scheinen defekt zu sein..."
+
+#: e2fsck/unix.c:1040
+#, c-format
+msgid ""
+"The filesystem revision is apparently too high for this version of e2fsck.\n"
+"(Or the filesystem superblock is corrupt)\n"
+"\n"
+msgstr ""
+"Diese Dateisystem-Revision ist offensichtlich zu neu für diese Version \n"
+"von e2fsck (oder der Dateisystem-Superblock ist defekt).\n"
+"\n"
+
+#: e2fsck/unix.c:1046
+#, c-format
+msgid "Could this be a zero-length partition?\n"
+msgstr "Könnte es eine Partion der Länge Null sein?\n"
+
+#: e2fsck/unix.c:1048
+#, c-format
+msgid "You must have %s access to the filesystem or be root\n"
+msgstr "Sie benötigen %s- oder root-Rechte für das Dateisystem.\n"
+
+#: e2fsck/unix.c:1053
+#, c-format
+msgid "Possibly non-existent or swap device?\n"
+msgstr "Möglicherweise ist die Partition nicht vorhanden oder eine Swap-Partition?\n"
+
+#: e2fsck/unix.c:1055
+#, c-format
+msgid "Filesystem mounted or opened exclusively by another program?\n"
+msgstr ""
+"Ist das Dateisystem eingehängt or exklusiv von einem anderen Programm\n"
+"\n"
+"geöffnet worden?\n"
+
+#: e2fsck/unix.c:1059
+#, c-format
+msgid ""
+"Disk write-protected; use the -n option to do a read-only\n"
+"check of the device.\n"
+msgstr ""
+"Laufwerk ist schreibgeschützt, nutzen Sie die -n Option\n"
+"um es im Nur-Lesen-Modus zu prüfen.\n"
+
+#: e2fsck/unix.c:1123
+msgid "Get a newer version of e2fsck!"
+msgstr "Neuere Version von e2fsck benötigt!"
+
+#: e2fsck/unix.c:1147
+#, c-format
+msgid "while checking ext3 journal for %s"
+msgstr "während der Prüfung des ext3-Journals für %s"
+
+#: e2fsck/unix.c:1158
+#, c-format
+msgid "Warning: skipping journal recovery because doing a read-only filesystem check.\n"
+msgstr "Warnung: Überspringe Journal-Wiederherstellung, da das Dateisystem im Nur-Lesen-Modus ist.\n"
+
+#: e2fsck/unix.c:1171
+#, c-format
+msgid "unable to set superblock flags on %s\n"
+msgstr "Superblock-Flags konntan auf %s nicht gesetzt werden\n"
+
+#: e2fsck/unix.c:1177
+#, c-format
+msgid "while recovering ext3 journal of %s"
+msgstr "bei der Wiederherstellung des ext3-Journals von %s"
+
+#: e2fsck/unix.c:1201
+#, c-format
+msgid "%s has unsupported feature(s):"
+msgstr "%s besitzt nicht unterstützte Eigenschaft(en):"
+
+#: e2fsck/unix.c:1217
+msgid "Warning: compression support is experimental.\n"
+msgstr "Warnung: Die Kompressionsunterstützung ist experimentell.\n"
+
+#: e2fsck/unix.c:1222
+#, c-format
+msgid ""
+"E2fsck not compiled with HTREE support,\n"
+"\tbut filesystem %s has HTREE directories.\n"
+msgstr ""
+"Die Unterstützung für HTREE wurde in e2fsck nicht aktiviert,\n"
+"\taber das Dateisystem %s besitzt HTREE Verzeichnisse.\n"
+
+#: e2fsck/unix.c:1276
+msgid "while reading bad blocks inode"
+msgstr "beim Lesen des Bad-Block-Inodes"
+
+#: e2fsck/unix.c:1278
+#, c-format
+msgid "This doesn't bode well, but we'll try to go on...\n"
+msgstr "Das verheißt nichts gutes, aber wir versuchen es trotzdem ..\n"
+
+#: e2fsck/unix.c:1304
+msgid "Couldn't determine journal size"
+msgstr "Konnte die Größe des Dateisystems nicht ermitteln"
+
+#: e2fsck/unix.c:1307
+#, c-format
+msgid "Creating journal (%d blocks): "
+msgstr "Erstelle Journal (%d Blöcke): "
+
+#: e2fsck/unix.c:1314
+#: misc/mke2fs.c:2091
+msgid ""
+"\n"
+"\twhile trying to create journal"
+msgstr ""
+"\n"
+"\tbeim Erstellen des Journals"
+
+#: e2fsck/unix.c:1317
+#, c-format
+msgid " Done.\n"
+msgstr " Erledigt.\n"
+
+#: e2fsck/unix.c:1318
+#, c-format
+msgid ""
+"\n"
+"*** journal has been re-created - filesystem is now ext3 again ***\n"
+msgstr ""
+"\n"
+"*** Journal wurde wiederhergestellt - Dateisystem ist nun wieder ext3 ***\n"
+
+#: e2fsck/unix.c:1325
+#, c-format
+msgid "Restarting e2fsck from the beginning...\n"
+msgstr "Beginne e2fsck neu ...\n"
+
+#: e2fsck/unix.c:1329
+msgid "while resetting context"
+msgstr "beim Rücksetzen des Kontexts"
+
+#: e2fsck/unix.c:1336
+#, c-format
+msgid "%s: e2fsck canceled.\n"
+msgstr "%s: e2fsck abgebrochhen.\n"
+
+#: e2fsck/unix.c:1341
+msgid "aborted"
+msgstr "abgebrochen"
+
+#: e2fsck/unix.c:1353
+#, c-format
+msgid ""
+"\n"
+"%s: ***** FILE SYSTEM WAS MODIFIED *****\n"
+msgstr ""
+"\n"
+"%s: ***** DATEISYSTEM WURDE VERÄNDERT *****\n"
+
+#: e2fsck/unix.c:1356
+#, c-format
+msgid "%s: ***** REBOOT LINUX *****\n"
+msgstr "%s: ***** LINUX MUSS NEU GESTARTET WERDEN *****\n"
+
+#: e2fsck/unix.c:1364
+#, c-format
+msgid ""
+"\n"
+"%s: ********** WARNING: Filesystem still has errors **********\n"
+"\n"
+msgstr ""
+"\n"
+"%s: ********** WARNUNG: Noch Fehler im Dateisystem **********\n"
+"\n"
+
+#: e2fsck/unix.c:1400
+msgid "while setting block group checksum info"
+msgstr "beim Setzen der Blockgruppen-Prüfsummeninfo"
+
+#: e2fsck/util.c:138
+#: misc/util.c:68
+msgid "yY"
+msgstr "jJ"
+
+#: e2fsck/util.c:139
+msgid "nN"
+msgstr "nN"
+
+#: e2fsck/util.c:153
+msgid "<y>"
+msgstr "<j>"
+
+#: e2fsck/util.c:155
+msgid "<n>"
+msgstr "<n>"
+
+#: e2fsck/util.c:157
+msgid " (y/n)"
+msgstr " (j/n)"
+
+#: e2fsck/util.c:172
+msgid "cancelled!\n"
+msgstr "abgebrochen!\n"
+
+#: e2fsck/util.c:187
+msgid "yes\n"
+msgstr "ja\n"
+
+#: e2fsck/util.c:189
+msgid "no\n"
+msgstr "nein\n"
+
+#: e2fsck/util.c:199
+#, c-format
+msgid ""
+"%s? no\n"
+"\n"
+msgstr ""
+"%s? nein\n"
+"\n"
+
+#: e2fsck/util.c:203
+#, c-format
+msgid ""
+"%s? yes\n"
+"\n"
+msgstr ""
+"%s? ja\n"
+"\n"
+
+#: e2fsck/util.c:207
+msgid "yes"
+msgstr "ja"
+
+#: e2fsck/util.c:207
+msgid "no"
+msgstr "nein"
+
+#: e2fsck/util.c:221
+#, c-format
+msgid "e2fsck_read_bitmaps: illegal bitmap block(s) for %s"
+msgstr "e2fsck_read_bitmaps: illegal bitmap block(s) für %s"
+
+#: e2fsck/util.c:226
+msgid "reading inode and block bitmaps"
+msgstr "lese Inode und Block bitmaps"
+
+#: e2fsck/util.c:231
+#, c-format
+msgid "while retrying to read bitmaps for %s"
+msgstr "während des wiederholten Versuches, Bitmaps für %s einzulesen"
+
+#: e2fsck/util.c:243
+msgid "writing block and inode bitmaps"
+msgstr "Schreibe Block- und Inode-Bitmaps"
+
+#: e2fsck/util.c:248
+#, c-format
+msgid "while rewriting block and inode bitmaps for %s"
+msgstr "während des wiederholten Versuches, Block- und Inode-Bitmaps für %s zu schreiben."
+
+#: e2fsck/util.c:260
+#, c-format
+msgid ""
+"\n"
+"\n"
+"%s: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.\n"
+"\t(i.e., without -a or -p options)\n"
+msgstr ""
+"\n"
+"\n"
+"%s: UNERWARTETE INKONSISTENZ; fsck MANUELL AUSFÜHREN\n"
+"\t(d.h. ohne -a oder -p Option)\n"
+
+#: e2fsck/util.c:336
+#, c-format
+msgid "Memory used: %dk/%dk (%dk/%dk), "
+msgstr "benutzter Speicher: %dk/%dk (%dk/%dk), "
+
+#: e2fsck/util.c:340
+#, c-format
+msgid "Memory used: %d, "
+msgstr "benutzter Speicher: %d, "
+
+#: e2fsck/util.c:346
+#, c-format
+msgid "time: %5.2f/%5.2f/%5.2f\n"
+msgstr "Zeit: %5.2f/%5.2f/%5.2f\n"
+
+#: e2fsck/util.c:351
+#, c-format
+msgid "elapsed time: %6.3f\n"
+msgstr "abgelaufende Zeit: %6.3f\n"
+
+#: e2fsck/util.c:385
+#: e2fsck/util.c:399
+#, c-format
+msgid "while reading inode %ld in %s"
+msgstr "beim Lesen von Inode %ld in %s"
+
+#: e2fsck/util.c:413
+#: e2fsck/util.c:426
+#, c-format
+msgid "while writing inode %ld in %s"
+msgstr "beim Schreiben von Inode %ld in %s"
+
+#: e2fsck/util.c:575
+msgid "while allocating zeroizing buffer"
+msgstr "beim reservieren eines Puffers zum Nullen"
+
+#: misc/badblocks.c:66
+msgid "done \n"
+msgstr "erledigt \n"
+
+#: misc/badblocks.c:89
+#, c-format
+msgid ""
+"Usage: %s [-b block_size] [-i input_file] [-o output_file] [-svwnf]\n"
+" [-c blocks_at_once] [-d delay_factor_between_reads] [-e max_bad_blocks]\n"
+" [-p num_passes] [-t test_pattern [-t test_pattern [...]]]\n"
+" device [last_block [first_block]]\n"
+msgstr ""
+"Aufruf: %s [-b Blockgröße] [-i Eingabedatei] [-o Ausgabedatei] [-svwnf]\n"
+" [-c Blöcke_auf_einmal] [-d Verzögerungsfaktor_zwischen_Lesedurchgängen]\n"
+" [-e maximale_Bad_Blocks] [-p Anzahl_Durchgänge]\n"
+" [-t Testmuster [-t Testmuster [...]]]\n"
+" Gerät [letzter_Block [Startblock]]\n"
+
+#: misc/badblocks.c:100
+#, c-format
+msgid ""
+"%s: The -n and -w options are mutually exclusive.\n"
+"\n"
+msgstr ""
+"%s: Die Optionen -n und -w schliessen sich gegenseitig aus.\n"
+"\n"
+
+#: misc/badblocks.c:202
+#, c-format
+msgid "%6.2f%% done, %s elapsed"
+msgstr ""
+
+#: misc/badblocks.c:289
+msgid "Testing with random pattern: "
+msgstr "Teste mit zufälligen Mustern: "
+
+#: misc/badblocks.c:307
+msgid "Testing with pattern 0x"
+msgstr "Teste mit Muster 0x"
+
+#: misc/badblocks.c:335
+#: misc/badblocks.c:404
+msgid "during seek"
+msgstr "beim Suchen"
+
+#: misc/badblocks.c:346
+#, c-format
+msgid "Weird value (%ld) in do_read\n"
+msgstr "Merkwürdiger Wert (%ld) in do_read\n"
+
+#: misc/badblocks.c:424
+msgid "during ext2fs_sync_device"
+msgstr "während ext2fs_sync_device"
+
+#: misc/badblocks.c:440
+#: misc/badblocks.c:699
+msgid "while beginning bad block list iteration"
+msgstr "beim Beginn des »Bad Block«-Listendurchlaufs"
+
+#: misc/badblocks.c:454
+#: misc/badblocks.c:551
+#: misc/badblocks.c:709
+msgid "while allocating buffers"
+msgstr "beim Zuweisen von Puffern"
+
+#: misc/badblocks.c:458
+#, c-format
+msgid "Checking blocks %lu to %lu\n"
+msgstr "Prüfe von Block %lu bis %lu\n"
+
+#: misc/badblocks.c:463
+msgid "Checking for bad blocks in read-only mode\n"
+msgstr "Suche nach defekten Blöcken im Nur-Lesen-Modus\n"
+
+#: misc/badblocks.c:472
+msgid "Checking for bad blocks (read-only test): "
+msgstr "Suche nach defekten Blöcken (Nur-Lesen-Modus):"
+
+#: misc/badblocks.c:480
+#: misc/badblocks.c:583
+#: misc/badblocks.c:628
+#: misc/badblocks.c:772
+msgid "Too many bad blocks, aborting test\n"
+msgstr "Zu viele defekte Blöcke - Test wird abgebrochen\n"
+
+#: misc/badblocks.c:558
+msgid "Checking for bad blocks in read-write mode\n"
+msgstr "Suche nach defekten Blöcken (Lesen+Schreiben-Modus)\n"
+
+#: misc/badblocks.c:560
+#: misc/badblocks.c:722
+#, c-format
+msgid "From block %lu to %lu\n"
+msgstr "Von Block %lu bis %lu\n"
+
+#: misc/badblocks.c:618
+msgid "Reading and comparing: "
+msgstr "Lesen und Vergleichen:"
+
+#: misc/badblocks.c:721
+msgid "Checking for bad blocks in non-destructive read-write mode\n"
+msgstr "Suche nach defekten Blöcken im zerstörungsfreien Lesen+Schreiben-Modus\n"
+
+#: misc/badblocks.c:727
+msgid "Checking for bad blocks (non-destructive read-write test)\n"
+msgstr "Suche nach defekten Blöcken (zerstörungsfreier Lesen+Schreiben-Modus)\n"
+
+#: misc/badblocks.c:734
+msgid ""
+"\n"
+"Interrupt caught, cleaning up\n"
+msgstr ""
+"\n"
+"Unterbrochen, räume auf\n"
+
+#: misc/badblocks.c:810
+#, c-format
+msgid "during test data write, block %lu"
+msgstr "beim Schreiben der Test-Daten; Block %lu"
+
+#: misc/badblocks.c:921
+#: misc/util.c:156
+#, c-format
+msgid "%s is mounted; "
+msgstr "%s ist eingehängt; "
+
+#: misc/badblocks.c:923
+msgid "badblocks forced anyway. Hope /etc/mtab is incorrect.\n"
+msgstr "Badblocks wird trotzdem erzwungen. Hoffentlich ist /etc/mtab nicht korrekt.\n"
+
+#: misc/badblocks.c:928
+msgid "it's not safe to run badblocks!\n"
+msgstr "es ist zu unsicher, Badblocks zu starten!\n"
+
+#: misc/badblocks.c:933
+#: misc/util.c:167
+#, c-format
+msgid "%s is apparently in use by the system; "
+msgstr "%s wird offensichtlich vom System genutzt; "
+
+#: misc/badblocks.c:936
+msgid "badblocks forced anyway.\n"
+msgstr "Badblocks wird trotzdem erzwungen. Hoffentlich ist /etc/mtab nicht korrekt.\n"
+
+#: misc/badblocks.c:956
+#, c-format
+msgid "invalid %s - %s"
+msgstr "ungültige %s - %s"
+
+#: misc/badblocks.c:1015
+#, c-format
+msgid "bad block size - %s"
+msgstr "bad block Größe - %s"
+
+#: misc/badblocks.c:1070
+#, c-format
+msgid "can't allocate memory for test_pattern - %s"
+msgstr "Kann keinen Speicher für Testmuster reservieren - %s"
+
+#: misc/badblocks.c:1097
+msgid "Maximum of one test_pattern may be specified in read-only mode"
+msgstr "Es darf im Nur-Lesen-Modus nur ein Testmuster angegeben werden"
+
+#: misc/badblocks.c:1103
+msgid "Random test_pattern is not allowed in read-only mode"
+msgstr "Zufälliges Testmuster ist im Nur-Lesen-Modus nicht erlaubt"
+
+#: misc/badblocks.c:1117
+msgid ""
+"Couldn't determine device size; you must specify\n"
+"the size manually\n"
+msgstr "Größe des Gerätes ist nicht feststellbar. Sie müssen sie manuell angeben.\n"
+
+#: misc/badblocks.c:1123
+msgid "while trying to determine device size"
+msgstr "beim Versuch, die Gerätegröße festzustellen"
+
+#: misc/badblocks.c:1128
+msgid "last block"
+msgstr "letzter Block"
+
+#: misc/badblocks.c:1134
+msgid "first block"
+msgstr "erster Block"
+
+#: misc/badblocks.c:1137
+#, c-format
+msgid "invalid starting block (%lu): must be less than %lu"
+msgstr "Ungültiger Startblock (%lu): er muss kleiner als %lu sein"
+
+#: misc/badblocks.c:1193
+msgid "while creating in-memory bad blocks list"
+msgstr "erstelle Bad-Block-Liste im Speicher"
+
+#: misc/badblocks.c:1208
+msgid "while adding to in-memory bad block list"
+msgstr "füge zur Bad-Block-Liste im Speicher hinzu"
+
+#: misc/badblocks.c:1232
+#, c-format
+msgid "Pass completed, %u bad blocks found.\n"
+msgstr "Durchgang beendet, %u defekte Blöcke gefunden.\n"
+
+#: misc/chattr.c:85
+#, c-format
+msgid "Usage: %s [-RVf] [-+=AacDdijsSu] [-v version] files...\n"
+msgstr "Aufruf: %s [-RVf] [-+=AacDdijsSu] [-v Version] Dateien...\n"
+
+#: misc/chattr.c:152
+#, c-format
+msgid "bad version - %s\n"
+msgstr "falsche Version - %s\n"
+
+#: misc/chattr.c:198
+#: misc/lsattr.c:113
+#, c-format
+msgid "while trying to stat %s"
+msgstr "beim Auslesen des Status von %s"
+
+#: misc/chattr.c:204
+#: misc/chattr.c:222
+#, c-format
+msgid "Flags of %s set as "
+msgstr "Flags von %s wie folgt gesetzt: "
+
+#: misc/chattr.c:214
+#, c-format
+msgid "while reading flags on %s"
+msgstr "beim Lesens der Flags in %s"
+
+#: misc/chattr.c:231
+#, c-format
+msgid "while setting flags on %s"
+msgstr "beim Setzen der Flags in %s"
+
+#: misc/chattr.c:239
+#, c-format
+msgid "Version of %s set as %lu\n"
+msgstr "Version von %s gesetzt auf %lu\n"
+
+#: misc/chattr.c:243
+#, c-format
+msgid "while setting version on %s"
+msgstr "beim Setzen der Version in %s"
+
+#: misc/chattr.c:263
+#, c-format
+msgid "Couldn't allocate path variable in chattr_dir_proc"
+msgstr "Konnte Pfad-Variable in chattr_dir_proc nicht reservieren"
+
+#: misc/chattr.c:302
+msgid "= is incompatible with - and +\n"
+msgstr "= ist inkompatibel mit - und +\n"
+
+#: misc/chattr.c:310
+msgid "Must use '-v', =, - or +\n"
+msgstr "Benutze »-v«, =, - oder +\n"
+
+#: misc/dumpe2fs.c:53
+#, c-format
+msgid "Usage: %s [-bfhixV] [-ob superblock] [-oB blocksize] device\n"
+msgstr "Aufruf: %s [-bfhixV] [-ob Superblock] [-oB Blockgröße] Gerät\n"
+
+#: misc/dumpe2fs.c:168
+#, c-format
+msgid "Group %lu: (Blocks "
+msgstr "Gruppe %lu: (Blöcke "
+
+#: misc/dumpe2fs.c:173
+#, c-format
+msgid " Checksum 0x%04x, unused inodes %d\n"
+msgstr " Prüfsumme 0x%04x, %d ungenutzte Inodes\n"
+
+#: misc/dumpe2fs.c:178
+#, c-format
+msgid " %s superblock at "
+msgstr " %s Superblock in "
+
+#: misc/dumpe2fs.c:179
+msgid "Primary"
+msgstr "Primary"
+
+#: misc/dumpe2fs.c:179
+msgid "Backup"
+msgstr "Backup"
+
+#: misc/dumpe2fs.c:183
+#, c-format
+msgid ", Group descriptors at "
+msgstr ", Gruppendeskriptoren in "
+
+#: misc/dumpe2fs.c:187
+#, c-format
+msgid ""
+"\n"
+" Reserved GDT blocks at "
+msgstr ""
+"\n"
+" reservierte GDT Blöcke bei "
+
+#: misc/dumpe2fs.c:194
+#, c-format
+msgid " Group descriptor at "
+msgstr ", Gruppendeskriptor in "
+
+#: misc/dumpe2fs.c:200
+msgid " Block bitmap at "
+msgstr " Block bitmap in "
+
+#: misc/dumpe2fs.c:205
+msgid ", Inode bitmap at "
+msgstr ", Inode Bitmap in "
+
+#: misc/dumpe2fs.c:210
+msgid ""
+"\n"
+" Inode table at "
+msgstr ""
+"\n"
+" Inode-Tabelle in "
+
+#: misc/dumpe2fs.c:217
+#, c-format
+msgid ""
+"\n"
+" %u free blocks, %u free inodes, %u directories%s"
+msgstr ""
+"\n"
+" %u freie Blöcke, %u freie Inodes, %u Verzeichnisse%s"
+
+#: misc/dumpe2fs.c:224
+#, c-format
+msgid ", %u unused inodes\n"
+msgstr ", %u ungenutzte Inodes\n"
+
+#: misc/dumpe2fs.c:227
+msgid " Free blocks: "
+msgstr " Freie Blöcke: "
+
+#: misc/dumpe2fs.c:237
+msgid " Free inodes: "
+msgstr " Freie Inodes: "
+
+#: misc/dumpe2fs.c:264
+msgid "while printing bad block list"
+msgstr "beim Ausgeben der »Bad Block«-Liste"
+
+#: misc/dumpe2fs.c:270
+#, c-format
+msgid "Bad blocks: %u"
+msgstr "Bad Blocks: %u"
+
+#: misc/dumpe2fs.c:292
+#: misc/tune2fs.c:279
+msgid "while reading journal inode"
+msgstr "beim Lesen des Journal-Inodes"
+
+#: misc/dumpe2fs.c:295
+msgid "Journal size: "
+msgstr "Journalgrösse: "
+
+#: misc/dumpe2fs.c:319
+#: misc/tune2fs.c:200
+msgid "while reading journal superblock"
+msgstr "beim Lesen des Journal-Superblocks"
+
+#: misc/dumpe2fs.c:327
+msgid "Couldn't find journal superblock magic numbers"
+msgstr "Konnte die magische Nummer des Journal-Superblocks nicht finden"
+
+#: misc/dumpe2fs.c:331
+#, c-format
+msgid ""
+"\n"
+"Journal block size: %u\n"
+"Journal length: %u\n"
+"Journal first block: %u\n"
+"Journal sequence: 0x%08x\n"
+"Journal start: %u\n"
+"Journal number of users: %u\n"
+msgstr ""
+"\n"
+"Journal Blockgröße: %u\n"
+"Journal Länge: %u\n"
+"Journal Startblock: %u\n"
+"Journal Sequenz: 0x%08x\n"
+"Journal Start: %u\n"
+"Journal Anzahl Nutzer: %u\n"
+
+#: misc/dumpe2fs.c:344
+#, c-format
+msgid "Journal users: %s\n"
+msgstr "Jounalnutzer: %s\n"
+
+#: misc/dumpe2fs.c:360
+#: misc/mke2fs.c:693
+#: misc/tune2fs.c:868
+#, c-format
+msgid "Couldn't allocate memory to parse options!\n"
+msgstr "Speicher zum Parsen der Optionen konnte nicht reserviert werden!\n"
+
+#: misc/dumpe2fs.c:386
+#, c-format
+msgid "Invalid superblock parameter: %s\n"
+msgstr "Ungültiger Superblock-Parameter: %s\n"
+
+#: misc/dumpe2fs.c:401
+#, c-format
+msgid "Invalid blocksize parameter: %s\n"
+msgstr "Ungültiger Blockgrössen-Parameter: %s\n"
+
+#: misc/dumpe2fs.c:412
+#, c-format
+msgid ""
+"\n"
+"Bad extended option(s) specified: %s\n"
+"\n"
+"Extended options are separated by commas, and may take an argument which\n"
+"\tis set off by an equals ('=') sign.\n"
+"\n"
+"Valid extended options are:\n"
+"\tsuperblock=<superblock number>\n"
+"\tblocksize=<blocksize>\n"
+msgstr ""
+"\n"
+"Falsche erweiterte Optionen angegeben: %s\n"
+"\n"
+"Erweiterte Optionen werden durch Kommatas getrennt. Manche erwarten ein\n"
+"\tArgument, welches mit Gleichheitszeichen (»=«) zugewiesen wird.\n"
+"\n"
+"Gültige erweiterte Optionen sind:\n"
+"\tsuperblock=<Nummer des Spuperblocks>\n"
+"\tblocksize=<Blockgrösse>\n"
+"\n"
+
+#: misc/dumpe2fs.c:471
+#: misc/mke2fs.c:1355
+#, c-format
+msgid "\tUsing %s\n"
+msgstr "\tBenutze %s\n"
+
+#: misc/dumpe2fs.c:507
+#: misc/e2image.c:674
+#: misc/tune2fs.c:1518
+#: resize/main.c:311
+#, c-format
+msgid "Couldn't find valid filesystem superblock.\n"
+msgstr "Kann keinen gültigen Dateisystem-Superblock finden.\n"
+
+#: misc/dumpe2fs.c:532
+#, c-format
+msgid ""
+"\n"
+"%s: %s: error reading bitmaps: %s\n"
+msgstr ""
+"\n"
+"%s: %s: Fehler beim Lesen von Bitmaps: %s\n"
+
+#: misc/e2image.c:52
+#, c-format
+msgid "Usage: %s [-rsI] device image_file\n"
+msgstr "Aufruf: %s [-r] Gerätedatei\n"
+
+#: misc/e2image.c:64
+msgid "Couldn't allocate header buffer\n"
+msgstr "Header-Puffer konnte nicht zugewiesen werden\n"
+
+#: misc/e2image.c:83
+#, c-format
+msgid "short write (only %d bytes) for writing image header"
+msgstr "short write (only %d bytes) for writing image header"
+
+#: misc/e2image.c:102
+msgid "while writing superblock"
+msgstr "beim Schreiben des Superblocks"
+
+#: misc/e2image.c:110
+msgid "while writing inode table"
+msgstr "beim Schreiben der Inode-Tabelle"
+
+#: misc/e2image.c:117
+msgid "while writing block bitmap"
+msgstr "beim Schreiben der Block-Bitmap"
+
+#: misc/e2image.c:124
+msgid "while writing inode bitmap"
+msgstr "beim Schreiben der Inode-Bitmap"
+
+#: misc/e2label.c:57
+#, c-format
+msgid "e2label: cannot open %s\n"
+msgstr "e2label: Kann %s nicht öffnen.\n"
+
+#: misc/e2label.c:62
+#, c-format
+msgid "e2label: cannot seek to superblock\n"
+msgstr "e2label: cannot seek to superblock\n"
+
+#: misc/e2label.c:67
+#, c-format
+msgid "e2label: error reading superblock\n"
+msgstr "e2label: Lesefehler im Superblock\n"
+
+#: misc/e2label.c:71
+#, c-format
+msgid "e2label: not an ext2 filesystem\n"
+msgstr "e2label: Kein ext2 Dateisystem\n"
+
+#: misc/e2label.c:96
+#: misc/tune2fs.c:1653
+#, c-format
+msgid "Warning: label too long, truncating.\n"
+msgstr "Warnung: Name zu lang, kürze ihn.\n"
+
+#: misc/e2label.c:99
+#, c-format
+msgid "e2label: cannot seek to superblock again\n"
+msgstr "e2label: cannot seek to superblock again\n"
+
+#: misc/e2label.c:104
+#, c-format
+msgid "e2label: error writing superblock\n"
+msgstr "e2label: Fehler beim Schreiben des Superblocks\n"
+
+#: misc/e2label.c:116
+#: misc/tune2fs.c:541
+#, c-format
+msgid "Usage: e2label device [newlabel]\n"
+msgstr "Aufruf: e2label Gerät [neuer_Name]\n"
+
+#: misc/e2undo.c:35
+#, c-format
+msgid "Usage: %s <transaction file> <filesystem>\n"
+msgstr "Aufruf: %s <Transaktionsdatei> <Dateisystem>\n"
+
+#: misc/e2undo.c:52
+msgid "Failed to read the file system data \n"
+msgstr "Die Dateisystemdaten konnten nicht gelesenb werden \n"
+
+#: misc/e2undo.c:62
+#: misc/e2undo.c:83
+#: misc/e2undo.c:108
+#: misc/e2undo.c:204
+#, c-format
+msgid "Failed tdb_fetch %s\n"
+msgstr "tdb_fetch von %s ist misslungen\n"
+
+#: misc/e2undo.c:70
+#, c-format
+msgid "The file system Mount time didn't match %u\n"
+msgstr "Die Zeit des letzten Einhängens des Dateisystems war nicht %u\n"
+
+#: misc/e2undo.c:89
+msgid "The file system UUID didn't match \n"
+msgstr "Die UUID des Dateisystems stimmte nicht überein \n"
+
+#: misc/e2undo.c:161
+#, c-format
+msgid "Failed tdb_open %s\n"
+msgstr "tdb_open von %s ist misslungen\n"
+
+#: misc/e2undo.c:167
+#, c-format
+msgid "Error while determining whether %s is mounted.\n"
+msgstr "Fehler beim Überprüfen, ob %s eingehängt ist.\n"
+
+#: misc/e2undo.c:173
+msgid "e2undo should only be run on unmounted file system\n"
+msgstr "e2undo sollte nur auf nicht-eingehängten Dateisystemen laufen\n"
+
+#: misc/e2undo.c:182
+#, c-format
+msgid "Failed to open %s\n"
+msgstr "%s konnte nicht geöffnet werden\n"
+
+#: misc/e2undo.c:208
+#, c-format
+msgid "Replayed transaction of size %zd at location %ld\n"
+msgstr "Zurückgespielte Transaktion der Größe %zd an Position %ld\n"
+
+#: misc/e2undo.c:214
+#, c-format
+msgid "Failed write %s\n"
+msgstr "Gescheitertes Schreiben von %s\n"
+
+#: misc/fsck.c:347
+#, c-format
+msgid "WARNING: couldn't open %s: %s\n"
+msgstr "WARNUNG: Konnte %s nicht öffnen: %s\n"
+
+#: misc/fsck.c:357
+#, c-format
+msgid "WARNING: bad format on line %d of %s\n"
+msgstr "WARNUNG: falsches Format in Zeile %d von %s\n"
+
+#: misc/fsck.c:372
+msgid ""
+"\a\a\aWARNING: Your /etc/fstab does not contain the fsck passno\n"
+"\tfield. I will kludge around things for you, but you\n"
+"\tshould fix your /etc/fstab file as soon as you can.\n"
+"\n"
+msgstr ""
+"\a\a\aWARNUNG: Ihre /etc/fstab enthält kein »fsck passno«\n"
+"\tFeld. Ich werde dieses ignorieren, aber Sie\n"
+"\tsollten ihre /etc/fstab so schnell wie möglich korrigieren.\n"
+"\n"
+
+#: misc/fsck.c:481
+#, c-format
+msgid "fsck: %s: not found\n"
+msgstr "fsck: %s: nicht gefunden\n"
+
+#: misc/fsck.c:597
+#, c-format
+msgid "%s: wait: No more child process?!?\n"
+msgstr "%s: wait: kein Kindprozess mehr?!?\n"
+
+#: misc/fsck.c:619
+#, c-format
+msgid "Warning... %s for device %s exited with signal %d.\n"
+msgstr "Warnung... %s für Gerät %s wurde mit Signal %d beendet.\n"
+
+#: misc/fsck.c:625
+#, c-format
+msgid "%s %s: status is %x, should never happen.\n"
+msgstr "%s %s: Status ist %x, sollte nie vorkommen.\n"
+
+#: misc/fsck.c:664
+#, c-format
+msgid "Finished with %s (exit status %d)\n"
+msgstr "Beendet mit %s (exit status %d)\n"
+
+#: misc/fsck.c:724
+#, c-format
+msgid "%s: Error %d while executing fsck.%s for %s\n"
+msgstr "%s: Fehler %d bei Ausführung von fsck.%s für %s\n"
+
+#: misc/fsck.c:745
+msgid ""
+"Either all or none of the filesystem types passed to -t must be prefixed\n"
+"with 'no' or '!'.\n"
+msgstr ""
+"Bei -t müssen entweder allen oder keinem Dateisystem ein »no« bzw. »!«\n"
+"vorangestellt werden.\n"
+
+#: misc/fsck.c:764
+msgid "Couldn't allocate memory for filesystem types\n"
+msgstr "Kann keinen Speicher für Dateisystemtypen reservieren.\n"
+
+#: misc/fsck.c:887
+#, c-format
+msgid "%s: skipping bad line in /etc/fstab: bind mount with nonzero fsck pass number\n"
+msgstr ""
+"%s: überspringe die ungültige Zeile in /etc/fstab: bind mount mit\n"
+" Durchgangsnummer für fsck, die nicht Null ist\n"
+
+#: misc/fsck.c:914
+#, c-format
+msgid "fsck: cannot check %s: fsck.%s not found\n"
+msgstr "fsck: kann %s nicht überprüfen: fsck.%s nicht gefunden\n"
+
+#: misc/fsck.c:970
+msgid "Checking all file systems.\n"
+msgstr "Überprüfe alle Dateisysteme.\n"
+
+#: misc/fsck.c:1061
+#, c-format
+msgid "--waiting-- (pass %d)\n"
+msgstr "--warten-- (Durchgang %d)\n"
+
+#: misc/fsck.c:1081
+msgid "Usage: fsck [-AMNPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n"
+msgstr "Aufruf: fsck [-AMNPRTV] [ -C [ fd ] ] [-t Datesystemtyp] [FS-Optionen] [Dateisystem...]\n"
+
+#: misc/fsck.c:1123
+#, c-format
+msgid "%s: too many devices\n"
+msgstr "%s: zu viele Geräte\n"
+
+#: misc/fsck.c:1156
+#: misc/fsck.c:1242
+#, c-format
+msgid "%s: too many arguments\n"
+msgstr "%s: zu viele Argumente\n"
+
+#: misc/lsattr.c:73
+#, c-format
+msgid "Usage: %s [-RVadlv] [files...]\n"
+msgstr "Aufruf: %s [-RVadlv] [Dateien...]\n"
+
+#: misc/lsattr.c:83
+#, c-format
+msgid "While reading flags on %s"
+msgstr "Beim Lesen der Flags von %s"
+
+#: misc/lsattr.c:90
+#, c-format
+msgid "While reading version on %s"
+msgstr "Beim Lesen der Version von %s"
+
+#: misc/mke2fs.c:104
+#, c-format
+msgid ""
+"Usage: %s [-c|-l filename] [-b block-size] [-f fragment-size]\n"
+"\t[-i bytes-per-inode] [-I inode-size] [-J journal-options]\n"
+"\t[-G meta group size] [-N number-of-inodes]\n"
+"\t[-m reserved-blocks-percentage] [-o creator-os]\n"
+"\t[-g blocks-per-group] [-L volume-label] [-M last-mounted-directory]\n"
+"\t[-O feature[,...]] [-r fs-revision] [-E extended-option[,...]]\n"
+"\t[-T fs-type] [-U UUID] [-jnqvFSV] device [blocks-count]\n"
+msgstr ""
+"Aufruf: %s [-c|-l Dateiname] [-b Blockgröße] [-f Fragmentgröße]\n"
+"\t[-i Bytes-pro-Inode] [-I Inodegrösse] [-J Journal-Optionen]\n"
+"\t[-G Größe_der_Metagruppe] [-N Anzahl_der_Inodes]\n"
+"\t[-m Reservierte-Blöcke-Prozent] [-o Erzeuger-OS]\n"
+"\t[-g Blöcke-pro-Gruppe] [-L Volume-Label]\n"
+"\t[-M letztes-eingehängtes-Verzeichnis] [-O Eigenschaft[,...]]\n"
+"\t[-r fs-Revision] [-E erweiterte-Option[,...]]\n"
+"\t[-T Fs-Typ] [-jnqvFSV] Gerät [Block-Anzahl]\n"
+
+#: misc/mke2fs.c:206
+#, c-format
+msgid "Running command: %s\n"
+msgstr "Führe aus: %s\n"
+
+#: misc/mke2fs.c:210
+#, c-format
+msgid "while trying to run '%s'"
+msgstr "während des Versuchs, »%s« auszuführen"
+
+#: misc/mke2fs.c:217
+msgid "while processing list of bad blocks from program"
+msgstr "beim Auswerten der »Bad Block«-Liste vom Programm"
+
+#: misc/mke2fs.c:244
+#, c-format
+msgid "Block %d in primary superblock/group descriptor area bad.\n"
+msgstr "Block %d im primären Superblock/Gruppendeskriptorbereich defekt.\n"
+
+#: misc/mke2fs.c:246
+#, c-format
+msgid "Blocks %u through %u must be good in order to build a filesystem.\n"
+msgstr ""
+"Die Blöcke %u bis einschließlich %u müssen in Ordung sein, um ein\n"
+"\tDateisystem zu erstellen.\n"
+
+#: misc/mke2fs.c:249
+msgid "Aborting....\n"
+msgstr "Breche ab...\n"
+
+#: misc/mke2fs.c:269
+#, c-format
+msgid ""
+"Warning: the backup superblock/group descriptors at block %u contain\n"
+"\tbad blocks.\n"
+"\n"
+msgstr ""
+"Warnung: die Sicherung des Superblock bzw. Gruppendeskriptors in Block %u enthält\n"
+"\tdefekte Blöcke.\n"
+"\n"
+
+#: misc/mke2fs.c:288
+msgid "while marking bad blocks as used"
+msgstr "beim Markieren von defekten Blöcken als »belegt«"
+
+#: misc/mke2fs.c:346
+msgid "done \n"
+msgstr "erledigt \n"
+
+#: misc/mke2fs.c:360
+msgid "Writing inode tables: "
+msgstr "Schreibe Inode-Tabellen: "
+
+#: misc/mke2fs.c:383
+#, c-format
+msgid ""
+"\n"
+"Could not write %d blocks in inode table starting at %u: %s\n"
+msgstr ""
+"\n"
+"Konnte %d Blöcke nicht in Inoden-Tabelle schreiben, beginnend bei %u: %s\n"
+
+#: misc/mke2fs.c:407
+msgid "while creating root dir"
+msgstr "beim Erstellen des Wurzelverzeichnisses"
+
+#: misc/mke2fs.c:414
+msgid "while reading root inode"
+msgstr "beim Lesen des Root-Inode"
+
+#: misc/mke2fs.c:428
+msgid "while setting root inode ownership"
+msgstr "beim Setzen des Root-Inode-Eigentümers"
+
+#: misc/mke2fs.c:446
+msgid "while creating /lost+found"
+msgstr "beim Erstellen von /lost+found"
+
+#: misc/mke2fs.c:453
+msgid "while looking up /lost+found"
+msgstr "beim Suchen von /lost+found"
+
+#: misc/mke2fs.c:466
+msgid "while expanding /lost+found"
+msgstr "beim Expandieren von /lost+found"
+
+#: misc/mke2fs.c:481
+msgid "while setting bad block inode"
+msgstr "beim Setzen des »Bad Block«-Inodes"
+
+#: misc/mke2fs.c:508
+#, c-format
+msgid "Out of memory erasing sectors %d-%d\n"
+msgstr "Speicher voll beim Löschen der Sektoren %d-%d\n"
+
+#: misc/mke2fs.c:518
+#, c-format
+msgid "Warning: could not read block 0: %s\n"
+msgstr "Warnung: konnte Block %s nicht lesen\n"
+
+#: misc/mke2fs.c:534
+#, c-format
+msgid "Warning: could not erase sector %d: %s\n"
+msgstr "Warnung: konnte Sektor %d: %s nicht löschen\n"
+
+#: misc/mke2fs.c:550
+msgid "while initializing journal superblock"
+msgstr "beim Initialisieren des Journal-Superblocks"
+
+#: misc/mke2fs.c:556
+msgid "Zeroing journal device: "
+msgstr "Überschreibe Journal-Device mit Nullen: "
+
+#: misc/mke2fs.c:569
+#, c-format
+msgid "while zeroing journal device (block %u, count %d)"
+msgstr "beim Überschreiben des Journal-Device mit Nullen (Block %u, Nr. %d)"
+
+#: misc/mke2fs.c:585
+msgid "while writing journal superblock"
+msgstr "beim Schreiben des Journal-Superblocks"
+
+#: misc/mke2fs.c:601
+#, c-format
+msgid ""
+"warning: %u blocks unused.\n"
+"\n"
+msgstr ""
+"Warnung: %u Blöcke unbenutzt.\n"
+"\n"
+
+#: misc/mke2fs.c:606
+#, c-format
+msgid "Filesystem label=%s\n"
+msgstr "Dateisystem-Label=%s\n"
+
+#: misc/mke2fs.c:607
+msgid "OS type: "
+msgstr "OS-Typ: "
+
+#: misc/mke2fs.c:612
+#, c-format
+msgid "Block size=%u (log=%u)\n"
+msgstr "Blockgröße=%u (log=%u)\n"
+
+#: misc/mke2fs.c:614
+#, c-format
+msgid "Fragment size=%u (log=%u)\n"
+msgstr "Fragmentgröße=%u (log=%u)\n"
+
+#: misc/mke2fs.c:616
+#, c-format
+msgid "%u inodes, %u blocks\n"
+msgstr "%u Inodes, %u Blöcke\n"
+
+#: misc/mke2fs.c:618
+#, c-format
+msgid "%u blocks (%2.2f%%) reserved for the super user\n"
+msgstr "%u Blöcke (%2.2f%%) reserviert für den Superuser\n"
+
+#: misc/mke2fs.c:621
+#, c-format
+msgid "First data block=%u\n"
+msgstr "Erster Datenblock=%u\n"
+
+#: misc/mke2fs.c:623
+#, c-format
+msgid "Maximum filesystem blocks=%lu\n"
+msgstr "Maximale Dateisystem-Blöcke=%lu\n"
+
+#: misc/mke2fs.c:627
+#, c-format
+msgid "%u block groups\n"
+msgstr "%u Blockgruppen\n"
+
+#: misc/mke2fs.c:629
+#, c-format
+msgid "%u block group\n"
+msgstr "%u Blockgruppe\n"
+
+#: misc/mke2fs.c:630
+#, c-format
+msgid "%u blocks per group, %u fragments per group\n"
+msgstr "%u Blöcke pro Gruppe, %u Fragmente pro Gruppe\n"
+
+#: misc/mke2fs.c:632
+#, c-format
+msgid "%u inodes per group\n"
+msgstr "%u Inodes pro Gruppe\n"
+
+#: misc/mke2fs.c:639
+#, c-format
+msgid "Superblock backups stored on blocks: "
+msgstr "Superblock-Sicherungskopien gespeichert in den Blöcken: "
+
+#: misc/mke2fs.c:718
+#, c-format
+msgid "Invalid stride parameter: %s\n"
+msgstr "Ungültiger \"stride\"-Parameter: %s\n"
+
+#: misc/mke2fs.c:733
+#, c-format
+msgid "Invalid stripe-width parameter: %s\n"
+msgstr "Ungültiger Stripebreite-Parameter: %s\n"
+
+#: misc/mke2fs.c:755
+#, c-format
+msgid "Invalid resize parameter: %s\n"
+msgstr "Ungültiger \"resize\"-Parameter: %s\n"
+
+#: misc/mke2fs.c:762
+#, c-format
+msgid "The resize maximum must be greater than the filesystem size.\n"
+msgstr "Das Maximum der Vergrösserung muss oberhalb als der Dateisystem-Grösse liegen.\n"
+
+#: misc/mke2fs.c:786
+#, c-format
+msgid "On-line resizing not supported with revision 0 filesystems\n"
+msgstr ""
+"Online-Grössenänderungen werden bei Revison 0 Dateisystemen nicht\n"
+"\tunterstützt\n"
+
+#: misc/mke2fs.c:808
+#, c-format
+msgid ""
+"\n"
+"Bad option(s) specified: %s\n"
+"\n"
+"Extended options are separated by commas, and may take an argument which\n"
+"\tis set off by an equals ('=') sign.\n"
+"\n"
+"Valid extended options are:\n"
+"\tstride=<RAID per-disk data chunk in blocks>\n"
+"\tstripe-width=<RAID stride * data disks in blocks>\n"
+"\tresize=<resize maximum size in blocks>\n"
+"\tlazy_itable_init=<0 to disable, 1 to enable>\n"
+"\ttest_fs\n"
+"\n"
+msgstr ""
+"\n"
+"Ungültige Option(en) angegeben: %s\n"
+"\n"
+"Erweiterte Optionen werden durch Kommatas getrennt. Manche erwarten ein\n"
+"\tArgument, welches mit Gleichheitszeichen (»=«) zugewiesen wird.\n"
+"\n"
+"\terhalten welches mit Gleichheitszeichen (»=«) zugewiesen wird.\n"
+"\n"
+"gültige erweiterte Optionen sind:\n"
+"\tstride=<RAID Segmentgrösse in Blöcken>\n"
+"\tstripe-width=<RAID Stride * Datenplatten in Blöcken>\n"
+"\tresize=<Obergrenze für Grössenänderung in Blöcken>\n"
+"\tlazy_itable_init=<0 für Ab-, 1 für Einschalten>\n"
+"\ttest_fs\n"
+"\n"
+
+#: misc/mke2fs.c:824
+#, c-format
+msgid ""
+"\n"
+"Warning: RAID stripe-width %u not an even multiple of stride %u.\n"
+"\n"
+msgstr ""
+"\n"
+"Warnung: RAID Stripe-Breite %u ist kein ganzzahliges Vielfaches von\n"
+"\tStride %u.\n"
+"\n"
+
+#: misc/mke2fs.c:856
+#, c-format
+msgid ""
+"Syntax error in mke2fs config file (%s, line #%d)\n"
+"\t%s\n"
+msgstr ""
+"Syntax Fehler in der Konfigurationsdatei von mkefs (%s, Zeile %d)\n"
+"\t%s\n"
+
+#: misc/mke2fs.c:869
+#: misc/tune2fs.c:353
+#, c-format
+msgid "Invalid filesystem option set: %s\n"
+msgstr "Unvollständige Dateisystem-Option gesetzt: %s\n"
+
+#: misc/mke2fs.c:979
+#, c-format
+msgid ""
+"\n"
+"Warning! Your mke2fs.conf file does not define the %s filesystem type.\n"
+msgstr ""
+"\n"
+"Warnung: Ihre mke2fs.conf Datei definiert den Typ des Dateisystems auf %s nicht.\n"
+
+#: misc/mke2fs.c:982
+#, c-format
+msgid ""
+"You probably need to install an updated mke2fs.conf file.\n"
+"\n"
+msgstr ""
+"Sie müssen wahrscheinlich eine aktualisierte mke2fs.conf Datei installieren.\n"
+"\n"
+
+#: misc/mke2fs.c:1177
+#, c-format
+msgid "invalid block size - %s"
+msgstr "bad block Größe - %s"
+
+#: misc/mke2fs.c:1181
+#, c-format
+msgid "Warning: blocksize %d not usable on most systems.\n"
+msgstr "Warnung: Blockgröße %d ist auf den meisten Systemen unbrauchbar.\n"
+
+#: misc/mke2fs.c:1197
+#, c-format
+msgid "invalid fragment size - %s"
+msgstr "falsche Fragmentgröße - %s"
+
+#: misc/mke2fs.c:1203
+#, c-format
+msgid "Warning: fragments not supported. Ignoring -f option\n"
+msgstr "Warnung: Fragmente werden nicht unterstützt. Ignoriere -f Option\n"
+
+#: misc/mke2fs.c:1210
+msgid "Illegal number for blocks per group"
+msgstr "unzulässige Angabe für Blöcke pro Gruppe"
+
+#: misc/mke2fs.c:1215
+msgid "blocks per group must be multiple of 8"
+msgstr "Anzahl der Blöcke pro Gruppe muss ein Vielfaches von 8 sein"
+
+#: misc/mke2fs.c:1223
+msgid "Illegal number for flex_bg size"
+msgstr "Illegale Zahl für flex_bg Größe"
+
+#: misc/mke2fs.c:1229
+msgid "flex_bg size must be a power of 2"
+msgstr "flex_bg Größe muss eine Zweierpotenz sein"
+
+#: misc/mke2fs.c:1239
+#, c-format
+msgid "invalid inode ratio %s (min %d/max %d)"
+msgstr "Unzulässiges Inode-Verhältnis %s (Min %d/Max %d"
+
+#: misc/mke2fs.c:1256
+msgid "in malloc for bad_blocks_filename"
+msgstr "in malloc for bad_blocks_filename"
+
+#: misc/mke2fs.c:1265
+#, c-format
+msgid "invalid reserved blocks percent - %s"
+msgstr "Unzulässige \"Reservierte Blöcke\"-Prozentangabe - %s"
+
+#: misc/mke2fs.c:1283
+#, c-format
+msgid "bad revision level - %s"
+msgstr "ungültiges Intervall - %s"
+
+#: misc/mke2fs.c:1295
+#, c-format
+msgid "invalid inode size - %s"
+msgstr "Unzulässige Inode-Größe - %s"
+
+#: misc/mke2fs.c:1315
+#, c-format
+msgid "bad num inodes - %s"
+msgstr "ungültiges Intervall - %s"
+
+#: misc/mke2fs.c:1380
+#: misc/mke2fs.c:2052
+#, c-format
+msgid "while trying to open journal device %s\n"
+msgstr "beim Versuch, das Journal-Device %s zu öffnen\n"
+
+#: misc/mke2fs.c:1386
+#, c-format
+msgid "Journal dev blocksize (%d) smaller than minimum blocksize %d\n"
+msgstr "Journal-Device Blockgröße (%d) kleiner als Minimum-Blockgröße %d\n"
+
+#: misc/mke2fs.c:1392
+#, c-format
+msgid "Using journal device's blocksize: %d\n"
+msgstr "Verwende die Blockgrösse des Geräts: %d\n"
+
+#: misc/mke2fs.c:1401
+#, c-format
+msgid "%d-byte blocks too big for system (max %d)"
+msgstr "%d-Byte Blöcke zu groß für das System (max %d)"
+
+#: misc/mke2fs.c:1405
+#, c-format
+msgid "Warning: %d-byte blocks too big for system (max %d), forced to continue\n"
+msgstr "Warnung: %d-byte Blöcke sind zu groß für das System (max %d), fahre dennoch fort\n"
+
+#: misc/mke2fs.c:1413
+#, c-format
+msgid "invalid blocks count - %s"
+msgstr "ungültige Anzahl Blöcke - %s"
+
+#: misc/mke2fs.c:1423
+msgid "filesystem"
+msgstr "Dateisystem"
+
+#: misc/mke2fs.c:1459
+#, c-format
+msgid ""
+"%s: Size of device %s too big to be expressed in 32 bits\n"
+"\tusing a blocksize of %d.\n"
+msgstr ""
+"%s: Größe von Gerät %s lässt sich in 32 Bits nicht darstellen\n"
+"\teine Blockgröße von %d wird verwendet.\n"
+
+#: misc/mke2fs.c:1468
+#: resize/main.c:371
+msgid "while trying to determine filesystem size"
+msgstr "beim Bestimmen der Dateisystemgröße"
+
+#: misc/mke2fs.c:1475
+msgid ""
+"Couldn't determine device size; you must specify\n"
+"the size of the filesystem\n"
+msgstr ""
+"Konnte die Gerätegröße nicht ermitteln. Geben\n"
+"Sie die Größe des Dateisystems an\n"
+
+#: misc/mke2fs.c:1482
+msgid ""
+"Device size reported to be zero. Invalid partition specified, or\n"
+"\tpartition table wasn't reread after running fdisk, due to\n"
+"\ta modified partition being busy and in use. You may need to reboot\n"
+"\tto re-read your partition table.\n"
+msgstr ""
+"Zurückgegebene Gerätegröße ist gleich null. Unvollständige Partition\n"
+"\tangegeben oder die Partitionstabelle wurde nach einem fdisk-Lauf\n"
+"\tnicht wieder eingelesen, weil eine veränderte Partition in Gebrauch\n"
+"\tund gesperrt ist. Sie könnten gezwungen sein, neu zu booten, um die\n"
+"\tPartitionstabelle neu einzulesen.\n"
+
+#: misc/mke2fs.c:1500
+msgid "Filesystem larger than apparent device size."
+msgstr "Dateisystem ist größer als augenscheinlich das Gerät selbst."
+
+#: misc/mke2fs.c:1506
+#, c-format
+msgid "Failed to parse fs types list\n"
+msgstr "Analyse der Liste von Dateisystemen war nicht möglich\n"
+
+#: misc/mke2fs.c:1542
+msgid "fs_types for mke2fs.conf resolution: "
+msgstr "fs_types für mke2fs.conf Lösung: "
+
+#: misc/mke2fs.c:1549
+#, c-format
+msgid "Filesystem features not supported with revision 0 filesystems\n"
+msgstr ""
+"Dateisystem-Eigenschaften werden für Dateisysteme der Revision 0 nicht\n"
+"\tunterstützt\n"
+
+#: misc/mke2fs.c:1556
+#, c-format
+msgid "Sparse superblocks not supported with revision 0 filesystems\n"
+msgstr ""
+"Verteilte Superblöcke werden für Dateisysteme der Revision 0 nicht\n"
+"\tunterstützt\n"
+
+#: misc/mke2fs.c:1568
+#, c-format
+msgid "Journals not supported with revision 0 filesystems\n"
+msgstr "Journale werden für Dateisysteme der Revision 0 nicht unterstützt\n"
+
+#: misc/mke2fs.c:1586
+#, c-format
+msgid ""
+"The resize_inode and meta_bg features are not compatible.\n"
+"They can not be both enabled simultaneously.\n"
+msgstr ""
+"Die Eigenschaften resize_inode und meta_bg sind nicht kompatibel.\n"
+"Sie können nicht gleichzeitig aktiviert werden.\n"
+
+#: misc/mke2fs.c:1603
+msgid "while trying to determine hardware sector size"
+msgstr "beim Ermitteln der Hardware-Sektorgröße"
+
+#: misc/mke2fs.c:1661
+msgid "reserved online resize blocks not supported on non-sparse filesystem"
+msgstr ""
+"Für Online-Grössenänderungen reservierte Blöcke werden auf Dateisystemen\n"
+"\tohne Unterstützung für Lückenkompression nicht unterstützt"
+
+#: misc/mke2fs.c:1670
+msgid "blocks per group count out of range"
+msgstr "Anzahl der Blöcke pro Gruppe ausserhaalb des gültigen Bereichs"
+
+#: misc/mke2fs.c:1685
+msgid "Flex_bg feature not enabled, so flex_bg size may not be specified"
+msgstr "Eigenschaft flex_bg wurde nicht aktiviert, daher darf flex_bg Grösse nicht angegeben werden"
+
+#: misc/mke2fs.c:1697
+#, c-format
+msgid "invalid inode size %d (min %d/max %d)"
+msgstr "ungültige Inode-Größe %d (min %d/max %d)"
+
+#: misc/mke2fs.c:1711
+#, c-format
+msgid "too many inodes (%llu), raise inode ratio?"
+msgstr "zu viele Inodes (%llu), Inode-Verhältnis erhöhen?"
+
+#: misc/mke2fs.c:1716
+#, c-format
+msgid "too many inodes (%llu), specify < 2^32 inodes"
+msgstr "zu viele Inodes (%llu), sie müssen weniger als 2^32 Inodes angeben"
+
+#: misc/mke2fs.c:1731
+#, c-format
+msgid ""
+"inode_size (%u) * inodes_count (%u) too big for a\n"
+"\tfilesystem with %lu blocks, specify higher inode_ratio (-i)\n"
+"\tor lower inode count (-N).\n"
+msgstr ""
+"inode_size (%u) * inodes_count (%u) is zu gross für ein\n"
+"\tDateisystem mit %lu Blöcken, geben Sie bitte entweder ein höheres\n"
+"\tinode_ratio (-i) oder eine niedrigere Anzahl an Inodes (-N) an.\n"
+
+#: misc/mke2fs.c:1828
+#: misc/tune2fs.c:1462
+#, c-format
+msgid "while trying to delete %s"
+msgstr "beim Versuch, %s zu löschen"
+
+#: misc/mke2fs.c:1837
+#, c-format
+msgid ""
+"Overwriting existing filesystem; this can be undone using the command:\n"
+" e2undo %s %s\n"
+"\n"
+msgstr ""
+"Überschreibe das bestehende Dateisystem; dies kann rückgängig gemacht werden\n"
+"durch den Befehl:\n"
+" e2undo %s %s\n"
+"\n"
+
+#: misc/mke2fs.c:1885
+msgid "while setting up superblock"
+msgstr "beim Erstellen des Superblocks"
+
+#: misc/mke2fs.c:1936
+#, c-format
+msgid "unknown os - %s"
+msgstr "unbekanntes OS - %s"
+
+#: misc/mke2fs.c:1990
+msgid "while trying to allocate filesystem tables"
+msgstr "beim Zuordnen von Dateisystemtabellen"
+
+#: misc/mke2fs.c:2021
+#, c-format
+msgid "while zeroing block %u at end of filesystem"
+msgstr "beim Nullen von Block %u am Ende des Dateisystems"
+
+#: misc/mke2fs.c:2034
+msgid "while reserving blocks for online resize"
+msgstr "beim Lesen des Bad-Block-Inodes"
+
+#: misc/mke2fs.c:2045
+#: misc/tune2fs.c:477
+msgid "journal"
+msgstr "Journal"
+
+#: misc/mke2fs.c:2057
+#, c-format
+msgid "Adding journal to device %s: "
+msgstr "Erstelle Journal auf Gerät %s: "
+
+#: misc/mke2fs.c:2064
+#, c-format
+msgid ""
+"\n"
+"\twhile trying to add journal to device %s"
+msgstr ""
+"\n"
+"\tbeim Erstellen des Journals auf Gerät %s"
+
+#: misc/mke2fs.c:2069
+#: misc/mke2fs.c:2095
+#: misc/tune2fs.c:506
+#: misc/tune2fs.c:520
+#, c-format
+msgid "done\n"
+msgstr "erledigt\n"
+
+#: misc/mke2fs.c:2083
+#, c-format
+msgid "Creating journal (%u blocks): "
+msgstr "Erstelle Journal (%u Blöcke): "
+
+#: misc/mke2fs.c:2100
+#, c-format
+msgid "Writing superblocks and filesystem accounting information: "
+msgstr "Schreibe Superblöcke und Dateisystem-Accountinginformationen: "
+
+#: misc/mke2fs.c:2105
+#, c-format
+msgid ""
+"\n"
+"Warning, had trouble writing out superblocks."
+msgstr ""
+"\n"
+"Warnung: Probleme beim Schreiben der Superblöcke."
+
+#: misc/mke2fs.c:2108
+#, c-format
+msgid ""
+"done\n"
+"\n"
+msgstr ""
+"erledigt\n"
+"\n"
+
+#: misc/mklost+found.c:49
+#, c-format
+msgid "Usage: mklost+found\n"
+msgstr "Aufruf: mklost+found\n"
+
+#: misc/partinfo.c:39
+#, c-format
+msgid ""
+"Usage: %s device...\n"
+"\n"
+"Prints out the partition information for each given device.\n"
+"For example: %s /dev/hda\n"
+"\n"
+msgstr ""
+"Aufruf: %s Gerät...\n"
+"\n"
+"Gibt Informationen über die Partitionen jedes angegebenen Gerätes aus.\n"
+"Zum Beispiel: %s /dev/hda\n"
+"\n"
+
+#: misc/partinfo.c:49
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "Kann %s nicht öffnen: %s"
+
+#: misc/partinfo.c:55
+#, c-format
+msgid "Cannot get geometry of %s: %s"
+msgstr "Geometrie von %s kann nicht ermittelt werden: %s"
+
+#: misc/partinfo.c:63
+#, c-format
+msgid "Cannot get size of %s: %s"
+msgstr "Grösse von %s kann nicht gelesen werden: %s"
+
+#: misc/partinfo.c:69
+#, c-format
+msgid "%s: h=%3d s=%3d c=%4d start=%8d size=%8lu end=%8d\n"
+msgstr "%s: h=%3d s=%3d c=%4d Start=%8d Grösse=%8lu Ende=%8d\n"
+
+#: misc/tune2fs.c:96
+msgid "Please run e2fsck on the filesystem.\n"
+msgstr "Lassen Sie bitte e2fsck über das Dateisystem laufen.\n"
+
+#: misc/tune2fs.c:103
+#, c-format
+msgid ""
+"Usage: %s [-c max_mounts_count] [-e errors_behavior] [-g group]\n"
+"\t[-i interval[d|m|w]] [-j] [-J journal_options] [-l]\n"
+"\t[-m reserved_blocks_percent] [-o [^]mount_options[,...]] \n"
+"\t[-r reserved_blocks_count] [-u user] [-C mount_count] [-L volume_label]\n"
+"\t[-M last_mounted_dir] [-O [^]feature[,...]]\n"
+"\t[-E extended-option[,...]] [-T last_check_time] [-U UUID]\n"
+"\t[ -I new_inode_size ] device\n"
+msgstr ""
+"Aufruf: %s [-c max-Anzahl-Mounts] [-e Fehler-Verhalten] [-g Gruppe]\n"
+"\t[-i Intervall[d|m|w]] [-j] [-J Journal-Optionen] [-l]\n"
+"\t[-m reservierte_Blöcke_Prozent] [-o [^]Einhäng_Optionen[,...]]\n"
+"\t[-r Anzahl_reservierte_Blöcke] [-u Benutzer] [-C Anzahl_Einhängen]\n"
+"\t[-L Volume_Label] [-M letztes_eingehängtes_Verzeichnis]\n"
+"\t[-O [^]Eigenschaft[,...]] [-E erweiterte-Option[,...]]\n"
+"\t[-T letzter_Prüfzeitpunkt] [-U UUID] [-I neue_Inodegrösse] Gerät\n"
+
+#: misc/tune2fs.c:188
+msgid "while trying to open external journal"
+msgstr "beim Öffnen des externen Journals"
+
+#: misc/tune2fs.c:192
+#, c-format
+msgid "%s is not a journal device.\n"
+msgstr "%s ist kein Journal-Gerät.\n"
+
+#: misc/tune2fs.c:207
+msgid "Journal superblock not found!\n"
+msgstr "Journal-Superblock nicht gefunden!\n"
+
+#: misc/tune2fs.c:219
+msgid "Filesystem's UUID not found on journal device.\n"
+msgstr "UUID des Dateisystems auf Journal-Gerät nicht gefunden.\n"
+
+#: misc/tune2fs.c:240
+msgid "Journal NOT removed\n"
+msgstr "Journal NICHT gelöscht\n"
+
+#: misc/tune2fs.c:246
+msgid "Journal removed\n"
+msgstr "Journal gelöscht\n"
+
+#: misc/tune2fs.c:286
+msgid "while reading bitmaps"
+msgstr "beim Lesen von Bitmaps"
+
+#: misc/tune2fs.c:294
+msgid "while clearing journal inode"
+msgstr "beim Bereinigen des Journal-Inodes"
+
+#: misc/tune2fs.c:305
+msgid "while writing journal inode"
+msgstr "beim Schreiben des Journal-Inodes"
+
+#: misc/tune2fs.c:320
+#, c-format
+msgid "Invalid mount option set: %s\n"
+msgstr "Ungültige Einhänge-Option gesetzt: %s\n"
+
+#: misc/tune2fs.c:356
+#, c-format
+msgid "Clearing filesystem feature '%s' not supported.\n"
+msgstr "Das Zurücksetzen von Dateisystem-Eigenschaft »%s« wird nicht unterstützt.\n"
+
+#: misc/tune2fs.c:362
+#, c-format
+msgid "Setting filesystem feature '%s' not supported.\n"
+msgstr "Das Setzen der Dateisystem-Eigenschaft »%s« wird nicht unterstützt.\n"
+
+#: misc/tune2fs.c:371
+msgid ""
+"The has_journal feature may only be cleared when the filesystem is\n"
+"unmounted or mounted read-only.\n"
+msgstr ""
+"Die has_jounal Eigenschaft kann nur zurückgesetzt werden, wenn das\n"
+"Dateisystem nicht oder im Nur-Lesen-Modus eingehängt ist.\n"
+
+#: misc/tune2fs.c:379
+msgid ""
+"The needs_recovery flag is set. Please run e2fsck before clearing\n"
+"the has_journal flag.\n"
+msgstr ""
+"Das needs_recovery Flag ist gesetzt. Bitte starten sie e2fsck vor\n"
+"der Zurücksetzung des has_journal Flags.\n"
+
+#: misc/tune2fs.c:412
+msgid ""
+"Clearing the flex_bg flag would cause the the filesystem to be\n"
+"inconsistent.\n"
+msgstr ""
+"Das Zurücksetzen der Kennung flex_bg würde das Dateisystem inkonsistent\n"
+"machen.\n"
+
+#: misc/tune2fs.c:423
+msgid ""
+"The huge_file feature may only be cleared when the filesystem is\n"
+"unmounted or mounted read-only.\n"
+msgstr ""
+"Die huge_file Eigenschaft kann nur zurückgesetzt werden, wenn das\n"
+"Dateisystem nicht oder im Nur-Lesen-Modus eingehängt ist.\n"
+
+#: misc/tune2fs.c:451
+#, c-format
+msgid "(and reboot afterwards!)\n"
+msgstr "(und hinterher das System neu starten!)\n"
+
+#: misc/tune2fs.c:472
+msgid "The filesystem already has a journal.\n"
+msgstr "Das Dateisystem hat schon ein Journal.\n"
+
+#: misc/tune2fs.c:490
+#, c-format
+msgid ""
+"\n"
+"\twhile trying to open journal on %s\n"
+msgstr ""
+"\n"
+"\tbeim Öffnen des Journals auf %s\n"
+
+#: misc/tune2fs.c:494
+#, c-format
+msgid "Creating journal on device %s: "
+msgstr "Erstelle Journal auf Gerät %s: "
+
+#: misc/tune2fs.c:502
+#, c-format
+msgid "while adding filesystem to journal on %s"
+msgstr "beim Hinzufügen des Dateisystems zum Journal auf %s"
+
+#: misc/tune2fs.c:508
+msgid "Creating journal inode: "
+msgstr "Erstelle Journal-Inode: "
+
+#: misc/tune2fs.c:517
+msgid ""
+"\n"
+"\twhile trying to create journal file"
+msgstr ""
+"\n"
+"\tbeim Erstellen der Journaldatei"
+
+#: misc/tune2fs.c:584
+#, c-format
+msgid "Couldn't parse date/time specifier: %s"
+msgstr "Konnte Datum/Zeit nicht parsen: %s"
+
+#: misc/tune2fs.c:608
+#: misc/tune2fs.c:621
+#, c-format
+msgid "bad mounts count - %s"
+msgstr "Ungültiger Mounts-Zähler - %s"
+
+#: misc/tune2fs.c:637
+#, c-format
+msgid "bad error behavior - %s"
+msgstr "ungültiges Fehler-Verhalten - %s"
+
+#: misc/tune2fs.c:664
+#, c-format
+msgid "bad gid/group name - %s"
+msgstr "ungültige(r) GID oder Gruppenname - %s"
+
+#: misc/tune2fs.c:697
+#, c-format
+msgid "bad interval - %s"
+msgstr "ungültiges Intervall - %s"
+
+#: misc/tune2fs.c:725
+#, c-format
+msgid "bad reserved block ratio - %s"
+msgstr "ungültiges Reservierte-Blöcke-Verhältnis - %s"
+
+#: misc/tune2fs.c:740
+msgid "-o may only be specified once"
+msgstr "-o darf nur eimal angegeben werden"
+
+#: misc/tune2fs.c:750
+msgid "-O may only be specified once"
+msgstr "-O darf nur eimal angegeben werden"
+
+#: misc/tune2fs.c:760
+#, c-format
+msgid "bad reserved blocks count - %s"
+msgstr "ungültige Anzahl von reservierten Blöcken - %s"
+
+#: misc/tune2fs.c:789
+#, c-format
+msgid "bad uid/user name - %s"
+msgstr "ungültige(r) UID/Benutzername - %s"
+
+#: misc/tune2fs.c:806
+#, c-format
+msgid "bad inode size - %s"
+msgstr "Unzulässige Inodegröße - %s"
+
+#: misc/tune2fs.c:813
+#, c-format
+msgid "Inode size must be a power of two- %s"
+msgstr "Inodegrösse muss eine Zweierpotenz sein- %s"
+
+#: misc/tune2fs.c:900
+#, c-format
+msgid "Invalid RAID stride: %s\n"
+msgstr "Ungültiger RAID Stride: %s\n"
+
+#: misc/tune2fs.c:915
+#, c-format
+msgid "Invalid RAID stripe-width: %s\n"
+msgstr "Ungültige RAID Stripe-Breite: %s\n"
+
+#: misc/tune2fs.c:930
+#, c-format
+msgid "Invalid hash algorithm: %s\n"
+msgstr "Ungültiger Hashalgorithmus: %s\n"
+
+#: misc/tune2fs.c:936
+#, c-format
+msgid "Setting default hash algorithm to %s (%d)\n"
+msgstr "Der standard Hashalgorithmus wird auf %s (%d) gesetzt\n"
+
+#: misc/tune2fs.c:944
+#, c-format
+msgid ""
+"\n"
+"Bad options specified.\n"
+"\n"
+"Extended options are separated by commas, and may take an argument which\n"
+"\tis set off by an equals ('=') sign.\n"
+"\n"
+"Valid extended options are:\n"
+"\tstride=<RAID per-disk chunk size in blocks>\n"
+"\tstripe_width=<RAID stride*data disks in blocks>\n"
+"\thash_alg=<hash algorithm>\n"
+"\ttest_fs\n"
+"\t^test_fs\n"
+msgstr ""
+"\n"
+"Ungültige Optionen wurden angegeben.\n"
+"\n"
+"Erweiterte Optionen werden mit Kommatas getrennt angegeben und erwarten\n"
+"\teventuell ein Argument, welches mit Gleichheitszeichen (»=«)\n"
+"\tzugewiesenwird.\n"
+"\n"
+"Gültige erweiterte Optionen sind:\n"
+"\tstride=<RAID Segmentgrösse pro PLatte in Blöcken>\n"
+"\tstripe-width=<RAID Stride*Datenplatten in Blöcken>\n"
+"\thash_alg=<Hashalgorithmus>\n"
+"\ttest_fs\n"
+"\t^test_fs\n"
+
+#: misc/tune2fs.c:1384
+#: misc/tune2fs.c:1389
+#: resize/resize2fs.c:760
+msgid "blocks to be moved"
+msgstr "zu verschiebende Blöcke"
+
+#: misc/tune2fs.c:1471
+#, fuzzy, c-format
+msgid ""
+"To undo the tune2fs operation please run the command\n"
+" e2undo %s %s\n"
+"\n"
+msgstr ""
+"Um die Aktionen von tune2fs rückgängig zu machen, starten Sie bitte den\n"
+"Befehl\n"
+" e2undo %s %s\n"
+"\n"
+
+#: misc/tune2fs.c:1529
+#, c-format
+msgid "The inode size is already %d\n"
+msgstr "Die Inodegrösse ist bereits %d\n"
+
+#: misc/tune2fs.c:1534
+#, c-format
+msgid "Shrinking the inode size is not supported\n"
+msgstr "Das Schrumpfen der Inodegrösse wird nicht unterstützt\n"
+
+#: misc/tune2fs.c:1577
+#, c-format
+msgid "Setting maximal mount count to %d\n"
+msgstr "Setze die maximale Mount-Anzahl auf %d\n"
+
+#: misc/tune2fs.c:1583
+#, c-format
+msgid "Setting current mount count to %d\n"
+msgstr "Setze die derzeitige Mount-Anzahl auf %d\n"
+
+#: misc/tune2fs.c:1588
+#, c-format
+msgid "Setting error behavior to %d\n"
+msgstr "Setze das Fehler-Verhalten auf %d\n"
+
+#: misc/tune2fs.c:1593
+#, c-format
+msgid "Setting reserved blocks gid to %lu\n"
+msgstr "Setze die GID für reservierte Blöcke auf %lu\n"
+
+#: misc/tune2fs.c:1598
+#, c-format
+msgid "Setting interval between checks to %lu seconds\n"
+msgstr "Setze das Intervall zwischen Checks auf %lu Sekunden\n"
+
+#: misc/tune2fs.c:1605
+#, c-format
+msgid "Setting reserved blocks percentage to %g%% (%u blocks)\n"
+msgstr "Setze den Prozentsatz reservierter Böcke auf %g%% (%u Blöcke)\n"
+
+#: misc/tune2fs.c:1612
+#, c-format
+msgid "reserved blocks count is too big (%lu)"
+msgstr "Anzahl der reservierten Blöcke ist zu gross (%lu)"
+
+#: misc/tune2fs.c:1618
+#, c-format
+msgid "Setting reserved blocks count to %lu\n"
+msgstr "Setze die Anzahl der reservierten Blöcke auf %lu\n"
+
+#: misc/tune2fs.c:1624
+msgid ""
+"\n"
+"The filesystem already has sparse superblocks.\n"
+msgstr ""
+"\n"
+"Das Dateisystem hat bereits verteilte Superblöcke.\n"
+
+#: misc/tune2fs.c:1631
+#, c-format
+msgid ""
+"\n"
+"Sparse superblock flag set. %s"
+msgstr ""
+"\n"
+"Kennzeichen für verteilten Superblock gesetzt. %s"
+
+#: misc/tune2fs.c:1636
+msgid ""
+"\n"
+"Clearing the sparse superflag not supported.\n"
+msgstr ""
+"\n"
+"Das Zurücksetzen des Kennzeichens für »verteilter Superblock« wird nicht\n"
+"\tunterstützt.\n"
+
+#: misc/tune2fs.c:1643
+#, c-format
+msgid "Setting time filesystem last checked to %s\n"
+msgstr "Setze die Zeit des letzten Dateisystemchecks auf %s\n"
+
+#: misc/tune2fs.c:1649
+#, c-format
+msgid "Setting reserved blocks uid to %lu\n"
+msgstr "Setze die UID für reservierte Blöcke auf %lu\n"
+
+#: misc/tune2fs.c:1700
+msgid "Invalid UUID format\n"
+msgstr "Ungültiges UUID Format\n"
+
+#: misc/tune2fs.c:1712
+msgid "The inode size may only be changed when the filesystem is unmounted.\n"
+msgstr ""
+"Die Grösse der Inodes kann nur geändert werden, wenn das Dateisystem\n"
+"nicht eingehängt ist.\n"
+
+#: misc/tune2fs.c:1719
+msgid ""
+"Changing the inode size not supported for filesystems with the flex_bg\n"
+"feature enabled.\n"
+msgstr ""
+
+#: misc/tune2fs.c:1731
+msgid ""
+"Error in resizing the inode size.\n"
+"Run e2undo to undo the file system changes. \n"
+msgstr ""
+"Fehler beim Verändern der Inodegrösse.\n"
+"Starten Sie e2undo um die Änderungen am Dateisystem rückgängig zu machen. \n"
+
+#: misc/tune2fs.c:1735
+#, c-format
+msgid "Setting inode size %lu\n"
+msgstr "Setze Inode-Größe auf %lu\n"
+
+#: misc/tune2fs.c:1745
+#, c-format
+msgid "Setting stride size to %d\n"
+msgstr "Setze Stride-Größe auf %d\n"
+
+#: misc/tune2fs.c:1750
+#, c-format
+msgid "Setting stripe width to %d\n"
+msgstr "Setze die Stripe-Breite auf %d\n"
+
+#: misc/util.c:72
+msgid "Proceed anyway? (y,n) "
+msgstr "Trotzdem fortsetzen? (j,n) "
+
+#: misc/util.c:93
+#, c-format
+msgid "Could not stat %s --- %s\n"
+msgstr "Status für %s konnte nicht ermittelt werden --- %s\n"
+
+#: misc/util.c:96
+msgid ""
+"\n"
+"The device apparently does not exist; did you specify it correctly?\n"
+msgstr ""
+"\n"
+"Das Gerät existiert offensichtlich nicht; haben Sie es richtig angegeben?\n"
+
+#: misc/util.c:107
+#, c-format
+msgid "%s is not a block special device.\n"
+msgstr "%s ist kein spezielles Block-Gerät.\n"
+
+#: misc/util.c:136
+#, c-format
+msgid "%s is entire device, not just one partition!\n"
+msgstr "%s ist das ganze Gerät, nicht nur eine Partition!\n"
+
+#: misc/util.c:158
+msgid "mke2fs forced anyway. Hope /etc/mtab is incorrect.\n"
+msgstr "mke2fs trotzdem erzwungen. Hoffentlich ist /etc/mtab ungültig.\n"
+
+#: misc/util.c:163
+#, c-format
+msgid "will not make a %s here!\n"
+msgstr "werde dort kein %s erstellen!\n"
+
+#: misc/util.c:170
+msgid "mke2fs forced anyway.\n"
+msgstr "mke2fs wird sowieso erzwungen.\n"
+
+#: misc/util.c:186
+msgid "Couldn't allocate memory to parse journal options!\n"
+msgstr "Konnte keinen Speicher zur Analyse der Journal-Optionen anfordern!\n"
+
+#: misc/util.c:228
+msgid ""
+"\n"
+"Bad journal options specified.\n"
+"\n"
+"Journal options are separated by commas, and may take an argument which\n"
+"\tis set off by an equals ('=') sign.\n"
+"\n"
+"Valid journal options are:\n"
+"\tsize=<journal size in megabytes>\n"
+"\tdevice=<journal device>\n"
+"\n"
+"The journal size must be between 1024 and 10240000 filesystem blocks.\n"
+"\n"
+msgstr ""
+"\n"
+"Ungültige Journal-Optionen wurden angegeben.\n"
+"\n"
+"Journal-Optionen werden durch Kommatas getrennt. Manche erwarten ein\n"
+"\tArgument, welches mit Gleichheitszeichen (»=«) zugewiesen wird.\n"
+"\n"
+"Gültige Journal-Optionen sind:\n"
+"\tsize=<Journalgröße in Megabytes>\n"
+"\tdevice=<Journal-Gerät>\n"
+"\n"
+"Die Grösse des Journals muss zwischen 1024 und 10240000 Dateisystem-Blöcken\n"
+"\tliegen.\n"
+"\n"
+
+#: misc/util.c:258
+msgid ""
+"\n"
+"Filesystem too small for a journal\n"
+msgstr ""
+"\n"
+"Das Dateisystem ist zu klein für ein Journal\n"
+
+#: misc/util.c:265
+#, c-format
+msgid ""
+"\n"
+"The requested journal size is %d blocks; it must be\n"
+"between 1024 and 10240000 blocks. Aborting.\n"
+msgstr ""
+"\n"
+"Die angegebene Journalgröße beträgt %d Blöcke. Sie muss aber zwischen\n"
+"1024 und 102400 Dateisystem-Blöcken liegen. Abbruch! \n"
+
+#: misc/util.c:273
+msgid ""
+"\n"
+"Journal size too big for filesystem.\n"
+msgstr ""
+"\n"
+"Das Journal ist zu groß für dieses Dateisystem.\n"
+
+#: misc/util.c:283
+#, c-format
+msgid ""
+"This filesystem will be automatically checked every %d mounts or\n"
+"%g days, whichever comes first. Use tune2fs -c or -i to override.\n"
+msgstr ""
+"Das Dateisystem wird automatisch nach jeweils %d Einhäng-Vorgängen bzw.\n"
+"alle %g Tage überprüft, je nachdem, was zuerst eintritt. Dies kann durch\n"
+"tune2fs -c oder -i geändert werden.\n"
+
+#: misc/uuidgen.c:31
+#, c-format
+msgid "Usage: %s [-r] [-t]\n"
+msgstr "Aufruf: %s [-r] [-t]\n"
+
+#: resize/extent.c:196
+msgid "# Extent dump:\n"
+msgstr "# Extent dump:\n"
+
+#: resize/extent.c:197
+#, c-format
+msgid "#\tNum=%d, Size=%d, Cursor=%d, Sorted=%d\n"
+msgstr "#\tNum=%d, Size=%d, Cursor=%d, Sorted=%d\n"
+
+#: resize/extent.c:200
+#, c-format
+msgid "#\t\t %u -> %u (%d)\n"
+msgstr "#\t\t %u -> %u (%d)\n"
+
+#: resize/main.c:42
+#, c-format
+msgid ""
+"Usage: %s [-d debug_flags] [-f] [-F] [-M] [-P] [-p] device [new_size]\n"
+"\n"
+msgstr ""
+"Aufruf: %s [-d Debug_Optionen] [-f] [-F] [-M] [-P] [-p] Gerät [neue_Größe]\n"
+"\n"
+
+#: resize/main.c:64
+msgid "Extending the inode table"
+msgstr "Vergrößere die Inode-Tabelle"
+
+#: resize/main.c:67
+msgid "Relocating blocks"
+msgstr "Verteile die Blöcke neu"
+
+#: resize/main.c:70
+msgid "Scanning inode table"
+msgstr "Prüfe die Inode-Tabelle"
+
+#: resize/main.c:73
+msgid "Updating inode references"
+msgstr "Aktualisiere die Inode-Referenzen"
+
+#: resize/main.c:76
+msgid "Moving inode table"
+msgstr "Verschiebe die Inode-Tabelle"
+
+#: resize/main.c:79
+msgid "Unknown pass?!?"
+msgstr "Unbekannter Durchgang?!?"
+
+#: resize/main.c:82
+#, c-format
+msgid "Begin pass %d (max = %lu)\n"
+msgstr "Start von Durchgang %d (max = %lu)\n"
+
+#: resize/main.c:264
+#, c-format
+msgid "while opening %s"
+msgstr "beim Öffnen von %s"
+
+# c-format
+#: resize/main.c:276
+#, c-format
+msgid "while getting stat information for %s"
+msgstr "beim Ermitteln der Statusinformation für %s"
+
+#: resize/main.c:337
+#, c-format
+msgid ""
+"%s: The combination of flex_bg and\n"
+"\t!resize_inode features is not supported by resize2fs.\n"
+msgstr ""
+"%s: Die Kombination der Eigenschaften flex_bg und\n"
+"t!resize_inode wird von resize2fs nicht unterestützt.\n"
+
+#: resize/main.c:345
+#, c-format
+msgid "Estimated minimum size of the filesystem: %u\n"
+msgstr "Geschätzte minimale Grösse des Dateisystems: %u\n"
+
+#: resize/main.c:381
+#, c-format
+msgid "Invalid new size: %s\n"
+msgstr "Unzulässige neue Größe: %s\n"
+
+#: resize/main.c:394
+msgid "Invalid stride length"
+msgstr "Ungültige Stride-Länge"
+
+#: resize/main.c:418
+#, c-format
+msgid ""
+"The containing partition (or device) is only %u (%dk) blocks.\n"
+"You requested a new size of %u blocks.\n"
+"\n"
+msgstr ""
+"Die Partition (oder das Gerät) ist nur %u (%dk) Blöcke groß.\n"
+"Die gewünschte Größe war %u Blöcke.\n"
+"\n"
+
+#: resize/main.c:425
+#, c-format
+msgid ""
+"The filesystem is already %u blocks long. Nothing to do!\n"
+"\n"
+msgstr ""
+"Das Dateisystem ist schon %u Blöcke groß. Nichts zu tun!\n"
+"\n"
+
+#: resize/main.c:436
+#, c-format
+msgid ""
+"Please run 'e2fsck -f %s' first.\n"
+"\n"
+msgstr ""
+"Bitte zuerst »e2fsck -f %s« laufen lassen.\n"
+"\n"
+
+#: resize/main.c:447
+#, c-format
+msgid "while trying to resize %s"
+msgstr "beim Versuch, die Größe von %s zu ändern"
+
+#: resize/main.c:452
+#, c-format
+msgid ""
+"The filesystem on %s is now %u blocks long.\n"
+"\n"
+msgstr ""
+"Das Dateisystem auf %s ist nun %u Blöcke groß.\n"
+"\n"
+
+#: resize/online.c:37
+#, c-format
+msgid "Filesystem at %s is mounted on %s; on-line resizing required\n"
+msgstr "Das Dateisystem auf %s ist auf %s eingehängt; Online-Grössenveränderung nötig\n"
+
+#: resize/online.c:41
+#, c-format
+msgid "On-line shrinking from %u to %u not supported.\n"
+msgstr "Die Online-Verkleinerung von %u auf %u wird nicht unterstützt.\n"
+
+#: resize/online.c:61
+msgid "Filesystem does not support online resizing"
+msgstr "Das Dateisystem unterstützt keine Online-Grössenveränderung"
+
+#: resize/online.c:68
+#, c-format
+msgid "while trying to open mountpoint %s"
+msgstr "beim Versuch, Einhängpunkt %s zu öffnen"
+
+#: resize/online.c:76
+msgid "Permission denied to resize filesystem"
+msgstr "Zugriff verweigert für die Grössenänderung des Dateisystems"
+
+#: resize/online.c:79
+msgid "Kernel does not support online resizing"
+msgstr "Der Kernel unterstützt die Online-Vergrösserung nicht"
+
+#: resize/online.c:82
+msgid "While checking for on-line resizing support"
+msgstr "Beim Überprüfen, ob Online-Vergrösserung unterstützt wird"
+
+#: resize/online.c:111
+#, c-format
+msgid "Performing an on-line resize of %s to %u (%dk) blocks.\n"
+msgstr "Führe eine Online-Grössenänderung von %s auf %u (%dk) Blöcke durch.\n"
+
+#: resize/online.c:121
+msgid "While trying to extend the last group"
+msgstr "Beim Versuch, die letzte Gruppe zu erweitern"
+
+#: resize/online.c:180
+#, c-format
+msgid "While trying to add group #%d"
+msgstr "Beim Versuch, Gruppe %d hinzu zu fügen"
+
+#: resize/online.c:191
+#, c-format
+msgid "Filesystem at %s is mounted on %s, and on-line resizing is not supported on this system.\n"
+msgstr "Dateisystem auf %s ist auf %s eingehängt und Online-Grössenänderung wird auf diesem System nicht unterstützt.\n"
+
+#: resize/resize2fs.c:322
+#, c-format
+msgid "inodes (%llu) must be less than %u"
+msgstr "Die Anzahl der Indoes (%llu) muss unter %u liegen"
+
+#: resize/resize2fs.c:755
+msgid "reserved blocks"
+msgstr "reservierte Blöcke"
+
+#: resize/resize2fs.c:765
+msgid "meta-data blocks"
+msgstr "Metadaten-Blöcke"
+
+#: resize/resize2fs.c:1703
+#, c-format
+msgid "Should never happen: resize inode corrupt!\n"
+msgstr "Das sollte niemals passieren: Die zu verändernde Inode ist defekt!\n"
+
+#~ msgid "@S doesn't have has_@j flag, but has ext3 @j %s.\n"
+#~ msgstr "@S hat kein has_@j Flag, aber ein ext3 @j %s.\n"
+#~ msgid "Error while deleting extent: %m\n"
+#~ msgstr "Fehler während des Löschens der Erweiterung: %m\n"
+#~ msgid "Recreate journal to make the filesystem ext3 again?\n"
+#~ msgstr ""
+#~ "Soll das Journal wiederhergestellt werden, damit das Dateisystem\n"
+#~ "\twieder ext3 ist?\n"
+#~ msgid "while retrying to write block bitmaps for %s"
+#~ msgstr ""
+#~ "während des wiederholten Versuches, Block-Bitmaps für %s zu schreiben."
+#~ msgid "writing inode bitmaps"
+#~ msgstr "Schreibe Inoden-Bitmaps"
+#~ msgid "%s failed for %s: %s\n"
+#~ msgstr "%s ist für %s gescheitert: %s\n"
+#~ msgid "open"
+#~ msgstr "offen"
+#~ msgid "HDIO_GETGEO ioctl"
+#~ msgstr "HDIO_GETGEO Ioctl"
+#~ msgid "BLKGETSIZE ioctl"
+#~ msgstr "BLKGETSIZE Ioctl"
+
--- /dev/null
+Index: e2fsprogs-1.41.7/lib/et/compile_et.sh.in
+===================================================================
+--- e2fsprogs-1.41.7.orig/lib/et/compile_et.sh.in
++++ e2fsprogs-1.41.7/lib/et/compile_et.sh.in
+@@ -51,7 +51,7 @@ if test -f ${BASE}.h && cmp -s ${BASE}.h
+ rm -f ${BASE}.h.$$
+ else
+ mv -f ${BASE}.h.$$ ${BASE}.h
+- chmod -w ${BASE}.h
++# chmod -w ${BASE}.h
+ fi
+ $AWK -f "${DIR}/et_c.awk" "outfile=${BASE}.c.$$" "outfn=${BASE}.c" "$ROOT.et"
+ if test -f ${BASE}.c && cmp -s ${BASE}.c.$$ ${BASE}.c ; then
--- /dev/null
+--- e2fsprogs-1.41.12/e2fsck/Makefile.in.dist
++++ e2fsprogs-1.41.12/e2fsck/Makefile.in
+@@ -366,7 +366,6 @@
+ $(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext2_fs.h \
+ $(top_srcdir)/lib/et/com_err.h $(top_srcdir)/lib/ext2fs/ext2_io.h \
+ $(top_builddir)/lib/ext2fs/ext2_err.h $(top_srcdir)/lib/ext2fs/bitops.h \
+- $(top_srcdir)/lib/blkid/blkid.h $(top_builddir)/lib/blkid/blkid_types.h \
+ $(srcdir)/problem.h $(srcdir)/lfsck.h
+ journal.o: $(srcdir)/journal.c $(srcdir)/jfs_user.h $(srcdir)/e2fsck.h \
+ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
--- /dev/null
+Index: e2fsprogs/misc/fsck.8.in
+===================================================================
+--- e2fsprogs.orig/misc/fsck.8.in
++++ e2fsprogs/misc/fsck.8.in
+@@ -8,7 +8,7 @@ fsck \- check and repair a Linux file sy
+ .SH SYNOPSIS
+ .B fsck
+ [
+-.B \-sAVRTMNP
++.B \-sAVRTmMNP
+ ]
+ [
+ .B \-C
+@@ -233,7 +233,7 @@ a progress bar at a time. GUI front-end
+ .IR fd ,
+ in which case the progress bar information will be sent to that file descriptor.
+ .TP
+-.B \-M
++.B \-m or \-M
+ Do not check mounted filesystems and return an exit code of 0
+ for mounted filesystems.
+ .TP
+Index: e2fsprogs/misc/fsck.c
+===================================================================
+--- e2fsprogs.orig/misc/fsck.c
++++ e2fsprogs/misc/fsck.c
+@@ -1074,7 +1074,7 @@ static int check_all(NOARGS)
+
+ static void usage(NOARGS)
+ {
+- fputs(_("Usage: fsck [-AMNPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n"), stderr);
++ fputs(_("Usage: fsck [-AmMNPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n"), stderr);
+ exit(EXIT_USAGE);
+ }
+
+@@ -1196,6 +1196,7 @@ static void PRS(int argc, char *argv[])
+ case 'T':
+ notitle++;
+ break;
++ case 'm':
+ case 'M':
+ ignore_mounted++;
+ break;
--- /dev/null
+SLES upstream patch to remove init_error_table() (not thread safe).
+
+Index: e2fsprogs/lib/et/com_err.h
+===================================================================
+--- e2fsprogs.orig/lib/et/com_err.h
++++ e2fsprogs/lib/et/com_err.h
+@@ -42,7 +42,10 @@ extern void (*set_com_err_hook (void (*)
+ (const char *, long, const char *, va_list);
+ extern void (*reset_com_err_hook (void)) (const char *, long,
+ const char *, va_list);
++#if 0
+ extern int init_error_table(const char * const *msgs, long base, int count);
++#endif
++#define init_error_table(...) PLEASE_DO_NOT_USE_init_error_table_FUNCTION
+
+ extern errcode_t add_error_table(const struct error_table * et);
+ extern errcode_t remove_error_table(const struct error_table * et);
+Index: e2fsprogs/lib/et/init_et.c
+===================================================================
+--- e2fsprogs.orig/lib/et/init_et.c
++++ e2fsprogs/lib/et/init_et.c
+@@ -16,6 +16,7 @@
+ * express or implied warranty.
+ */
+
++#if 0
+ #include <stdio.h>
+ #include <errno.h>
+ #ifdef HAVE_STDLIB_H
+@@ -50,3 +51,5 @@ int init_error_table(const char * const
+ _et_dynamic_list = &new_et->etl;
+ return 0;
+ }
++#endif
++
--- /dev/null
+SLES upstream patch to remove the use of a static error buffer.
+
+Index: e2fsprogs/lib/et/error_message.c
+===================================================================
+--- e2fsprogs.orig/lib/et/error_message.c
++++ e2fsprogs/lib/et/error_message.c
+@@ -148,25 +148,7 @@ const char * error_message (errcode_t co
+ }
+ et_list_unlock();
+ oops:
+- strcpy (buffer, "Unknown code ");
+- if (table_num) {
+- strcat (buffer, error_table_name (table_num));
+- strcat (buffer, " ");
+- }
+- for (cp = buffer; *cp; cp++)
+- ;
+- if (offset >= 100) {
+- *cp++ = '0' + offset / 100;
+- offset %= 100;
+- started++;
+- }
+- if (started || offset >= 10) {
+- *cp++ = '0' + offset / 10;
+- offset %= 10;
+- }
+- *cp++ = '0' + offset;
+- *cp = '\0';
+- return(buffer);
++ return "Unknown code";
+ }
+
+ /*