ploop-1.15-1> H HtxHFW$  Զxt5"B m-ۡ\ 50ad9f7a3aedab293558d5a673b902263b0fa0ea&nV=%FW$  ԶzשYՑ7c]QVΉRNZl3 6>8g?gd   `d       < 6 (S8\9:FdGeHe,Ie@XeHYeL\eT]eh^ebedf?efDffIkfKlfRtflufvfwgDxgXyglzg{gCploop1.151ploop toolsThis package contains tools to work with ploop devices and images.W$tbuild-rhel5-64.eng.sw.ru3GNU GPLApplications/Systemlinuxx86_64 A 큤W$W$W$W$W$ff26dd564f83a0cde2de877c920aab45d115ef347162fbce68425359a26bdcf063d6edc51ba49605c338ddd8e4f2bb35e7cb8a60ba7326ce779a9ca97cc412b8bd53e748b233a8a41048fdadfd80b0berootrootrootrootrootrootrootrootrootrootploop-1.15-1.src.rpmploop@@@@@@@JJ@/bin/shlibc.so.6()(64bit)libc.so.6(GLIBC_2.2.5)(64bit)libc.so.6(GLIBC_2.3)(64bit)libc.so.6(GLIBC_2.3.4)(64bit)libc.so.6(GLIBC_2.4)(64bit)libploop.so.1()(64bit)ploop-librpmlib(CompressedFileNames)rpmlib(PayloadFilesHavePrefix)rtld(GNU_HASH)1.15-13.0.4-14.0-14.4.2W"`UU`U/OU+[`T`T\S8`S 1.15-1Kir Kolyshkin 1.14.1-1Kir Kolyshkin 1.14-1Kir Kolyshkin 1.13.2-1Kir Kolyshkin 1.13-1Kir Kolyshkin 1.12.2-1Kir Kolyshkin 1.12.1-1Kir Kolyshkin 1.12-1Kir Kolyshkin 1.11-1Kir Kolyshkin 1.10-1Kir Kolyshkin 1.9-1Kir Kolyshkin 1.8-1Kir Kolyshkin 1.7.1-1Kir Kolyshkin 1.7-1Kir Kolyshkin 1.6-1Kir Kolyshkin 1.5-1Kir Kolyshkin 1.4-1Kir Kolyshkin 1.3-1Kir Kolyshkin 1.2-1Kir Kolyshkin 1.1-1Kir Kolyshkin 1.0-1- New functionality: -- ploop defragmentation support using e4defrag2 -- mount_image: return SYSEXIT_NOSNAP error -- Add ploop_get_base_delta_fname() -- Allow to create image > 16TB (without filesystem inside) - Fixes: -- Fix resizing image mounted inside mnt namespace -- ploop_get_devs: fix NULL pointer dereference -- copy_delta(): avoid double-free -- fix infinite loop in ploop balloon discard -- Fix compile with gcc-5.3.0 -- ploop_mount_fs: don't mount ro when finding balloon inode -- Remove temp mount point after ploop resize -- Repair DiskDescriptot.xml on process PLOOP_MNTN_MERGE stage - Improvements: -- make_fs(): drop lazy_journal_init -- scripts/umount.ploop: rm unused var -- do_delete_snapshot(): don't use PLOOP_MERGE_WITH_CHILD -- ploop_merge_snapshot_by_guid(): remove merge_mode -- balloon.c: no need to include libgen.h -- defrag_complete: fix a typo -- defrag_complete(): report errors -- defrag_complete(): check for cmdline -- defrag_complete(): report stale pidfile -- gensym.sh: busybox sed compatibility -- musl (Alpine Linux) compile fixes -- mount_image(): kill flags argument -- do_mntn_merge(): fix the check for same file -- find_image_idx_by_file: get_basedir() only if needed -- discard/defrag: take into account image size change caused by defrag - Documentation: -- ploop balloon discard: document --defrag -- ploop(8): document --defrag - Build system: -- setver.sh: fix a typo- Fixes: -- if mke2fs fails, retry it without -Elazy_journal_init (#OVZ-6539)- New functionality: -- ploop init: add --nolazy -- ploop snapshot-merge: add -U -- ploop_create_param: add flags, define NOLAZY flag -- do_ioctl(): run lsof on EBUSY -- Add pkg-config support - Fixes: -- Fix restore-descriptor for raw images -- ploop_get_top_delta_fname(): use ploop_lock(), return SYSEXIT_* -- Fix POWER compilation -- ploop_create_image(): do not return -1, use SYSEXIT_* code -- ploop snapshot-switch: fix SIGSEGV parsing cmdline -- is_xml_fname(): fix a potential SIGSEGV - Improvements: -- do_ioctl(): implement exponential wait time -- mount.ploop: check if mtab is not symlink -- ploop_replace_image: use mkstemp() not mktemp() -- print_sys_block_ploop(): more compact output -- ploop_umount_image(): simplify unlock on return -- make_fs(): don't hardcode argv index -- read_diskdescriptor(): remove -- tools/Makefile: fix LDLIBS to avoid overlinking - Documentation: -- ploop(8): document --nolazy flag for ploop init -- ploop(8): document -U for ploop snapshot-merge -- include/libploop.h: document mount and snapshot switch params - Build system: -- Makefiles: move -lpthread to the proper place -- ploop.spec: fix a date in %changelog -- ploop.spec: no %attr for symlink- Fix online top delta merge/delete (#3215) - Fix messages and use-after-free in ploop_merge_snapshot_by_guid() - ploop(8): document SYSEXIT_NOSNAP - ploop.spec: complete 1.13 changelog- New functionality: -- snapshot-merge: add -n, merge to new delta ability -- Logging to PLOOP_LOG_FILE (if variable is defined during compilation) -- ploop restore-descriptor: create dd.xml by image (single image only) -- ploop replace: add -k, --keep-name to keep the replaced delta file name -- ploop replace: implement offline replace -- snapshot-delete: introduce specific SYSEXIT_NOSNAP error -- Alternative (incompatible) implementation of ploop copy (C and Python API) - Fixes: -- ploop_replace_image(): fix wrt level -- ploop grow: update size in DiskDescriptor.xml after growing -- normalize_image_name(): fix for a corner case -- ploop_replace_image(): always unlock dd.xml -- {mount,umount}.ploop: fixes for filenames with spaces, tabs etc. -- umount.ploop: fix mtab removal (#3164) -- umount.ploop: fix for file names with a semicolon -- scripts/mount.ploop: don't hardcode paths to modprobe and readlink -- ploop_umount(): don't return -1, use SYSEXIT_* -- ploop_merge_snapshot_by_guid(): fix error message, don't print (null) -- ploop tsnapshot(): fix usage -- grow_lower_delta(): fix a memory leak -- ploop_merge_snapshot_by_guid(): fix error message -- check_snapshot_mount(): add is_device_inuse() check - Improvements: -- print_sys_block_ploop(): print less info -- Remove delta_fops abstraction layer -- ploop merge: obsolete/disable form with DD.xml (use snapshot-merge) -- ploop snapshot-merge: fix/improve message about merged deltas -- find_level_by_delta(): rework/improve -- ploop_switch_snapshot(): rm non-const cast -- local_delta_open(): make first arg const -- [style] ploop_replace_image: reuse oldfile var -- merge_image(): document the function -- ploop_di_merge_image(): remove last argument -- Rename get_child_by_uuid() to find_child_by_guid() -- ploop_merge_snapshot_by_guid(): untangle MERGE_WITH_{PARENT,CHILD} mess -- ploop_merge_snapshot_by_guid: fix ending message -- Rework check_snapshot_mount() -- ploop_di_merge_image: fix error messages -- ploop_merge_snapshot_by_guid(): fix error message - Documentation: -- ploop tool: usage formatting fixes -- ploop(8): expand description of snapshot-merge -- ploop(8): describe replace -k, --keep-name option -- ploop(8): describe restore-descriptor command -- ploop(8): describe snapshot-merge -n option - Build system: -- ploop.spec: no perms for symlink -- Makefile.inc: add VERSION and RELEASE vars to specify package version -- setver.sh: modify to use VERSION/RELEASE from Makefile.inc -- setver.sh: add -o, --oldpackage flag- Fixes: -- ploop balloon discard: fix wrt 042stab10x kernel (#3156) -- ploop_merge_snapshot_by_guid: fix offline merge with raw base image -- reread_part(): repeat ioctl if EBUSY (#3081) - Improvements: -- check_mount_restrictions(): check for all images -- ploop check dd.xml: lock dd -- ploop check dd.xml: skip check if ploop is used -- check_deltas(): read-only check for non-top deltas- Fixes: -- ploop copy send: fix a race that could result in image corruption -- resize: fix resize working on an older (pre 042stab092.1) kernel - Improvements: -- ploop mount: warn if host filesystem uses data=writeback (#3030) -- snapshot-switch: don't show ENOENT remove error -- ploop_is_large_disk_supported(): check ploop module first- New functionality: -- ploop copy: implement two-way protocol -- ploop copy send: implement async read/send -- ploop copy send: add profiling -- delete_snapshot(): handle snapshots with multiple refs -- tune_fs(): use EXT4_IOC_SET_RSV_BLOCKS if available -- Introduce ploop_get_max_size() -- Introduce ploop_copy_{send,receive}, obsoleting ploop_{send,receive} -- Introduce ploop_create_dd() -- ploop info: add -d to show ploop device -- ploop_check(): open image RO, reopen RW later -- check_and_repair_sparse(): reopen image rw if needed - Fixes: -- ploop copy: fix open_mount_point err handling -- ploop copy: improve fd checks -- ploop_store_diskdescriptor: fsync DiskDescriptor.xml upon writing -- ploop_resize_image(): handle get_mount_dir() error -- ploop_resize_image: auto-mount fs -- do_delete_snapshot: fix wrt temp snapshot uuid -- ploop_switch_snapshot_ex(): don't return 0 if guid_old is bad -- do_delete_snapshot: deny delete top delta in case parent snapshot is temp -- merge_temporary_snapshots: fix infinite loop -- ploop_switch_snapshot_ex: fixed case with PLOOP_SNAP_SKIP_TOPDELTA_CREATE -- ploop_delete_snapshot: fix for temp snapshot -- create_snapshot: clear stale top delta inuse flag -- e2fsck: make it quiet- New functionality and important changes: -- support for 4K sector size (including GPT conversion) -- ploop replace -- temp snapshots support (ploop tsnapshot, ploop_create_temporary_snapshot()) -- ploop copy: implement fdatasync before freeze (improves CT frozen time) -- New DiskDescriptor.xml read API (ploop_*_dd()) -- Obsolete *_diskdescriptor() calls -- Obsolete ploop_get_base_delta_uuid() -- ploop_log(): implement subsecond timestamps (with verbosity >= 4) -- add ploop_is_mounted() -- ploop snapshot-list: add snapshot mode (-s) -- ploop check dd.xml: add -u UUID option -- ploop mount: remove -u base feature -- ploop tool: add -v option to set verbosity - Fixes: -- skip max fs size check on snapshot delta creation -- ploop_resize_image: resize up to end of device -- ploop_delete_top_delta(): fix wrt top_guid -- ploop_read_diskdescriptor(): fix get_basedir() len argument -- check_and_repair_sparse: handle EOF properly (#2897) -- ploop_resize_image: add missing gpt size sync -- ploop snapshot-merge/delete: deny snapshot deleting if mounted (#2887) -- grow_lower_delta(): fix a memory leak -- ploop check: fix -b option parsing -- get_partition_device_name(): fix chmod argument -- fix alignment on GPT partition resize -- fix GPT partition alignment on ploop init - Improvements: -- ploop_resize_image: enhanced inflate balloon to max size logic -- tools: add {} to specified UUID if necessary -- check_and_repair_sparse(): log filefrag output -- print_sys_block_ploop(): speed up -- ploop check: try to repair non-top deltas if they can be opened r/w -- e2fsck: return fsck exit code to caller -- make_fs(): add -i to mkfs -- fsync_safe(): use SYSEXIT_FSYNC -- Fix uuid strings size, use define - Documentation: -- ploop snapshot-list: fix and update usage -- ploop copy: fix usage -- ploop(8): document snapshot-list -s option -- ploop(8): document ploop replace - Build system: -- Makefile.inc: fix dpkg-architecture handling (#2877) -- Makefile: add ability to add local rules -- gensym.sh: better usage and error diag -- gensym.sh: add run mode- New functionality: -- Added check for and repair of sparse images -- ploop check: long options support -- ploop check: add --raw, --repair-sparse -- ploop-check: add -b BLOCKSIZE argument -- ploop-check: accept DiskDescriptor.xml argument -- ploop umount -d: allow to specify partition device (#2788) -- mount.ploop: implement -v and -f options, as per mount(8) -- umount.ploop: add -n option (ignored) -- mount.ploop: add -s (ignored) and -* (reported as error) -- Added ploop info -s -- ploop init: use v2 format by default -- ploop init: create ext4 by default - Fixes: -- ploop_get_devs(): fix snprintf usage -- ploop_global_lock(): create lockdir if not exist (#2767) -- ploop_grow_delta_offline(): Fix uninitialized struct -- ploop_ioff_to_sec(): fix for v2 -- lib/ploop.h: include sys/syscall.h (Debian #728173) -- umount.ploop: fixed (#2788) -- get_image_param(): added online (from sysfs) and offline (from image) cases -- make_fs(): turn off periodic fs checks (#2769) -- ploop_store_diskdescriptor(): check rename() -- ploop_store_diskdescriptor(): don't return -1 -- resize_gpt_partition(): check fsync() -- ploop_balloon_change_size(): don't pass -1 to close() -- ploop_grow_image(): fix an error check -- Don't ignore chmod() failures -- print_output(): fix output -- make_fs(): fix max_online_resize type overflow -- do_umount(): fix diagnostic lsof verbose level -- plooptool_stat(): close file descriptors -- ploop convert -f: do not return SYSEXIT_PLOOPFMT -- ploop check: fix exit codes -- make_fs(): create ext4 fs with 128M journal - Improvements: -- Support RHEL5/e4fsutils (tune4fs, dumpe4fs) (#2812) -- do_lock(): open file in read/write mode (#2730) -- ploop_send: use ioctl_device for PLOOP_IOC_SYNC -- use access() not stat() where possible -- umount.ploop: improve mtab handling -- mount.ploop: use case in option parsing -- {mount,umount}.ploop: don't hardcore ploop path -- ploop-check.c: rename uppercased functions -- ploop snapshot-list usage: fit to 80 cols -- fsck: use fsck.ext4 not e2fsck (#2812) -- check_size(): limit max ploop size to 16T -- ploop_resize_image(): fail if umount failed -- print_output(): improve output -- ploop_mount(): fix/improve error message -- dumpe2fs(): don't hardcode path to dumpe2fs -- print_output(): use our own default PATH -- do_umount(): refactor and improve -- do_umount(): eliminate extra 'lsof' call on EBUSY -- do_umount(): don't call lsof again if not found -- print_output(): check return from pclose() -- print_output(): return exit code from command -- Fix some wrongly used exit codes -- Remove unused exit codes - Documentation: -- ploop(8): document check, balloon discard, info, list, copy commands -- ploop(8): describe exit codes -- ploop(8): better resize description -- ploop(8): fix ploop umount -d description -- ploop(8): fix ploop mount -d description -- ploop(8): improve convert description -- ploop(8): add missing OPTIONS section -- ploop(8): make IMAGE FORMATS a subheader -- ploop(8): other small fixes and improvements -- ploop usage: improve -- ploop usage: update ploop check synopsys -- ploop init: fix/improve usage -- ploop usage: fix mount/umount/resize - Build system: -- ploop.spec: require -lib of the same release -- ploop.spec: require lsof and findutils -- Makefile.inc: add -Wformat-security -- Makefile.inc: proper LIBDIR for Debian case -- Makefile.inc: add CPPFLAGS to CFLAGS -- Makefile.inc: prepend, not append, debug CFLAGS -- tools/Makefile: simplify SOURCES define -- setver.sh: introduce build id -- setver.sh: use getopt -- Remove stand-alone binaries: ploop-check, ploop-grow, ploop-merge, ploop-stat, ploop-copy -- Makefile: add Coverity generation logic- New functionality: -- libploop.so: implement SONAME and versioning -- Introduce ploop_get_devs() to get all mounted devices per dd.xml - Fixes: -- make_fs(): reserve max possible GDT block for online resize -- do_lock(): set FD_CLOEXEC explicitly on lock fd -- fix raw image creation (broken in ploop 1.8) -- return SYSEXIT_SYS on ploop_find_dev_by_uuid() failure -- ploop.spec: run ldconfig on install/uninstall - Improvements: -- Display mount data in error message on mount() failure -- dynload.h: pad the struct ploop_functions to 64 pointers -- gensym.sh: add code to check sizeof(struct ploop_function) -- etc/Makefile: ploop.conf should not be executable -- Makefile.inc: support Debian multiarch -- Makefile: add distclean target -- Makefile cleanups- New functionality: -- convert from/to v1/v2 ploop version format (ploop convert -v) -- ploop_mount_fs(): add option to run fsck -- ploop mount: add -F to run fsck for inner fs -- export ploop_is_large_disk_supported() -- add/export ploop_get_spec() -- ploop fsck: rename to ploop check - Fixes: -- resize_gpt_partition(): skip if there is no partition -- switch snapshot: read parameters from image we are to switch to -- ploop create: error out if DiskDescriptor.xml exists -- e2fsck(): properly check e2fsck binary exit code -- ploop grow: check size wrt format -- tools/Makefile: don't strip binaries on install -- ploop init: fix an error message - Improvements: -- create_image(): remove useless assignment -- number of log messages improved/fixed -- tools parse_size(): print error -- tools/ploop: allow T suffix for blockdev size -- ploop_grow_delta_offline(): use delta.version -- tune_fs(): drop absolute path to tune2fs - Documentation: -- ploop init usage: add -v VERSION -- ploop --help: rm -P from ploop mount syntax -- ploop(8): add -v for ploop init -- ploop(8): add ploop resize to SYNOPSYS -- ploop(8): add ploop convert -- ploop(8): add -F for ploop mount- Fixes: -- default image format is V1, unless specified explicitly -- tmpfiles.d file added for /var/lock/ploop (#2493) -- fixed creating strange directories under ./ (#2623)- New functionality: -- Large ploop image format support --- Now image size limit is 64 TB (was 2TB) --- Kernel >= 042stab078 is required -- Move ploop_grow* functions from tools to lib -- ploop grow: add DiskDescriptor.xml support -- ploop init, ploop_create_image(): add FS blocksize parameter - Improvements: -- make_fs(): create ext4fs with lazy_itable_init --- 3x smaller size and 3x faster creation time for 20GB image -- lib/ploop.h: "unexport" some internal functions -- Use /proc/self/mountinfo to get mount point by device -- More clear errors on parsing DiskDescriptor.xml -- print_output(): generalize print_lsof(), improve -- add_delta(): print more diags if EBUSY -- extend_delta_array(): print errors, return SYSEXIT_* -- run_prg(): print error if execvp() failed -- lib/balloon.c: print file name in an error message -- Introduce and use p_memalign(), fix errno handling -- Improvements and fixes to ploop_grow_*() to be used from library -- ploop_read_disk_descr(): set *di to NULL in case of error -- ploop_find_dev(): always assume ploop cookie is supported -- resize_fs(): try harder to find resize2fs binary -- Makefile.inc: ability to add CFLAGS - Fixes: -- lib/lock.c: create_file(): make sure dir exists (#2493, #2597) -- lib/fsutils.c: use ploop_execvp, drop absolute paths to binaries (#2595) -- ploop_log(): fix loglevel checking for file logging -- ploop_snapshot_switch_param: guids are const -- Recreate ploopXpY devices on ploop mount -- ploop_find_dev(): treat ENODEV as ENOENT on /sys reads -- use basename() to strip device from path -- ploop list: check for extra arguments -- ploop balloon: fix -f option processing -- Fixed lots of memory leaks, mostly on error paths -- open_delta(): simplify error handling -- Fixes for other issues big and small, reported by Coverity- New functionality: - * offline image shrink support - * tools: added snapshot-list functionality - * extend switch snapshot functionality: ploop_switch_snapshot_ex() - * ploop.spec: disable udev iosched config for ploop devices - * ploop list: added functionality to list mount points - Bug fixes: - * ploop_mount_fs(): use mount_data for first mount - * ploop_mount(): do not allow to use ploop on fs w/o extents - * ploop_{create,resize}_image(): fixed size checks and rounding - * ploop_create_image(): fix memory leak on error path - * ploop_get_info(): fix reported disk size after switching snapshot - * ploop_get_info(): fix when ploop device is not mounted - * ploop_{umount,resize}_image() and many others: do not return -1 - Improvements: - * much faster resize when using resize2fs with EXT4_IOC_RESIZE_FS support - * ploop discard: add cancellation support - * ploop_resize_image(): use real blocksize - * parse_xml(): deny processing DiskDescriptor.xml with several - * do not auto-generate dynload.h, instead check if it's uptodate - * create_image(): display error message for incorrect parameters case - * introduce/use SYSEXIT_DEV_NOT_MOUNTED and SYSEXIT_FSCK errors - * alloc_diskdescriptor(): log error if calloc() fails - * ploop.spec: require util-linux, e2fsprogs etc. - * ploop.spec: require libs of the proper arch- NOTE: this version requires vzkernel >= 2.6.32-042stab061.1 - New functionality: - * switch from old /dev/ploop/ symlink-based to new kernel cookie registration - * snapshots: switch to schema with constant top delta uuid - * use /proc/vz/ploop_minor based interface to get free minor - * if ploop is in maintenance state, try to complete it before doing snapshot/resize/merge/mount/umount/copy operation - * ploop mount: use in-kernel I/O module autodetection - * ploop balloon discard: new iterative compacting support - * ploop balloon discard: implement --stat - * ploop balloon discard: implement --automount - * ploop balloon discard: cancellation support - * ploop balloon: allow DiskDescriptor.xml argument - * ploop umount: implement -c component_name - * ploop list: implement - * /sbin/mount.ploop: do load ploop modules - Bug fixes: - * do not crash on empty DiskDescriptor.xml (libxml2 workaround) - * ploop convert: fix converting from expanded to raw - * ploop copy: fixed check for opened fd - * ploop copy: do not leak opened fds - * ploop create: fix gpt partition creation to be 4096 aligned - * ploop create, resize: round up size to be cluster aligned - * tools: few exit code fixes - * multiple usage, log and error message fixes - Improvements: - * ploop mount: check that mount point is a directory - * ploop umount: reduce retry count from 60 to 6 - * ploop umount: print lsof output in case of failed umount - * ploop create: for prealloc image, use ftruncate if fallocate not supported - * ploop create, resize: add check for correct block device size - * scripts: de-bash-ify - * assorted code refactoring, cleanups and nitpicks - Library API changes: - * add ploop_resolve_functions() to aid in dynamic library loading - * introduce optimized ploop_get_info_by_descr(), remove ploop_get_info() - * replace ploop_{alloc,read}_diskdescriptor() with ploop_read_disk_descr() - * remove ploop_getdevice()- ploop copy: fix data loss during migration (#2287) - ploop(8): fixed according to doc team review - ploop mount: tell about unsupported underlying fs - ploop-copy: improve usage - ploop-copy -s: added mode to copy to local file - tools/ploop.c: do not return -1 from main() - tools/ploop.c: fix/unify working with diskdescriptor- New functionality - ploop copy is working now - added pcopy's send_process() and receive_process() to lib - ploop mount: added -c option - ploop(8): added (still incomplete) - ploop balloon discard: add --to-free and --min-block - add Preallocated item to DiskDescriptor.xml - add add ploop_get_mnt_by_dev() to lib - Bug fixes - fixed offline snapshot creation - fixed race between register/unregister_ploop_dev() - create image: if fallocate is not supported, fail - ploop init, ploop mount: fix -b option value validation - ploop mount: fix usage, -d is optional - ploop info: fix usage, DiskDescriptor.xml is required - ploop.spec: make main package require -lib of the same version - fixed a few ioctl-related error messages - ploop_create_snapshot(): check for number of snapshots limit (127) - ploop.spec: do not own _libdir - fix SYSEXIT_PARAM value - tools/ploop.c: do not use ploop_err() - tools: fixed/improved usage for many commands - tools: do not forget to print newlines - make install: use /usr/lib64 LIBDIR for x86_64 - ploop_create_image(): free disk descriptor if fstype is NULL - create_balloon_file(): fix file name in error message - create_balloon_file(): umount and remove temp mnt point - create_balloon_file(): fix error message and return code - parse_xml(): add Blocksize validation - Improvements and cleanups - ploop lib: add visibility=hidden for internal functions - tools: use parse_size() and is_xml_name() where possible - remove merge_top_only param of get_delta_info() - ploop balloon: make it accept either -m or -d or both - ploop convert: change -t to -f - tools: unify parsing -f option - various code and headers cleanups - setver.sh: add -v, -b, -i- Added ploop_get_dev() function - Added ploop_set_component_name() function - Fix: do not clear in-use flag in ploop_fsck() - ploop-fsck: add -d flag to forcefully drop "in use" image flag - Fixed handling blocksize for raw images - Added user_xattr,acl to default mount options - ploop_mount(): added ability to pass MS_NOATIME flag - ploop-balloon: add discard command to compact ploop image - ploop_get_info(): return old info in case statfs() failed - expanded2preallocated(): if fallocate not supported, use ftruncate - ploop_resize_image(): Check is it possible to fallocate before inflating balloon file - Fixed merging all snapshots - Some fixes in ploop tool usage - Some log message fixes - Add function, source file and line number to error messages if DEBUG is set - Build system fixes/improvements- support for variable block size - default block size changed from 256K to 1M - ploop_set_log_file(): make NULL a valid argument - logger: introduce, use and expose PLOOP_LOG_NOCONSOLE - ploop_getdevice(): expose - ploop_store_diskdescriptor(): fix for a case when image is in root dir - Fixed expanded to preallocated conversion - Remove some unused functions and non-existent function prototypes - Introduce and use SYSEXIT_MKNOD error code - Changed image -> device mapping schema - Use strcasecmp for guid comparison - Made ploop_merge_param.guid field const - tools/ploop: remove -b option - tools/ploop: remove unused and untested replace & add commands - Log/error message fixes, improvements, and unification - Makefiles: fixes, improvements- initial versiontbuild-rhel5-64.eng.sw.ru 146198220533333 "1.15-1mount.ploopumount.ploopploopploop-balloonploop.8.gz/sbin//usr/sbin//usr/share/man/man8/-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=genericcpiogzip9x86_64x86_64-redhat-linux-gnuBourne shell script text executableELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), strippeddirectory RRRRRRRRR RRRRRR ;oTHI?Z}p\uևc6\[R-i%)2l ˖i- MȴCJJvah0S҆6!4eZL@;- {+3{{Uvgvg'lmGKzֳIIukgn[hKAŏ^-lЍhTLmLm'"gJ"^eNP,@ ٖkٞ.1I/#`]*Jn;U#H32Scci5R:oޣ#ǎ>Ba\Ƀ#ٜ):tfE l/Dv }螱cè݇T{lxt`m҉dS)]ܟjq HeN>pD\~E抁t]DOT u6dI-E:Cj(iP *ث섑!Ժ# 3=)[8a8^E2=[t=Cij_>HԄ6YɼHG[Nmزe*=QPEz0-v+}6rgV)Y!Lj/8Ȕ"YO+XSz`j)[;Րʸ"HWZNJM tj |Hz0r.Dν(L'YݪUMPI9A@sE5֪(GTbsyFbQG97*p0)OF<;K)BQ/24U)0Jd#*9G6[ΤZW-QSgѨ0- CO ̆Igy/<+DTd5PUFKqMTcn㞓w%N 1H]Xڛ%\U'WehF^D6 R+GqzFDEl E9|@0Ŷ܎$SJ% ]2iO9M jia[涄DuaZN]|9M(Cw3.IZT"٩ˈ?+3u1`'=wR)?>g]X/\X'1aиHɜV#٠ ϋjb'V|ib⤕a\Ňf! ;4c05)ЪbAŲqb(xYEU5-L8bP,a{4Q-02mZ˟Ю&'|C3|]Vq@0ZSU?A|=骬eZbD ʎ̀~]ާW}8ayHR 'MgERר8ӋYp0*q:9y<ߑJ}P|>m=ifڕ7G"UuoX]dWu߸>&OmtY[fI/*V{Ue ^O::q0`X;'Pzv=:]>5pɻn~䏁|i2QX#I[Jr}M*5y krO&'u G7Xa%k=DVYV :k%͌okϓ]E|p5iࡺv=I յ/|˪k-KT?=QN\B%_k#=G3kk=ٷ>ZQ7 >㚾P]6IA'$zv~Ƕn/~esoGm]Qիd9Q\IٺG~׭V<òVˬ [3߆ˁ+W"\.\\Ukƚk^~g;k_YAGǫޱlS<7=-oL}oeKXuッ?y{Uo|cgSk7yS'szܓ`ZFcGhS=z+~'WGX^ }n?VWP d,erukѥ}8UF 2j2}Bzvq#¯]9e4Oj5&`4;b;m43ƸͰڟqƸ ^i;T7FIs"oZZW =}Đs" fHR {Ww~ޝ3K$ky5n?K'krl/$ؐԶyH6'X! 9:jҐCv7 YrǣzKî˩}7uȟI|qr:]g뷨qio0|aחmk^R;lu mL3s|EOfu\03s\fXmMyF\N]S1uT/eP{W[CtYߛ_DwSwHλoK]3/>J$ ?oqXbrn2yڐL"gL:z'濋燪AͧԸMr6Ȉ/qؤ6Gz&uilj?ه^?_&}+=$'{$V7%9ɾgfܧ-&/?#nG!~%>Q?8rX=U |;0m˾m>*(^ω"YLBI-9S\H1|nÙ&y:%_y;o53bS7OyXڑb' v>a9~NzvPƟF>D,/g@2C b@)< Y%ؖa~M9Br2סүiUcFv䔒!Y7M }E6ړ3 ךU%N-!Deg3(WY/ z؍sܳ*y7I$JW!r:y;ϴH*6>VP`ɧ_csŐE%ʚX.|_ h.(s:9HKn*a^$ّi)=-0Cxw U5n ~%9`4IE.yH3ԲGlY8&x/aɉwW%-uRDP\IT^+Z,s%.WBXFG{U۵}XEhyfJqZ~4yƴ^RQ5zv>u/CMRM4n R!7THhR)2w031[ O3|=?33<#ߓfy3|#gx3溃U y3?y3??÷gx'wgx7gy3?{y3|+o<?wgx?y3|?oA g8?y3|}<>5|?<>g! <~?x3|??Gy3<~;?;y3. ?᧸? ?{`ٿPك ~/>*n~/i.4^>7߇4nQ^Rt4nM+qK'ƭ9E߅4nAQQqoC](+zҸXPt?ҸXWt/ҸXRtҸX*:4n!,*z-kO6N![wtҭ~E}_!Vٯ跐Rٯ7JٯBjek~k~KW+;HS+HߠWHW+1?WHߨWCHߤ/"?LOHaYVt?V\jVg:5 /jرc' Qc̣eB A0w|yxG?ӏd?xR@?/ҏGK|~Q~Џr~ҏ5qD?Ǖr ̿J?.ǻr~-_M&xCE?^oӏW;9D?&_/=g9B?$ӏ0A?I!xB]M?ˏQЏr~~엟Џkj~\)_b>qu?xWNЏqQoIz> KygcfOY_IЎo"vt.[|1M?i>ANٍ&{UgR :{*)^.tU1(e NE6rn$SK'Ҕq.ʓ)>)/P{50a">f8 FnKa_?6REނhqIWx?;>n33x([w9鈯V{_c[UlC,_x 6NqI+l{w:C׿ˁOG" xϨ?✍ގ0»v  Rٰ?R咽q:ƺce-b$KE_0?蘩ɵXOT(" }ՎrP~J&RHfjc84oݤ<iҿHȤ!@oE>jIU, /A~nj ̛f9,dsq*s|jg5k9@ӆd\C9\1iI>B :aaA`90[I a;2joW>.,vw^VUSHT:D'`(%RL/3EJ^e9xv$ >iHN ʴvjuB+;ᤒ'„2{Gw-@- {,*vVoت V%a0V{F#?nz=B~&W=kׅ]\FhdpR!pפɃQ;!gCx;L۴sF]n$~?J<{=Xz$em9󷍁e",VxpOqouK7K}*H_cj5~ ra˨t|ES=4Q\fOv#FWɆ!8hX}{6_Ը; POy :4H=JaအFAAIϟroAQ@|XqpZ߁ȅ L|E7ds 2|KH0"$M2%,.*}m8JPfɸa۟ .SȤ:uʨ{?^ @UOdε)x&c1SڢihՆ cMt<=rn|=.ר9[I_nzCfіHDuG:G/VIAȑ~K:\ʈבLj_PpS@Cs|t[{xUOJ)q-B%YaJH||ۮ' BB[PLC~w?e}PVE-ʝ>( >;3Ijs=<~{S%PSz7eXOpe11,P_-ZC;ǃF‡kQKp6ЁÜbJ5np5 PtXx$ɝltwTYfݓүA>T&.×܎s*˭[bV6Bd)7 Y f|XW))v%|Li?`dҤߣϊ`DW]yʼn" D^w~C\Oc3\'h?٣Ŗ|:f ww,޳p~K=[&-(gԴ=fmgL;yi@hD4(Ղw}u ޫPk˯'>0m:܄oюTFc X]ȾѽC DQBsl 7)}R`hhlh.2yf[V;kE76')'I7~yؠ{qhgq3C@ gO0SIYxrR(h3%U WԌD?zcbmFdTn`z5/9BJU+ 9r^G r40lln93G-:%dfMYcRc&,LWl9jDq9PVZs|հ #`M| .wTΘjk`Vw KUW(Aq2ƨ*?s]٠$.yh7G,zJ*J7{lE\%t8iEM`p8jkAy1k+]?εP7P\l.~&`ǵ`>d@%CjnWI[|Q.Vc xe ӳt7AR%+YR p)$ TԢ_Wx-ɥ>y"Fa][.3TtoSgxUT`\! ςV r/i/:ARCǥ*tXTHWæBBG6JĞ j5hjH<utOi{QOigV`y5I⑰ڞ :M!A. zfU/Rè5o͡(Kn:U{}QmkҴWܯjȵ7V&xD9a|rC~3d'ٍpX%mֆp3JxL ZF/r-e*l/K8BhH~!5!?Q*>/&=ݳ\is+m]u//W=2φy h Ig&7m)X0+}n>fV"B!Zy,ZY.\35L>E43`1-ꊆWG^ahb 2M*: NV:nFKBЕm4 ,&kAM;{ m8 j'/0&.ZYW RXZ7 jyPT#zW /ƣ"@ h!7a<ʯM)4faFyuX}f2wteVz.2 ޅp3sQ%N\ i45N BZN)P(ݸWpbU᛹M4w]CRF4!N3wf4/pє!4g&h4gL CF4&9lBGA\4c"C|`'=}l &iiiH>#f6 =C ;x2߸ OMѾK*|/&۶XkC$6F^Snwcw@U>H6#;8n䚐e`X0~9#|744]ǥ? @Dx~tXm$ժ!hb+|t%X9߸n+Vެ[lI>(>Ni^,':r4 j[k{ݥ. pax}ǣT<1zt>9ѣۙã lg tvVtRxx2|] tTյ68BǕe KIfbBBL+s˟MN)Y>_u=v*{ 'UZߝF^idsgHRY{>9bv8Ó蹙c_&z>.bso>bB? ڀysEK63*8z-69]j$665&GυBǡ<ڿ A0̄A({[=oˏ;!)ޭ(wpdٞ02}9#$+b'҆Y;-kZѵ`Qlm샽cy!";nGt^򤑇*ͻk,T ;,E54&g CqotMFYy֦{M4\F? X&k(LC{]LbS<+4D!i+fQn=~έ]Ky ωxG40 1 e_2s鼝{saI>N>ˆDT> {S^|M_3Wn85-ƕ¬6!h1oS{p%1d`?[.p*= o{ vf8)Msz3MuaX'*2#6`|TEٰV5/e1WDYchU } DHԟ#hQZ𓑧%HZ?- ƒ3$_QCW^:6>x`~)GxjzWGUQDg\'jwE#ɌDM_n:X شMP{/ZnxsxT.Qv]{Nam\rNK[5YƏy D.I,S]WN#?@\f8f v6`~QlKJϋτGieE%æ:D`?=޳S¦jΤ/؂-D]p6?< `dwfc{2;N#] d:G2e/RY XX0B(}v(+`Z$FfDO`3TI)A/##? &Lmpc<ZSDK-V!.":OziRm]r.o@s,_P/_URϱS6ǫX+П?B /ږGޫ@wLC9ZSug~=E[SiP&:S8\3H% zi1a-]DuCQ)#H[mK8⭷Y$Us.n!_F+-BG9b,[b,[b,-d[h.%%g"'>kldy*Ɔ%HH׵7Sq֖Nh2"cX"PP!"+WB(^KqƋܫ? OD-#~K$$9`j~טd񦽯Ǿ"&F! Bz4/|G8TЎSQb}/4>>~cΧ/?N:7iw 7:RYs@ٗXCҠ4%7NVɘ;+pHĬDY +PqjǶ􄱰MeU3K'Zh_S4{?4 x}Ċ֏òA5 -Hs&H'["a# ȿ% ![6A#`>1YW ( ^C9wf C@i~$Λ+ A>ߎZD| Ĩ[--و>"E,VEz!~ S3!եBHΤlEL')U ,9$7]%<bc S~!. hAbWD}ラ"rM*"wm~aogeO׌곃C\+4ZUVM?v5͜g@lIh vrjg2(H3F#8 hkqNg}|"/:RKj:񭳕O>V*|ߺp4L3@ H疢uA^{=8Z}DP/z<P{'o0ˬhhp|u̥%5רMÉ O 0zOܘk=(0Ņ=,ⲌtF$c~c ͡05/?zbP]DY1U'4ۍۡiջ{ wfZ(ڪx,1AĞfn~UQM-HpiYc|v^>Z-Y&5$m}| ƻt8pÆ!s}a[S=Fˡ{Tpj!F!FRbI*@FPcXShEB ,xO뵵G0I"*Wu|OLHl>]lkpIZ?+B'Ea*rw( \ ?M2kujWic,Z<(]sbM:^=Xӯ_^t ݇-=]E+m( rX¿~ټ"FtC";G1.|d}pdq4KB >k&Z_$O&ͺ N^z eG>)gG09:^C#q-9}ؾ ռzKRz8d#eo^$`/;iS0u;+0k;qS.uF,U (im4ꈀ۲m\6IpWG7A-5S)M`Yt^SŧG輤vj\ocM 8ٶQg ]GUM"%wC[@7SZ%(]ejJ@{ܚHJ*ިBɑqCabP!h:yU{4YK7n2г@)+LᛂE`1ae/},E[4|Bn~Ml;yk\~fƍ:PhMxw~="Oľ^ƾ>za|o|_'?H(pm#FCCf|H, ;w-3o|l.nWyU.|+3p&V\4]KUvqҿB{!֫U[kj Ct|ܾ.$q;voTjmWJNOKӥ [IeMi̩?%듊EE H-/) jG8b.,ٷh(m8pB&.*By&aKZa.*[~{:YbrGiH5^<-A9rJDızVY|Fw~Ƃ5kϊիWɧR_WId%*1rj)*&'g":zcdM"J{F˃k#eNRS66qh]y|ȟ8SJƁ*N2,|,!\h)'ڢN.7k*!Uxl|x89z0O.NC\~$uc .x.s<+ ܏dwckӽZq{"}w!LD&-}r n,Bi8^1(@zB -!j'_hnVöbu3umN>wleӵ֝뢎٪伕kvQbYAJ<3FhVQwnDl~)SA7- dM EǜOE5)c=%3*0/ǵzkkdO-?ߚrDoeaI<(2K(P[7bl#Ix'sjJ\[ UOL@Sh*~oL\pxatl׺VWN1j|l+߄eN#L'(oye]0 ;A1AB'.FLQuE 6k1'tݚy k/4a)d"{(l eB&6i8R1ɁY`0pF.r4"ށJlIlg?rC|Jy(VsHVwKH wcWk|9ކ҃/?SHqSĊJ+Գ6y)Dv/3̓e"lz.$m`:D[~];o0_%\HNAQRdIEQ$Kiآ#HJ,?t+o-f:+-j4.9{5<ϫ S7!6\\yT￾q/ꠧB8Sx9G/FN$xyIԶh&H$[}ܬǀtdTJCU9g=uK,KkAi$vsb./ UdO͵$9Z݁΋",2ZxX-C㚝i2VdH gDOW gf>Y hK{"W!j[n2ݽnj@6b]]+FWQ@j;YYMՊ0v?2ul;U1xԨp-OV>U6q`n'i ʭƊY'YLƏ ,J/Ӊ5x^.-&"ϋ򩙧n嘼'D"i(^> JqɩX&t#L*B=RRieњ8q?8Q/phbFEw|}㋲2KS_[iaUrx]]ßۛ/Ʋh;EL&JCj!ky[}rŋ/^xŋ/^x_/m|o(_ Jˡɳg.~m X,"ՕBht#a?<0 BWOv#\ 4}v8 GOSE\Ԣ (%CVW2|n0Ds_X>WpbocN"Ŀ:qlcC{8=gh; ˺(yn(7^%tBպZ]l4Me+FF9eF`tw7O #ņUe="`P[#뵧_+ubNݙg@KJ#>0#跨3 @a6w^$,gG>Іr<MHBܠFvvYO+5읱N0 udD*Eb ZEEPR9qx 7adӸɘ*ח; 7q+:ؽh\n07O^9{;uP'k+{"E#T\D^TҵpprٰG'qgW3, 0~s jBbh/Enz71nS}^O)A; ֥M76;ZӬ+ٸ`^/i|Fsq+? 8_?A6?dyQΝcNx%>%/*, p$Kk!^)]oz~XͦTɏҭ{vI2W[أmwO]MlEqb!H$`[ ]rP$Om5CNӦH &'5?)RˆJ qB> HpPE]۱7{of_*ܧPED:PdDYTn| =&.>GA ,i]'rmKʔ$EcёT4bN p'dNz[5nxbc?}]DCq^7S(ŀKď0!u W *{ TRoqQ2,FNGTӗ -.L,rGCR"T*Qœɤ4G. Fc#)ɅCqTv-2!RV:jDr1%"t]QW<5F)dt"ʦG?o=$ڝ~nH_iOo*[(aom;,h C ?gHwy;E4it S ctYXd;OfvF0€kؘ㔻(=05u{,Lw,o' &&eyG͒x1*mx7r3 (h1 uMjuGӘ7BE$pуiiquPoNӪGg&&p<ZEm%.1T3#0p?XE jӼ{UlQ qЏI'˗Uw`VyMieHZiy u 76phy]`VNn>p;t"2/~8  px ̓>p@MYv7>̂,Y*.eey5όrޓe/>Yo@UGjQDz|:>JzP8*:sY:37p_@W$,-_xY^khW`W8>,7p3X :KyZui.0 t VM=<.ex zR7nw>QLM |V?>ßi;*x_oߒ:O;c9}txQz)cTM\J.'5)O߅TMsI]S9r<œATZEͦ||Ƞ7j_֢qQv";JBM6U7(Md"6j 6^@m"01&BM\j#{VdߙJr+햣{^d3o r;W/D$hvF-[l/ )cY';"3W*%{ς3p{BSʔ6|\ĕ"U~Gd$;Kՠ:RB~FzA>T<~+J'jeٚHo y_uwK:gȘy˖_ V7!Eo6v>Z͠,?h@%Z`[KACLyCBuDqv YC;ep%tpxSA2wԡ._Snr$wiv;J5ߪH<}Kٜ'G-_oܿgASUN[}?V6-jcȯrrb#?Ϡ/4s""e~'K?;r?"`T\g~E|]o<>/<7er_r%迡/}K_򯥠tu! +ķo=ף*yZL,Կ֫X#^Tqgqq|g^Kh?\/L~f+jZT磰}A\_b}m{a a| hzc!Fc)f@h6:衏a a"&蠇>b1&b9j7 4F=1#13Q[4DC0S0_InOuz=t;m^>[wԿĝw= tTU;ii!DHQ'!$`BDEE;H~_ 8D qquщ8ofgXIc F="ڐ1Bުu~&:gCUVOۯ_1GQ^⾗𐮾弜A^8^&kŲHWdO_݁?I R8KU_'*ԼeY.xR+ )ts{s5+zVq8UDB~UWJ62ԩ8TWYrTև!)>tsguzaBl&&Mʚ _'BgwrF]\UWߩⴽqq]42]\9'n,8o7tR_#cuߨa'nXKryI^\^2:O%_}ykqŵK[,_[9}tz=}˓9AuSw|_Z_tżei|=,9ei"#|8X??[ZZ+-ɴJF2/-(t.Y,(˴]K*kؓq)5ReyMFCX;tm#.KºJ`O<ǟA}$JJXr#JmM\ rj̍(eHs[3#ܙi|F:8VjM׾h_AnDWW ~%mMg܈5NV쟈4=WU,Z84+ϦMR-LuצXnv^1xگhb0fk4s<,a ̐räGrE1v҆-<{vJgˉIX/| ?6dU-'P1Sx.|9;%fSfvwvֶr+~/vRψ_~qHb2gi:}Zy٦AC89Z\I/e?WLԧ_˻ttrVe<+Oo׃:9tu^Oml; 0N,Goe^{~l@%_-?'91Ұd5'J<>' Lg8]\j6MN5z݈r&Ifjrpz]/~Ԑ'?spq>L:orY5M9^[nO͡}'ӧBϋFOv.g??g4;ߤ/`IGyumwpHt*YnN*j.Gi) '.A?j`h8'T[jb]U:W==<41n(dh KAc5 \\]Hn@ԁC똵X9v K=q nIVٵ~YS`?x&wc[$^M<*хWlpcHQ媑ܕ:e3,U@ pW(e䥵;rsJGUmMT~`sGxvV0eZOjUEAGHsnCuie_5 WjEoE<8^A[­^܇ xњO xў6/_S_O{|/3OEUa`dSxGߕ 8/োz/% +}!)r~/Z?G^+\q\D}0_J|(4 Q`[X`R/|$a"= aJ0#C%'q 84m?0@+O ?@548T?0@|?8$i C.F@ D!>7#]>0x eR ^dj?O|WP ~g ?Fr4*0V,lz 3cp?uVC!g4LtQ,)mwpܲ$J9r L+MTͦEv{Lh~Oh#sV̳b֯vz'$7wC!|tIGӉkAIM|Bf)ğym.K߅C A> C^BX?'ĿGP?M? ի)Pf$\ NkX9rtjPb?HR.#7g|%.[0Yהs5px^,Q !,igcUnAU + :#1Hnf;HL`!sY~Ub=ݨg&Ճ0A-"Aޙ1v&κd],M1wxL󙣬V{0^Y~?R\40^[͙}>J㹃շS&V8\mVK+7.UW ܛ3e]0|63yA ~V}"M/ڷk<ϩ_̵OsoL cv?yYiq1Gm), B? 1H1)f]7DsoJT AÖ,RP۩""<#KS"Ȕ\`Dx>3q+l)3?KwzsD|~w&baĎ ck^&;ISW]k?m]gӴ< i&v-Mucf@(K{j.9GzN}}T;$Y^HLN{kU:eGBV,ɺjEYBg,t"p+ު?f3LP2,@0riFq+8f%HSV?2L?1|0z`|P4abm,ujC_v@S瞥L=oKG +9-!hkqeLRd:Ms4|5mݗ/b8[Dh;e!|Cn놸ᓣx3p'ן^Dlm6sl5-;@Y=vF3R֝%[I]k )LL@`cRdM\JjSMɹN !5vRBKK9}Y3*@/>J3%'Ml{QA\]V-r<-9~yrOtlja-L-0@-|ҿ;`ik&TW fY4[Nk-;&NpS<?Ty(FpV#|Y]D zӉ$*~+s}y dS .{M>;HZ* cj tKq*,pχМ&LU{NLޮA*' u8HQGa0$ҋ@b3P6 A{˂,7@u;oNQn-0DVF?"@$, }s{4 ܣ >F0$vBRtbާ54;VB6 [+-7q mT$+g^}{ksU_sB2 1lN&{ɾhidV[8~ ^2M& \•ղd2NnW+nbQ+ É8(E3fSR ;rw[4NLƞhH= E+Չ 2fٷ ΏTΏ29[foT h #AvqTВUp!]=qp;gKVD) dώwзww }l<́zVtB\V[z?--It+Rx? @3l>[D3y#%^93e r|JN㖸? 7*1޷4ZɅ Q٫5[n^I=aX~(~/kWx;&gn\];">2[%go`!wYfW+?V,^'ޛxP#29#wGX3kkY  !1 tN1 $o|ueD"||.QND''jaKTw'}COSy>#un?@l׾b*φ*C]f_0xcgSJ,$}bEc _§xi׮X|~sp?)yN)v6ӉG }}iOK}'t"|EZӣRV/|qQRRVbo$Due {uzcK]erµpBiZKTU7%! ")ݍ4%"%-tt7Ww|1s\ڬ=|دf@ɫ_M'91 ^ϋ[|- ěZh_Ugkf{c{8=o|>сH.@{kDCz8=7 7H c:}kp@CU[kC)Ho !4*HI yL_k{U{)i~qoXZW5_:_:u4&'/?2U{2>\ƛh~%*^q% 2қwW5o"@ _)ߏп˿~xH\G80+z ̹|Iu?"^mu_vnm$]՟ AiWo2_ob-~_G19JJJTJf2J)py ? ZyuSD n3ֵ{rrf?7^ hx)0^ʿO=W-оB2~K .wy)owO_7qb?@Q~!Ho! %)HE@R:4 iH;@: O =-PH@R* iHsP1ߐPOG0R@T߫w7 N44CNzz J3NzO [!f}}rnsdi>=]N0q@@pU ڔ/qn`@A^>NGN_!.4~N_qӐv4ʗ3N_p8 7cZ`i'ş'i+Ns8rY~h{&8 F6?B3tƞ~pS۩M:mL+))uOSa=AQB\o}q>[ɜG,55q@jHBn>_eśլDJu|Ŷ gv6),2 k< r8XL>-Tx?1t0Pp0Uh Y ,Kk'c[G RTSW\Z* Pzx~ћڑX,fܓ}Ui6:zcKPs稤qgxmo5뼪z !I!Bi|j^,bۃ9O E$Mmfkw;1n;E*,o0CC)Dz:ڇXpuuǾrIsb]з=Twl!ZF̵T!)3'Zqk _}q0p+ˑf[ni/YƖ~m ͢ ws R%9.a/RM׾\{^46geBGwzh 2gaD$tmR)fVbڞ\=v\CۥT+sJfPZRZϺR:\>Os{ɳW cgm憲 z:]ՈBQ5_\-¹%c՛=7o)Yk(\gSf:c(]·pV}4"l^ɾv-d>+ fPъ{Ȫ-}mmKG:pڧ eMCΆn~K][ 3$Bb/JcWСyRsV7TA}r=ԑx% x2 7XA2:,wG1hvr)&SD?ȼ|_v3/ pO{Ԑ`8GV+Q5op3c:)lӀN544n_]inSs)U:T`-gӡPQ~4ךC}K<;͔C9n`G+?^;"ӶgU#Rr?_(ojoqڼ݃F-iqRk:~7P?NV'5.6Z#,j-i$.ه\ thl=#Yidlk}>gb/^& :rZ,t])Qi?އB2^yrgF{'a҅< lbAmwM,T$ TWY56>$45@/xL{婖DG/ |?rykx: 6cW½u  Z\V1z[g=-dNtU3va Ѓ`R D>FVĶ /Ɖz+ q5|oUznPFCjr)//‰6~t {nK Ѳf.(-t-|t74]YJn3NBg+OU۬#>EK}+Pg8q6pk`4;zo-ޖO\܁ p$K ńِ &'p>Ur]]8T|TᲴt9ZH;Xi,o$C8P}kNc@ٖ'0u^e-F%I r(mۯ?il)ﯩ#P$>f{E?AX,w"w[Erꗈɴu'׷i[1$ Y+ D_5GN/q0N)ky!o|~+xS.z'eᑲ| -g .Vm`3šR>kT+nL cށgz6>E#X)L,<'s nCYb# B bʝiRף! >S<,HG=U#G@"&fTDgE -l0[Ero}m>k]=ĥ td洁`#xf:؂OZ˅3mr(K){Gerz@t1 +\OjcCQaTՕ".f:2 <aUT[Ei.Vهqbn&(JV-S~ (05"0MaLhkȤXfK|faPhϭob e๲'dInK *h)8/fiHgY-`R ؠf;]Ӫt;U~AF%&."H!hAߖӾY*y\Z6ʄ} gL~*+(,$m/6<$(pjHQliJ8:֞a}O0&ӡ}ID^ߖ.0|1{\/O^JJRu˭ah ^ O@KouHYH~/_SBqMF*i;7bUSBD &.n8v:@%d<^K@Ts4%p0ݖ}+8-…ʈ*F>b<0>@.4퓡pprQ>"LBmqڒh,lYgxUcTϪܿK\zCCKI :$?']{Pʼn*:>+?G_Ӱ,큪Í\_:x]P06/c< Pe6'ә ~L /ׁRk̈́R(;BNb8+< rfTQ3GX{ZjsPܐP̓Y )ܔsCedHhy9I0I܁f|; UWT*4+7M!2ùi덭pt=hU"ePbX9ޤvZE[B1J/G@L [,D_;jteZ|RyŔUd XIy֧>8|Uaw25f*StjUXZi0{-YԟI# ?6B'HՔN$yEvo2 eR3`8{M4T贆Eua1{j ͸dcFN2HܪO EKn}N?@FIڽ }n.0%t U PЃ 2v;Y09Ha!;)"i]QĤ}^km8ܧ$/@-ߥvdI& g7pT봺fI OrgFE6+w`^-<>Іj4b#%i֘q+,~J&=[U5OUǼ\@r:5S{ nn۴aPo'"Y-񈟽ٸ]!엤``zd6#wUqۛXe?fS ݇}a4Pi#NF1Ђ8^܉Sru͡!\#pS 4YkxB:^wMep$5JϞ]JN6<4HKS#ɚ̡pŤi iEE1 )~B5 T M0Iz|q~J{w2+!Gl bC}g[Tæ4*=vPg_SXLe.B_e/"x'3m=-?Ev@ӢE:GA(;9n&˱,>,6fhRt) (o.$\ظM*aG7*2OEoZ&̾ eֳ^x#{¡qLC;9f4[bdȝe3IC Qf0m=",J]*lރmU״,OҚ/hit.:#,XGG; Ϗmmx}.NIsNTZX;JM{A=k<{mg.\v붽~WvQ3pg^{Cݬtƙ㡧@=zܷsFphWd Oۿp/{fe#[G뭾ޛ?CNK;,#bLZ*θtEV7'^{XwٟoݫU٥^'/Qys}}z_nYykĪCI0FHk"8IQ6