ploop-1.10-1> A AlpA?Rwْ ԶBn~sw,:)>mbi&5bc94c73fc0a9e3b08f8964b95ca513375cbddc8MG-uF% ψ?Rwْ Զ(GdM99_TSŖ,|c'w Q=2m 4>8AU?AEd   `dtx       0 * (G8P 9 :? F>G>H>I>X>Y>\>]>^?(b?Od?e?f?k?l?t?u@v@w@x@y@zA0{A@Cploop1.101ploop toolsThis package contains tools to work with ploop devices and images.Rvrhel5-64-build GNU GPLApplications/Systemlinuxx86_64 d>d큤RvRvRvRvRv0c096597ee9709f45d72dfb731ed6ee0fda7eee861580b0f22329684a4eebafbfc0f7b15c016be50e5322a237372d8fea80bad527449e9def91dd316395455ac79dba4ec62c1fb558eb90dbeaeb933berootrootrootrootrootrootrootrootrootrootploop-1.10-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.10-13.0.4-14.0-14.4.2RRQۦQk`Q<`P)PaH`O`OOOjO^`Kir 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: -- 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 versionrhel5-64-build 1387230907AAAAA 1.10-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 {1i&%ގ?XKlI'NdM ;C[gLIXqY?8陮t=#m V]rXE"!E-jo {{Y. ]~D\w_tgLI2=djNt+n2J%Jmc;ؖf\TW}NuZ&Kec^3I.ͥHAs4ӤK m5S4MU%uHLW WRᑩɱd^6܅aNjfԙ97=W;7ͺ鱉sS95719vu&GΝɫ|tӰ`I`RyZIU'NoQsҦ= @9<3>2fzϬv%R79p-{Ӫ.h*G&ONL0Fp:52>O)i.%LjGu%nT%.'fF&UO\'^ZJkm 4,˄fٖ3aqń_Y$Y!,)ǁ|fTn#r$dM6-$=SDa 1\b@qtH'MV"7Lꆓ1,Ō1N;v JuIʔB0 BnI7\'wp:Q}L>ZṞ* |d } rxˆ0/:YLVYp,9ZN6R?yض{@|t+mAġnje%L0>~40b+ U?ͥ $4Jԁ3-ۡ5,p ' 8JOl0mGW$V9dwY:i#KDa! +uR0w00`C L!MVJJ=r `WK/p 4G*ș!Gh8 bۊ@sr:@Ip,n1R ~KK˩.,I~ M BM5OFU C/[_n )<>Xᘑ)M-۵+0P`(ЍMf@&Mg/4.\Nŋz`&" vQ+n-domuko.m؈>|F@ 9cI( x<o'/nc HdL91E,y "呛?t.q(#.r\?4sI[qIh`֢#oqAE/%`]M1. naC&՜'D钖6IgS;҉1_WXr0|t\&i[n`59 莦;c[ zb{c+$7wPONhbA\x B[Ӧ "Xb$l}.Fv81.vW_3V_/$ ~=}@>u|{mۙ ﱮ'Mj,'{%u\;[wDv`:[<|zsӭ=سyomϮf &EhiJj,\ˆ?^s#??ëZԗWo&wZEWuk;v{=|}3ď91ow{%8G69Nvܯg-q&8Ln?t,Ng[况iwrm;z?qrqvzM˿mk{W:o坧F;_x6կ8>p3ܕ9۞s[~Ζia6εRCdzvu='cYϵh7Ϸʟc}og~GGG>DZǙdG;=]y0םԪnxQ⺎;t'0NHً vQ7xӁZR yNfOTsf"RX-M7¢-Z Aqի3$ UXWkP.8cQ, }mqA"G>R8&LՕ ^ltbipRfb) g oYjBcHM'8`{=UUv!L떃fPtYTMW,5%!j n3Fޭ+af˦aU>t3]Hb3b ?.7/If;XSTɬdq\F,p]o)bs^4F8aOZAi'8ͺS:I'XGTho"I =g:+.?nP왊#e~R3QQ+Ekhb$HL=q帹 3&괵oMK%xy*2fSqJlhA&SemAv+0s[bN:{wp§'Qo?'>ZkjgL);Qi>niWoQ.gs0\;֓,'hǖ/&֬n,;/w˳4~fD}gD?'zQ˶ޥv z?*K8}(^}E_ϱ/_<)*}}D_V}z> zAD(qu+{9YMoo|WM;5DKDߢϙouѷz躮7'ݢT>};5Eߥ/>5E__4hW_5E}胚i>/~h5EX_QqiOs}L_# џ5E?/Oi+mџ4EN_ ѿ/5E^_]؍"3^3w~{sTcssg_m|pM4S*y)5Oco]&1ŷ#`LɃ`L ~0۪[^0):0(yDrUv0U|@^Ck>x'H7w? p_okOK;".'orJ)v'M p?y #Or?^'w?|ׁ韼|? |#6ɟ?S?x?} ? xo?M'~ɯ?5OKG"Q'?F8_sO> >L GtZolSUZH! FYlC3C&, u C!oMxyYA Q +1рc*d[`Xs>}{k;_AMɞOvs?/͈?'dEUOh#d@K|ğ^oR. d"Ovڅl|b)S1(%ಖSւߧݺ:L^~;AiDJqo S/ƅr@B[|ݎbɬ87Mmx$X%fZZ5t㵳VmwdK>lݺ_A/l JhӘT/Cހ# -JIkAJt 回mar_z*D3LrMC FESS&edn)Z}逃 =1ϓSqW` )yyOSr#*9OPZ H7h!3Z$84~]lb(JĞ 5/Xg{: zaպ̐Id{XmI3,ɏC}Yq~[UZ(\l80v?i1:c`tS *~ȷ;I$p*c8NhgBԝnE|t/_`w ӤMX"gkuhx*HVyM$Z,vg^-[*eyT=./ * |}g-ȵ*b.U:ikS`󿇁HFzQ[͚qmŵP+Qe49Kz1( ÓOܚq4QVݛoַ͠:(tkcSm~}RYCɜ^H<Ѝ@פ[4 R#1Ou Z&u7MI\ø_]ZYOM\zj5J^ߛCE>P{@x)x߷G8W?v q+`Li[;(  h-)BզZ:r`(H;hJ{ Q]+ߚ{jZ1,[={|UIZ 8UPٽrw amKRH VW}Kl;MٲՋ+뮬6- +(*O'h}93Ic޿.A33;|;'g[!ާL8ꭈY7v|Mn c$}lvP,dK-NI9|=Å ~j*`x )mF2uyN_1/3Ob-\.& ,^ە CxQ^ai7Rc ^F!"+j l#R| 2 6,]an -0EkǡۢbY}bGrjc^&\}kj]O s?fڐ/67s5~TGoϦK}Q s"nAw_ЮlIF/N3j\s] XvSLx[PW$CK;68T 9zxYK lHћjFp 81SFV! e4lJPzFjt ~'`]83ħfHSdcl$Z[x~WIz$#hfؐΟxo i"XCƕyLf$}( b"$0&H`L$%0&DsGqyA4Zqm@=39O8M7=A0$i]|EBpW.ucJCдmoax'* wN^<ൡIXbdÏGɦeZDXݺ ?RGX6'JHGLHേW-zFM 76P 7h$d;ldHzU?M6+H8[t">ExҒi=щTD GGg 'rFBe7vؖ(jLp[bBjx 1RbV\@*dD4D@j @V9LCH(_@p^6zv%06~mp-x#xZn$g\9)/b fu3zp϶I[`=ɳWpWkJ.=)׶tڭHxvaĥqZՄŠ/9vRxаVCp>5@l e6Pӵ6=Ʒs>J\ĵ$ap绕/ҿfL T9ˀ#*ʊ˿d3RǞ~OS  `sI" ``Am޿Hz?nX1Lj _ЂTХ.ј(1Px<ϝ8 Nj {64Sx=]e{=]2A_ p8#Ch>EVhh4pnH^s҄ 8+"cM`DZ9 oks\(5#NXxWVMBzGdi>)t|~Ң> Ρul}@K gIY'`Rᧀ൓p95Mjnv^aĠ3;&µ5Jpb jr{τbЖ43'D-)|-5ݢfx5<i!!DM!:,ftBD\%y 8=&emh!0瞐:Ǯ ÿ\CM -U [)nW` :H>l8ũz1O4ؔI[@˻軾2RmTo$c#[6d#_`;h`LrɢU:OzO4kNc|횳. D8Mqj.4 2je~Nְ<7x'&= Zl3>ztYQy^<ލ5 ``X(M&aVba:IaSO00q`^8E0I0 3tB%}<5d̈Y:S6w-@ĵ3P"9N/5?-/́ Lgaf&Yy`G%1j,BzcaP&ua\d՗  8͒)c&`F$frM4^㌓ JG[aH1MLW:}V']!“&VH^yBeذ9T{+xa1Ko=oWoj9"O?Ǭ;նXg,ש1Pm=x ,/S u]N&kHLk7p}3\obh:jξs:`J4$Tvjf,ʩX>R7 { Gʌܔ-w+YrRpZ7XӲ3+h1qqҥp2wV)|:x$`rƷj9wEOQL cT.r, %:=Wc`O n _  %{;L|Xm"A =u\rDjO|w`p%|/~qje)ņVWmD>zyz0^v}Z0'ub>Ƨdžr %޴J tE|$k޼nrws j Jk2յ;ǥ=<-E=wkis\汋=D^j!g4DpN ;iLNf%CTT퀦I#w yKQfw#bb oȴQ~p b#b.Q0%{~rRfibԄZW NVVgK7dR;'n62륨Z(-AW}* bF900h@exA M9ou6b<}n>fu~3­kBk,zG0yfn>&~:2J =l_.g%H_M藍y$V/ܮA.0^@߱u}Ik Y y.I[Y6&yBER=S9zPd \w3=}LFVGok!D;ZmB'XGcTu `՗*(o͒.~0@'݀;;勞|f> =Zn"0 $=p'&Z"şw.vuXq@w tD ēF8*#58b7Xq#KNp\IWD xt£T`AJd Km_0u/Va4(LNYQU` fB.-2 5Kw7ɺ$^Ąh14@a: 5qWqϰ'\ykA@n XR%ĘPR1j>c#,qGq5%qUaWmJ}Ҹ Fuu7" ݦflfbGCco>ɴ^97W'׀.ۆ #>J}(X(qBD&_ς~sO8?~8I b&`2a!0f~P?B3vfѠ,刵n6yFi)CJ2 _JqXgsry䅮ŧ޲MYs9 Q0<X%\"C(p}1hcY(w=8w7bWaOH#m ˋ?X lW0aXðD``ID#K2 (RL8dpL80p@ GR5ߏi9$/ƛLBw"jNg6 4lGqг]Ҍ'CE`m1 PFh}IhQN;j}W {LӧoR$ $>Er־=f] }273ՅhXoGǼ_KGmc2o*A=| -848ƙ׊矆/DCy&?ߏ}v>WNmu"-G'XݳL*9VzDj* }NSWXv(^a}#W5{EN"v}->M]*cU6 xut#f]i~]: Z ={a47E{3PRy50SvWm_Ry@n&Ϡ83B=j%GR.02}_ ՓECwټJEwN>2?U}^7B]QOK'Rh(ߨ81Õ;ZR$'IDa ;𯙢ٌ}c<ֽc\MPݟw6S&K~#n97>\)'8_p? ,wuHu{n>Ԏ1bjF5Ƹ(nt#vz?t#Q!GA p̊G&3E/u|7S(A*B\q֌hC"E#s ѿIºԓtu Dd1} 51Q^~$]\n:ڔö`OR?)<֝C͇IJ҄|6Kn7 t~k8M+yT5=)۸SQ2j)q+ c )kj zW/3:RL{lG@p"mVdO偃41dح^ <}x:~zS(2HlœAݛ̼᭎?+n =pXS' JH:wc]hW?{YzzhwWz#K.5oQil2z=--gy W1t^})'JXlpk{ h~3N]̋~ܛΤj o#tO jR^w`-C`ol9~$HY R( #ЧC^uneqi狰hRiNMG 5:P-]D7g{藰]?5?Oâv=wH*AI[퍝ѸPj%n o]1 S cTC72OHYFBe0g3FNwбts\HGC1Ϝ?;0`/3Db~SP;~ȹCeA?J0B|=;FjؙRvL f<%U cX j>ywRs8yzv5W\zgfv}}5NQ&KE|2qQe1Dǜ/xS `c'lJ99YѳMN#kbfvԬ){/@g݂ôNBL& J-% ?AEg~x*Mei3M`*Y%& Gţb/P!xL|o4ia"I3׸Ie$_JE̕LMDu81}Txu8[}ެ89'wLFMVoQs5' b8j(1^#Y%^9;f8=^ik}DH"_U8YrI,*wTT.Adc\Pn'#r>"+Vn"@-` R, 6A꘿l${VV~cՇ@8E%& -T^ Oj =2jsHՍn>ƻ=x|"=`IGOO 4ܶL,^_^Y2zܚ|cFAP\Ac 7B5Ѻ.XlFHRA:ٰ1R" !"aX%rqU֑X+U":fP4L)/:.h%4\[ɅUE9A|KLsܤ(߸B 9R dhtU,οŋEܚa^{ٱO%XJX~C==Gܣ&+D:4o$}ef3]ʮoLUinV2Ca3@Lmm4-i($oh#OoE4q I`Z|͋)_GK{:S>H-|ي/A R,BW)s_0\NXY˝eŕE"Ho8&XȂ /;ș{ +*ҍ dz<dKW@Pp#UЯӦh#&oAXQPUs[4|IY7\\\\\\\\\\\\\\\]}pTI0Dg$+,a> !*nde]|4u(had*CѩqP:?X:eRNѱ4Zaٞsﹻݼk!sϹɳuO ߐ'PN+p(~>G< /V}_1{#yVG Toaf2iaF [7z+~65l,o C8㤤_i?n_:7b2୻d셌xc B[_&BJps0@8ڪ" 7!'h@K 3g(.r Sݵ%tȧ zI LrmH0 NLN-Uph+Qe4 g($:X d]8ͧTdM⏼vpu\^$b?c6knLf~W_d]/ 8xqq ߗɠ?x :l\8|"if2=(e2'<!ӐO!̵?|g23XLfp/A3Ey!`pϋP.{_d+eːҏBy@~ OGWp7t!? :F+rz݀mBp_N:X 8BNGM=M^f+wIqMUZߵ%)T}Y};$ٴtDfA?t|gAǀ,Ӏ>hA5xsUGYnAtCHX_6y'^r.UڡwP[u:'qC@oY.?9 :{I*\pw0~6e\|y~ZޚAWk[}oA'f9uv3vݺp]v4ENxy!ϥY nPy ~5u! [Iy1cDIMA:$,p58mvZa"zЫ ЇҮ}6.?Oǀ۳]爛?t(ƶ@).(F˽@/*r[f̂a?L^S:fI'{ tt eIڮQ~|y9 z|| 4@%[5n^~olM8o!O~+Ї~B}e҅%9>^<zXܟ]M&?ʁ/]q2{~ؕq \kfʡn2t ˖'PGamXwH_=kE4",@KZ˺;%>ȥo+d?!?۲NS_nB7ч'= *gDy)}²^F(|hF}jQ] '!Ǎ<-?ȓ/YKXG^+(ܬS|(!Ώ(N0N#6*/\`Kz>s`s%ےD\h*3<] .ukC4j'ۘ+5ܺI`*!b褹)D0DŽ+Iaa  .lMAo[ 1@w&pp+ȧ%xy#)욀[Ig^ %BMI_q$u" +| ThA^U+닁Rz"_o\>oWp dXi"}k-mW#d \4_a^R=I1zNjNC =įYޭw(kƘӫ !Zu[חʿ_?I'$ ?m^ S(1C^Tw@//'z~aW~#>Be^4"{1_voxʼnO?sLy`m}ͼi?4wNUA={fykF:l G)IQvEݖ ]z]gOw"C:&%C Mn)<CnŪȱMtwτԘe|vk&fJ/Qg}J \?kJjs X#gȷ HeVWvggslW2.[p>sxZi=?;/+.IB(-n!c%ⷋ\~; kܣͿ96Y>Ž;޹yʡyx[}瓇v-TSGOjy~sO~yiN>vNP|5}bx1ҟ#9Db,σyW*~}BI/z(z|>T6FU~"WcQK"W|> |MW)ܦcuJzy}[E^MrBho+sg%|^@YTޟ+wH}Iy>lҵ1ߥjwx4ӗss>/cgdlc>VIre>(֜IN6Ӕ|^'=uojs}Sz9mѳCOm9} 72)C99ڌ,u!=_ _u?x?^?y6>?eeM x< Q'aҗ)/?M$ȴs<" t]{pT( $<" El("& F䮢3Vpmdt` ѱa% BZmSVx/) % nw{6Z2|;0-8$LVL`Zϫ83n]>Aw j)0%xW%*.>ĸIxoegeC\dJȽW)gԢbUflܜfۂ&ڊb[$7ЖQ"e tJ{\UʽKSa*QRU]Z W4X- []mje[+<1s}*}e*r(*ST/Q55BXYxKO[FjOH\\ZXY_TAG.A.X֨T^(ɑ`RuvY9v/V$,3|NCqQk:ݵ8RKɠIƃSLs @:ZK|yK#Kğ#Sr yKdH|yvėII|9%mėp(S_~θN-$p#?BI|6 /)_yP^?F7HėQ#%{Zg$~%g_~^)兹.'y+'y+sn/!||: kJ$>qv$4fto%|hp@#f )of,hA{Lllg:2W$hQ!HycoF)ΧG2 _FJIL z$/~4Rx[f5$?Ogz3\=jcL=\sAgz6?Ar z<ן3=tן@Oo/x{V+;O[*jzW{řɞ:g˔ qN|>BoYBb|=;;ovxN Y7k9K <ٕݯO)_kɍUT ڞO{k ~O"Yim|4˜JL/!Q,HG1i$I mIVBw>@I^y]s:I IDD-9*S Fȍcm=i}.gK&':3 ]5[l)uB+dQr͇p'*] yrņQp]0LuGY .xڜQ!>#Vړd/B |ѣ$"Xqq>GTba 0%q8}h\C%%マϔukY*yr~@SG.j3eT6mΧ L x݇1$I9?$@mZ7}߸HNwWc@ wU['ß^wdL|F@oP'qN8--P Aq'*-T DqJ0QzS@o)age ʝ% zEZY6+3p E.Fll^9uf͝}[-SYClF$ ^a7D`?͘w5~>|Z( dpcnX,k!aMH Y3lbv { Zkldmmmc)GLgj,Qpn p%T% h,wLs<ّtӑ(J[8hq͗էa 'y_7;'4۞\0+E+i'1p̠5]y\ V搞&@ B?!2k؀fmT3ˮD\-UAdWԧ䑘kլ_ pDz67ؕ3`lF=gG4ICX}t[Ɉ.CJfw8 8`kר!x^6=3>s!"|wZh )6TzVZ% 9;A7ܘPϹnz-$׿+KLW[ A >_LnI `Bq?lx0^m9c!]v$VS7zpf204}^.mԈi/=uIWDҥIJ{z!rhsNcH`]& ZAkB{Cr ~OP`׬M.=ڀ)b㶁~&4o'xQ_o,1gR8꫹ Mଖ<~z;Gfͼ?H]8PA0{/#D;|;;ΗLc17?^Kc3ǭ~e'vgψK7mX;WFHc ~NPS'J%E4F"pOϳӳڣ+  x Xև1T_yڸe[_9))~28^3?s}O <@X }V:XқƠdh7-8LL~2jScqZ*B(8WD+9= w[#8K}^-L|n 9i<1)H0`B\V@+5! AMu.+?RXa`|*֫*\6jDˎ#rnrR6y;1tӞ=G4l-Uw>ͪEQ?PbʭDzP&ra`4n's\$j 9i<-C4]V|)WUo1[-r#j#CG؂Z.y?!NңaB*| q >Mq#= u?\AjEšXc]6 a@bi"ZF˪H, P{͖*u5j(s`_*'I,UY 5IJXґx WLʘi$AGSc^efڍby98D7M;D7aI%,Hx z|Gw'x쿓~Qa$9Bpp&6-ۄw  |$0aFDJxppm»{x9#G ABoY(NϧG40N^(AOgqr5;[-Яw'/E58y^o'/HEqePpe []@%H  3@pAݛV9O]ϯzwM<99H>S='o ;y@AkN_n9yy?w';#sko>_s0&(DVLwssb [?NܻȟsB_X{Y"GU||iYȠϘ{/)>tVvQ6kkg.\$3 Y}|v gx ݥō(Sj Rܖ}+.T*kkո6ij- |ΔJRtAt,Tv~Eѷ5dShv ] aju}arlse\s|Ԓfd5Sg>Qw.kGh`mÁF\.TA.C3X{g)&y{Õ~ .0x>bvF"=q>8\]b]K mi)s{s@>荚 B[rya\ywwIxtw\a>>חH¼~ >Bl5 j$*#s>Oݓ*j .~}<6}4$$Ҕ]cHenGȼ~Ƚ٭IoOk2%y).?<)+QfV;ǵlzbbk?WmNYl$;#5 VOϔ~}V ˃5VԍJϻj Ϛ6w:QP.XԒ[RR־WdWeF 7 }gqӲ\-0џm]8ǘ7Vu Qd.%ՠspLSS=dDsFᚨ`eMC{" n0"&!~bi(U-=±ſQUGynCFA\mja<_B@[rt m=5}xF\/xiKs'R= =[ΪbVI?ABGpl7Y)i|]IYȽH6' 0\j,{h%ϒ\`'?.۸a&g8k~'wu#s:"}=>Ή +VqQybwsZ֍-_mgr>g5uEvPBoרneg#Z{tg2[ċ_RB3D PI VٛP=p[ H[&jj6' 8w78l ᄌ8 i8Qݽ\pr ^!WN//V0Cʸ\R i9T[ Im\xU1vw ƫa3ot/8h1yLz?^V6g6 w| x-+Uhc|E֝OV8_,cvy UFr~iE>KsS8#nH 쇱пDMѤx)JPRBigzSHlW8޲rao5]0Gll Oi]8dbb_5٤.CXSlr(Ze/3 FLNy֨}8Ec7BBy+b]ysNMFCKX i|KbJ!> a tKk~ \B9_^ B YulLO; ?̭-1q%zb妳Bb^L B(Y_~Vj9f6#h!̽eQSHl:j*A4iW.kja?K;G%T8RxY'=MW_/rYLLQj_tR,XʲVX_=Gpf*I^m抌V}P Ȣjj+ Y?-:$yU3]yU`rA SvgC$ۧRn EY.jiJ?fr_lfsmT, Pk3oS"p``kUKQuaU?nVyFuO 6{e}3q ϘAG٦AEpIJOӒ-}5ϷA;fRndfN *SYHvi% ڢ`8.K+G$ ŏ^.j|RB${JBcz,(tdt`4aT&bXhOJT1PY`fRٿ=AjGʨ!aG|4+ztsW\j1JEVQe[zWDŽNGRG/qJ q\%/q?KRi+;.~̴!L&?BY^źMnUJ$jJM+K/qs2 Wu؞}srEO) @a1m0` - es KMA (c$p.c܀Nn?D[mG`][U :r5;ޮ`EIIxν0;5ch0eyL"4%lVEa(_p'of.YtFPKN/ԃLhG+qv[| ''JRoy3ъ.Lyu7@=FĮ۴_L4pW"]u?⢈\R@dE6d&C`{l@vPD@KC+F5@&N!]lSpp hDx*8ta6/cnP|RǾgh9EnE')/=RjԨ^Eo=ֱtjzb 4|j^Rex/Wz&ֱhw+,tmyMr@n[zO/C@z?w][sGՉ9ꈘNfP3lFWVH.VoS<UE:ʼ^e\n"F>߰G)ј>?p $/̥tmmFÿ#}D7sEjZ ƪ7!ќY#jH@3=m֚4REUvc Jl([v9QzFC1E-cr``W_7r_nMX|rlj~&)ɂk-ª j6RMËKnttAe }ǃCHaz!5~7ꪩ;9s̳x۟mlѯ6$퀢})3w彮v1)t%{)nTh ]*{a/xnzr۪gӛ;I(p9( )aKF> 8[vg6,lr`t~yRF`)N_iw 9|jd ظY%PԖJp1axxM4k\@7?!"MtJ/.p*W(3!ڤ_D'ϔ*f.y)u^Y?b$1۔>UBlb$2OOuX ;AO3f"{a7s1ko. 'CCOuZ?f1@. p2ۉtQ)E! YmR ,Lg.`2񾵳V>'qEnE"002f.%,1̕l>dKkX_5w2-.b,8|3uPժY!<4:b1 {;TMLri7h5}>cM(l'362 7:BbStbDuB-Zxa]2_jk&:.owCD*{(̧w)B_}Vpm-pZ: <6¿81驳hkzd;VWfw@~7h\v6*WIۢB_]D 1Dtoxd OЇpd}<0VE}.LX8Œ_[jvP6'ZJ/_=e$0|jX ?q- @ߖ+۾4=qjd,ŊJu>ʥi$I+VN5~D@ HʦHM.0sߊ& T Xz7-GtU&ɅN7Y-w7 =څ~8Ȟ|N  Ч|!2@uLNI(8y+p-; Ifi) r*ʶ>m?Ԯb{ jV ҷ{Y2O`KрD"C3k_ -G yS ?ҳ1uvABQ π