From 62513a7c4e73ebbc2f065433080298a067feb9d0 Mon Sep 17 00:00:00 2001 From: Xiao Liu Date: Thu, 29 Jun 2017 10:35:24 -0700 Subject: [PATCH 01/32] minor fix --- tests/median/median.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/tests/median/median.cpp b/tests/median/median.cpp index 31d1f870..dd73b28c 100644 --- a/tests/median/median.cpp +++ b/tests/median/median.cpp @@ -104,14 +104,11 @@ uint64_t torben(uint64_t *m, int n) int main(int argc, char **argv) { umt_optstruct_t options; - int uffd; long pagesize; int64_t totalbytes; pthread_t uffd_thread; int64_t arraysize; uint64_t median; - int fd; - void *base_addr; // parameter block to uffd params_t *p = (params_t *) malloc(sizeof(params_t)); From 1b98135f63702baa39cb4abac0b514a86da90f3e Mon Sep 17 00:00:00 2001 From: xiszishu Date: Fri, 30 Jun 2017 11:11:46 -0700 Subject: [PATCH 02/32] Add fits test --- tests/FITS/CMakeLists.txt | 28 + tests/FITS/README.md | 5 + tests/FITS/UITfuv2582gc.fits | 108 ++ tests/FITS/WFPC2u5780205r_c0fx.fits | 1814 +++++++++++++++++++++++++++ tests/FITS/pixel_loader.cpp | 334 +++++ tests/FITS/setup.sh | 3 + 6 files changed, 2292 insertions(+) create mode 100644 tests/FITS/CMakeLists.txt create mode 100644 tests/FITS/README.md create mode 100644 tests/FITS/UITfuv2582gc.fits create mode 100644 tests/FITS/WFPC2u5780205r_c0fx.fits create mode 100644 tests/FITS/pixel_loader.cpp create mode 100755 tests/FITS/setup.sh diff --git a/tests/FITS/CMakeLists.txt b/tests/FITS/CMakeLists.txt new file mode 100644 index 00000000..7c29dd63 --- /dev/null +++ b/tests/FITS/CMakeLists.txt @@ -0,0 +1,28 @@ +project(FITS) + +add_library(qfits SHARED IMPORTED) +set_target_properties(qfits PROPERTIES + IMPORTED_LOCATION "$ENV{HOME}/qfits/lib/libqfits.so.0.0.0" + INTERFACE_INCLUDE_DIRECTORIES "$ENV{HOME}/qfits/include" +) + +FIND_PACKAGE( OpenMP REQUIRED ) +if(OPENMP_FOUND) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") + add_executable(FITS pixel_loader.cpp) + + target_link_libraries(FITS libumap_static) + target_link_libraries(FITS libumaptest_static) + target_link_libraries(FITS qfits) + + include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_BINARY_DIR}/include ) + + install(TARGETS FITS + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib/static + RUNTIME DESTINATION bin ) +else() + message("Skpping median, OpenMP required") +endif() diff --git a/tests/FITS/README.md b/tests/FITS/README.md new file mode 100644 index 00000000..5083b835 --- /dev/null +++ b/tests/FITS/README.md @@ -0,0 +1,5 @@ +This is an example of accessing pixels of fits file using qfits library. +To install qfits library, check this link: +[qfits](https://www.eso.org/sci/software/eclipse/qfits/). +Please install library under $HOME/qfits.(If not, change path in CMakeList.txt and setup.sh to installed library path.) +Please use setup.sh to run compiled executable. \ No newline at end of file diff --git a/tests/FITS/UITfuv2582gc.fits b/tests/FITS/UITfuv2582gc.fits new file mode 100644 index 00000000..2c83929d --- /dev/null +++ b/tests/FITS/UITfuv2582gc.fits @@ -0,0 +1,108 @@ +SIMPLE = T / FLIGHT22 05Apr96 RSH BITPIX = 16 / SIGNED 16-BIT INTEGERS NAXIS = 2 / 2-DIMENSIONAL IMAGES NAXIS1 = 512 / SAMPLES PER LINE NAXIS2 = 512 / LINES PER IMAGE EXTEND = T / FILE MAY HAVE EXTENSIONS DATATYPE= 'INTEGER*2' / SAME INFORMATION AS BITPIX TELESCOP= 'UIT ' / TELECOPE USED INSTRUME= 'INTENSIFIED-FILM' / DETECTOR USED OBJECT = 'NGC4151 ' / TARGET NAME OBJECT2 = '_ ' / ALTERNATIVE TARGET NAME CATEGORY= 'FLIGHT ' / TARGET CATEGORY JOTFID = '8116-14 ' / ASTRO MISSION TARGET ID IMAGE = 'FUV2582 ' / IMAGE NUMBER ORIGIN = 'UIT/GSFC' / WHERE TAPE WRITTEN ASTRO = 2 / ASTRO MISSION NUMBER FRAMENO = 'b0582 ' / ANNOTATED FRAME NUMBER CATHODE = 'CSI ' / IMAGE TUBE PHOTOCATHODE FILTER = 'B1 ' / CAMERA/FILTER IDENTIFIER PDSDATIM= '06-JUL-1995 07:20' / MICRODENSITOMETRY DATE & TIME PDSID = 21 / MICRODENSITOMETER IDENT PDSAPERT= 20 / MICROD. APERTURE, MICRONS PDSSTEP = 10 / MICROD. STEP SIZE, MICRONS PIXELSIZ= 8.0000000E+01 / CURRENT PIXEL SIZE, MICRONS EQUINOX = 2.0000000E+03 / EQUINOX OF BEST COORDINATES NOMRA = 182.0044 / 1950 I.P.S. R.A., DEGREES NOMDEC = 39.6839 / 1950 I.P.S. DEC., DEGREES NOMROLL = 323.9500 / I.P.S. ROLL ANGLE NOMSCALE= 5.6832500E+01 / NOMINAL PLATE SCL (ARCSEC/MM) CALIBCON= 5.00000E-16 / PREFLIGHT LAB CALIB FOR CAMERA FEXPTIME= '8355 ' / EXPOSURE TIME, APPLICABLE FRM DATE-OBS= '13/03/95' / DATE OF OBSERVATION (GMT) TIME-OBS= 6.2728000E+00 / TIME OF OBS (HOURS GMT) BSCALE = 2.0587209E-16 / CALIBRATION CONST BUNIT = 'ERGS/CM**2/S/ANGSTRM' BZERO = 0.00000 / ADDITIVE CONST FOR CALIB. PATCHFIL= 'PATCH2 ' / FILE WITH PATCH INFORMATION FADJPROG= 'UITBAK ' / FOG ADJUSTMENT PROGRAM FADJVER = '2.1 ' / FOG ADJUSTMENT PROGRAM VERSION FADJDTIM= 'Jul 22,1996 12:53:24' FOGLL = 2.8988638E+02 / LOWER LEFT CORNER FOG FOGLLERR= 3.9720482E+01 / LOWER LEFT CORNER FOG ERROR FOGLR = 2.8807239E+02 / LOWER RIGHT CORNER FOG FOGLRERR= 3.9098114E+01 / LOWER RIGHT CORNER FOG ERROR FOGUL = 2.9494131E+02 / UPPER LEFT CORNER FOG FOGULERR= 4.0041096E+01 / UPPER LEFT CORNER FOG ERROR FOGUR = 2.8711835E+02 / UPPER RIGHT CORNER FOG FOGURERR= 3.8879002E+01 / UPPER RIGHT CORNER FOG ERROR EXPTIME = 8.3199997E+01 / EXPOSURE TIME, SECONDS FEXPNOTE= 'Fb40 ' / EXPOSURE TIME ANNOTATION EXPTMSRC= 'PREVFRAME' / SOURCE OF EXPTIME VALUE CRPIX1 = 2.5650000E+02 / REF. PIXEL, X, CENTER ORIGIN CRPIX2 = 2.5650000E+02 / REF. PIXEL, Y, CENTER ORIGIN CRVAL1 = 1.8265300E+02 / R. A., DEGREES, OF REF. PIXEL CRVAL2 = 3.9375320E+01 / DEC., DEGREES, OF REF. PIXEL CTYPE1 = 'RA---TAN' / COORDINATE TYPE CTYPE2 = 'DEC--TAN' / COORDINATE TYPE UNDISTRT= T / HAS THE IMAGE BEEN UNDISTORTED? CD1_1 = -1.2629445E-03 / SDAS-COMPATIBLE: DL/DX CD2_1 = 0.0000000E+00 / DM/DX CD1_2 = 0.0000000E+00 / DL/DY CD2_2 = 1.2629445E-03 / DM/DY BDRSTREM= 'FLIGHT22' / DATA REDUCTION STREAM IDENT PREDECES= 4275 / ENTRY OF PREVIOUS STEP LOGENTRY= 4281 / ENTRY IN BDR LOG HDCURVID= 'CALIB5 ' / CHARACTERISTIC CURVE IDENT FFID = 'FUV1V032' / FLAT FIELD IDENTIFIER FFSCALE = 253.769 / FLAT FIELD SCALE FACTOR CAMSCALE= 1.72E-16 / BASIC CAMERA CALIB. CONSTANT FILTFAC = 1.0 / AREA UNDER FILTER CURVE CALIBVER= '20-MAR-1996 LANDSMAN, USING ASTRO2 DATA' SHRINK = 2 / BOX-AVERAGE FACTOR ON INPUT BDRDATIM= 'Jul 22,1996 13:13:19' BDRIPRG = 'BDRON4 ' / CHAR. CURVE/FLAT-FIELD PROGRAM BDRIVER = '2.0 ' / CHAR. CURVE/FLAT-FIELD PROG VERS TIMEFAC = 1.5560098E+00 / T^0.1 PICSCAL0= 2.0673078E-18 / CAMSCALE*FILTFAC/EXPTIME PICSCALE= 3.2167511E-18 / CAMSCALE*FILTFAC*TIMEFAC/EXPTIME RADECSYS= 'FK5 ' / WORLD COORDINATE FRAME A_NMATCH= 4 / NUM OF ASTROM STDS MATCHED AX_RESID= 3.0000001E-01 / RMS ASTROM RESIDUALS (PIXELS): AY_RESID= 3.0000001E-01 / <0 MEANS DEFAULT SOLUTION HISTORY Jul 22,1996 13:13:21 ASTROM FROM BDR STREAM FLIGHT21 HISTORY Jul 22,1996 13:13:21 ASTROMETRY WAS THEN DONE BY UITCA2 HISTORY Jul 22,1996 13:13:21 VERSION 2.5 HISTORY Jul 22,1996 13:13:21 AT DATE AND TIME Jul 18,1995 17:41:19 VARCURVE= 'CALIB5 ' / VARIANCE FUNCTION IDENT PHT1PROG= 'UITPH1 ' / POINT SOURCE PHOTOMETRY PROGRAM PHT1VER = '4.4 ' / UITPH1 VERSION PHT1DTIM= 'Jul 22,1996 13:21:36' FWHM = 5.0000000E+00 / FWHM OF DETECTION FILTER IMIN = 30 / MINIMUM SIGNAL FOR DPFIND IMAX = 20000 / MAXIMUM SIGNAL FOR DPFIND APR = 3 / NUMBER OF PHOTOMETRY APERTURES APR1 = 3.0000000E+00 / RADIUS OF 1ST APERTURE APR2 = 2.0000000E+00 / RADIUS OF 2ND APERTURE APR3 = 7.0000000E+00 / RADIUS OF 3RD APERTURE SKYIN = 1.5000000E+01 / INNER RADIUS OF SKY ANNULUS SKYOUT = 2.5000000E+01 / OUTER RADIUS OF SKY ANNULUS BADLO = -1.0000000E+02 / LOWEST GOOD PIXEL VALUE BADHI = 2.0000000E+04 / HIGHEST GOOD PIXEL VALUE RCRIT = 9.9000000E+02 / RADIUS OF IMAGE CIRCLE USED SKWFAC = 2.0000000E-01 / PARAMETER FOR TRIMMING SKY LIMSKW = 15 / VALUE <= WHICH SKWFAC APPLIES MEALIM = -9.9990002E+02 / VALUE <= WHICH MEAN SKY USED SV_NAX1 = 2048 / X DIMENSION OF ORIGINAL IMAGE SV_NAX2 = 2048 / Y DIMENSION OF ORIGINAL IMAGE ASTRPROG= 'UITCA2 ' / ASTROMETRY PROGRAM NAME ASTRVER = '2.5 ' / ASTROMETRY PROGRAM VERSION ASTRDTIM= 'Jul 22,1996 14:16:55' HISTORY Jul 22,1996 14:16:55 ASTROMETRY. COPIED FROM IMAGE FUV2583 NHEDATIM= 'Jul 22,1996 16:05:36' NHEDPRG = 'NEWHED ' / HEADER ATTACHMENT PROGRAM NHEDVER = '3.1 ' / HEADER ATTACH. PROG. VERSION GEOMPROG= 'UITGE2 ' / ROTATION/RESAMPLING PROGRAM GEOMVER = '3.1 ' / GEOM PROGRAM VERSION GEOMDTIM= 'Jul 22,1996 16:11:19' SV001001= 6.9340203E-05 / ORIGINAL CD00M00N: DL/DX SV001002= -3.1189100E-04 / DL/DY SV002001= -3.0647300E-04 / DM/DX SV002002= -6.6140099E-05 / DM/DY SVPIX1 = 1.0245000E+03 / ORIGINAL REFERENCE PIXEL X SVPIX2 = 1.0245000E+03 / ORIGINAL REFERENCE PIXEL Y SVVAL1 = 1.8265289E+02 / ORIGINAL R.A. OF REF. PIXEL SVVAL2 = 3.9375599E+01 / ORIGINAL DEC. OF REF. PIXEL SVCTYPE1= 'RA--UIT2' / COORDINATE TYPE SVCTYPE2= 'DEC-UIT2' / COORDINATE TYPE BXAVDTIM= 'Jul 22,1996 16:19:19' BXAVPROG= 'UITBXA ' / ROTATION/RESAMPLING PROGRAM BXAVVER = '2.4 ' / RESAMPLING PROGRAM VERSION BXAVFAC = 4 / BOX-AVERAGE FACTOR FOR SMALL VER END  W-#At \=^WPO[iecjkly "4  +!_*wpy=KCGEJRQJSea`epoq}y`  + +SVeYc}|JfF9:==@HKEDSTR_f]eqnon}yu    + &/RgnCF4035<78=DADGCBQST\cd\inghz}vswkno* !W$3X6'(*&.124<69:A?BKJJNQPSec^hmhfszsjopm f> + '= %&#)*++.31967>?@CNKGKSVP\\bdmlmlo^{{dzdS.)1 #~Y< + +  ~"""$%()*25533;6=?BEHLLMYRSV]^cnnjq\Ol`a%7P=01fI5 +R +##&$)+--102176:=ACFMOJNUTQccdj_SliN]FbfcnQF6p]@/ +  +3C!#%),)+/-..577>BDCKIHKTWQ_HP]ZId=sr|rd`DWH{gF.  + +v#'',,/+0+/4648?BAEGCHEDGSI\~ Nalkys_eFC7.$~V- + +M "&((-)).--/265:=;>77>EGrml{m|zzrWP`nPM;='*v< + &C %(',.)+.-3302/304?] X}kl|}]wbRUD:<* H  +w !%&*%*))&+.*&2R>qx|vofYoaYy^@@/a( I$!&%$%%#-I,qx|go{rhqk]RJZlD_u1 +   + +   %<!*C.JYe\hoi]zocj]isrRX; + +   e,VG>ZLQ>VH]YYXXCXhiZP;  + + +  +  ;u*=07(8=EI5:EL?BZG'; + + "*%$ " + +  Ys,(+-$51/77v9   + +   +&/7/363) + + +F[q* %o.    #,5@H><=0.1') (ARg +Y$ + +  + !6DFF4EGJ/33.%% + 0:O]so> + + + +    ?TI?CB:5,43.'*#%" +  !0;KWF4 + +  + + *39AE<@<05.0/+(&(&    %3<>E@<;0..)-(%  ".8?@?:7.,-)&" .>B@?60)(&## "!!&!  +   .6(*+)++% " !!!  +! #%'",(%#!  + #   +  +  +    + + +(-!  ./) -92)!+/(#.;7/( + + 9DA>62/'(& *C76/  (FQRMJICCHI[;!BA;6# 'MZ_STVXUTf~47`' >B@;( + -Qcfe_^\[bo8K.":MDB1 + ,WgdkgbdeerNmC<".LJD4 jlgkklno|2 L W%)QIJ?)intqv4 x?f'&GPLI,pv|D1? 2 A-'@WNK3 +09#$14!H + h-$6VOP3 02K,LH'   / h8%/OSR;H16QN<6KBS!H(  C%'LUUC'2LMQHH@"9/19L1/-0P'(GVTD* +LSKmLHP;`4&<<<8&( +Bu.%<\ZS- -b@ufQS2;V9.OD13`3$2TYT9$o:6eXC I]`zV8v/C:9: B++Q^Z?) xWZ%o cI:aH>)VF.#V,'K]TD.  lz_:P_VPYCBA7C>'eq2'?YXM2#:z}qDQN@=(.:)8aX[:$6FLNcJ/Z_,@K5 +B*.X[_?%Kh{ufDO;/+?3M+-VZ]F(!{sXFG\3 Eb,'H]aL,poN4BFfYK/C# a&!9a[Q1 T^j{ml{T_6*1Z]X/ + _LNS898&U_V0 +~mXZye>, C#P^T8 urD.`9YY#";UT7c[CIH3$ #4TI70*8miKU5<!U8&z |/,LE0rMnhIPa4(/0$:(:#C@. {WOoL]7iPHw@023O;20%u\IViEjWGJGHk*hZh/25*QZP~jt\DQTKEE(Wg$$00( +r0,MN?3 daXh)4;%/1* @;3`U*=K6(B-A02),* ?A&X.=R0;A(?B03" <#-& '$ ;?Pt-?0JL</H##5G* S,dN)0>cq!\D -a' IoRQ +/xUT_c>8=vlXfRvwquC$S"sT8 )  +ej-u9 aulrg  ~]O[elee{ " dJ?GHIgseU  " +(5?>dvymtt[uc ) + +/)1YtuObzzVoqsh' + + !D9Cj_Gsjbwh4n;seJy'    C2[PHWSaz7CO-uf5h!  +  NNS.O,\K!`   $0/EA8L   "8w} y4 +  -^ /~0 +C3,<%,! +'I3  + '\=#EjB& +   +*qF:P0+%<bA3)  b7RYW4K93&WnL8*+"  + ;DEN!& +,vVF81'$     <2&#$(!3 ]G:60.'! IB<"JnbF=561,,$!-9.% + ";*Ci aN@974-*%"! "".GRJL?+  ''pPC;4/.*'&%!#+:Wy`N:.  +6pRM>;71,-%('$.@gwcQ=+ YJ@=871,+(((.Gpn^LA6# +;932-,*-+.Gyup[VPJ=!2-+-)-4Isja_^B'+),7MqnibJ(  +6Rxul`D%|xmW5 xkN7 }oO( oO) $     +  + '&#"=\=# %n- %T( + &62#      +      !(! #!#$% $!#-$   '+&2. + %!$." (/93 ' -42635-%) +  +&481'$$ +# 05( *+"!%&# )2!(+.--**# + +!)&! + !+* "!#"$ +$/$   + +'&    + "     +     !& +$)''' + !,(  (-#" %/. &,!.54#   +$0&  !-520,   + +/ !%!$($  \ No newline at end of file diff --git a/tests/FITS/WFPC2u5780205r_c0fx.fits b/tests/FITS/WFPC2u5780205r_c0fx.fits new file mode 100644 index 00000000..cbe0da74 --- /dev/null +++ b/tests/FITS/WFPC2u5780205r_c0fx.fits @@ -0,0 +1,1814 @@ +SIMPLE = T / file does conform to FITS standard BITPIX = -32 / number of bits per data pixel NAXIS = 3 / number of data axes NAXIS1 = 200 / length of data axis 1 NAXIS2 = 200 / length of data axis 2 NAXIS3 = 4 / length of data axis 3 EXTEND = T / FITS dataset may contain extensions COMMENT FITS (Flexible Image Transport System) format is defined in 'AstronomyCOMMENT and Astrophysics', volume 376, page 359; bibcode: 2001A&A...376..359H BSCALE = 1.0E0 / REAL = TAPE*BSCALE + BZERO BZERO = 0.0E0 / OPSIZE = 2112 / PSIZE of original image ORIGIN = 'STScI-STSDAS' / Fitsio version 21-Feb-1996 FITSDATE= '2004-01-09' / Date FITS file was created FILENAME= 'u5780205r_cvt.c0h' / Original filename ALLG-MAX= 3.777701E3 / Data max in all groups ALLG-MIN= -7.319537E1 / Data min in all groups ODATTYPE= 'FLOATING' / Original datatype: Single precision real SDASMGNU= 4 / Number of groups in original image CRVAL1 = 182.6311886308 CRVAL2 = 39.39633673411 CRPIX1 = 420. CRPIX2 = 424.5 CD1_1 = -1.067040E-6 CD1_2 = -1.259580E-5 CD2_1 = -1.260160E-5 CD2_2 = 1.066550E-6 DATAMIN = -7.319537E1 / DATA MIN DATAMAX = 3.777701E3 / DATA MAX MIR_REVR= T ORIENTAT= -85.16 FILLCNT = 0 ERRCNT = 0 FPKTTIME= 51229.798574 LPKTTIME= 51229.798742 CTYPE1 = 'RA---TAN' CTYPE2 = 'DEC--TAN' DETECTOR= 1 DEZERO = 316.6452 BIASEVEN= 316.6715 BIASODD = 316.6189 GOODMIN = -5.064006 GOODMAX = 2552.17 DATAMEAN= 0.4182382 GPIXELS = 632387 SOFTERRS= 0 CALIBDEF= 1466 STATICD = 0 ATODSAT = 16 DATALOST= 0 BADPIXEL= 0 OVERLAP = 0 PHOTMODE= 'WFPC2,1,A2D7,LRF#4877.0,,CAL' PHOTFLAM= 3.447460E-16 PHOTZPT = -21.1 PHOTPLAM= 4884.258 PHOTBW = 20.20996 MEDIAN = -0.175651 MEDSHADO= -0.121681 HISTWIDE= 1.033711 SKEWNESS= -1.983727 MEANC10 = 0.12958 MEANC25 = 0.3129676 MEANC50 = 0.4577668 MEANC100= 0.3916293 MEANC200= 0.3115222 MEANC300= 0.3295493 BACKGRND= -0.3676353 ORIGIN = 'NOAO-IRAF FITS Image Kernel December 2001' / FITS file originator DATE = '2004-01-09T03:26:36' IRAF-TLM= '03:26:36 (09/01/2004)' FILETYPE= 'SCI ' / type of data found in data file TELESCOP= 'HST' / telescope used to acquire data INSTRUME= 'WFPC2 ' / identifier for instrument used to acquire data EQUINOX = 2000.0 / equinox of celestial coord. system / WFPC-II DATA DESCRIPTOR KEYWORDS ROOTNAME= 'u5780205r' / rootname of the observation set PROCTIME= 5.301314019676E+04 / Pipeline processing time (MJD) OPUS_VER= 'OPUS 14.5a ' / OPUS software system version number CAL_VER = ' ' / CALWP2 code version / SCIENCE INSTRUMENT CONFIGURATION MODE = 'FULL' / instr. mode: FULL (full res.), AREA (area int.)SERIALS = 'OFF' / serial clocks: ON, OFF / IMAGE TYPE CHARACTERISTICS IMAGETYP= 'EXT ' / DARK/BIAS/IFLAT/UFLAT/VFLAT/KSPOT/EXT/ECAL CDBSFILE= 'NO ' / GENERIC/BIAS/DARK/PREF/FLAT/MASK/ATOD/NO PKTFMT = 96 / packet format code / FILTER CONFIGURATION FILTNAM1= 'FR533P15' / first filter name FILTNAM2= ' ' / second filter name FILTER1 = 69 / first filter number (0-48) FILTER2 = 0 / second filter number (0-48) FILTROT = 15.0 / partial filter rotation angle (degrees) LRFWAVE = 4877.000000 / linear ramp filter wavelength / INSTRUMENT STATUS USED IN DATA PROCESSING UCH1CJTM= -88.2569 / TEC cold junction #1 temperature (Celsius) UCH2CJTM= -88.6697 / TEC cold junction #2 temperature (Celsius) UCH3CJTM= -88.3028 / TEC cold junction #3 temperature (Celsius) UCH4CJTM= -88.7671 / TEC cold junction #4 temperature (Celsius) UBAY3TMP= 13.2302 / bay 3 A1 temperature (deg C) KSPOTS = 'OFF' / Status of Kelsall spot lamps: ON, OFF SHUTTER = 'A' / Shutter in place at beginning of the exposure ATODGAIN= 7.0 / Analog to Digital Gain (Electrons/DN) / RSDP CONTROL KEYWORDS MASKCORR= 'COMPLETE' / Do mask correction: PERFORM, OMIT, COMPLETE ATODCORR= 'COMPLETE' / Do A-to-D correction: PERFORM, OMIT, COMPLETE BLEVCORR= 'COMPLETE' / Do bias level correction BIASCORR= 'COMPLETE' / Do bias correction: PERFORM, OMIT, COMPLETE DARKCORR= 'COMPLETE' / Do dark correction: PERFORM, OMIT, COMPLETE FLATCORR= 'SKIPPED ' / Do flat field correction SHADCORR= 'OMIT ' / Do shaded shutter correction DOSATMAP= 'OMIT ' / Output saturated pixel map DOPHOTOM= 'COMPLETE' / Fill photometry keywords DOHISTOS= 'OMIT ' / Make histograms: PERFORM, OMIT, COMPLETE OUTDTYPE= 'REAL ' / Output image datatype: REAL, LONG, SHORT / CALIBRATION REFERENCE FILES MASKFILE= 'uref$f8213081u.r0h ' / name of the input DQF of known bad pixels ATODFILE= 'uref$dbu1405iu.r1h' / name of the A-to-D conversion file BLEVFILE= 'ucal$u5780205r.x0h ' / Engineering file with extended register daBLEVDFIL= 'ucal$u5780205r.q1h ' / Engineering file DQF BIASFILE= 'uref$j9a1612mu.r2h' / name of the bias frame reference file BIASDFIL= 'uref$j9a1612mu.b2h' / name of the bias frame reference DQF DARKFILE= 'uref$j2g1549cu.r3h' / name of the dark reference file DARKDFIL= 'uref$j2g1549cu.b3h' / name of the dark reference DQF FLATFILE= 'uref$f4i1559cu.r4h' / name of the flat field reference file FLATDFIL= 'uref$f4i1559cu.b4h' / name of the flat field reference DQF SHADFILE= 'uref$e371355eu.r5h' / name of the reference file for shutter shaPHOTTAB = 'u5780205r_c3t.fits' / name of the photometry calibration table GRAPHTAB= 'mtab$n9i1408hm_tmg.fits' / the HST graph table COMPTAB = 'mtab$nc809508m_tmc.fits' / the HST components table / DEFAULT KEYWORDS SET BY STSCI SATURATE= 4095 / Data value at which saturation occurs USCALE = 1.0 / Scale factor for output image UZERO = 0.0 / Zero point for output image / READOUT DURATION INFORMATION READTIME= 464 / Length of time for CCD readout in clock ticks / PLANETARY SCIENCE KEYWORDS PA_V3 = 49.936909 / position angle of V3-axis of HST (deg) RA_SUN = 3.337194516616E+02 / right ascension of the sun (deg) DEC_SUN = -1.086675160382E+01 / declination of the sun (deg) EQNX_SUN= 2000.0 / equinox of the sun MTFLAG = F / moving target flag; T if it is a moving target EQRADTRG= 0.000000 / equatorial radius of target (km) FLATNTRG= 0.000000 / flattening of target NPDECTRG= 0.000000 / north pole declination of target (deg) NPRATRG = 0.000000 / north pole right ascension of target (deg) ROTRTTRG= 0.000000 / rotation rate of target LONGPMER= 0.000000 / longitude of prime meridian (deg) EPLONGPM= 0.000000 / epoch of longitude of prime meridian (sec) SURFLATD= 0.000000 / surface feature latitude (deg) SURFLONG= 0.000000 / surface feature longitude (deg) SURFALTD= 0.000000 / surface feature altitude (km) / PODPS FILL VALUES PODPSFF = 0 / 0=(no podps fill); 1=(podps fill present) STDCFFF = 0 / 0=(no st dcf fill); 1=(st dcf fill present) STDCFFP = '0x5569' / st dcf fill pattern (hex) RSDPFILL= -100 / bad data fill value for calibrated images / EXPOSURE TIME AND RELATED INFORMATION UEXPODUR= 300 / commanded duration of exposure (sec) NSHUTA17= 1 / Number of AP17 shutter B closes DARKTIME= 3.000000000000E+02 / Dark time (seconds) UEXPOTIM= 16880 / Major frame pulse time preceding exposure startPSTRTIME= '1999.051:19:08:37 ' / predicted obs. start time (yyyy.ddd:hh:mm:ss) PSTPTIME= '1999.051:19:16:37 ' / predicted obs. stop time (yyyy.ddd:hh:mm:ss) / EXPOSURE INFORMATION SUNANGLE= 141.618347 / angle between sun and V1 axis MOONANGL= 126.698997 / angle between moon and V1 axis SUN_ALT = -31.523479 / altitude of the sun above Earth's limb FGSLOCK = 'FINE ' / commanded FGS lock (FINE,COARSE,GYROS,UNKNOWN) DATE-OBS= '1999-02-20' / UT date of start of observation (yyyy-mm-dd) TIME-OBS= '19:03:13' / UT time of start of observation (hh:mm:ss) EXPSTART= 5.122979390428E+04 / exposure start time (Modified Julian Date) EXPEND = 5.122979737650E+04 / exposure end time (Modified Julian Date) EXPTIME = 3.000000000000E+02 / exposure duration (seconds)--calculated EXPFLAG = 'NORMAL ' / Exposure interruption indicator / TARGET & PROPOSAL ID TARGNAME= 'NGC4151 ' / proposer's target name RA_TARG = 1.826355000000E+02 / right ascension of the target (deg) (J2000) DEC_TARG= 3.940576666667E+01 / declination of the target (deg) (J2000) ECL_LONG= 164.096619 / ecliptic longitude of the target (deg) (J2000) ECL_LAT = 36.623709 / ecliptic latitude of the target (deg) (J2000) GAL_LONG= 155.079532 / galactic longitude of the target (deg) (J2000) GAL_LAT = 75.062679 / galactic latitude of the target (deg) (J2000) PROPOSID= 8019 / PEP proposal identifier PEP_EXPO= '02-030 ' / PEP exposure identifier including sequence LINENUM = '02.030 ' / PEP proposal line number SEQLINE = ' ' / PEP line number of defined sequence SEQNAME = ' ' / PEP define/use sequence name HISTORY MASKFILE=uref$f8213081u.r0h MASKCORR=COMPLETED HISTORY PEDIGREE=INFLIGHT 01/01/1994 - 15/05/1995 HISTORY DESCRIP=STATIC MASK - INCLUDES CHARGE TRANSFER TRAPS HISTORY BIASFILE=uref$j9a1612mu.r2h BIASCORR=COMPLETED HISTORY PEDIGREE=INFLIGHT 29/08/98 - 21/08/99 HISTORY DESCRIP=not significantly different from j6e16008u. HISTORY DARKFILE=uref$j2g1549cu.r3h DARKCORR=COMPLETED HISTORY PEDIGREE=INFLIGHT 16/02/1999 - 16/02/1999 HISTORY DESCRIP=Pipeline dark: 120 frame superdark with hotpixels from HISTORY 16/02/99 HISTORY FLATFILE=uref$f4i1559cu.r4h FLATCORR=SKIPPED HISTORY PEDIGREE=DUMMY 18/04/1995 HISTORY DESCRIP=All pixels set to value of 1. Not flat-fielded. HISTORY PC1: bias jump level ~0.100 DN. HISTORY The following throughput tables were used: HISTORY crotacomp$hst_ota_007_syn.fits, crwfpc2comp$wfpc2_optics_006_syn.fits,HISTORY crwfpc2comp$wfpc2_lrf_004_syn.fits[wave#], HISTORY crwfpc2comp$wfpc2_dqepc1_005_syn.fits, HISTORY crwfpc2comp$wfpc2_a2d7pc1_004_syn.fits, HISTORY crwfpc2comp$wfpc2_flatpc1_003_syn.fits HISTORY The following throughput tables were used: HISTORY crotacomp$hst_ota_007_syn.fits, crwfpc2comp$wfpc2_optics_006_syn.fits,HISTORY crwfpc2comp$wfpc2_lrf_004_syn.fits[wave#], HISTORY crwfpc2comp$wfpc2_dqewfc2_005_syn.fits, HISTORY crwfpc2comp$wfpc2_a2d7wf2_004_syn.fits, HISTORY crwfpc2comp$wfpc2_flatwf2_003_syn.fits HISTORY The following throughput tables were used: HISTORY crotacomp$hst_ota_007_syn.fits, crwfpc2comp$wfpc2_optics_006_syn.fits,HISTORY crwfpc2comp$wfpc2_lrf_004_syn.fits[wave#], HISTORY crwfpc2comp$wfpc2_dqewfc3_005_syn.fits, HISTORY crwfpc2comp$wfpc2_a2d7wf3_004_syn.fits, HISTORY crwfpc2comp$wfpc2_flatwf3_003_syn.fits HISTORY The following throughput tables were used: HISTORY crotacomp$hst_ota_007_syn.fits, crwfpc2comp$wfpc2_optics_006_syn.fits,HISTORY crwfpc2comp$wfpc2_lrf_004_syn.fits[wave#], HISTORY crwfpc2comp$wfpc2_dqewfc4_005_syn.fits, HISTORY crwfpc2comp$wfpc2_a2d7wf4_004_syn.fits, HISTORY crwfpc2comp$wfpc2_flatwf4_003_syn.fits CTYPE3 = 'GROUP_NUMBER' / Extra dimension axis name CD3_3 = 1 / CD3_1 = 0 / CD1_3 = 0 / CD2_3 = 0 / CD3_2 = 0 / END ū?jÛ?]WO??[ٮ?` ɑn]?Oa?y࿊?WH?Yc?L?C>?XPH?rsĿjt#K!y?1wA +?[?-$n?G>?@Z>Lme.ܿ?TX%Jf2?qz?R>F ~:ri?8^h?"3?Ⱦ)%?H~|?QD?5s;Rؾk?ۂF?Ao#fW>9YѼ?LÌat龖cT]@\%R'ſ̹?N?SJbu?,?[B8?4Aj3D?X?3G2?6??O:վD!w?4m3t?8dM5znk:?:/?ZH?V?0Va琿t?rc~?u?^ֺ_F?rq3J?Ƅ +>-P?eJ@:<6;)D?iHa="?\?-#\Q؈V־p_Twj??m6kZݎ?2?Rlȿ7"mƾd[ž&ۉ?WXƿ?E?Ig^?Hs?18?C0?YE|ʾn̾|WUf?Xs?J4?jf?|7?FfKU>?P߼V?b9?ܶ?KuUI:? ?Y_(+?L[?Y~?`?3Q@fֽu/@f?[@0?Vi[?"?BE8?:Ѭz'~ ??K?Pj?@[ܾ/Z?!Zy=.?e?@Z?B4?4b&?:?Y迋GƾemYQhU9ӤMz;?COӾ?6 +~iʾz=?Js?OG?v??N޾wۿ?Ήȟ ǿO?IVHƾRwP?C?vG b?S0۹@i?=>ɿ؋v?8 ?"?15?S^?+}M|OU?' +7?:{?0s?q?.`:D?E}?2 +t?D @?BK?Gܾ.?5!?C1Dc=?Xp`?5r~>!H .?#|5?NUg|?Bjn!?dLD3 KBxV?Lϗ?k$R!F?.>?<̉ +?(oV;z?\|+wK?6غa?-)mlmE?7l?^]\?-?`հonEq4x?Enྣ7j?cU?2+o?;?5v?0eszw?0WU?""??>Yڼ'?IE0?3? +?`^C$?Zq4锾)T,?I#6@co?L?dp?I }?`_@ۿܯ?}?F?6Olc?;W?V?5G%{?,|?g[ʇھai@9 dYQx ? +?/X?3-Y 44־eV6?Blv?/Z\l?2-2&???V}LYe>?Vx_c?+;zoY?,`X(?Bn̾g^?u,^-B_?=? +`PO?o?XqϾR?Dᖽj]?wz?Z8P>?m BV޿qa%/?rD?iʾc?@a??h?ى]>x?Q@U?_?Ń?4`xe?CE?7?q5\+PG?+=ؽ>J?BL°8o`N8ҽ{?PN +@?#⾎pῑ@,L?M~޾Hp5h.?Wr?5$u|j?6Wl:+?P??1)?Kat?mھ^\b?= +KP1 ;鿈 +?6뿘j]n1TɟsuD?=QlY?S!,[< 0?W"4oS?61?GS?d (?R?K$?Er?^?84?L󳿓ba,?:\?AB_ە?BXھt?8 ݥ?Ct.h?i+?LkĈ?N辜m ?;?=?7c<>?{s=g3Br1xl?@?9ۂ?7^*?JM~:?'?-X??3-?~DV?6e?E?;bBB?,\f:?@ؾm1?*L>]F7Yʾ| fE?2Hk7 nAlH&aſe@El`T??LVԿ?KT'G,??^:0h-<񿭉bB;ο?ZBVK.?!\Mþ'Ծ۶/?Vs O ??BοpQ?4Ta?ns?JGӽsR2$?8c\ab?7?=?7_?6zd???<?j ~{ ?B\?Fu{:?rgM1:rz?MLf?U\?RZI+YV<{Y]X-q*;ݠ?O B?+s6?C3ʿʹ~#Vx?8Z?=P7?1or?r*@2?Lm?##ҽ hT?=:*?b0 +?g-?3e?X5뿅=:?;FX?)yN?R?:zD??Go_?70ݚ3#?H[ @?"c?V?1:??2?"O?RQp=Q +?Dվ +?_a?[?`RX8~_nWĿ꾙#ھ"R?5 +AtJ[%?<?-n 澋?C1?0J{I߼|?Ċ?zKmpd?p俕邾OGhǾJe?BȽȍ?G>{?apп% +A?Xۿv?]@?8E&?RA?5:{?PVIY?_?S%I/rx]vM?Fo=M޿swH?G?Sr?6m|?>WYy??>?3 +?>!?C6&8 +Mg,|_??E>?aľֿx⾐<6_?DQK׿d!5e?B?:l׿mоB?f5?d^j?Һ1QC?C䛿kVվs]?E޾&?jpj6???b\? ?Tuz{ؾ3%?/n?:6?9d?E>?ؽ?I:f?x n?kհ?n?W(??Y?5RIqa+?=?⓿? ?<?M A1+eƾrY??'e'?D8,?a?t_?6K?^%p?:S|C\S] Ľ?Fhe<ϼV7 f?EeA}?@HEHb˰g_?N?%A齬 ?PH?H ?Nǎ?5?Eg?Kн?D?p-x>fS?Sz 4 yP9B)?LI?H)^k@?T^,?+(i6?+mN???X?/?ٓ8a@?A?T!;x ?ةie?fԃ]?Cۋl|?]f&?=QX>44俐4#F%>?-w?Gw?O2*?P?U?H>?J?4p὾*1()W`??FP?HT?8>p"݇{?G2 ̾wZz$!?/;?=e.15|mZX??)q (?5?\|Բ<$ſ潜7P?a*?|+?H@U'Ay?=E|GZ,\<0?R?Gƾ/c?E2/?J2 1?9Pjv46#SR2뭚XcCi?>=ʺV? %?iPa7?S҂ +i?#껾P6Ӽp`?]B5俌:?WI콐d?Y޾:W뎽>Fھt:?FؿO۾XwDؾ @-!Lʾ]R?N2?0"?<&N侇J~?rcOBuS[8 l?b3 +{U?06HՈ?EȄ?)+ ھӟ)..?7t.(о??뇾ῠxwO˿i/myڿ>RᅫJqs^^?Eþsm>[P?Ew&?6s,hq>1I?<?߿y? N?$‾r>?["?C?+1̾M?3 {fW?+K|+že ?A/TH{? + h +?WM?+1i?9y?JB?L?Z#?,DvƾNs`ݿH\g?@>e?B +?)yt?^޾SžV>.⶿ݱ:? t&?L?9=x?M`?AT+?1uV,?eo??GsĿ+:½#0 D?l4?Af?eB?I8?XvM?Bq|?7 Ԃ?S}?6?/K3[ǟ?_,?S +־Tj16X[m?T:85"; ?W?_<&̾8?wf䳿.?Є?J%?tK侏.zw`b?6)N_?@>.?=c"x?nrU??$zO?/?WԽ %dX{&?۾(?;?ZO{?^?>b7ֻ=񻾍w?hU6??Z4?Nr?"^b?PyK?Tqb@?Qة?[=D?7?E+pJ+$.?1*?q&ξm?ֱr[VvLd?S?ƴm=By!Ԣq4?"ta8˺'=o?Ӿ67m徏>?̾z:DTDoQFCLA1}F?i?Qd)?L?:K"?M?N= 010[ ?{EZe?;ljۿ+c?PrпH鸾욿ꈂόg?P@@MȾpDǿh>=Q&j2ZP?H?F տ'F?g,Dܫz?4ȾvV?gɔяy) k2d^?Ep?4;? ?E{L?(,?8?f4?// ?#!?8,?@?5 Gc{?'s?ey#?6mxG?c?T־gs?/zB~$??m龬>@᤿U! 'ֿ?B3q?,hB?<;&g Z?"(?,8? $f?B@Fy??Sľ[ƿ6?6&F_n ?C/.?VH\--I*?3BC?;;>?Jx?BD?>H kn?Mп?qyݿsf2?5?K^?X2?.?EQ?ӽ̶?E࠽Gj?H.]?Z%%&?=,e@B?@~}?[m4XB?3j@?Ί73T>pݾ17aTh9?% +?0 5M>H 辕*ΌBWX%Zy#|D?[uJLx^x0$;(?g?>P?o-z5?LֶoB CC cA/@+o&YHU`g̾nNQq_~=?M? xC?H[&ubؾ?BH?XX?dEH?TR,?-LD?EJ}?@/?"?G-?E?'-IQ5?)xྠWPJz3a??]?S?6\?2ȿXv?S?/p7h?BIo?8N[r?8d>Ϡn?4G޿ FH%(YN#¿bDFo v?K?H?TP ?A:?am3+ͽ Q>r?-:X#о4,cD6`?@~4V?/??\0?Iw&(, ?;?T`$\?L( rZM)?Gi?FC?^%ɽGn?$ļȿZq̾WiR?;o?BE?S!Ӿ?GFuv?7?G(?M?7 rd?PkW+?4mz??Y*#?\M?0ԿAA? # +roJ?D>hx?@(?F^?D 쿊*O%ƿJ?#q?8@ j?8Ѿд?Zv?]@?c\s ?/?doƾ:?P$ $?]tJ?@}k +_TȿF?Q<0#7?X^ߓ=ܿ?(:?li?\i_?y'zuH??z 5@a?U?zvF?`e7.?D'z龁n'?4FYq]TK*?s&?Wk?@V?OؿnA?v. տvϿO?LC>\]V%pXA NFY@VZri?+KB?d?%RTj?2XiJ\(9?DZ?% p?5ֽԾho?`??DY,,m\?>Jwy%m=[?> f>?4??K]??:(ξr' ?ZO?Pп.??5 ET{?4Nh'ſsdf?* ?N#ľyZ +B?I ?:j?'?G? G?g?+nzyAa?Xcq?3Pf??3+?I/0?6?[徱ؾPտ*h?PUJh>X(j?"?C?8J2?n?A?IV?IO>XD?i뾕?-?0򾼱پr>6m,`ܽDn?6?IZ?1_??P3''?O?zp?X?fH=⾓hO?}#?CFF⿖7|O޿]@J.,~?j/P?Y`3Nt&t?LS?g?Gf"V??k|ybzd+ǿ|?C+_ r @2 +ks{?1R?QG'?.\?xTUɾ2!j?&9?{?kc9?}'?C R%WJ([ǽ~8?P4QkGiU?.#׀&?4?~?.U 6?[`?D2?-ń^?W>žTr;Q?S5ܕ)Hg?Fd,?z >h =X?2! wH??Nྐྵ ?ۮ?D?f@bK?V򾄜?["?@?TsU?++ .ž һ?GzbfG?뭾b,Gxڬ9|?3-|~?_?E?8g?㫱??/MXcf?; =qF?-y?>'<@0*?T̾F?B޾K?!ݨ5`?L0?L/gDO˾ľ?Z?$k"6?A*ҿ`?iHۂ"V>G?;*2 ;þt=`?,Ҿ _ҾSA?<7gb¾L?[t(pX;?9[!L?LAhֿ/?*?%?1:Kȿ|pNlt^?OM?V+:`srF?^n!6?EQ??A @?g?NR?_?D4?c[?T#Ͽ}῁nlIy?]Y?^^RG3*^Q?ƾ" +=?]IR?о_,U=*迉? )?=$?Kd9?aӾ???/n?`g\ׂx2 u?=i?U\?WO?;#?C3#p>U:(?N KQ ?]Dv ?iiq?&e?D|6׆>PӾ}Ž?V?D߂??q:@gt> +u?Fܱ?$N?U|u].?A$??MM?7? TPvI?;(?=-?D>s?&?N}?+?=Z;?Pf?h4]?.f??5?$:B?3@޾ؽ@%?3d?;Nm:!?$LB C?@Vxs?Yg!5":Y? yE?KB0m?FsJgt'?Re:*v?<#>C?<\ھ)&?.~O?^RKf?'lɾj`=(?@?'?H~yb?%a?AP?@?p?k ])p?q?9w㾎eҿmPO6?OؾIǕ?YP?\T?￈t?XPVG%B/4O&v?-^?8ZR?#Z=>͎?px?UjC{N?v}jڽ]C?>?`wh?;?WF?;l8ʾvL?C _;60p;˾@:l?X$?, v04-O?Y[tv|8ǽ\OZC2?L?F!˓??Q?+'6&?:v,Ia?7p?/u(?fվ?BSǾ?:h?35?B%F־{ ~?N)@?O.zpx$h_Z6пj}?]X`:?Pb?5`%c?>O?`j?;L?KV;>?$W?.?׆fWo,AN>!H@|b?Cؽ?[bEB?X),HOjPl?EZ ;{f?7?G> +v\l?Fۚ?6??NT?Kw?X*?[$q2dU߰?>0P7?>*'A^B@<?%긿?.4?E?6HvDR?qcy?7B¾&̠ +3-?1`"?Ԕgվ?I[St,d@?n&}*"?4[澨^f,l?;ƽo*(??Hb6J?VN4?l"\̽q ¾N?]>d?DlY?[m''?Dl?2^x?NA@Xd+?d?P@?L4?>M翖:?Bh8ȾN?[uެqھ?w?IZ}?bqh(8?Eh ?\ƿ +?PuRK?SߧDgL?bo]?J8I^=fP?]˪?L?6iLl2"s??/,H?&R{?>;sI?Xs8?}/tO10$CK)w?a[x?xj?N~ƿ8($?H?pоb'?,M?p?!2P4Vp!ƾ/>:??Lϣ=qS׽L|zؿ??5?Z8[3HӾq^]D?¿x?q/B7?9L0? @=Z`8$2?,)zA?!D?-?]̾;?Af?߮?3}bjn?O?'ݾG@8?W88?'|?84v2̽`a?GV?B?Y;>$2?7??1{4??_&?M@S#7J?Y(V?ȉ qb?74 >?FUC}R?4ɛ>ҫտ-?LC?4`ӡ.?,nu8%?<-ϾD) Ѕ7„X/hɾ+ 2X3?=?:Kq?5;f?ku?NYd?7h? ?6?To?MNվwʾR*?]daV.kPI9@??+|N9&I? ,?0?0?m?J?3|?5y=ž9ϳ?D&?)j?~G?O?0E?2V?C[?,ń?C[ jCMؾ(޿uOmQACt@?3B\Uk\g?3^iʽAL?W?勬i?8;~lϽ"YJd3H?M˽-Q??S{?IY?94V<3?rH:ƿc-ƿ|? ?1Ԥ?g5g?C?@?^ʂ?:AH?.̾FI?H?(O??TY񄦾4&B뿐 ?N7?<R?>?dh?) 󃾃*uD?=F?L{QSX?|??6q?4ۄ?1g'^l?-T?QCuѾƿ\?=YD?w?-e¾d?BF?8 ʾ;E\|?34X?D͋Ѿh/?뤞eF?俚 +cy?^`2h +5]?J!!??L?Kf?8Y0?5D?K ?T־<?r酾VDA ?sdi6^l?.~hOe?X3ܾM@5D? Z)?0N ?=?1Nʿl$?`#?:l`?#?-?|lQƾD>3P?6Ih^ھ(?.?뿟v D?B%@+?|>l?S?>7?<D?Le?J@?L#Wʽ?x?D?e?KpI`?J?`v?־K:`4=A >?8垾侕7Z\r?Xƾ=Q&P?G} ,4?OK"( ?GĿоppP?GOKCk-<[9?:U׾F?H +;8?j,9?`qj!d +?I??f.?h?O5"k;?>/-m@jVk?)?l+?@"?L??:R*?V6?aL?2|#b(?(6c-??94'2ҾJ>ƒ2?90-y%R7 +84?8.Kx +SE?z@WI?žB??KV?U?/&~?2¾?g ?5ٴ? v?)E0?A2N6ҿU?-?rF?Gdy@?oգ?IwоRQY?^ <Ⱦ/D' a`?<8?L}r 7?7Zٿ x??^?R?G?Kž +?Bi?!`?FþGcxF?6ݾb־z̴C9??\2&l꾧;:Ⱦ'(,+@w?S^俚¿?;>!KԾ_?29־3K1,TWzn?;E?^T?K6Y캞V;۾l)?E{?K@+ Z?K`{?j%@s?4}"?=1?y*W?`>b~m:⿰$1$7?8s|w":澀kU?b?9:>b?㕾?Ⱦ;65?Mf?Kmwd>?߬AL\(q}W?Hv@>H?8(+?,kK ľO.?A \>G0:: ?n?8v?:mpU?7?LQ>??D ?P'h_?C1?F՛?T"y8i?6\'~ȿ?S?F >m?C?DVT???6xڱG-[;_?TS@ؾ ?Xmet?f꿉t??/L?!A?MImA?.kP:?+ ?^swr?/Ҿu>??z. +?=ο?G?uZ?D2=CоHU?\](?dL|w ?=3?FVyHB>]b?nzɾ??A?f +:?Y&||+?Kab?,I?L俾/{3?==?"X?H[(۽n??P?Su~m M dKKA?qj?P??4H>ߚ|`,I?5lxK?4 +8ھѾ 8?6??.?d8"?`=?MO?8?A#?&Н?=|?9Q?_+zO0ղh?P8?7H@[?`ھKO?V?k?'`Ĝ|J\r?A25?2gο_?v?@?;'?،?=/?A依񿠞OO[O??#>˾i;?,?=Pf?Lf"?4 W??<[?IV?T;? +%(?75!?8Uf?AD}>Hi\:?F9ܿ*@窿5yv~c c?RҋT?K߽tqt??{ݤ6?g]?Q~?E1)?G? 3?w쿕 CK?ýɶ?p?H#:|?Yn +޸?Q u?U9cL ).yv?Ijbz +ԾN a?RPX&=??h??;u2 ZoF?46m$?`?Q2?kXNa/?9i*?S'ʾ$ ҿ?Bu?e?EuCʂ@G?*2?r?dp]?(%Z?=?׈F`,S?H8近j?2V?M@U?'r?)x!JxM?B?,޾C EؿU?\;;Z:?_Tb?.Hsusre*'R?ԩl?3??ʥ?Rg*P࿚?x?X8?AL+;?A} +6p`"=3?`hB?Q=2?Hr?D?+R:Qv?=r?K015ga?5?"?2ג?94z=-[O+?5 +̿MTN3=d=@B@?u[}wݾ}6?[Հ?ipM)U?W&;?nf?MJ;`?YlM?ڥ#2EbX/NE< (?Xw?J1?i*EB?N()v?}SBqĽ?LѾOx#?S6?(g\"࿧{?OD ?>Q@?;O8e%|{?&= !Ŗ#ɾaX??LBN; ?_%> *7V?/ t?@ ʌ?HMj05?Ȳ%V?K ʾk(E!W澁??/k ?> ׿i?XǾ*=\'?E%?J?^?80?R^?2?IG(?D^@7N:N>?+)nr?GھX?g Q?@?G4#?e?c@yk? @οQ?҉sDBsn?2,?W/Q:?/ݾsP`J*ȾX?`N>a ?@??GڽW?5B?fJlӽT[ֿO?2)ؾ91征Tž.(?AqMU;'O<[PkGk?O?"9?$\xǽ-A(?`¾ +|>$¾5 @RʾCAE?F SnؾA?4O]?l$ETǾ?ڽ"LZA+wf"AG$Bh6?;t>Nl?Mv?@n?}'W??N)?O??(L?F>6??=||?C `?%b~ƾ俜?X ο(N?C\` ?BO忑ޙ?1U@?A] +?O;ʽ7?L?eɾh?Unо*?=` U?S2|?9B?=7?A?:Ș?D33?R?q:` ??QOq9T쾚ASQB/?L= )Oɮ?@C]|l*O?@?~ĽF4 ?GiiLX ?In'?D>eD? ?'򾗁?T-?Z]?O~-?KD$?"5;i;J?2lC?RR?Qn?e?\p?(?6-zK?K +< ?>?dE?9%o6sv?dRξCo򈒿I?hq׾ܶ>?bW%?VJFmyx@deK, +[RlW?XXʾ J+?V=1係+?KGY?DQSW{,|뾌r22ھ*F?VοDSp|X=b?k}?:3 &`ο & ?DOF?̾?E??Kf?UVy¾<ɾ?PE?xH?? w;?ip??%Q?D?0Q?8 ?LL2 )Z10L<3D"e?C(ѽn@Ϳ?Q 3?0hpqJ) +?Rr?Q$^d?ٿ?# hU`?x?;H ns'r?7Z'?=Gܾ'|4?O??q3=?#M>n?+?BZ^)S?(?^ov?5@Ķ[ET?k\?0®?bG?vþLm?LT?:3dfui5rQ?6t/-0?9R*K޽͘?p$?B&l%@,j=cp??mQ#?v6?5?TrQcK?1w>&鐽ҁ^C?Xq߿=' 3,L?F$j?M,^澞ނ8?E^?V9T2d/,LP?K߽2b?6|B?2?}?6bF_ݾ[N?QjG?;KԾ-پI?`$@prBp?Om?8B lྠ?7ӾȐ?bMmnx&?\и;?,V$>g*7O?2|R?+"?Mq?F޾Y? l?:|??=?(?Q>u7?!%%7>䂿?:?=U?ʆ?'?f?w}?1g띞Ƈ?G}?ҾgmjW?Y޾3žG`?TnᾆaU* +?4]?%6?&?G?}UU",?1:v?Akk k?7?)hBMI=.B)  ? 0??"g?>&?DlRԾCg?0™?,㿡(?3.4?+?#2O?꾠?j?Me?9MU濛{IH7?Zz3ߣ?7@?5F?_>Ҽ?^ 7F?dv?c?~A"ni࿓tk:K?7C0I@w2*ȈP괾/潘WD%?ToF|uC?A,?v ?Q@Q?T佤s@?ns}j?v?\-G?b?Yx?:w(?඾_?J_?r;$?YK?X?@uѾr?Uؾ8D8.=ڃ?=ѽ"X?)! ?^l?A?q;?YL-?Z?]E\?A7fOH ?c<ԾS8?7?=Tf׽ "?="?`㥾7-"?B:F#ʒB?1`y?PžM# ?U׽L|;?"߂/\? ?@о࿒{Oi#?_GK,.?L?Uxl>`t܋?[剾?DXy???_?$Ђ?Qj? +?JFD%?)w 5?5ھ%?>?+?1v?\ ?QC+P?/e_>ҾL(?,i1 +e?Nj?T1?f[?4p'־/h=l?Os/9?8ؿ`?CQN^?0^z?@Y=r H,2M2?W=l?$8?W9vgpZ ?O^3?=;?8?Bٍ?>Ⱦ??\?bp?C?;}F?8?h2?A?6#"?&qj?SN?b?l?g?fdF=U !*5WE?f"o??ꪽ?ĿCC?K#?=(gC?a| ?2/?9Wzk?5H@;/Oؾ */L?S27.?K4?R21־&?&RP?TH.?W}?e?/8ꃾb?R?A?(`;?Qz???ԾF? 2\迎#6yjDj?y?U +@E?C"7麾>?0#?ڣ?^ ?^7L@?BοCr&?Pоq&?=v> S&O?U?At?pWo;?1_Gt(p;San?b ޿U +?Kzv(S&}N:w?JURxKr?EŸ;?1?<žDl?9?Kr9hG3T?U0?R2?粗?`>qeQf?_{byIn?0]?F ?2V-ѾM{?ܦ?Y8?8>;L,a.0&L?%+>Y ?9+㕾R¾L|4?99p?XXQ=[@*1?[ߐ'βg8T?'?Em{W?]TԾ"?Y ?V8?V?[[Sk?1,2\?A?1chI&Ț?pb#?TvH?lGϽ?^r?D"?W.(ٿ_?c?Ez?P?N{s<El?f㿗WNA +&?Q>owA5Ҿ?WH?Z2f|&?Ho?L?r?âfOݾP꨽Z@??N|eğ?F?Lc?1.*Ns\1?6?B]?v~ K?!a?>?=?J:B??BAb?;nM?4ta;?@X?};햿ۿv~B;?RYՏ?I߾gƿ}?We*N`j?֟⾑?օ ?G`q +b?Ny?izx>¿8_mjվZ?A?C3(@?JL?T?KAC?4?ז?I?K?l?Lサᙞ?ؽ?;ua4?CA!Iߋ?m:ƿ~G&b\)?kF?9۾!GҾNڿ?U2*a?"ni? 8=?K/u?{5޾Pr%?dh?@IIj?3AE???9+!J?3?O+3?"?!F?ZN?C%? 7㾑Ud?[?2(Tf?)0C?, +;x+24K V8z?*?Oܾ?_5e?5˾B? Eep??E@?85?ƿ aV>XHa?SԾM,?Css_yO?r+e?/`?OF?S41?C%ԽT>?qҾ?t4lſ4M?3x?Ejc%* ?u?>?<&1[?AS1n XC@W?9P(C?Oa6>?,Sݾ?6aL~>;1?b>Ŀ?P@?dW0P?u?FE?G`-4A?eB ?ob?~ B%?ݾ.?cʾ[}wWp?[# ?Wľ$_?# ps??<6l!A5hNpͯUT?^K?V[??,j":1?&?M1?Om4˽QZHB}[?Mf WP?8-{ =ξ࿒uC?<1ʾ}yߜ?E@׾|K,z>徢( ?QlT?4>h0&^2!F'l ǾJ2?0`3 ?羟?\a3q?Xtc>ાzտ*sTJQ?\ЦO?8(l#<P(L(&ٿF*u?P>:?7ཀྵN ?E3ڿh?:ݙ\ԭ?,޿*?7ƾ_?9?I[@?7%ܾ)V?}辿8?h!-zu5vs?"?=0&Y31?MV\?oHB?YH_@?6wܾnol?D<@i@B΀?+O?T⿕?aZ?J'ȿF?I!Ľ?h8?b,EAIх?j_?F*j?A?C=˾4h?((ҼmV~?"W]C?E?Ө?Oq?$ +x,Wdzv?+fھ)Ix.?Z?4o'q?DD?^U^?R5< ?]&XrTc?Q2?ASI?El-"C?62}־Dп!־𿒶/[?PbjO@q?b"!4AGSlu?? ?<(?kL0]?77_?hے?;ھphƾ:ꩿڣ?K*?IU=oeCkľ 6?2}l2e_?)QD?¾Bl?nĿ?@D9z?u5ۿ?$4?*A?%.3D_bB ?'G?,¾!?UAXܿ,o6M྄S뿒z<m?O*q6̽wh>!T6"Jjшd\F?+jD6Ͽx +9>'BUA?ICZɾ5u?"*鈿<|?4p # z ?&v?|1?<?JE$`~ ?:a1옾ſV1.-(?G򼎊P? +#O? +@Q&?,qd^UѿywW.BT|@JN?E0?j].?柲V?@j|cSz9?`lg?De?j-??uF9ʾW,Ϻd?fI*?8jG?FR +?UB?[4D> 2]fj?S9?FO29?4?S6?FpITȾ?9Vb2?I ?,Y?.`j$?H>?;w%?r1|?G?J.?DI^?B?Ҿ3 ^bhv?Tt޿t?F\*?;?NS轿? hl?AcO?~H? ؿ^ľw/: +J?P + ?Z?Mҿ@4Gn羝쾏.z?Y?料?fݷ??u?BϤ`?P=?G?B(?I[ ?cؾX +?PN?\?e?$?<_ؿ2Ҿ4a?>~Ww?IR{tJ侫?a0?/ ?6|:d~?☊>?=!]6?cFS ?{?7~`?gƿ??P?>EA@7?w7a?νLL\g6c">??7Z`?J?f+?,(Ͼش?Q-~!t?ժ? {>.>ߩd?H]x #Qſ量>ކ?"- ?('@?T?:_*v?_qm5^{b?M?O쓾vݠٿ(>'AοKgQȋR@*/+(?[ ?8k: .?BЪ?O`?4C?+,?>?eD6B?= ?#ZvY&?8gI?T??ZO?<?u֬HA?FWO?o\?JC>n?7n"_?Iv?:1?Y?#?A"|]l9i?h?FA$@>n.?_*?F쓽mo듾5vH}O?~#?8"?HbQN?VL\?McNhX a!JV%.?c!tw?S?<:?^fE־M`?r C4v̾Bx?L(M?-H俥BB?c:[2%&?AРI?zq/?FcU?+8(?,)GX?J ??AԾخѽwȜg +CY+4H?6?=t?NC ,$5?Pf2>$?R2?sM>8ڸE?`qJ?YTH7Gf](v?B$Asu?>>"Z?hp?ym@?o? pg ?p8Pt?D\bqt9?E?Y?O߿b?P9?X%?=`)ܾhF!׾W^`9nݾ|?9M4w?@%?E ;?<48Z?[:A?;@C?Hw9V?X?Nn?;߾EdzF??X?>h?̿?J,J%?Q< T t?QS?M?EEBȿ&?A;?8`z?[>a[?( |(6$?4{n +?O?"ۙ?Y;&i}?!W\?Z?I" ?%*w3Eѽ;\z!ss].C¾E`߄ +8j?4Zt㘾)Q?D[?X*1ʶ+H?[5PR?*+"޾m3rV?*~hvkd1X_Pl?Xm:y>7y?QD|Vľ^:B?[OHԾ?][?sthmS}YY;6g7\]0؊>J?gK?ZҺ?Q8?IO+?Ѿ/ ׀?.lF|HǼx?^^qt)?:d羁s<$`l>aL?7{Q̘?4?ZN?K꿜Lv5?A3yJa?Y_f?[.SAzツ ?F?U}?I?w?5b꾯_h`1s?B?,(???&~0?(X?'V˾ ?+@Mp]?G2?^?k +iD?Ǿ6?J?0?9]N1?r{zaNR2M%w[?*>?Dn?ex)m;w + `o\?H?U\v࿎ +,coO?n?p"z?=?T ?T#5/в޾.)G`:H?Lu/^?q(R?\R?n?I_?NB`?@:?a?Ye +?;?/OX'G?<4?OILY{?K?Ild:?IA?Q[$?K-l?|C?5iֿKۮbϐ?dJx@ʿ~F?*(i}?0t3IV?=M{࿝˾5Cȿ?@X ?:Iwgٽx?O?s?S?<ڽ񢿥f??7???FX?V]?ty?6a&ξn90 +"ɾNCZN?'s̾TnK?澪"?XҐ6?97?Sƿ;io?RJ?־w +|?6g3? v? k?CC3R?M?3l̿D?B~dn޿O.lh"ʛ?V?P>fBK&!,7,?BMz:?aW?8=Y:=(T "¥V/c?\1jW?@x0?۹?-ֲ?7R&7?FV7v{5,4?Q6?E"9\?XE?5鿘E??+z>^s?+?e)ia9> C.?G?bF^UHt*ӽ?GU..F?iٽ1,~?/*ڣ?AR ?y4?:]3?A?Qy?^%?b-ۉ\bl3p1?Yio(u?N?tL?a&T?Aq??Cv?6`?I?,Z|0?'Bϼݝ??6!@O?Tn? +?:ȿ~ T;?:Y?,YhYݡ?+Q"M?H|?HF8?nJ^8??H~K?H~?,a!?`6?7?OyB r9en?9޾"$9?蒿>=?S-k?Y(AB@:ѽƚؿF?H氾cȯ?]S`7?9RB0Tyw)E#??Ex~?@?ȾԽCϸ?-?D?Q&?8Y\KF?+ ?'dRwzYjܿ,wXXμI࿚vCYݼ?a?;AoQ(?7º?<|?deܾ2Ҿو?/D?9@?O?6?D'@?GV8?Cu?%Ռ?Er??~4?]"ƾҾI += ?>r?kIBcDvAmgR? +?Ad?R?:n:?U?T3LqE|s)x?UR`>?1^?hSs?;9'?6I m?\n>f?T?ýL^?գPAԇA!/?//?]Y@BH?:ԁ??e袾o?+RsFGmU?<4!Uvw)q1k +4?6bnr̙?\?8W?\v +?0Ps?':*ʾ$?4,?ND?[Z6J?`þ#g?0D?Wl?m?(?i?Y þ`O?=9b?&TS$??.?H?-4n?ac?L|?)?R T?q?9xDGm؍V?OO?%|?LᴿpL8kޠREC?!н?J@dA@>Q?4?!Cњ۽5fd?*tu@K?OQ?B;?NVݾb ?Yi?@ֽkվ9?4w.J@?B;o$쿘g??:?[ſmPg?:?GϾ`^ȿ#?: -Hvȃƾ-h?G?G"ʾA uuw̥0&ܿښ? q?S?H߂?Bʼn̐VXj5c6?Lľ- sŐ%(١?#t?5?9Sެ???}`v)2n?dr!8ƾ&b?K@>2?6t(~U?e?58h݌?4B*J׾g=D?!AJy0xf{ ț!=?#?mw?16?j?;^?^ v??~?./?2tjA?04/rg6m?%↽dXz?J1AI־ۋo,"2?We\nRyW?U'6?@-ZR +:%ξ.#"?üʭ?*&8?O?KrV>X:K>ľF>pdz2/i|jvmV"?GkL>??O.?0e?Kv=_$?N?=$&?0ÓB?L4 ޶{\ffBD?[[?I?`2@4XUqw?w2PyP?3H@&??W?Ffɿֶ?A$?0?6P=4@?Ͼ?H$?SȐ?,A}6D?%1D?5/?bJ?ܾ{9ڿ]>B@?|ľɷϿHa?FоĆ+'\V4&'_/=?,:ȿbAR?;~?-?1 ]P?$yBz2Bd??7?8zW_Q?R>?(Ѽ"?D?@?r?KUȾ!^?E_,1?@{l?մ`Nl?h?ɸ?/`,X8PѾzДͿ ?!h W(#\?I0ᾗ9L?%6i?69k5;r@W@?m``-pvtB,L?DRԾI?Qɳ?:ܾՆw?꺾?1"?B~  +d?9ΊA??=|??JX31~?EΜF???0hW?0*?$(LOV>,?B?ٿ??. ?CǿO?:Pxҭn?SF?2›9o?(h?Trrw(ز}?2t)lc?0 +?? ?B&?Th?К?ρBk>? +?+f|sb˾??]?Q ..?A??ev?6n?xFcӿCqᾀhl~?1Y?6w?XLx?"?_?()0?M?9Ll?(hpML4tH ,T?[n?TjAY;j?G?U??a?Y +Ui'Am?P/#4?@~?-۾澙j?;2h???Hˊy?aw?Zp f?(?\?F07&QYr@???Ssӽ-P`I?V%;?SGO?:BDd}>owj%?MؾUR߾&;'??_̾WÉ?Vh?gL?76>Gؾ?ޤqi?L`?R\k?Lh{?E<}e-?k?2N?}4߾?I?3|oZݽ?J?~4?0? 7?O Ծ^2?KFEm?Sr?]5?F}?PA?IA2$>~x?.5?brf?侃qdRz ?):ƾZ?IŒC:ii?Ct}dV",W?F掾?^:C?b?FBK>?gҾj?퟼?2?8hA8AK?Č??s?1FH?0 v꿥׿?FX9+?P1?'?)?QW ,?'B?Ev^?6'q?/?֨?PmO?5?'Us?b?C쾅7'cǾL?IF ~?/a8?^Z?:haNC?;V꾺?a|X?QJ? ?.|?fU?7PL?mW"zsV/[,D!?dv?J?\y6?A'5Hg?uEp T?m$?:?N[?8%?Z?Vc?C7*?3ܾaP3?SP?@E`#%krf8Z>yt?S5-L?R=Q$3Kk?=+>Hž?/yT?ۿ0J?S?Y?>X?+G_?J?YhBx>>&??I?CKD+?E?=ht=C[?)"6%ؾW{?(d松#'Nt~?H o\0?3\ξ~ !??dB6C?z@8?Q7?Gsv?C5U e?/y?NK?D5?6??H?V&8f[vW^.^?0?3-G!-98(-?BƾS?d>C?/?x?#? FGxV%x?$?bYw?R?h\?7?)ZN?H?U +?S~Mn?;߾W Kn?D ̾?,ھ`?Hؾ<ž)op:NtQc^i +?:?3d?/辿 weD*<<@?I?TԆ$t?Rq^|f?;Z?Jh4Ž x?2>#X?7?Es??[:ĸOl?Yh?[?Q?W&?@EҾɁ?dn?1v?L^8vI?u̿!?72ο?bYTOdN?SPG+?:Y?(նC|[QN?pM? +~yX?$Vu?atD?!?VK,hF{ Ǽ??NQRPKnv6b?M73?>?SS X<>ڿ[$49??)TƋL?THoN۾@|?Y?~̾&v?Kjx +@oM>FܾSL?6D\]SGFogJ?>1*?h ?1TϿQG +$?4V툾w.?i??I%6F?,?I?/ߘ~0v-I?>%G.?5N??,0N?7!? *?9cx +?'d?G`KND-%ȩ`eM?8OԿ(!UO?*l??T?:t˿,~׿`x6'?ARn3JUN?g_F?, ???-8?<-?'hܖ?@?BP?*W{?BA?jm ?f u?k(hZ\`ڏ=%% ?O  ?DiiFw?32R?5nھuc?Rep.\u?S '?5u?nu?g8a4־h?C/\i3z?81վTܽ&t A ?3?- ?<+?)?O`$߿!W ?xʾk:??7.?9 O"񪾕-Ծ +?5^z?Bo7vx?Tn?X?j??۾_?3>rgd?P8?Hz?4??Z2?A:¾0lD3"?7!?O tc?¿)?;!.U4z?l42,do$ٰ?KԾ:E?3$qʾ8xE?!?2=?]9 5#s?ZJZܽ@S?0@~?6`?ῒ%?.NƾKn?B#?JnN?\͞#ӄ?1?50Vðv ?N(fL?ཚ6?)i?Ra?!ͤ!ξW`?/ +?*?)9;O?Ehѽ*?=e4"?9/?^?E.0?oD?%ž6.?I?[N%?e?[%:?-% ?H =?9Lw?EQ?m(-꾁Ե/?q,#?oh6?ox?d?<?dР?^?3Ӿj'H?Q@sf?6h?[nRȾ6?3H ?Zݿ?# +zs?6/%A?,uሂ?K&R}M?9 jF进`u?aԿ?D]S¾*;n6;н"?WB?T +ktǚ}8 ;Ǡ??≴ʏ&ZDmS |8?p?Mp?ƽཷ'O{^?2?D!d?G?\?H?L?h?Q:a?="?BB?b?XZu?,5g?Aͨ?' ?%`{4ʦ俚!/?2?ܧeȋ?$񙾍?3f㿓<6.?-ksk?22nZIJ?:?4'Sy(?5(E ?]?D,񊾛:?D}x?mM"R? ?Vm?ޟ[y??͘-L?dK Z8,?IH|-L?Z +2PtsZm迍#= 鿗l`I?c?=6y̾Xz?Z9zɾ:ᅪص?dt?ciq?[?c5?8p?5?߰@NB.6)]?"?98?c#???R?]$?P?<(?QX?1JH?EX!Nb?J$?1T?M?AjB$,aorɜ+i?8']?9| A?J,]T(ݘ⿎=e?Vdlj:?<;aM>?޾U A)&-?G_xf?[q1?Qܡ?B.%c?>̱Ie? -?5ラ[>?b9OJ]X ?!?5O?S_O?@?Jžf庾>?)>2?=d?;\Ao?I&@?$-}$?2G?GG?$RqxH?)4?62&-%1?Ih~kU?fnn>b?4"?E`45Wn?R!E8?+?A;?Ͼ?`Vpp{.h?T?V<0.P&|fDvS?MT3\S?L⿂ k,E4?=J?Mb?Nӽ_Ҿk ?Q&w[̮hEa q?ei?7?MH?R?Jn +۾(2?cN?>z $?,෾IicERB?bmF1?D%?J-+?ufC?gey?3LDF9!?(?Aˢd.x̬:l!?0@ѡ?"yW?]8(M ?E?"2?MCz,1c?AL?ID~?Bqx?Bz?/y a@>߿Rs?,󢾑(?9U>c̾Q4?>s ?O)H#?S{y8h+h?)pɨL??7uU%׿?lV?6J?Rn?c^bȾ:Mi?=&ݖ¾ + +]X + &?2⿚Z0@r?>ߞ?Q!?3Y?Zw:?+0?H _'?Suؾr u?j?BBWzr(Z?7l?oz$:bDDO*y?b?l c?]?E,?B_]?<4?\2\z,2оҿ48h?,F?LH?U A?744)Vx,x??Ǜ5b&Yj !Oe?G?G׿I)+?]B?:?A>UL?JmO^?JZ?_[Mؿ߽`?% 3E?;0?>R&Vؾp⿛uw?(Ԡ?\~n?M޽( [_ +þFOԒOJQ@ U?,'  >xP=g8ۥ?<!k rW3оF?9&?Av?(GN?ް?mɾj6d6nMnts?kA3?& @o?oѾ1^.l?Qݍ?+<8SؽR? ++?n9?R%"?S퐾I>D$"־"?}#>:?A7k?),~俠hsX?%??ƾo՝?/vNv]0@t?'??,R}5-?j?6?4(?Nr?E=k}?ZF?(?>ᾁ8?9z?.0J'?81N?C!? @H?jR?)Z1"?%.v?5L&?MT߾r?`2Ⱦ12cC679Y;a>l?S0_?"?\?K4D?j8?H*툽{d2xv?ؾG?R/?ZTP?+$붾2M?29,ž?0ZCǾ! ΍p~$>4lVyt?<-=?!TR?8?V_o?W?S1?)?n??xQĽkrY8ҿw?=1Oj?]j[4俇Ԓ7e?0{?fE?[ȩ|t[Z h ? `^"ga?V ~$\۽B?LE?1X(v{?MX?X"d$=Lp? +u&?Mv?7.?R?9$ rDBN?H3?|XA?1,~T?;j\̡?)οzl?JO<ľG濓>?VXy=BB?:?9jÐ?*?"]`J5?@A8?Dh쾶ɾ{ᅴ)?TS|nj?/ ?2վK?c?.lJ?(Dľh?V?K<?-L?Y?0r?51$H?c?F ?: 3?/ ^쿓{?I̿N:?8侀jWgr2e {?x^)f2Wn?Hb?G^\0=?9z/a#jxA? nzʾdW?N?I?Zb?ZNdi_].?O;|}.?OL)?: Y?]-8$?+x?Nd?6c`Ѿ.s?Ql?#0L-9IX0ډ6,?(ez/?>?"]&?W???T)s->?'y?DEվ)睾4r?9??6?g?(rN삾裾sq.?o0d?F,Y%n~G4W,C?ZԾq$?D'ZItZhULNt|z?Ѿ:@?Ge?E?7FB?,ͽ5b?XM!?J,{ +ѝ'fֆPt;z??L.0L?Bn)?NA>?BD?%"??8̰?dʿZf> +ؾH^c=F?Fv?9å?ѿ+(z$_rNC@C?EN?)??#ο?^?nP?A "`q$?Ca?$`M4KUSf?7[4f,쥾޻|ڸ?B`.1?Կ;(=rG.?nf̽tl󚜾OYj?cffsLdǣ+s%j?4r@hW3M +?_y$̿?YȽ???FC5G2Pސ8G +6?}?&C%^elp6=Ꞿx>x\N꾠?Be?D}?/c .忝?/U>_8>ZrʾsVȿEbxk?^ͿCrJj`?S<0?澱 ?9hEo?0 k?9z?*J|?!hN?7`6ڿ?<l@D53?X)?Vz?U?H{pG?A׊;㿭a?>?E?>,?D?U ?YX?9?)㰾!?*ҳ2J+?E?%?GϬ&u@6?2L$?>|?&?!` )-?I1t?]8c?њ?[~Y?&{E?v?/ڼ?{?YS>?aSQ?9/?3JtfV?E^従^ξ`?IkY4?S"܎^ LTp<0NM¾7s?%X?4 ?Us?Z޾(@?o??GZ?K`4{O־ 5®h1?2Խl?JkB0?i,Z?#?6ҹ?Yf@?!j?(; ?I*?9>?*_q?4e?CQd&ƾu??@| ?6(Ye?^.?9޾?,fN?7=?.?*g?Eqӿ[ȿb?Cھ+? @1?V@?AG&?0i?Hi^?8TW?UH?j+?9?c?;?* ʾe UqB̾ub?8ھ?)F&:E?_? 6?A?6Z]Ř?;|?Odn@w?,ҽ?w?Ap%% #?.&K?ZH?6?@AտTyg {zV?+J6都RvVM~&j?@k7?Q?X?n,Z4?V1S}9N?_`R?@kx^hʺ?cp?Qb?<Կ20)@To?7(<𾌏@?`̌?=x^S.1.?m쿾9Rú?+ W^_at[Ľ>CI?6W?Ǿe C?M?G7>?.^ nfvHW?EP(??CX׎N?z?7f x?N??G?%7* 7]?B*fa?>?5w⾐e?NP'?fi,K{?,'4?Ȋ𝿕ٰ?k?9He?4m?]?H#g쾄¾p4@?G?8`?2?=c*>o?L(¾L?Pz??XN8ֿB?9 Z?G%,Cw?,uZ'i?$iܾߤwLy?42?B5>3 <pJi?Yf?4Ͼ poVN?OfZYxJZ}yD?,t?2jr?DN?'p4?'*?NjUF?98?n|ľ0Q?ia\HϋS?_p;Uπ^A=|už@{?S;>оٸ?Zz }?8FZV"?WJ҇fþBu?Cxv?E?h]?Lt(?Ȃi?|OD?D<?Kx'yRCdZQk?󗲾=?\ ?9 O[?Q^??GavM2?$j>O?Z,vPʾ10?L`پԾCn?vϾIΝ?2x?Dp?E6Nwaо9 ?+8?Z:n3T?*V?Asv֡?){?'俿`B??B̬>*??N=˾Xо?.Dq?$7p?K5i?K?'4_L*V?N.;{?@`;a˾R>?6?A?@_3 ¼9W$?#q%οSi?25B?lFҿ)?@?J_H??u|?0X?&ӆU(u?UXU@ؿ?O3*>(?Im?X +?IBvǐ>\%+Gt~B]?/r?;}l?H⾇'?/[ V\?[?DV?"E?E鿲?FeZ`r}??zA?S? G? ++.?L'^?ER%š$[Nž.v?n?1?[R8`m?iq?1y.u\IH?' ?ht?6n{ +:`${-2?D&k2\b2~d?10|?\lZ?iB?+D0?FVy?EbWm*d?ET⼾q=?Q?0d?In9hg1 Vc_?8Oʿi>ο#?%"hHOA?e;(A>3`?+?;q?ذO|\f/&x?J6P?M#^(?6{?#?BKfh>ʱ7=P#8"ʽi0?gm?PP*?`MR?4?Y.y?!dþт?2.ؾEm6=?D@_?G?\ϞlslJTi?H^?!7$:V`o:5澳'?#g?`pT+;B?8?Nk,V2?㾢?3܏$?Ba?7 +^J7\!?PdW#h_I;Ix ?.~?+d*?>fo$`fv?hg5E?'h?'TrC?%/q%(#y ?>+?93̾Xo}\1;?^?~?G ?RR-I2@p?\?BM2?+ 3 ۿԾ<?+E?SyL?L4@?F̿¾|,?oH?9?۸?YU?+ӾoV ? .8?'?K?GT?g5(?$?E5B.?w:Z?>&7uL<)??DDnk?q|?6 ?4vQY?&?&V?9?:3|\? U?H}z5V;濕FD??FH?fu?I VV+ b?b?Z?alNsQg?Io>J"?P7?/??k+Y?VMпX'Me ?F?vнl?Bоfs?\fF)n2%?5?-7P?/\5?.wEER?9V_) }?I/??$\ԾV)i?I ȾBrxܻ?+޾ta?ބk ?,?@?A1f?*?I.??G{R4庾xX7:?L8;.c\?Lj#?mٽ8i?@?Jҹ?+`1s=?Ѿ5 +I=5s|FO?AG?jޱy{@Q?!X?.(F^?H~?(?%?S,?x;||Jn?3I?#;6̒?[ _yU?8P?Ujg˽?E^$.zEh?Sܾt#OAƴyyI?[⿑nywtNog$⾮Q?x7?`r?C~c?FTl?V%?O?$^^?84mg???{kq^Yj?R? (?@ü=1[6TR4?[6 xоMLW ?>|T?;am~B?OdV@?--?D(?LQ §Zb,?.ƿ?$Kd?$ؾpP0C??[?=.!?^d#?AC?,骾fD_D?۬AXW?S?"? `[?+F?G'?8~? +?Civt?Neþl?AԾ>?;Tok羈?7|?1æ Ӿ)TW¾Gd?C y= ?2>?,?=T]?V&¿?f`?^?B+Hl4`4?!T??C b?=l?6{᳾O?)H?60]0?H>?:?:ѿ*?܅ǾYpM.@?#}X? ?;f?<3u1?[w?5&:?>?+W?щR?ƿ-L?AoX?ߓ?:àsRBc?uxf= [?ً͢x?,Y󲽀4mIyfŽ4? ?aQ?Y?jy?f0 wy=[?J|M@>˼6Y?]oZ?T).?h7 LG?Q +&K?F?|I𿇄\E?voI!;RPxT[?Dֿ[?WЗ?c?, +(JF ?9y?J?DuB ZS?Hy?LXc#?EL$;˾T?VQBQ/?>n~?Iʳ?Gx*?A0?Q%B|ҿx;s?˩eB,F}?7̿?_J?X?E;S8/?8O[,~?G?&k)Pz)X|ncإ?i`?#DЪiB??;1?;'m?K6?Kf?'?Lomt?,?Xt?Ta.5UP?+?V?:?:ܾJ?P|?R&6i?>7~Tn\?|:<8?@s8x)mBӾy?@0Nt譆?Cc@qľg8&mu+Fˀ?N螾G +%0?a(]?y=꿝,&?J2Pcz?@fN=\J.{?`+&ξ|'ArRtF >Y?E־?8$?B:?,?6/Fl?[d?eU? 6NZ:gd?S&?I?P?DCo? P?K:C>3&x?GG?{??&t濙Wm?@U?@\2Kf?aD?.r(v?N?jҾkmξ2[~?No?4?4CQA)e?\4i?1{ |?K[I?Xy1 b?,k?%R?Tlھ?;?8f@?T%L?ɲ$n?6?F,9H?f ?8Fx8oڲe?A! )K_OWF@t?kS?+ƾƾvK:?>4 ?ZKO>E?9n?@n`?5J,?C>?W?5x?3cfn 69+>b>.T*@ ++:$>?XԾD?+15[F?꾤 +N7@?O?L?C8Ou?2ò fEGHT޿տC?aDUp??/"V?L?*PL?)CaCz?B!Bƌ+ȾQ=|د?Ah?&D f?gAt?FKv? ?E??K8vf>2H_2%p27?3?fdT?>?Zs??M?V>?ݨ?Ow?0;[(}?w?$?Oj?8i)2:-?̴^C\?C'rv?E2!?4۪?(g?0<ƾC5?(n8}??T?n@?%[gBXLڙ?BE ?$?#Q3?-?S?9P@f?> +=?$Z?,9VΪ>0?&h?2-B?k <&X?'tKk?XWM4?M?B>??4꿖?I#|-|?/y^_Bh Cea?T|?Rr?P`?Z?ʾ/>My]?E\d?KM;X?cоl?JN?FgQ?HFchuK?@޾N?*?F}ѾG?4:$ ?KbJ? ??.?q; n??'6x?-@S"0? +4eT?,?/@4.d?݊$?Ei?1?16CCs@39*?2{*?7Q?N| +#?ws<2h?t[V??ۆ?a"9`?_FVz?"|?7?:?W;?:*5@?).2?gB?/P`y?>@; -?W?Qo-W?nҾ0꿑?Un?N&?7s??IĐwҿҳA(>?I$оv9>ړIff?D?,%j,?"(?J9ʾqi@?B ?YFwV~쾯?,οՐG/L?T1q& +?J?)O?)P|~?/ ??)?NJ?G 6ھUlZvʾм?7cKXX@?^j?Wx??:?. ?!ɂ?+ԾZ? YR龏(?!e4?1_n?-@9B?!? +츾Ӿ),??oྈ?7Z?8Eu(za}?![?T¾? +p$?0Rq>il??G)??wG?7Ⱥ?;u?!f?L|^ ?#Aa??R>㿣b?'n?H?>5?^]?Z꘿x?fH ?eپqQ5?Fgվ?A0)MDܿ?hY?S^#E!t?i?cʞ- Uk?,6?jbt><ڬ"ƿCI ?8/L"eJt;?mK?Q?b?1b?T ?-V?MT?:CW{K?-^I?1RF?;j?,?T!n[?0"??!9?9c?-8?.$?M,\iGA@>I@M @C?0F?RPX{!."-b?,%?U +?K?Sj?r?w pg?"ȾvF?&N{n?F$d?P?:H??:?!i?!?P;g?&I[?XS@[K'R6Oɥ[?0yDN>0?="B01?_?2kľe m%?odM?;n{Z8n?/:?M?>?B=?/4?!2&?/???H[J&9.?:^?YI;>Їd?>?Fɾ`DоM!;zpп?.D7ĺ?YCu7?\`cξT_H?ݹ8?tw?C~4(??T?Tl- ٿL9?Z{n|s;#+?}t9?YX e?NDν򿉻l%N? q9y?Pt&_?=?u?D?"->D? + G.?d 2qI?R 4?V?U뾊/6`ľTK?Wbn?;nй^O?bd^鿙?8(?JF?|j%?@6$[!?5T5[?9k%ILM>?Jٿ#?!߾UI7I@??:#B7CpA?WEx=?OZ?<⣾egLmV?sݾ#0?[n?:A@?=V)?XOR}?&>uLz?D4?PK}?ru?BҾM??Pn&8?3L昿+2O?I!~?D: ?AX˾K[C?%˾ͦG&A?@V}U?g涿3?fi;?x?S_qI@?{`"?Ul?a?Z;?z^>uaB6?S ?8׽?R,Z?6B?jnwj.?mi7^?B?;ب?@|?/?씈^P?WU?>?NŨ@(~?#ؿ} !?MU?]?b`?Eh?V9g?++Ȝ{??VpB?lGp?b?&|?Y0??l?J? E?:?.?ƾ?:?Jgd?IkB=e?d?B1?9=޿^7о1?7CjW@?<r?:yM?=CNNB2DK B1?$o?FK?9DB?EɾB.S?# /\_?^騿mch Pn-ɻ>UA2?%a?2~?_?c% )?I]??J?O8?1?7?A:zߺ?6l\[B?<?%Ē?GR?f?AI'etC?Vn?Lgʾe@ܿX?WL?9㾊7@?6l ?<|<@;qV?V7?!K%N? ?H*%?,8?,wWlD?7$mý~?ڛt0???Xо#n}?Xvl ?5ѿ>?`!`,/t?cܽ+X?B ?W.?;R?I|?Vk??J?ODp? [~s?q7D?.>?F(?C,?K?9 +l?O7b󿍢X Կgþ.JD?G?bRp?eW?.?N龘ȿz ?~?31?| ?<<2N?Ik?9FzMJ孾#?fjD?2޿u?L9SJ8?@?N>ƾ0?B⾖k<`.++6??(97?k"?'7Ծ@?Q0ҿ?.\Z@p?g?&? +:k?c ?͓a"h?'JҾIEW&?)L#ž8$޾C)fr,辬 ғ"?FH"4?)|$?bi?] KN>?"q?ZA?Vp?Uz?,Cx?1??&ξ?: +1?)Yg뿚 ?+)?*5?-˾A?u?o?(?߾?ٯ?J3?"?ك˔>)?Z?V?P 6i ?7~?8)?G^?T(4`Z?MtBq>?翊??fރ?UfξF`?+ؾ?f1k?)|?L ᅳO??2p?"'(=r?2~?.?9?LZ?=Qν˺V#a?H/?5+L8?A5?5fiJb6>]=rp?:9?5` V"r_ .?D&qPT ?2־ +տK:?If?:?%.?#Zc?C? T1}>@X?IXi?f/>?k?>?&H?0?D}V`?@??%0?/?=?>G-@?t?C*0#?WW?7?2p?^^> oD?90Zvƣ?.L?@S#*?D2R?<ý? Bb?I\q8B>3:X???A??5%@U9?Va|Ѣ"?Fd󿎺ӿt?2 ?"?/e?O?h?R? f6@q?n.9?#̾,Pg]3QEb*` ?[??Q? sX?*Ĝ?$H^H?bq>߅r?%qvҷ [0m??XL<>rp?_k}JAh{?/7?=?h&8㒿@?B?'z?F?V?AHI???Q?2?d?_d?1Wڿ8`?<@ +Ma?.!tu{PkӨ?T jPϾ?F9xѽξ?k?J蕾d]|5,e>єV?+rjvB?:/2ᾨQ?4]?V?5v? j?耂?96?B@]H(Q?0dB?O쿈?wb< J.0? x Oy.β$(HJ?b?C?9c6?GS?k .u?WT*gNb"?O/x?g,?+'?8}?._?릾?Tx?M5j?Rbu?;;㾐? Pܳ,9"?(}?>?>پU?B?|?~*Ѿeпx??2 +`3?? V?_9|=Mew*y1Pr?2?i]?嚴? +?2?,G2վI b\UɶtPβ?(HЮu?1VU˿}x?tk(U=Pd߾˾]?l?B L?8s?Aӿ?n?* ->?r=`?H}E?Vx?U??axT?bF濄?!Fr?fRYn}?BϿ8QtO{[|^.{?սr?V?D44Rֿ`q״?}S,D,J,R ?!:?7!2+y?^?OpLݾٹ?Axf?ZG2???Vv?@H/?nlGn*p?H??@'?Hv?^]L ?5追z?T?E?7c依=?.8}sƽ4,??9t\?fuma??!:c?<[+s?8)ZYÀ?;hh??Y?CH*?-?5̦b?)2ĩ?:RM5ek{$lپ0˾uC?7?3_ѾZ?N@y?19%?? b?1U?Q@?>L,?8(xz;?-ǘq?Pu'?4r?eמ<}~俞K?T:?5?=Q?%'?bp?`4+)?ިp12x𾍭T:?6 6?e&RE?6c$y?/3?N8^(?&٤?2?O񽺔?U?SнT?KsϾ hC}y?5?Q{P-iп=UG?KH?߃?P.?]9?Lچ?}?S10?UB?Tb` ?EP@Tl"?P>kϾtq >?'6?.b?/h`$,X ?gJG?6^?T ?uyt?i? M?Bev??zP?=$O^aa|sᅯ:ؾap8J? Sʾq?;_^4?*Q5[?2Nl?0 ľrt?݈?(?D@)?"쿙E d?ئ\SBP?7о;H4 ?eа?.heϮhܹ?OΆ?3 +?=I򾒝$E?9*?V?as?W?B1?+l?X|Sʾu?T!dPP ?5?t?b?VQH%CU( N'JC>Pi^9 ߸?S?4tgؿܾyT҆?9ĺ?;B?16?꾆澚8ؾDe??i>>?;]۾'?4۷?-R ξBm|H?>ԾW.?+a?-wѾNB?B`?aTlྠ?8O Fx?%2?68:^yR?1~?%^ ?*?=e?82q濃'N4^'n?HVlLP?͖= )?XwMH4TXtqҿ?Ozrv`ۘ?> ?)|^m?Ҭ5?Lv? &>?d ?@R?J.??O/?,bپ1?DQ~?;G?"TExEt,uTup\'L"1?)R?7?0A[?A+?Q*?85W?1?@C?Ů?3+?Iɼ) +hWȉ-eȿN⾝xÁ?:?Fn??^?>??Eľ?#྄PοU? +?4R0?J?*?{?S׾h0Ծ]26?ؿ'Ҿ?1qӊ?B Vuo>ܘоi/ D?F`r?޹?4]?<~NB(?T*_?A?P?^?r8{?< ?Fb@ ?)"?.iʾSܽ&꿦WGY?B'?w?//?:ڙ?X?7ƾyij?\?7;Ręվib+$^?: KP?@m H?6{>Ծ?חy?A%~>Ӿ`?F(?5cF@뉾1?}ȿ=K>?Ei?aNTeʾ 8 ?HkbE?Zz?<υ?0?/6hlݾ:?JnE?,+?D ?P=?FH ?<(' +?d~ǿaֽ%V??rc?9|B࿈*f?VAD \?7"?5(4?4j;?6$p$%ɋ>)Vkm?H(O9¾3/$8Gǁ?5!%P]1}:.?N?$?8 h?o俎?D?8tz5!?)?L6?'?R?=)\?E̽?Mܸv}dS(Tqbfd⿗F?s?Ev ?XW? ? wP?(1q?!ӾsQ?!Lh? ?|?Gce?h߷y!w?}7-놾x?%5?bs.BO?!:&`?&M>ڌ?4氿V-??z^K?72+Y2w?*y3V'v?5 +h?~ +?5Iho?5HD?c*K?&? .2?5񺾕x2?=nUT?"3?)?v&+?DL\P%3G*?5쾒?;?KҲy?*ԾVÕR?=?ߴ?Y?.?C?+?9 +?r?9?$FލlB?䝿sZ?(ÿ>dk?B ?14ɾ!i&}&ϾoFzD?G?*~T7 +)v?tuͿ)?"lo?V?Ԇn?!?M q?\Mq:>RR6n,?/>z7 + ?q??D?Xx?Օi?7Ky?J3߅!hFVֿ{?Ff?@{?A1?K2\;}u?TP?D?l?'Jzɾ]>L?HͿ*憾 :?Tɹ?/ʿ?9z?3ȿ@v6fp@?s)1? =??GI?UuK1?. ?c<ʿS?E#x?>/Cؾmf?4g?-|@1*D? >o?,?bA6?OAľ[p?4-:?Ab?; I?z(?@ ?h?q̱T?N\'?89$wW-?4?#Xپr ?%7w??Q#R?[j?/n?1l?,"^ _ؽA?>J u8@.?i^ɾ?D>žs]⾎s?3z6ȾE?*>t>E܆!0Fz %ԾYt?#\Ⱦ>(K?2x?:O|l]hVXnI?1.?7I?43+?'Ѐ?00^πpJ?&&>van?!!?Vh?[?7h k%>TQ?63>椾w(?B.d@??Ծw??h9^ 鿋%Pc4Sq?Iql.˿%J?G?^i[?a(?3]̿(Q +y, +?,@? F?V?BK ýP?OS?P8?>")us־Uzfi?@?>[M8v{9?$??1,+ F :?7@?ZLPV~?&?Ke?6J?:w¾%?7G`ھ ^s??;y?9*̄5ʾ3e?m:ިz?"Ø?M?Ih5z?:e? >֮鿞g?5R?ߧXAbA,tA1@?>?7A.?(?9 o?>{? 2<0&?82K>? +?gMT.^Ie?`K־1/?YUµ&~}Zz??7鏿aVԾucǘ ;ԾTtLJ#0?,vBj?9JdY#߾t ?m"?H%S?# +mv?,?D1?D?W(~zld:?! =o?Y 8?aDZHmy?+?U՚??3=?@?"D?>?VܴM@kx?b?5Jy?g?3d?uH;vlZ6maE?S?Oz,"?If$1 dD,?7cKW錾|H???w9?;lb鈿?E@d ??)J͇缾˸>??[=|+?Uh (,l>N?vؙ?@?Q&HT?3]<?6YH??8?${?F.ͿBB4BBA9@? K?.ÁYPWR?7*Ǿ%Pa?3Ǿv?.C(Q?2?2?+.?(HE{9ne쾭f ?E4?3?Y?L?0/ա?>_>Ɉ3T?GU? i/rlr¾gs6þKuY?F?u??Ot?+4?:ph?ܾQپK?ސ2?4?=?,&FQ?G5jf{T,H ?:??8V? ?WF"=՘?<ƽR?TiQLhth;Ŀuپ௿?Xe?0?B4hc!8P?W~xKھh|+Nŵ_[ +\^?m?EN?%˾&/?Ib?!b?>?ab8?X)?I0?8B+?-y$?|+?;*v@vq?@XԾݢ?3>My?.t?<)?0x[?"75?0^([ǿzr?Ծ_x*@?2^ht?v?=F&K 7?YK +>uL?:=j?!cV!?W?g.b;ھEpA +AO8>V?C?*$媾X i?9?; LO򿐆?KBJŜ@?f?>tFhgt?3?J?(AV?85?+|JB ÊBۥBwB6n@N@?q?%"~>_ƿG? N?C?69Ҿe?E2?M^]?!侈?2ggzf0q'Ⱦ'=l?Fmpz?s?;r?0ؾ6?,ɿX?.|Zd?䷿U?"i?tЬBM<}^?BV?JبWy ?ILN=h/6]ھw?%!>( 0??8:$>D?3τR?o>߾s*?+Z?*/?[?vh?>R2&!dD?-*;Ⱦ +'k{4?c]D n%?1Պ?Ec⾎ +P|<Ї\fr?|xYí*< +?7{?Q??jS4ؿF$־M-?:='s3@9R_?Kz?j?' 꿶?2ã?9"'+n͌*{?t? 7aMLLaX?$j?Hྯ[?(,ec?6 ?>~}~R?濭`/?Yp?)?xrB|?-y?-ؿ꿗p?UQ w{?FIlоYZAD>4? @???:T?!-`?$jN؁>?Î?c־ +?{wྊz?-=?E;^?2d z2~S;4kľ%>[vMt ?VYx8%?th?qcV?\ ];K?;T?UZ?Aľ)6?վ?1?H +?#s޾F=$?>d?=?I.yl?g? |?W_Ľsn\>N,LSvؽ?[?N$s?MK}?J?M?$?ZxC?F>?^?Or%J?M"?+6?&??JA\V??꿓 +?{ͿG?EĿy?39?/MHM7 v`:+?nX9?=ٝk??=?'¾?3 D?FlmW?*R7Rq?O澢@?^ݿ?7즾տvSV?[1iQ> "Dq6#?>'?I?np? o?FT`r!$ܾ`ϙ?>>Hȿz8 r᜾=f?2?Fܠ?1CR.fWZb>02p?=?1OX?6?E?0?/㩾?<`?)|??bL&>eǿwN?N+?<(M?ؿi?Kez_?I+*>?A +BK?S4?+?DgY~?2Ͼ?=?Y?C͸f?߾sH ݊T?FZ?w?[)tk'@9? ?Df0? l> @*?BONܿ?4?A ?1?=L?&5Y?j'?Ϋ?O?Vk?r7gFF?SW}̾F?Cw7?h?C^?47PKK>?)ʯ?B4往:?@?<{*?V5Sb8'-PῑH?1iuxJ6bV:`"Χ#$?S=?4P(?(Efsmo?ߟ?&.?L@?.? ޏ???]4Z:%g?;N?FPZ=۾2?;?>q@>~Q?H#F?M_*\l?S`xf@?0 ?^PԿy5?N^?EF Uq?Y;a-+?%?;b8ѢqPT?AY?SfX?q?Aÿhp?$?'+ e'B?Pjjé3?QւԾNJf2?AJ9=.8'?.Y4?L?:b?>q?APĿE?Jɾ!??gMѾ6V+?~#]H?T7?;"CDWkn)?Eqqc##7?E遾?C]?,liD?~(?Hǰ%?醾@Q?1?He蟐1?@1h:y?俘Ћq$?䞾x?-¿4jYVR[^X?6 GJk?D +?L޾pD>?#\?O?K*[A?d?)1e@LO?R۾?B?&)⿖ཱྀ?ž?౳p?,d?B h<ynG?CM,xa= ?N?K=Z)ѓ?˾` +K?>{ȧ?ce?4zȈwD?&函D?h暾q~?78?acy\^.E8]$?Mj?A0;R 񾿩d꿖?a@B?&9?SLZv2޾r<'? .^bȪ?F,?:O?OP!?3q@?>?C=3$ W<?-o/j?E?L ++U߿KwN?;ƾGu?%ʾ???6&Ҿ m`Pv`G޾,? ?m?.?⾂Oy?!?=0o࿤32?U%$?%Ϲ?#̤޾?0?:?+x:§l!R?><??K?S?]?&0;H\%?:r?@0?Pw?2?K??I~?1"Xj?'x6?$Zj?*=?7ܾc]>(?(r?]N6,単i?Wս/\?YO?\+2?(\?C[9ս4yTiԾitJE2 yԺ?/Naܔ?A,?61վ]?QZoZ;#j?4z20Z0?Aܺ?QBTRBBMB +B5j@r?1g͆?1g) ?,|?ah?=`Ҿ܈~/:p?Ŷd#Q?]J5^?!??P?@;? $T?-ӿ??<:\?1ON??.1? mD 1pA??"ӰLҐf?&OHI'j?L:!B?*?Lξ?=OcsƞOIy^{gwb>jQ?7h??)rZ%/? ?=*? 92?@p1Z_٭1d|J}@@?Yx?)tȾ>t x߰?3j@?0o]?.?51?$H f??)vNn?R?fj??j U?P?3?+ľhdʾ?Ts?v2^t?o. +?mj$`?iqÎk ?L?HR-)2!H?K_k>[>-:?)dz?Ѥ}?VB?8[Zq2/+Ѿߞ۾^ݿ(潪I6?`?-Z-}@5з??4-qR5=XV]?XX?/]U|qܬ4` c ?"-?/>?%2=! >"A"(ABPA?c5?8RCϾjΰ?3t_ӿÿ$?Yvfs,?/Z1A:`?I-ʾ)/?.)?28ZjY>j?:;?-?,(?#a%ᅯMJ f1?kYRžWD! +aIyNN忣 NE`@?"o?D~?+辯@r?%;J8? ?P:?غF e2P?I??blо] Pm?٭?OʾY)>}S澭(?7?ˠbؾcھpVǾ쾚㺿? Xiz?܌?`h˾@;K?ʛ0-砾L_??I?Gо1)?,?BTxO??P?h?3ǓGzZ?WD7PӾ 9B`?ȾA +?c ?D̿?#kyĿVM?MξX&Juiо?.1h?f?C? X?h?>F\G ?V`Ńr?!`7hR*>"_D@Ͼ4x?' + V?.3&b255 +ݾ?p ƿZ`?*?8׾??(?>Y??5?NT?;hwi߾WIKо|>?H?J3?ѣ?0tN3'?)?; ~!?о(3?P'"?A@H>7t?&??*T˾[ Yls?8'?Vly?'l/Aq??p?'?P,rMT?0Q㿞M?dF?l?rCL?2O!S?c3;?!nu(?H +;y >4D?Hf?a{?M?=L %?'??Z?6?kn?C<_qEӵ?*,?s>qAuy?) A?4?E :B?A{1??ڽ?8W??R$^0Ƚ?P֍ ?Vo-?p?JE׾44?U^%齲섾\ܽ$!?1ˢA?ꌻ9+?0f𾘦\?~H,? [u?TL`Px?M?V?Cm?&?t??/f? L?&,?5Ծ?j?D?9?sH??F2?88?..?0g?A6i=?ٰ𾇩놾.E_J;n~ ?%޾{ܾ Y9N5R(`?mf>y?C/t?X?3d5#Z6@8??Q71?߯@h@-@~?ÿ?'3&? ?I}R?S BBw?啻?7?7D`?AFl?Qy?ھT?272P?;?A]?`:d?8?+9-?A?(?AɁ[_}%?Ix?E$ny _?"⎽0?&?񚿋?7%Ծ5׸? ?Z?Id>?.z >3(𮿛?!+BeerB޾}?!-?@24?blT?<r??^N |r?\!?J1 +͈}?]:q?QA#?9 :u/?=l?/_?;ο~ª?K־<>;{f?mkolOGCiR3)?Mp?Q.?T7axk0翗|?J?Kxy?;V?崗I^R{jQf=<>Y?ҿ^¾?34?3F1ȹ@?p@77P.?.?SE?ICF+Z7kF%? p#㾽,?A?D +쉿6uC)1f86w? ྔ\U$d +!? ?' As3^T?,PF)t?@f @jABBBCC1'BB+~?"?Sо@j+B|?7?Ӝ(>̾ܳW(xk?- +`?NNHԽՒa?T ?Ynb>R9?N>{,H? @rgʿ?f?ʾ?+-v L9j6-FK ?7Kƿ]??5xۘ?!~E?7?ξ?4Ku?3?!Y^hrg6O?n? HK+?+He(dʽ#Rlt>B#>%{fzKB>սv;J"?.?]L#Z?s?g I>gT?B&ey'edbZؾ⨾aN翈b?`q?]U萾O?ot )8?Xx&s?F^?Q}?')?k#Ϳ6A?R?0@@AnA<@z{?M? +Ⱦmվdi辗<+?=?>(v?7ii?&?A$خՆ?2@C?@?B ?E!?=ȰLK +MMde?+|N?-p|^?ѫaSf ? H?M?? +U>?] +?)?[U?U?ًiB@N?b|B(lX$D>ʊ娦?QdnҾS?(/??8?Ṽ?S?V?p?hHu8?G ?ݰcr$ro2+e̾: ?86D?T_쯾s4!??dAPp?GpOS 1iU?/ ?k `~1+?EȾwEgԿ2Gg쾭gؾHC_61̿R?4?e@|$??>L7E?!?"/?Vu,?)7kޥܿ7EY?k޿ ?9M +W_P?KZ6*Hɾogp ^?/sVN?7 ?@jB?|?N ~>|u/jם?cþZPYþ?er?.?5v?낾yEFizv?T &?-??c?*?&.?o ?G=?is?r)hj?99 "?24?Gz|?1N|`,?W?&>7ػT 8?mu?KL?FL6?rN꾾?g82?G߾Xp[0|S#P5ӾR?> ?6Xv <=?m\ 19^|?dHܾ\ PP8?CH7?:о- 8̾N#L?(hgl׾?灾3\! +2kQ?I??Ѷ?-T??SӁ?z?g9Uƾ@"P?1(FM?۠?N]Qۙ?AǍ ⾯ƾu玿M&>f ?/ExEf?3yտ?0KjƋ? >2;g?Ic? ^Nw?H75?5d,kp?,gK?2Bœ w .z ?R?洂? P*?,J ??%/?Nhv? \_?IO?4ib?# p>`?M?3tE2*T?cP?$俟>X?B?*T? Q/ηx?U?Sd6?=vZ{R?>J?]о bQݮ? {r?"l¾&?*"L?!'??8?D̾9.?%b?H‡?@ +8䬉c0(ͳLdff?%&4x!,0A);?)hC(:3?[4?BV%߈?}Uo$ ?7M+?DU?QtV??YLһ(?D?VҾ'be?9Arlx?CdK?E?GED?!C6/$?Q35/?b;G5?U*?6F΂?ؿϞ>Ҿþ_'An?8Yth?8LT羫`?jX?eKr2?k;&?B&o + >qn??,l?k?ĿO?׿_8?Ҽ?2@txQL|?"O𿓤?'1I?1e}p?70~q5?:b#l.'6I?6?3?2?;bŘ1?$I+?A?7(eڒ?߶!?g<TO_?a?*D?5n?݀Lr?8vVʾ봾l??:k^F ?2_J$trr־?5?0 q?CS?.,׾F`?#?=D}?!g&>޿>?&Ă.++w?5??>?t?TZ?F?Fb.򄰾0USB ?a&?=/n??ݾ{O?*н +LD辄4%?\ ?NGz??kҿSῌɾ3?b$QxTyn_͟:?Gw.?:e2?8濅$SA辱+j?舾Sl?/>?cmϾ`<|}U ?Ht\E?A?b?R'?B?Ur?< |<3?]?>H +?EJξ?("S?hT?)IX?Y ?|? +'%[._gL?(x?B]ٿXdIW\xDzd>Z~3?SľLxs4? X?;b܏?n&oj:bQ,?>??b>?*Ym~@6B@7& ->t?(R?M2d?V1BپHz64 ? :0WKק54%?4V)0?񆾅M?+Re=ֿ?Y~o??J|j,5s?/|?f>+8NE#Ü?%U:??)?gڿ?+@ uN־^?Z??=:+X?"u??=?fԾJe%ؿ?U~?[l? ȏ6Ҿ5 2߿sI??+@?&/6?m?ME:q*>#?٭?HT]@? B>F˾DoH?WZWxԪj*{4^?)z?&{(?{tߺ?y2ξ>Dr?1$?ꨐM?4NnRKQ?KX iоEq?4?Oi?K +?* d*>6?74???/,>{&$K?..բ?܀cМq l5rV?9\1 d\a#?ߍ?Ϗc?֎,p!Kj?'l +?!l;Lоmc?sAK?| |?69>dbL.?&O.3>?=fi?Jo?Ny?t?S~CKC%A@;J?_?܂?N^A?1p7?)y?<3? ,ݽ?BB?Dv6ٿ"S?(~cp{?! T?@z?+T_P?rMup7?E#?SV>ċM~? f`1?1BO?4=GN`aX޾2J9\?HP?WT犿R?L|l?H~v?$^W?6)?~d]iۂ?Q"!4ϩ?+`r?Z?:TzFH+d)Al\??X?+J0Q>S{|dq ?#@1VT?A?qN?0>$?%a?I؀"J?/.?:R^n?7c"Z?5y??a̢ʤ0?8?-?.o ?0MR?l?7oz?'Wľ813BPVB ba@;.xU5?{@0?A ?Dǘ?0?7??\9?,sH?oYP1X%}?%?,??,Z궈r?#?aX?ܾ1? ľ`*E&H?ob??ș[?},1ٰ/mhO`j?>?dc}?^??&מ+m=p'?>ƾE`:mdJ?bvt0?9v%B\?6lÚ?,?S;?-.?^2uHfJQ?]n$?tx<Ǖ5L$?W[>d? b?/z?Q3 ?d&CG.?A2llM¾!ОLr/c?Q]?:C̾=9?$&lH? ?/G˦?Hc???<ɛJ[Z)NG?H'?j#?MT?-tmX?L*8?TXx"[t?ոf+?6?پD?& ?N־?0?4?$h[=i?=![3ppƾ??7?'v;(NЧX}?/ai4P?q?,M`?/d?EK?G?,y޾*9M@?)?-v?Jg??ؾ?piܾѭ?<9?%?8_? +y?D]QW|U?:n?6mnn>?9mE?N}eKo?PM?) +"?Fܾ ?%׷R,?)[VWQ,hs?Td'š?m?B?N'@y?@?>W?Swy. Y? '?Q??7;?*}?OI?uh?1zv?-&J?VĘ?p'?'ξ9}?v0{z@M ?-&?X?J¾A恿@?,Y??Cԭ$?$5**ݾLEO?630!?Lv??4?10q???\?$FH +ؿ2?!b>#V?8SҾ?྆9?Y?/s?OF?RYw???[oľ?'4?Oޖ>G?+?-wǾ?2Y澉9Bʋ>h|?;$}ua.?)W9RLݦ=?"z?*n?%??H=Qb8DU?XfD?3Z>z?? V?/lL\N*b>{+ܾ?5Ӫ3R?H)?J/ qV?V/%?YM4"?T@?~?J;8?HǾgCCn?RX.c9}??=A8 t?9x?ؾ{'8`?Dq8# ?5쉾A41\|̓?̿R{j 5?R.&A,]u?:?MV8?D^ d.?-V?nf?(r؁ɲ!ZY?*ވE{v?4P?FBM?/nM?:l?X VY3*TL? +`?!k?ƾWnW넾*?9x$?$a?#tA?yYmGh?D$1xl?dU?I? .?ʚ?.׾׸.־n,?7?0?Qڞ?J#?EG8?f+?@y?K?翝K/?Ojګ?70򾭐?$>>?`=]?5ξ3+?#>ș?SG $?D?<i[?9LIQG?Ejr6?uJ?H|Fؾ=]k^¾TϿ?U;?*X*?J?TRW|??L-;LPS1?Krx?0S-e) CP^ +~ _0]k{? )V G?>DA?6}jW4?C˾24 >#?׾͔cOO?PT\Ѥͨ?F*J$Oƾ+b?-[~?pT[?о?˖ho?+ʿ?:ձ ""?NH?LܾGvu-(~V?3?.0/Ͽ L;)?^b??+Xi?=Q1?`࿴W&?ǾE?Кy!oWPn,Qݾ}+j>?KE?8V?0?J?Q!¾?X)?;U#?CBRZz?&l^J?ړg?Kg"P??&6?@>8?6jL$Yr?C?,i?8?(D4&?,U?Sp?Pĸ=*쾒@8?%?m侕ysꈽ2g·?v?/Lm?-3 Vp';toŠ)?<tY +?1A?lQ¾*a#?=v?.L'>Ȍ=q8?b +m? e5BރpUs?P?=f_?F?¿阾d䖾2(迶]?NLK&zpd{8Z?Q̮ؽx?=:.VDhVP 4?BT?6?G,ZJ 꺾?H?. ?i&п#1?9$?/о\`P5>1?o*\?&?lҌ\ H:d?{(Χ}?E,tC>@Wi?KA&YK?T?3]| +?Jl?>?aܾgY*V?:(?P̊kiM,A?3"#|?'<]/6?/Ծa,:4&d?#_?\-E?LJ.?aƼَ?s?fP ?^F?WVpt?࿝?;fP^?U.>9L?,? O־n)q?F8&}ܾ.?^A?t?>?=y? lz?'𭾍Qg?*{*>?E ?Ü?rZ-?t?k9l>M?TzVwy.i?RXj??Y?U]?E2:?X\p.s㬾`ؾ2o +?=?04p?cA-?=ۿA'?a?W$?7a? +"bý|?:P?8޾I<\?@+?V?Jh?Ot +*?4 +>=?&yξҖ.?9\?pr0DQ?De? e9g-?OK?ZTo,?-5}5M?fؾAgA?<?W?\OV?,kEs?(®۾ծi0>??x?)a`,8?I컾vZ z? ৿~>k{6?Q뾧O?3ʾ]lBwj%?rˋ +?B?.!hB? ?0?FR?$Ế?D*?,?꿣ƿP?> +@l ?þ?6V?Z05?<&?ZM["r?B> ?3>?:ʰ??*r; ?=? L6,?6f?0ӋaZs?N𣿣q?w>?4?F@վMپϿվ ?O?Tl?iムŰ?[*M?\7?GVA?.v޾̓濗 ?H?C98e2?ABU?OJ=x3`A2$_=NgP8(Y~??4z?\Z3?L˒?3 I̿?b;?"x?`jqĉlt5?R?e&??4ѾEn"68;??>*n~?)#?H?B?J뿚"=lྫ?SS'?W2<8޾`13sC?3PH +H?7궾ۿ ?5\8?J&?,T<޾?-$?K$J?C??8?Ѝyzy?? x?$6?FԾO8'ۿ2`l?Ni?3l?U^_?I@}?9?2??s?!Tx?:>?>>@?A8-?RO,5U?[X۾ù?%z'ާ/.?ZI^MC ?>;g?k???BZ?B~?m?k?XC?V# ?K忑uL~?4LhxC^?_Î탾 ??辡??;UA`?.ᚿBl?ֱ?\>?3aھ:ttDľ_ľi?5YY?a쾑 ?.?>0W7gR`?nQq7?(s?JAӾ?Eb?>E?J?Sj:?`rs?2#զv P?<??W?*fDھG<{cʾdH?򢿩zyFÒ ?.p?C?LAe?G1pj??;*x?7?# #A +g??D?ry?2)`jٽRUP-C课[?-d+WܾFY"?Ӿo;? ?1F3޾f?A7?j??Ǿ9O?Cg?KS:־#z +ܾb.? i ?::V}˽?}ս¾S@e]i?;pSNJ??7 +?Q8?:?N?]%X?!C?J?߿H 8?4?'v?d?6gϾR꾂9ڿG!dItbYp.?2T@>?2a?Jw?"A/xDUJ\?LpŒN%l v]j?'?3쾆P ?;(? NZM?!J?*ľz +K.̿ľ`p8׾@ƾJ?%bX yVa?0?@? :@ERre?BҾXw}7?+?_>_?1"n,̾;n?7?-!Wa,m?*(?1Fa"?*I>ʾÒ/?! ?l?2c_?J?-Q?< ?$*{{B?3|-,491 + ?s'v6ٖ?7`MҨ?/V?Zwr{W?CzK06?P0\6?H-];Y?T\?:}k*?=HrE'?K0w|0?<42=?SQ&?(3¾oPQ50% +ǘ?ֿ>.P@+x9Ss޾|x?HM0?Nst;-?HY5<`.UfRo? sA!?3⊾C?\SR?G~9X?މ¾b>N~?9,?8pȝ?2sz? W?l|vP X?$_?$v(>wowOH웯?Z]?v`g%?(?+Ys謄?\?/\w?3?.6<8?2?[_.ld?6??-V?_5?.?3(>?B?"w*^ĿI?Ej^?Zn?V[8I ro?[k?*Vuy?;|g(ž*f$?/:徊־?낾@?A! +>(־V=>yo@1k=w?̧#!C k`?S0?5eZ>2y?='O|?|? +~[?= ?>?dP??3OC?)ؿ5THdվ?]?x?)?.K?+ҽֿؘob?.}zǽ@?* @#t?.'bq=-?P'!?=l?O?RGuh?:3 $O?8?H +?ɶ(9wEꄾ1d>,?~?sh>\=??ieO翤"?@?CIj徔x3O?" ҾOp +/^f?ToS?nY-￘?)bnhrQ¿?V( ?$?0ܺajA?]?VD?5?e0ʾX龚ȧ?*?G&1?@J?9Ta=b9^ξk>L??;펾vPr/m?ľF?R0`?4<]?Lm?⚾J迚 ?0\?i:?̍V˾?jɿ,u?4?3k?:TW|?H?Pz?77?? tb}%?*C?9?' g_T?0Ml?= ܾs?D6?Jʾ6FdBV>eŻ?*⾢(>TLzǾb2>Hu?Hvx3??%]h!v?'Y辅wyԬ; 7bfH1Bv!㘾޿8?U8W?XD?Di&@H2?1.м,d ?5یT*]??bR?zo`lV?REbϿpYjƾ']z&V񺾝#t}ƾB_8ؿJf h?-?DT_@(O>?F01?[{޾WѲ?EB۾(T]?;ڒ?S냿?bW?`X8TL4nƾkK: ;?_ľۛxbg? +Ќ? ?E??CB?$VplV?1Ne*̾{?N>>)?/V?Mp^?8'A@Bcl?S]ko?1i}7ƾv]?@_?G>(?#?7˿?1Y?-:?%2H ?̻ f?Ԑ|`8?7 ?I?l"?l; ??վ? ,̾gZlt|k?"=?1?K3?%?1X!(yKA"<"㿛:!ܭ/?2?G¾"?c,|?<ú?lQ? tgbZ?@4<.??pʿLǥ?:qㄾP?Wپ|p?1_ct5?%!Z?;:?H]4B?&*X?[*Y?2y\S Zwp|#Uyƾ-䡿?0D|0ƿu}Z?5O52`u > ?Xf?)0:?/s)0JĿYT%?N'?"? {D?J7v?1B?@򯾓9V@C@hBZVs[?K*?_?.꾍_?FϾcmFOxP1E?6;s1?BҾBYu1GJqFְy\?>o8Zb^?2??F*?aTOnzDZ???KH?E;n?+gҾaW?K,X3־nRRsg e=}2r?$\zlz]~V?4L?󛿇X¾?*w +?l<!?^7#?T:by?:GV??X/?3`?#?ح?5brG?E̢=K0~?0`?+|Xwsƾ7[l,^kܾn3?B?R?Gھ +?i?U? WhZ-\o +Լ?/u '*?B?I?5?A?- +]m?8 ⿕Ybs4=`ƨ?Mr,sfo?ogjt:ؾj?HpS?CN}*??Eh?@R{X\?'pGxD~; ?IC<?=e?4r?UISk?O +о?+Ԉ?E?k8Q񿠤 ?X?6ɾYQU?rc?:fy,:bW㷵w?MF??>?)b?bYڴ?z\<\־@%?+\>?EI_?@]N2?'B?4½?2ql'd?'?^,?4";Q[mD?CPŒ#{?8JF??L H?8{Z?2俏j]w?UL*߅?' hV?1ɲa5+jt2,?F!7??4?2~>G?9U?B !?D?5j?*lZ?/%WjD_O?ft{:2ž 1оG?.P?'ln'iYo gM/o 5閽0t=6?]b; `K?SU@gIp?4¿G?:F?IT?G

[R?Gq?2\B?8ul?c!!A? t/̿PJ? K! +!~+?J|@"c?,w$?NJ +?)/,辡)|o:?Cž)7-ࡿ [.?=?Tt*Wz~??8 +1 ?1??2c? a侘R??tX?&2?D?*EN`x\gp-ǿ䊾?C꿐?$B??%8T>?Ⱦ3?)S2?0JN8O"?#f꿒?O*w쾧 ?* ?ݧ!9?B?9kypYe待4}s?'>[?CO?+θ?5n?m?o.!>? WbE@K>?-1?7?S?}b>{V"?A;?в?O>*?04K%?7?!(?*t|>,7ir?{?E>8@?!Nf7{+{6~H?Tþ~ՔQ!4mJPgw?9e?Q4Gοè ' /"?Bҽֆ½ ^?S j9?U=R@`B .AZ?Ѿ\?E ?J?Qo=?ZN;(/}7>@]Vv<վқ;j(?^??[ٔ?l?R86搽ݩпx?%D% ?DN?;?9I/?3/JIFB bľGhA'@?H-q?;?Ot?NIp?;פ>?#?O5? ?4'Hn[J?Iag60?+gFpݿV;/?&_ѿv?*b3n |,?쿭]i'?p(?Lv1]>?ؾrS}oȆ?2:d?Ipb?ww?7x?"tz?/|?'?#?&.l~>|? E?B?-?)1gcg$S7ɹJ`Ȩ cs>I_yKMzN?!ҾN$?"Ta>V? 0[<_ ?Ezž;sn,3M(호?W1B&[*?#Wx,?*=w7Na w]E?"=HM?2J?ؾ .>B?1ܲ?^)?cJOD`?(8?FՉ/M?Mp#w?K@Sg +?P½?5_ 26?_{?V?N??E`_>or?(\N@|?Iĥ.`y랾5o!?b?(nv:?G6=?>?O?5c=l?7C?= h??Q?6=,?B#?9@'?/⾊V}?;H?V?4j#?)B̿Ⱦ_}?w ?2Ӿqbn?Kx?8-a>?Ev?)X"T-pv?Goǯ־ X?'ܾF@ཱྀjx$?ɸ$K7?&?;h:?Wɾu6?47?׼CN΃@Ө?B ??Tν9z|?<־B?Hc?WV?޾9пw#?(?)-Y58I#GK#uH 5vA?:?Yv?<⿞R=?[?67"?:w^X#YX|loZP$ >?r?O)''7"?7 +$d?6Z?VDѾ3?G/D?Rt^LOE?IZ߽߿ʾ3fM?G(Ҿ?+޾.|νc¿ο6s{!?MbJu?H?D?_i7,?@2><?6ACӾ;щ -&ý1*?+S= n)pLw?K4?0~q2?D JE v>?]0J ?gap(TwݟZPhoT? 7dQ >?0l?5ڀ +\??l{?1C?;?3>s??3@A ۾#?G?Rqp?'G,BI?⦉?a?!HvU*?hAo?PTu?XA&@s?M?^G?'^ʟ# J?!( :?ѩF󾀃d ?60tPt@Κ?*wM?>?'\?(?V)?Ed?FE TNڵ$ю]?fQ ?MR?(Ө$=?e?楑)?Mf?;"lQl>?;`{ -?L?N?_pM: bxz???@[Rw¿>?"g¾vp?(1d@?-`EF?Ag\0,wU?+<(C`e%վY?% (?H8%?1>}!J˲w5?nHV(? ?|[R?#TN?;Ǿt?<69?&ľ[-Jؠs?Jum"i%?Cpିyd?rᾎʾ B?I?:Ll0?=$E :?;%?=q[?;]{*,{B?E⾨4?!?4?V?91~?=Y?M?}g`P?Eg>R3C^n?*]P?0ؾ~>E?)Q ? +?ay+p?H9^|?d?,(޾ 4?'V?&u?6?4?=n? +\{?(rj p?HPj?6,aH?#R? 鿖Wnоͺ?CM?Q? J6XO?_>ؾ]|z?4@?" 1?HOD?GHľ)ƿ0?=q? ?̚g%bkn7 f>⾅Z? ཱྀF?MT ?7enj?PcLW?BY?4?&y?#???>?5?̾R+?$j,տ[?F9)4G/0Ⱦi˾0?lP\N7{Wv?$3?7?8ƾ8ksF 5?] +?;bf?$?7?K"?~𤾀C?C?X?BK]f?b?쾁/"꿡| ?!?L)]?҆Í2?*V?3?T?)r?2=7j?f'?θ^H >?*adS]?6Hj?,O?@ɾS?&?D?%h^@?@(I?2q?Do@ž@q?MkUiYr?=sp"??G? ]?G r#v?C?B8?=?l_?Xp?"?;*M>ÿO?$]D?%궾ܾw?O?>羖G߿~ֿ?Eؿ~?.싾O?K+Fc?=?6x=0[;M>(Ze?H?ڔ?&Or}Ѿo?9o?1 ?64|?bI?7AT>(?%?*̾4v?-ʾ}c"؊?C릿;??F?*Z'?V?5O? (??91\بSտ֎?@?4P?:?1/ ?AU8?Xƿjn?dھ?\?PԽֽT?O'D?P?Hv k4s?^?J?b?a0b?G:zS?X`?I}{边.l2?OSҾWB?(?3z0?0"Hm>q~|?޾q?#?>]A߿K~??Fp?A?fA>~?9u?.C ^输о+,?,o:پf>"?8 ??lsoLJ>XG??%?C?h0?/Mྱ뛿 [?t?<?T>?$X?j#,}~1?Bޓ>~>?ӾxKY?9^?P?%?S3?1̿p?d?^J!>_ucM + g?==b׾?)wm?6?@}?ݭ?-?-ݿh4W?&p?ݧ?A?^2 C?οW?U$<テ?R x?i-ӿ ?YnJ?m"?7 f +?v;??B\?"rV?@p7V^M?MP`?Q?=]?Sh?JݢQ~`?Pt0?Bam??ҹ6z?7r +ϾLR>Ҏ2?2?m?8 ϯDr?SH"7?G?Q+P?ϕ(=8^ͨ?@:?H?CQC6.lVʿvR?/- +?T݈?R4&q<?1Q?+x̽Eƿ֌>fsտy;?2??(|?)#>??SZ?l?2L6sX??\?ґ?NVP5M?'֪?bžtjľC0?G?0e?* +BN>h?*zV\TC[LS翨?y4hF,+n?Ճ?3 ,>?RN{:?rB6iL\{a s?:'^?#?F;gi9?Z9?,N?+S??xξ/%n?+?<Ќ?0:T?9qr?!(? +p?=|E?:^?2⾭?@Id/[9??.>?Yۈ?䒾:?mƽ?GC~P=i>9Rk/U?V ?^y?[!?`?0`ZP?= ?^+ʾZ(|#K?Nqrb?(?F3;?"wa?]ֿט?KYҾg?F!?=[fHD0/?S?J?=RZ?@qp86S~QU=3?;?x.?!V:?'?9ھ?Bxz?U¾0b?'!Z?+K?HrJtAUS?:$?Wj?Bj? |?D?@hP?IپYꝾGb^, ?.YcW1?:Do?pTDI?*M?<^G?q?anmR?-I?E??GD8"_$?"?Ckq6u?߽(? |H?#6翆dX?4?5?Q6<7TLEоG?V*[?AÂ&y?$?n>?>^C?K54?32ξ?iv@ B?9h?mM?]>jL d@p'=ʽ ?N?I?.X?^?'p.1?G?Q?A-.n׹/\?g̾a|?FZ=.@\?w\ P?DVZ?SB?H4Ⱦ ?B\悽q?I!?޿P?Mi?f?l?9ڼQPv +?In?ῤQJ#3N,?E;?'"fۊ?轞p>Q%;? `?.?=ɾa1;]?>?LkI7]㊿о?M\??$\?:?>V`?cv۾T)D?M]`? ͳ *?!Z!?"пo ?[뿝z}dA> +oj签w:{2?!&1 +ǿۏ꫾t?2Ѧ^`Kg0?3?)> ;e +P?z?+\?_?,E? l?6$?*侷2? M&.\vI?rt?ESuMI?ź?Xlowm?v?0ۿf^ (B?(S'?B?V2N? hAf?!{? +?3i@Z?EQqdu?=8?1?EfEN.?rw?2Kޚ>"܊>;?DǙ?|?:voL"?\xBY¿jҽ?fa?G1 FܾC/翉X:#3}?D⨿~?\j@NpM ?c􆾖->Ѐ?<Ƚ?9Y0K_> ?p?AOpP?Vڿs?R?;$r?3YlȲC˾"1z澝TBbckA?i?0?U*t{?,l(?E?(;?J3?2n?ℛbu?: ?G?Im澈ᦾ1iӾPs?+3?1b??AD?{ӾI7?3&i\Z?A~? ?H|?8O'?Qbv?5?u$?*?q+?8?-?O8 wbٙ|h\fMcnYҾe?.?(g.???I?-09>?Q~i?)QI"پP??DN"?ME{FvJ?.IyBE?3\?*?%#,Ĭ?(%ai*?䪀?.+0QC\3ūL~tH Pl?2wƾ=$ʾG?0gC?8[??ֿ?A8m9biT?D*[߿[<࿥h7?bz$jq?νni? L?mn?!?;n?v??4)??a r?&kk?H>N?!Dhj +?gDIоk  $?>Rjl|G?. +%8&f^̾?8GؾD?+.¾O2kʾ[?*XϾdȾ.No/?8y)?"?!dq?C쿣ikT5ھ#F/?8 {?fR"RA?5 ? _?&?O?'G׾XS{?zF??1\?L¾ѧcN?-Spþ1Q?Dڎ?Z?q96"?42-x?A?U7bՂQd45?7*0x +x/??BZhN?U?D¸?:fˇ?$E?׎W?@y?"=9?=P?O `iv2?@s?McȾTH?F4l>y"?Ly?h?QQPd?#?K8L?,B?K??HVl?!V>?Q?@nN}?&⾹?D|?;?UUH?.&W]ЦXYhx?Y?ʾx̰4?9,ھ֑?+ξp̂j;??ҥ?%Bk=!?A濑߾ ?<9 ?N +Hr?.?|澍 ?B'`Q澚:m?J?@Ŀ?;(꾑%?+'H]=?Oo?>?PV>ν=-$>TzB4>7/?e ⽕@2l?#@f= +.Rν̾$8վ'L=4n׾ ?L1(?0<"dS3?$[ +R࿏#D ? D J?7=Eq{?! gO?-X?g?H?Nf?6?D(dL?<>+?lT?=P?%T7ř?Gll?>#ȿe?6xPl?~H?8,?.d?Q1?3P?+ԿTi?ٔ&ԾoK?ޭ?,p?(`'?>ȿv,?Jr?1?6 ?h|]6g??3V?޾?8a{| x?NFuxHup?? VN辅i?Ӹ?-J\d?ƾɬk?4D?8?꼵?R?8?X1&?bؾsJ#? ?Gd57N?8ڜC??&C0?~?>[n? >v0,?ѷ.?.^] Z?e?h?9g)@Bk2?NoQ?&AlI=lDtď|k?R?P ;l9 + ?퓢EW7?SM>?<#!X>S쿄:C?G3 + /?:rRf"u .?&AW.3?9\ښNؾ=?< ?\ PξU濙luw5g>^1?OS?w=[8yD?{?EtJD?Bjf?ʾ%2>w6ԝ?`1?:Ls +,Z V?#__<#j?Tc7W?W?K(?* @2?N\쿋3𾴭?D_4?H쾩Ɓ?3P6O&Gh\@##ʽ׾?=Dƿ`;0N澚2;??!?qھM࿡L3D??J(t3?0F̾xھl?#:6?=h }?EYL?Kf?5`޾?h?2ԿR+>?־Ⱦ*"~־{u?Q뿓S>z5yo??J?;??c9?bӽ־5?/3X|?Ӟ>?k?!n?,>ܟɾ_B?RAϛ?G?^?8z}V=Ykx*p(?LK7.4q?/j?:󿿘(/ڰ?OB E;?Ks?3ش84y<A;)B @v o}A62:>Ž8bafx?:? *?O?"NZ6?$ -zӹ?Th>?&)o? j?ꫧy^,?J?1% \ >8ܾ^>?L: ?2X*0)?$ ]^O+r??޾m??2fȾ/?"S?<@:2þU+꾵iξ1j$K?*r?$І??Ϙ?6?E?.^?? w?("??;]q ?j*l? +?9 +¾GO,I@杊^࿜[?P<MW4?gL6+?/{? s$.O?42־,?6g?+&½s`?/~H?2r?<nEXP?B2ǐ?7=ξ)? +<꿲Ԩz:=2:?B |H7k?nξh-?L?]S>?b?u?%gRu6?h??Mc[Ƶ !?]yξ0&߾?N#?J?%ZÑ\!N䉾࿷0?9@B}>%wk AIaB@&?%?#E?;h? +k?T3z?2_)}V?*JBA6?;L-?' z]~F?,܀R྇Q9 ;p? Zh? ?_ľ㿍? `itU??Ծo?;lApe?aW?X?5K?< +Ϳ)?/?:?&AW?+图6>Hj?oڽ|-?ݞ?\w?&VI?*9@bCfKOKw>Hc?74v?)m?.?߯8츾s뾥x󬾶\?0?#|;?/޾I?O"?K|⿵a^@?!꿝N?ڠV?2]G?ٗ?; ?jѿw?JѾR?\pg?*?6~?z|n?OiDVv=ҰB?7*Q+ +=jr?4?AQ?F?JBmT?I?bz0?]?^a?l⃾ľ?`?9q?ye?DZ?UYj?k?"?:L뚾⿛R?-"?9(mҿ}ܾ?H +'?&ڿ?hž;oQԫ|o~?Lƿ'n?_?ܡ;w (?Is^>O%j?05% б@.k?8F2A}n?봿n(?#پ:K?Sn Y?X$?&. ?k?CB?196I?B?@N|ȿ+r\6,ys K$RSdrƾq4?I/Ծn`Ӿ?ܸ?5<-sXea s"?QDVo'z?߇{?|?2??BV?Z 5>3F?,f?Ntk>>+[>ܾ['C4|?Z>C>>` ? ?4Z?!;: X?GDD?2?$K羠.6?YH{"%w0~, ~徐!ޚ69оО꽎r,t\?=r?:X?A*?K|8?> E?8>ʿ 6 +|?de?۔S־3OP?!~b?I7?&~*ܫd?AV?>C?3]F?MБ)"?3g?!Xƾ| U?8@?0C ⳾?4?3}5ƾs^9U?.g? ̾[3?KzRA#tv?"\?(n?>Fj?1zw/.-?@l?:?82?̾&ȃR? rڿL?Q?7Q9P? oBm?Ⱦj +X|g&s?2D^z? ? Ivj?7"߾[Mz\i?;fH?%zH6??h8Ӿ*>r?r̿zM?۔? ",? 2b?8?5й? lmS?R8? ڇj\Gf?Ol>g*?F?O3avag K ?st^ +5R_L?g) S{OM?Lx?U?LTj,Fs0+?T;iz?>bu$?ZT?GN?W 7?@R{ S JmU\8s9־Gվs?R?3y>v ׾=?)ڪȾWzhؿg? +?ڿd? 6?BP?lξD&D:L@-J?+pɾ?-l?&鿆?ߪL/ݿrj5uZ!"*?Hu.pt?+_?S@jl| <"X? ;?%?+ꖾ&?"{Y?5]_?,.bzf??XHtѩ ?_`",a?L8~W?.oB?O>{?$?dMR`?=?K>J?¾pDZkz쿨?N+>"F?ԾSX?1s>" p.>??%7<o=Qd^Ծfy?8>?g>b?D-?a@%?r=U?I0>2?>T?;Ŕ? 2?&ڦ)?:[@(?F٠~^Λ?r?t?$ݐA?WwHb?ؿW]?@\^?g$O?bd ?d)gA?%GJ7@埾zտqkV88C#5???{0Ap⨾8?8??>ֲ?U}޾sL?iDr?#?e SU|?QZ?8Ʉ?9 q'}y?=¾YjO羝]?L??tv.rA[꾅p|?4z?9&C$Ⱦmv??Fľ͉?9H5ム,{B|#5??L ?*?;`<3e?L?%?4,Ej?2?&X?ET)?ߦ?+tǟ?'6(B?A???tc6?&g +?8bF6i#RqPHAĿ9bN?K7 ?m$^,B?%%?'Ю?@U_?Ef:׊>?:a޾=?,򈾡h +r?8y?65CՄ? ںuXHn?A?1zz?>v?5? c%&?*JZA&K?8{-pl?++?3?-U?uԾܼ? l?>!Pþ?R?3$?a'P?(?3}t? )t? ?Fy?$о55{ wz?0"p?HȾZ?D7H?%?tI`?GP?4[-?C6?9ƾþ#k@cb?R@l ?H?="o@?Jp? uֈ)#D?<I?G%T9~4N?FC?.(I'L?eM{ꤾ9A?Sz-I A۽N0?{|HA?DB[ܿ€69L?T87+M)lB?Jy]?JA?P?ᾭ~I̾y(˲E?5˥?ɬ;)/&!uXh|d[Pͬ?1m?¾D,?O3>ޘ?(?P+p\'?Qy?XNg ?PMD?9fP?]??!?9ӈ?3V07,??8ͦgٿE"?K񵾓>:?! +Ti!b?*(>?4B$?(`Ê]?&@"j?3B턿g?fտD?ߦ??(n?Tz;'_T֞X>H|rz?!rf*ؙ4u?Q ?;?ErY.C쾂# +|N ??T;? +8.Ͽ ?XKZ?c>$Jj㒿}־l䈿D?FGپ>S侙@ֶ?>X +?m'6?Dᄆ<)?,C?JoK>4t?8 b>?<?=ٜ??῾M??־l]?)c#\rBF +⾨ ?C4(VhbTb?W_៻󔾘O? }x+E?EMѾxP? +R@&\u?c?o?*&l?>?6@?)]{M?+>5z04 j?#>"ʾqO¾>|޴?-ܾ;?hiῩ0?ԇD?r?K?0A?6?:\D\t]?5fҾZ[Ķ'tX?' ?8Vc׾',? +u?␾Y?Cr? = t?SkЧfJ꾋01B?/Ff?/,?JlF?FV ?8?"6BŒ??M$ʾh?қ?8M?+ +?ttjNa?'?+k?#?.?1u^? 3?EUZ@̜@rD?k>9bh?Vq?Ms?q7"F?hZ|4?Lkh?'B޿ыļ(u qhc9XT@?Qo.@ P ?Tl?[\]T]o mf.E1?@0?L?9N?ixMK?xy1?5]?HE?Kk?п?'?S9K??G?L)I7rCa{R?4?M9?:-?8bua ׾C"gͶ=} ?GS>Es?T|\ڿ6˾4~?9?7Ҿ̿,?#ाŀ?mxBt?йP089ب?$f(^ +?؛𸾀<l?Ap8?Gps9??QBZ[?*I:?#F:Sq?4?5/z?"?*u?'?FvB?D ƾ~W7f?6F?!-0?3{?Mj? }p䡾h?0?H?5꿞Ȩ?A[ ˠ ?Hn#?GFk?{߾m5<,Z#?>?/q",q3E~?>r?Fl?A?$RX砾c%?:od^Կ)d?8r? u:?/?Diٿk]ֿgѿ?aD?&x4ҿ@ъk a^@˳h= \??iݰy_?@?@[Y{i?WĦGl&?T<?+I}?G?6Oƾ۾~ H{>?=pu:/ɃGn?Vؽs?_d㴾?F9a?oQ?$P:?=v?^Xi?D4B鿎?l?k̾+ ?'@5A^@<#@e@ʸa.?kT˶EeU?&?qg +L?^Z?3Iu?߬}WP]?Dz&@?1&4 8>[p?>e?@e?l/*t1l? +?6?9,Xk3 ?H?8]?^?RʦS9 +cmȾߺ?T?0h?je??ό?;PľJ>Ī?r?9R?'?(vF?4]?7Ծhp?vi񾇡a:0}o?X?@?A5~OyGb?@mF4A?3Y? {E ?4icGj>N?8|Ѿ >;?Lp?-4^E?'>^\?_Ծ[ 'K?L7?Yo?; +?տU^?ʾ!?`E~r?67??o?>⿪(?8rs?.?>$겾m?D5?AE/?d]˽#̾9R?Pl&пtx??70?;ha] M[Ⱦj3?LY?B>t?KT壿?JW*phRa?,?B6?&xoṾɾ Ҿf).?W%>da\z?f~*7?A +?Pv?$n_- 1 ?7xj@u־(^z?*k0!BA{?R ? BoA pvf??/yd澇XZ9뾴P0F?ߥRv^*&]z?2,}?EUtbJJ?A?Ҿot{X?o?Uߌb#^|.¾Ctj}dx.?N;gQlN3?+5%?I?3?0YT??˃|?:?mD?.I?侖h[1u\tN?F?%?ڴ~?6?=Wi?:̾^x:X?>f?/7?,m?⎲?焿C˿Y?>?' ?8?'>J?`ħUK2z??(?A(f h?=*?=,?Yvl?(efZ)Mnk?&?* +ξL 2rI?<;k?0+n?Lpb}aAAӧ Q?M Zc?:?s?!,G;Q?p<hf=֊?aBϾg,?A%?1Т?[lܿ+?E5^;@??V?*j:g,?$?žb[?Rr?2Ⱦw׵?)??*^쿧M<_$?HiUJ@Bm?(?C?;D?@6ؾ D?0?/?Ų?ᾔ3?w?$b?68?K{ྣd澊fU?0&x?>4⿝zjt?]þ6j: +}MA?I&7?#2?ꤾ"i qV?'tpTu?-<澤?b??V?I~Ú[_6\9?EP?K?2tƾG?'*??鼾cj?I۾;\w.?}@{o?5.ľn?bm?Xdޛ? 6`Kk/?4? ?ބھ/S?)? "Rd?ѾF:5?=^޾Y &?2{ulr鿒?[>?W7%E?,Pd:?&?A%>3t#Q?Qg:73?6 XĿ?4[ݙ??:AUp?F?N?27?)Z?9žZ?".b\0?3g?&)^Wαm?5㾟٬mK?-鿿.{ܾ^K&?,#??C?5?/zH?J?Pb?J>҆27AE￰nDľ?2?6g)Zr??Ltp?$?־?Fn?<Ͽs>X?DU?@Ϯ?Q?}Lw¾^(!b\\?-޲_Kwbξ&]𾧕;?%3H[?*F?8BоЧ?W +?)?EC?9uy?(K?4pbfXCB d? /?F>Ͼ?@??%? ?J4?߀{Q򖾟>c'?2⾛??ξൾz?GF?žT"?:q#yv#5Ih^? ^6}G|?Gj?EM?!4?`ۨh?d?=?3?B?O޾g}7?>R?Z4oV\x6?H0;T@7=;??4?*??o 1 +齾u ?C$@C?\ij?')l?G?2u^]U柏K8 Sjؾnw_?>~?C뾢;E?>h?&R/_?e?pP{eK?>?%f?8:ʾ?1X$@Ӻ?Dp_6:ԽAv?b ſݿW?s»cW?e?U0A?k]?AJ3?&&6W6?7Յ?,Ƞ?A#d?*?hOCLo@?HIC?M0?DR?KA?*?G=?U=?UV,M?Lξkotӫ?ED%?G?\?6о?dh*zmX?2(迖Xƽ}?S¾R|`?;_a]t^WA?]ڗ ?FnA@þ߿+?.>R?߾ }4?$派J ?^L=?=ݸ?4ް? ,?ؾ8?0a?/.jоpゾUz?EY?2^lG.? 2}?@㾡Rw?Ehz {-k0b?C?"PjپUR?Q5TtFN?+Lv?$ERѾYJNB"@7Q e?Bs?:gej? 4?ݔ| ?5s:?Hdb?:>?=0r7?.?'=@?5?|޿1:hH?@@#@>EYz?d .I[?(ŕa|AP1/'v?6?Iɾ hxCVPfl?>ɾ޾HdͿ?7 QԾ]bAt|?&䊾d.l?H ?x?I_?2]A?Fb?Cb?.|i>s?.g?XK?Dsv>>t?-?[>Ǿ?3!??Zn?%hQǿ?4?l?C?t%{&?3 ?!?68&M,Z߾ ]v?1?Q8%P 5쿗IAP?S?#?%o?K{8Y5UQ2?y?@?UH+H{?%xbuXҾ&?07迖B? %?2Yr?!ns׾?2Ⱦk\U^žU6ƶ?Fz?7>?%\I徎?c7FCξ?W ?6?4>?о?>v?$-}jP4rj?? >;c?Jпr?1A?@7?WR?.h?.?[l?2% D>^G?%99D??.?&CԿwzW_8)vϾTGG??Q'G@~Rx?/?[V??q? ?7Ⱦ.M0?.N ?4cdZ[{?/8ڂ Qd n8Y?]ʾ ?h?EWĿR8̽?OD<)3?ۜOE?+⊿ þ2۾ھ.{p4>T?(Y'?'v6ky +h,6?(&Vl?: ?]Q_(脾5W>T?@?]վ2m㿌 0na0u5ֿ>?ޖ_?,r/zm ?,?Xe>?F8vt?&\?.@"4?t݁٠?6L?Af⨸oWྀpU|??/U?TJľ[?ݾu?UN܃k?U@4+?FŊ7g?j?NeMN8?;qn?19v?px ?H-Jo?<?$taz?Ϋ?=U>qo ?h}nf?Hlz?1)7adr?j q?i3>gBZȾeT"d?B?T?RJkdvֿ$LbeqzY?7V2М?n(?VARan-?>E\?Uq?I0?|žJD?#?ܩ&3ؾa,?4?R׾ȿ)q@ +qiC?@S?ʂ?JjJSbj(z&濓)?:4ʽ?A wפľ|W?Aq&86Z?2򿙿6 ?+ {??DM ?-z?UJ۾˾(?t ?1K辻f?<<8ld?G3?4ľtF?HmJ'D?'?>K$R?3v?пS.?fV bܳ>>;?}?0#?%پ_`?!x:6@? yD?dȾ۾⾒8I>|Ɓ?GvJ?M6wv>[>><܃6>ؚ}?;N?<< C?(Er?.@>}P@H?@?dY?# !v?9r0p9ӮU?$54?GB?>d@꿁ؾ|?Q(f??N?S?Xu(g?*?P.?tXgXÿx?8V@?6?L0Y >C4r)?X5IT?r@f!)?W\?E'+>.{)6̾;?DhR\?O I|S5h>s?B˾4?y?^FWؿTþfA?+8hA{Y>Q=?*n?`(?xҿ:O?°?ܠ?IH?Wf?̾v>?WbgV#*?Dcu?-uоKA?Sz??5c`ھ H?%ȟ=]lZ¾JxX?:YCX?( ??2?7M7g?*?*ʾv4?6 ?$E?3Lj?I=vԾk6?"U?20tu? ?580s? 䖾 ˿ڑq?$t.TB)Ŀᙾ?.`2?"{IпP?9(.N\?' w=3-r?[zQH@D?#F?)nT?Q?;Z孾œ~?8M?}连 !ؾ 8?j?:NޘͿdiz??.@?cY?B>'\#9?Y?flZ?H;'?KAǾ[mS\?ճپ/U3ѾN%þvR ԯ1?!!?L??:;vj?2F?N4#~?``?H}Ծk:?;\X 俿5p>&ݴOa쿡\?M5>?-ѹ +?+O,?Fn%F#l?,׾Ұ#?0v辐7?E?(쾨?8྆C? mT#s%^?'?E陾^ֿݾ?p?1r?F)?$?+Xǻ>JV93D>ճ-Arkr?o?3Q.bK? I"]o?j? +ꂾ6?;%I?FNwm:{n?2?✾g4 ?'??K? ? fz?(4?Ҫ?NоgbL?% X2XȾaZ>L̽7羵?/vL@3Ψ?,2ȾiDx?!E5d?n^y?ճ|nm?v?W쾒V>Ux?"b?CV? ֯?kjNX? ^?#E?_? ?Vq?)p?8J-ᾔGο??EJ?@@/>?-C?Fb?bQ ?P(>qÊ?](?'>\?S^N?HLDɪ?O1?dB?F6?"Io?G6^DZ?fLRھ`r"UB)clԾd4ֿ:?:?P|'C1c߾A!ҿ3?TX?@v?KT?Y7I?XmB?Tnr!?:;?'?98?Bo.ԾȜ@0oԾI?[?g^?U/0? ??(FU%^Z0nS?=,Hkd2pʫO~{z/|? :4@uK*?3`@>?1'xϾ_O??(&? Z@ybA?׸޿?=En1p⾉d ?.GV|DS>嗒?%X<>?#(%?0J@4xYѽ󊾬.?9zQ?C??/#D? +??(38/3ξy?9p?G,?)-xtCOd)~"?GCr?+bu?G?B~L?&/t?=?뎾4'Lv>1<+A@?~?IB?(Xx\n'@?NjB7- +5Q "cM4Rl?W߾H{^巿 c?8)T?>v?[d?@rF5#bp?$?9-/?Be?Ly?D?F)F?KgkZeA? i?A(?9->?Mi)?! 佽賲_zľ)Y[H{?6 +U?zr?ؿh9?OTƵ^?2*sпh?t +3վ&g?翺ekO?J?<-j?SA泬CAB|f;H⿥ξ#{?1x>ۧ?( ?/Ob?b?LG?Pc習?-L?D0?IiCeU?[Y0آN1?#w?M?l/*?$<1 @ղ>3(dE?꿍kھftv0( 応u?0r?!X-c_qH?cھvP?@L?/x9.e?\\4P?׾9?1?$FI࿟,S?Aý$<& U?92?UL?We?Mb!տki,[i0ֳH2c?j?'?EN?>Q6>1iAEke?2:ZƮi + +j;X?S +,?S[PF2?xkvꚊ?e?Ƚ|JV?7C٦M?G`??p?G?/3a?[??:uuDm怯徬t?]|%$tL?#q:wP?P?@q 龨4KQ9 ?6j?&?t? iޫ?\=_j¾dX?RP$?s{€?Nf_z?0?~.?Z?0'f ?7b + ǿٿ98?=@?u{`?.ho??U?'鯿X<꿡j(?M ?-J߾o?3ѯAARBXBWK??Zz?G(??:?3 ?Ř/߾\0j됿()?܈ݾ0>'>2?9Ҿ;?"?6k?,`ԿjN'7?CS kC?Qd*?On!N?P鿪"&7?r?-?FŰ?&w?a澤?,4r?5T?-xž@0?]?a???)Bξ>e?#?/hP?0`x?p([v.?9߾ψ2Ώ?>Կnӭ?MRH?;ﹽ ?V`?ޞ +*?;G?l573?۾l?Qަx?C\?Z?Q^?Ti*?* +}I??}(?A~S? ٿI?:?W>F)S +!$Ҿ&?iQξHDW0?Z!$?:{Cp6.M5?+? 5徱F߾\?'n\n?@?PB?侺8?-YS?% ?ES?M͆RԾU?B}mR0Xذ 0?7B͝M9L?=XeT8_[?&,>D?4;?Iz="yH?'i%倾 C|?KzH?!%?漿:|cF?H򂾖`{?\?x?+ԝ?BY`??$0>5f?(?砽ĸ?>5q?8H?O^X2\HuZlE?>?;rĝ;?!ƾD?%+l?"ټ?݂;БO?SK?&??)drn(辫tGN}? ٓ;?f゙L? -?,`?>?8d[?5>fq?NtqK4.nM}*?Pr?N+K7ujx"xL<?9QKX:ڣN 9SC?c(?N?@#X?A\^?H&;Mc?c?i+ ?SF#I?M~4?G: ?Bp?Abؾ׽=z5ֿm?u>-?B1^Ftcq|#4#9?T-X N?ƴ?- K`Կ*[  +wŽ$y50?Pc?<.+?1׾x ?=^?4 x`WonTL?&\B??2 *?s?A!?f7 x?D'?q\U? {"C)%?F!?*?Y?#ʿl辝? +Ug +t?5J?.Nz B?7uݿ7?I{?B?**@<?.ހ? +E?͢?+.?8?&gd?TE q?T?1? ?6u.A`??㮿B9?+?J'?>?.?g/?#&?<?7AEI>_`e?d޾F!˜mڬ>O ?0?lu ־ Ⱦ T?"A-Bz?ҋǷ?:2?4-p?=L;_?C[Kg?6?Qym濻p?WsQ%CzUȅ^rr)?Y7R?P+s󚿏W¾*E\ ?`?R)U>?K6t߾R&v?6Z?_4?`Y?ꕔ?A?,tE3.wdp\a'ux`ƾ~/+|t?&Y?CNA뽯h#>6ƾ so}4?\ٿp?=~?Ւ?F?1u?޾?K̵F;??տ4?J$?,?Ͼo!N+?_pr>V?@?$v?n,ۿq4?Hdw0?N~ +?M>M?l?si?:!RBڿc5\ؿ?Br?5*?VJнK)V?#h;?$sU@_?-1z??71 \/tV.hp?`ZȿB +aCԿŽzܿ=]?<@?5y#&$5O[ƾ0j=tKF^qs(~G@V?-YȾkye>܏E?Bk[n׾?0t?2b{O"?>̆~?I9;p?S^ Ae??P?"DW?lڿwBv s>B?&?8vTL?3T?پ:?^ ?.T?^Jr<㾉?MA?, ? 7GL0yk?Kt)?ѾQ^?9?e?c??2F?J?Eƾ1D?*]PO?99) yPIR7Rv fbՁ㾃Iþݯ?&?|CG +?6?'K>Lj? +$?S?&?^t-?Gj?Nt?*>n@<*@=L?K,?S?߿%?@?%uZ?*?K[v?Ӈg?"?@E 迄-c>?_f?=Qkо1?@䑿?J#ŹŴ?F?M7Cξ|?OXo?.YJ?\Jľ|?CV?0622?-L?,.?B^?7Y6?..?3^?&z?\R6|d7j?= -P*[TސV?6M?@\?KL쿔f?0 ?UCȾgV?DV?e?#_n5L ? x???6 ?GW?](C%Z?Uþ]7 @OsBg$?F˅?,.?D +hMS6|??@>o.`FkM?Qp1?%o(??Z?" +t6?F-?5S) +?5?,?)???8 GJT]?AxR?n?*?+J?pC +pq0J!{.h??!?0?0?UzKɾv?i?lh?.d?&c\?!gei|l?$꾆>?[?No8p^z>~U?EQ9?6?3{?YMڿA X?7#=쿏?7g?L?K\ ?"Z?s?eY?x0A?6:t +MپF?;+"?B]=C"?3i\8ʚ?aj~?(q{Ԭ?/ȾI"?1?Nj?1R?B?Dp?Bp?AK*?0V?BX?J?G;ܿ?&p'a?ϼ?UG`!-A?'VR?,*Jm?&Wð˶?.=?F<4;"Ѵ?p1( ]e7Cƾ?<(@ Ⱦ%o?Uv3e!so2|"?1Ҧ ??;?">'?ȕ?)2?J?'lĿʒ?*R>} ?6>ꩰǷ?1\"+ տJ`м?#>Ap01ـ}?7?`?Ӿ]X?g__Tr?7/)?@R?/f-?(?z D??:ӾP׀z?XA?K"?d?ڰ$?FKz濒moklrþU03As?BQ;?$1P=>u?i@?f6?\?/Mw?/n(?U1&a?,n5SF)d˺?74?# ?0xpEp#?Ăo?BC>о-sDW5ᆿ^8=?)C?%fR ?2 @}@>֌?_(?D>3?<?H?pľb0͒cZ? ?4HԿ)_6?TK?0(0?.TZ?Ir?#P~,?)?6x?@0??e&?%6??Y;ჾ־?-,?.:?+6Z/?Q{>c??7a?*bn p?'쾐y5v'6-x?X6uVZ?nؾ.?4mk-?YG(?Xg\࿖gٿ?"4xfܾ.멾~s?UH_a?(r?>DU[&?NL,?Drh?7 ?XjB?VvT ؽr?2N?0@l?@~+t0I%Fw?ŘӾ̻JX3:6 7e|a:=R߾mr,???6F@?b¾׾KC¾[?0좾Ӡ,?8??8)?5!?7qͽ2R,Bvھs?Tܽ +[ +?R?S?7žYN?%?.q?T?dR?;0?5?t?Lu?U?D V? 1P?Cͽy?1쾌;>g?0?,4A? +&c?B?0?A????d6?d{?9?ڴX?UD;??űF?C¾d?$^{?&?Y]Z^?E6q?1@<0 @ AL@2 ?ξ 4?{Ҿp?ODn̾ż?*?4-:zZ.?^r?#?@H?r˘l,4A?K?p%)sG?>#?EގP`?KI +-?3?'otxW{?H~ۿľ&%󹾆}" )긾3Pg?{/?PD?+R? &?-ĿRҀI?9!!?jUzN|aツQ]2?H3#?-U?# ?= ?Qf缿x{3?vE?G֢? .f@?,O󿪌*?_湧?SyԾڹt徿社pS? +ƾ-f? hv?)[>?X?w?o?):?+.a?)2Nw?jG?%\^?$?&^zW? +r?6?Tct0?ߔ辏p?.?$f Q28PxZ?BM q?(GRp??/|^5?2|?o$k,oHj?)JOr^6??!ھ?G/?'R?] 2/l-cG?H뿏?E?.ݾ?+=5*?3?6*&'?C;L?+/oҾ?-?EɾV¾qn^"^k?TӾWܿPS?1ZL6 ?x \Yں?,?c>6B$?]}Vੰ>[{g?Ei?V?߈"ܾH?ҳm?:Dʨ?*d>žM?# ؿo>?ʗ?"4ڿ?rԾ?$:Vst?Pľ@@#?1@+@$?A?&&?5 F.Ƒ?\X? qr?-J?-mB?7?/V K?6^ۿ> ??*Op?+xd1r^g?Ff/S?2?ۦV/yv#n?hY?n7?W6?&'r?=H?;0 +1-?!UؾSaZ??JD"?TFW?G;&|f 4?_?hR?@uU5D?>^ξh#j/xSؿBqLͿK?6^?T?1?(??88?0?F?=">'?(jH6ٽ|w?*>?6B)W(?뢱?"PV?نo?@a?4\?~MO̿iD?9.b/{6p3EfJ?ҍ]?0SM?,i ミ9<ނa?)?;5?RRv?)?=yѾmP?*ݿQ?JmF1?6? ?6?6j?7"xT hy?'~?Qv~u?\?? ;ƾY,C?#??Rڿr\v>+:? 3JI=I?0V??2p?9?鷢?Bx=('?2?[,?>A?]\? ,?˖?&X?,e?EV=~辻Jjl*ھd>>׋?IR+?D.7"z0?;}?/n?[ ?̽??I?8~9?/ɾ6?=[vĀW? +2H>fo]?D&B`|?+?;df89ר?K.jEǽhN ?L?dҿIG?R9?P[?d\?PY?3V(?61?Fn?7cL@M?M\?8?OU?;z?2(?Pf?EK!پQ1?B+ؾM+f?GKX?F;Qi*?%?b?J34?u?P$?Oݍ6?3n?8߾?7꿩J?JN?2uޠ/g?~D?S0*'Խ@?'s?A&v?%?4?B?ZՃɾ4?+(?Z?/TiD??PL?6辝MU$0?/~\8?Jz?R^?)Z?0IǾ:?V?sþ?'ʌ?%?@6lC?/d ? =PЖᅥ۾s&>6?Gbmɒ ?3?2A迫{??Ӓdma6p.M`?g?ؾ~E?H~?>KM?(e?,i?5{?,俭 SlPCW>?@ +?5 پ?辤T2?An? ? }?W?E5?>n?р$Ĺ?R??ɗ?8_w>? +?LNɿ#B{?M?1'ھܾ(A?)Lc7H =? J{ֿZe3^S?-t? O?p?@ԿikE?1r:??h>Uk??A?2h9?} r?\^?,6=O?dK?]`?Q/OǾa?>u_nX?R?zߣG٧5bؾTWr⿈?D?Fa=v|C?RUB(T?Q?DHؾn7?V?NY?*??N d?<b *`\?;^?BU?8 ?X?|?=\ܾg؝ +P?bN?[ >G?U־!Hm?R?&?@Id? >\g?1T`?"Y6??#N>UZᾇs?1L>n?=/?BO?ZjsKizDڿK+?Z? Y?:6?+?W8/нgI򐔾7xq 8?/D?)"X ? ? (sNZ?>ᄚamj<2?"P?+̾.?{ ]7u?ZB)t?6? қ5O??$4>yS`IV +q v?C`>NVѾ]?P/꿜?ⶾyt.?VP>CV?&$?߾|S>dfm~H? ?j?*L?+\G?1?!?5]Lur?7?1׍?=nДv,~g= ?Y5 R?[F@A?P??Hyh?M s ?`F{1w?;h2m >֑]^?A(?[ ?=TUWt dLb?>s(?.?`qtX?z*Ϸ8v?K ʾ0?@?9!R?7vo1;9q/Aè?fA?3ſuuc"?ֵ$B ԾRR?@2*h1 6b?X?C?K⿋N0?BW?F? KĿ+d? HW>Sa<???I?+??׿X?DN?-u'+?/)D?=䢾(L޾>> >߰*?AG~?j6پJ?$e?ʟJ?A"??>e?*B?T?ÛL??)?$pְX?,?ӯybKb{`Ńu>t̾?!V?2?_4Ӿ:տ?2оqW?9њM? ʚ|Ⱦ)&5G۸?" ?>b,?'T ?2?%?+㢾t>̮J?"?h?#?Gvl?1Rj?[?+h?Cʸ<T`?P t3=mû6 Q> ]?eN?VO7w?A;)Mdڽ*?P-g?1eM% Bhb?HaȾ e?Ch?L?k-?/ پdj?H:)p? ?CȾ]]O?'d? ?V?^9Ly=?9?BnNBf{~J=-H%cپ~?Be@??T jQa?+ +XH7E#?g&WQ~?1?) ? ?6X?22?Be?&rr&Rs? \??ZE?%V?!侮$x$ѽ8 >D/A?<?%?M_gh@ќA-h?ALS?7]z?S?6?6Hx??FXzgQ>[?'sX?M;& +V9h(?0?9r?,?)J?< f?.IAD?"?6R?~ȾU?2?4j+=8!=dȀRʯܿt7??/;nب?F?R?, Z?A??SZn??#t&Qn?(/4?*,I?17rY?,L?U?=u?9E1? ;?j 6?Q{ Fȱf?t?Hg|?n[?5ÿP?a?Z?La\ȾI2ٯxȾIĿy*R?Q2X{#D?_QHؿ|?3ֿ ЀP?R$ax?EA/?A/Φ׾V=?Oz*R?ZQM?>xQp?L?+?L| +CԿ+Ծ??1<5M]8?B:{?E⓿ͺ W?䩾3q?cqZ?&Uد{nxgH? p.Ru\f?QC]'T?2aw+J?,?#?6쾊?&?FDFO(xU ?6Ig?w{?PBNΪiTQJб?=?~fB?@L?:J?']?/fWA@?S?Ǿξ,?2A218?L??GH_?C?>d?:+R=R?4 4?"?7aX?Ul~꾙(w? H%(?+:wt8DZ?*JŲ?)!x? ooOB)_(?4~D@?ľt?nh?㣄pY辈*[?*X0Ծʾj? ?X??c%?@7``?JKE?B?J쾡?*>Rk?Z O^5|E,٣?)7@?C"?L?5M-?1>@*@2&>cVTo+a?=?.Ps?=4̿|_<վNʾ~K?5vYd'O?m2??Bw#_0?Sz V`?I0s).x8x?8pB@??R{1̾!]f??9ҾfȾw?>m?U@?-4?>"?+s:?1C?8羖ſh?!{|Nt? "b0?$?΃濤b쾫Y??7%Ҿ?DΨ0oBF%?=c?*־]`A62u?6PE-?Ծr\>U?EU?? +8!a ?֬O?5ľ5ƾwBˢ?,.貿?=?(?Ե6>f?LJY1??2]4=tP?ebC?]%?/^un?輿~'??>sֿϷ>v?'Jٿ?ޙ`>"?-ミrIb B>?r@꿘>?cs?ξl?3.>'?G???9i? 8?߾?84>-?Cg֚?U?,@V>‰@ζBK7B?ۛ?A?$xz>?EoaqQ+?2 ?D?.p>?D?~]??Ep?KS'?LRg`?Nsʿ?]?Z+?;I?0?6mܾpSRĘƖȽ>,?J +?:KLȝG?򁁾x?7L?gE%?9i??f,-D䱪?Q Ǿ;~7B~i?VS?&;,?ZEJ? &ᬾ\뾴I ${w|?&2?⨾fvƾ*Kw?EAC/86?OȾVro rK?/ ?J?;G?Pj?0[?SO?*?72?-?7(+jϾ ?>s>LMi?'Q?#?0@ھ3@l?(:f?A5KC?i?ATf*?H04?ЃdMX??&Dk?)*rX\?Jyξ?? %?!R?R?F, +> +y?;q?۰qv?( ,?ɉ?D!?꽜\'? ?C7?;%BE?%$l[GhQ.:?Bnr?UO?R?ZF?WԲt ?zR>Ѭ#X>?8!~1@޿=pfZr?56cz5?LJ :$ cwľM@?5ȾG8 帴wHgt?9ſل?K-?Pؽ+ZZ࿊>?[J ?=G@?9rDU?^*򾋵!lֿy8~:?Dlm?CP?Q`GB?WN8 #N??Pˡξ[k?Bx\M2om?PK?t??-ؾ8-1? ׿r?$,칿VXuھTDV?SS/oT98hj=%6輾?;J%?H*5K?e'?Fr8/;> *?%K?&BD?]辈㴾:]m?Imm?(Sz?3?=L_?"Tھq +3ӿ'?1??O +ܾy@~??m??3?8o@Ѿ]½dEr?: ?< !D޿~\?&m? l?:f?>(t?Q<n^?%?E"?3m9оuL??0C9P?#R.?9X2?6g?N- :yB?ݪ!+?!?<濕c2kR?/m? +$ ?l?63 $ ?Ȯpƾÿu *ᗿm"}ru>0]?쾇oO?3i?)߿@=?jT#?!?>Co&Y7>3g?!&?8!?'G?4~^?BRʿ7?Qy?!jP?7f?3`Jvpb^? o8_~?/ƪ?<9?.? +Cv?$Y?%Z??|6q?Fq?Cs?@"O?I?%b>">T?@?BY>su…GQ?ާmr?-d^"?#V4g4.^^?80?6I?4⪾Kѿ3~؜{ +?7U#?ͪ?J\?6 ?1ھ?I?@? +Qzjؿľ)?"y?-^پq>B*?%?!bF|*><"?6澡۾?4?F?&I??3:?!Hh?~]28 =;'MC>t?]8#?-rT?$XDZ?O72-4} ???ϼ?Dr??蠨@;=Y?1T +?!x?- ?< +n.?|X?CJ?JlC/7'?$ᾈ?J6?8I f??^뿍f{?ݓ־Oݽ3:_@9K=Xv?Tp?9@Q-?KڽN6?D9ScZm?{3ڡ?Qh:?MD޾ ?Y\?]ܾ5?A?bx?(??5eca? +q徍O?"2y?!?/a?SHSP?L?H?=,?*0r?+0?D翾ZT?7׫jb?"1z?>6 +4?8澀7n瘾,FzEP? ?M?'iA=? X?65 `F|FK&վY@R"? Fu˿ ˾4tNnv&Y8 ?%GľL?;,ך?4m?M +2?@D?J6z?)󦿡bt-?'h?LD&?-?BQ;?*?7꾰#Nm2>3?:B??%|؍)쾒\>?9?I4X?^.?%į#C?9xȾO^?D俠OB?3uAX?K<?^?E56V@f4?TJ?ZU?O>?~v?lоܝ)c.:?(XҾPl>[?CTG \TopgC\?"`9WE?Z"oQcX@澋MN ?^??59?S?>?@˾5[?8W?=+?H&꿎fP?R^Tcm| ?G?ӛD3¾tp&?@P?,? +?8OԾ̀??̾2"?HA?E’ta?F~?ʾ]־&㿞O?#{l}'zll\??F$UJ^־4=?o?(1?1cd?4v?@? ݮ  NCe6?<:?*@?$W꾰S4? P0pQÈ?[?$G?rȿ?b?/6?>?-C"< ??'{?;>AC?ޚO.|?"&?IkܾQ?BAؾB?=(??>ľOݾJ>̉?C?b?@3  ?5 +Q?Cb>!D?<$?̾?/?'>r5HV^?Vw q~ѽW?/[Kb?(?\]Y1;D@B|Xj?8?) +Tk ?NH龍pS3?7?Ol%?f?C*1h?44? | l?N'?/Ml4jYf??MM\?:#?RH#?c[F?FоBz?DUL%2lϾXb"T?)_?Pj?7%?RApNG_oNwMsnFN~?T5\4ԾZyr?R5q*?',[߿DP瞾[?%*?8ƾR,?@޾rlоbjZ]?(?J?c?Aa?1$BkC?4o?%nR?Z !?+ ?Z+FV?$)0ֿ8?-:ݿƮ>m>˲ѐ??,/?`{?PMdX>f?B)Ⱦ5{K=ᆴd>?nV?2J?/B]!IV?@WfKjN?[k<^?jz?,`?A?A?"\ZbBs?|ʀ??]?3 ž6PAž@C?M?Ҵh?Bf?l.?Ζ?G?6g!ݿi?Z? +8?KoXg)?'M~Gъ)6=?n +3ힼ^տ^?ÖK'@㾙ؿ??A+?^mP">՛P?H0?8i?G ?Ts^9m%H?:'E?%{T?8atixþ{R?13?bAоg_=?a?l2<:ľ?N,о̏?3 +?P?,Q`>?0q{*vUJuƾHQ9c)spz{I?,S俬>a?&H?0Ͼ7?P?c?=4?|&c2?1yM}'?c ?Smd4?(PCqV>$T{Ec̿zy4?O:?!?GW< )?1b>*o_e\E?8NקO?Hپ(u?>M?_YV?1d?O?3/?ҿ:?(?#??V8̶&?Uk?BZ,?VԽ??ܡ?0?+?ꈾ?? \|N +?)?@B??"J?1m?񇆽.?#r?.`?)L}#!X4wN?X#K m?4N(?7?િm@ +T?r?5JoI ?#I2!?T־U??TqINfPj־iW3]?7ҮB֌u꿗LH?W?~T?HؾR@9 L?@?(?p?/PvIG?PR(`??1.Q.?BJs?2Pؾ0Ky?:e?.,|Վqľ?=^{~>~yyP?_?UI?$|'[0?3R0#?-}t0N?53}[3 ~ >+?]?u6?B)"7oS +??<$?E?F?@ھ??Y?%6'dP?!J?C$Gpఽ%sY?]t?H,?Fx?V ?PE?=ʿ6&7?=C?Tﻭ@K}{??;H?JE?cD ܿ?"þ4޾U?+=?+(?+ +?A`󪾤`?:Ye ᢾ) G?`mii?. w`Y?8ܖA?D4?F"׾K?4`T~-?H2n?䲩?Bk I7?"F?+1Exth?FN\s?=o,>5?8?QC@?v?#?*J?9sQ??.? ݾv?]?/澯}(?d?h8?M)?#澴G?#޿x?&ξ0a+Ⱦs?B8 ? Vr(ھ_?&L?>H>0?T?9m??ra?!e( PӐxh?(?/???$?X?J8iv?+E?PM?*& dgA=?à+l1a]`?!H?ދֿĹ?%6?C ?$֨?ST=w?cl>-| r?nl@?]&?~?W?&/?]!+=ۿW۾쾲I?-?8@?Rھ>^??۾Yiྦ>gc?5&?6&?JР?gD?F0C +?EepAw?CU?t@?A3??9>?JajecTp̌~?4!Ot?;Vt?F·>?2?Bf?!kX&?"Fƾ?a+?8K +*k7?K?_)?W?+꿦ā?9?-JC"3NvƾG1꿾y^?!Q?5vb?%o,?ҿTgW4?Ы7*?̾5NvOY慿w`?)?6N?Y"?9P ?.'t?0@ZZ2˦۾R?V#wb? @@'0Â?"?? J,AiT?4v=\LXE?Q; ? ?+?\ä{y?)r~r?)Nx?) @OTᆱ:\*zf?+D??>@?4YE?8?;?$?hO$I8>k+? z?>~vp3x?:㢿S#n? *EA??Ŧ?9??H?&sa>).&?,'??'?- TL;@= ]B?2?mhc z!}'^)?=gپe?/[uX?Dz?Db?N?e+K=?]Կ%prYڹ??nӾF־nV} fD$?" L?'Wd?s`p#H\@;}?28?U*z0?/.$bx?1?OxNW?($>? > XC~0?ϾQ?|?8⾟PR(?=@?kVl7}4P+ڼٿ`s1R?HaJ\边'\>܎>]?s?:kǻ?zX^%?4?@>?,?=ξ̊о]E`?0`M?9?h?&$ui9+p˾5Ӿp'??5̸`A>&[?ѨϾ\?"Ʋ?"ё??0K?$T-;?>]nԿ? H??-h򷃾GW辳U(P\?\2禾kiѿOF?Z @9LLnY/?%:˾A?>̿Z?#i(B[,v??0|־m)196?K<ԾoTz7?]⾱Dv< ?-?gYPK?.>a$機?@FBܾY.0?S7 |Vp񘾂BF?Qxl"z?SQuz6?Q?"vX cQ?ɴ.L?/BD?ݛc:d?anT>S?27SI8οy?( ?9?ԮNi?.þ ?:F?蛰?!b#R-Q??6?7tl꾁qng?sd ??<~?20[ϟq?+T3? ;??辈e?~?(W?( (hO?/_?y@9 0D٢?3]?<?rМ?Jvt?/C4\.?6fʿ4^V.T +Ǿ7U?1(?>(0?2'a?f?@s?=E ?Bh?S$?N࿔13Z?q/?(3?Hg?_/?GT?$~B'sڪ`阾ټ?W?2.?W ;l5bϬȿ?qbqՈa)O?Oΐ?HV?:g?8Q?2f?Ri;[rQ?MMxJu?G貾!ǾZ "lm x %?.%t?;?3JK3羝i?J_gb?8OؾV?<_ᾣ>!ĖhV?D +94?EtAؿǂs +?F½aZga&S@?.,?崾O444[m!_sLhƿ.7?-fxN:@X>֋?=k`Op^?^V?2־}M?(VX1+?+ +?K?Kʽ{żφX?)^Er,"?+kqg?>Ⱦ xw?2UPA?46Ͻc(Ü?侽᧾ ?PV?P1>W? r>>]~P?2?85?7_,[o@=%y$*`?'p| `?@}J?!?HJ꾃I@d޾P쾟=?J\J|*?<0z?[ :a?2х?'-?!K&Ծӝ?5ȿQV?g@?CKo?/Bz?Yʞc%%2?ɩH? 4?*';r:ʾ$?B\@O8?K3ńq>J:U?O˰辤 ?`ͺ?=#pE?L*?E(?~݇/J?(ξ_?@?"^R%𾯵_?7a ?'?줾`V*]p ?|O?ӏa]r?|[{?.Tvӿ?C$4?Lt7}??"}8IJ?Dy$n?"?#?ؓ⾑WF?u(`Jm?9?4`?+оK?E?-^?-@?ȑd?c?hԾ[?I'n`P{?d???3?*sտve{?,?&,4?-?A?3xK2i{??+2T?S␾G"?ʿ;H?D?8?ns24? ?&H>?J? aؾ皾nmLտþM경>?龐? >ꓶ?F \l?Ymw(2?@6??U?L-?<@rEb?C%_?`{h ??L8ܾ8q8o`?_ 辣x(?xi?VoK>?MQΰe(a ?KF^>xA? +;۾VA&B~a?M_쾽l>a?BQ?[%jɪu㾊̳5?b?#xt־p?2+RQ翚ɾzrY,p?"H5Ѿ:iB@?R?g྆o侫%Rq?뾕?5??0?3-@INѾX&heXd?;? ? +IԿݿH|?%]ξb.jksH?%?YB?(?$֢?n侮?5<0`ړ>S?6Sm??F?/**hfP?HZz??I`jľys;?!LF@??0? GwW?D~ *?ྏZVE8~Vk?N'?Bz*ӎ? zA?1cT?>*?8t*?!wP?Ye? 3?>->glPq?96 ? }?}B˿X侦J*6?Fny񾳉<>㋣?f뾎6E,{=gzxZqR~TH`?b ?~?Sn =L +Ӿe6p0|ȉ ?Į+{,F,?CĿjc?LPҿ(o?\ؿuFk_>*?EY׾>Z_?LO'߾?J?c?Q9߾*` s?Qw?V]ξeL?PR?=o?z? +v u4 $. <T槾 +_Bќ^'?$B>?K}@??;?(@t?5D?=4P?Fh?5*ɘ-?/ +#j??)俉H?N@- U?]U᏾'_?Fčރ?Jņ?@{?3*?z;?7{P?#П??4?-K?(ਿ]n}?9&\|?8R?%X;Ym?4y#?(ƾl>?#|Wrԧ̾$a͏?O˾_L?u\x`w?4hw?6| ?2BV )9>¿3?L<̾"2Q|?*?]a?B?$UNwJa??cȿ1ξD?Ny* ǿ<?U?) ܴ_꾉A?Z0?PϽ}ʿ⾝>?B?!?2Kel ( ۱?(9> %쾽3ܾ?"?BbJ?I[˾j$lg+T ž,[XP?7HORm+!?QGb5+?Aw@)I?JQ?2ߠ?BI?[ +r?R?̄H$8?+?J?2sF?a?,'׾8;ῧ;?YP?,ʿs¾>?侍7?3о\>N?=`0Z?A0?H??@ ?5y?.$w +5?Yx` lD5vr2h?"j?/ѾBa{.?=@~ݴ?A ?;⾎{K?qK?C?MY??-?;T@?B\8ؾ_?Y?nj!is3Ǿ Qʾ8_? SL?.O?T?4f?0ELؾu֎?GT??4B\}?خ?~A7? zr??F~Ҿ?dqRƾh&?E[NcD?Hr(5ʾѿ?1R?h%ƾm6?95_˾?HBB=>0~q#ڽW2?=3)AH8"?q漿hI?5rCY0u?Ng4?;$a?a?;SH?"y ?̾M?-jInο?W?$+Ҿܿ?9?. +?3?$*?Y?A4N_Z?@>wi}?:?5?;3 ?Q0R?6оnf?!?9Jz?0ĿG?%w}_ξ?]亾 27?6v??}Z?@K?>1q`?]?1>)?ؒؿf?T +?$?޾_gFx?˾T ?=PÿԾz3Zڿ뾇x?/???/V?(D侬r?3 |?" ?F4?࿤9\X?$P6K|? +$@h?F,0aI?*;̗= +o7?K)?//GZ?0Isᅭ?V@6?5>Cྡྷ7n? "FO? _??j۾|&=?'>?>?>?$ +ҋܾaP.p侑idz?Wz?Q?$ο4f?@,/?8?B%?`{`TNPaw,:6E?9$J@!޿Rfz?7񏾱lþGP?PZ?s7???N?v?w6 ?U?ʙ_?CL׾0?UpK j‘N?@?g%9c? +?xݾ?H]ǒ۾tܾ)䐾j? ??[Pn{>3?7f~?DMϿ?)|?+)?5y #ƾ5/-?B?[E?⌜LOu#?>>?)?ۿ}F? \RhEr?/T?⾞'?[$>%?V?W?u^l?G{쀾]G? @?{&ľ~2?"?ѿrx?+p?4Q? ,D8ɤ?JgRaX!5?*x6?5ǿD?5=K>4?* |u?Ⱦ +?-v?>, ?)ƿо?ʳJ!7?elꚾP!?Aͬ?Um?Ӛ?6?(( ?96s΂ <?;?;i:?BcB?RN@@al6 I[?,qm?MzV?8u?JR?>??.?Y1|?Y??LmUx'?q?W? ML&XA@پtS`?.>?Q;ɾNt?hb?X ?U*?3C_?*=X*cW?nM}@?-Mb?$#?M0?C~?7o"? rܾ”1?Ц?n??VUߵ? ?%c.?+P&.wz[? -V>,=O?ϣ!HԿタu4WI?q?+?'vZfn d?%P?]Ͼ?0P?C?V?A J?ü%?7?a:?Os(8?D4g7aӋؾu$*?$"lAPB@C1NuC6s?M⵾w 2? |@6'?*ܿ)#?:??˾ʾM+?*+?)>۾Z|w.a8s?+E??! vȆ? +FL?ӌ㒾?0RZ?D՘y>0P?9&?Ut?8? w ?" +Jӊ9t|o?Rt?'迫w??C?4[V+ f7?W?bQ~?,fdˬ8%,WXIC?T((?"R R,^꿗z ۓ]?+ r[,?-?TR?36>b?P?B?C?'?A2j_^?3է:u޾Z-TT̾/?8Q?,Ϋָh|?*7(H? eP4t4N>Pr? ƾP?n?C4?5zپfLȾ%wξbrڿ-?^ΐN?࠾i?fq؉ǿPF;?]㾍?D0ϻ֫sv?2?_?H}T?CW>0?0Xf?}a?F ?E̾]]^5l?S:?|Ѿd$B?5ֿ9?*j~e>T9l?D;?꒾>?_tުx"L@?JNھʾ?1h%?/=#xlMNk? +5b)mz??(X?e@8EC>X98ȳj? ھԪ?Ҿ Ծ*?-?Fp͗Z^?BO4\O?YdR( ?Q$i=׿;(_4L̾Q?MO?Y?:?hC?CUƾ z$?󶥿($#J?8Q#$?x. >?"j2?p?3R6?B'r?+ӘV?e`!Z@T??P׾7ִ?E{JɆ?<]j?:]D?Bp?2Ï?,^?_)$ɾI+Uq1(?6 !?5?d?O(= Hn;Pڿ(O?SF?ޛ꽒2&{S?#@Wڌ̾z?M ?ID;?:'?F=.>1hH?(5?5@;?<2?)W[??.w?~X?;?-,Ծ*&?+ +&Ҿ?&?h*?v^yR?aS?`?!^潺LkD?U?89 ?P?@"I&?:w?SL ?8Q ̿J?ME[fоLٿռ`5 )*6p}?Y +@ӾI+?&;Z}?MfnD?M~@i??޾9 }b^?;/8?ZR`^! 0xY?/K侜?*?2fh?*@?!6+?⾒ԾL|^?C?EsǑ 8_?j +k`N?A٥?598?n/ofc2q|1ܾm?AJTY +!9ˌ?S2꾉hF?-7ǀ? ?=?)j򿬫?2]5??U7 _>:qm?@fN?A?%?AZ?( +P?stnf?Bվ( ?on?8j=x?z@:XH?g_5ȾR%?]¾l?1m?A^? .dX?F?Xa?0|?7҉`J?MR̾{vxZ?+DL2zOb>?0̿1Ko?VW0Q$yiVfc澌Spd7)$?`Q˿6+4yȽ][T꿗6N?X=ھ?8\@uAz?MF ?.ZXhF`?V̾W aq?#N ?UcRP>?2?2迅F?T<( +8%?9?GzVZH㌾?XBѽ@ ^uؾT>v?1U`?B~E8]I|#?N\?,?Pg?/6(~?N/o?>V0ƾ4Q-yLy?EU|^å?7?|?HD?H?&?0?? ?1w@?*ھr6?؏|?D{ 。6?3Ծ?ԅB +ǂRc?='H?.L?LrÌrX +nu*?+߉>g?!bL?''ͿKm{?twcoe4:-ȭ?'Ru?$5BA rL??&Z?8?<=?&C*أ$?z:?.xľL?>羒5ξwfd.?f嫿}?@?-b??}$h?IQ?#iW=.?\?:iqr?1Bf?;c?ޅ?Pҭ?? n^? X0EC??oȿ`n)HO^O5,?d"F?H?oL?vlgX.yNO?3 Dq?1?e+g?SٮGASB?+?Y?0f>ދv&|vѬ?C쾀俠f? #$`>?H?Ci?DDj??` +뽎y?@\Cv@?s#?H?$p?4 ?>sZ?IR@IW?DnB?HϷ뤿yh?Q?`80y}ÿ& y7?}^оI|oB?Ufn??/?"ZF Ͼ!p:> 3x +;?:?@j-˾q?~?`?4Fb?p>4'?BNֿ?'ְ?G?25.?)?0"R?'?.о1>G? ؿ+?89?"A\C>B@2=?0I?4\?  k4i?>ā0?0)I??}¹?./*DԕU?ԂZ>|>MX[?깾?;񿉤1,? ſa+?!$&(??܍{۱fH?5q?'^?Y~?Q-I2!`? n?28@Wѿnb8?c?$*8-ϼߵ?W +?; +^3?t ?tE*?ak?xA?LTF6?2qf ھ->?AOΊ?NSEj?]A?[W?gH@U|?@ u?XH7:?7?K:z:?L?7}{=z?=.m2?WJBǾ(?2?NοxCR%D6(XQj?؜&?VAQ?A"`F$?5俘P?Zג T g?T/e2?J⨾"BR@h֐ +v- D?6Z(?;'Z?#?Dx}uC?Cʾ!???~q{?.hD|=rbM?M 6Kho?.x?[bt? ?1DSJT[?VFGH?9Ǎ?a?; O?:?3[?HZ\/?9X?)l6;ľ]Bx?Tq??B? yrr,?G |tʾytuѾD|?𽿌DŽ,|k?م?R?azP_࿟:WBbd?E ?l$T?-d?VU?M=?R+?L?g?FlԾb?,|?.L*n ?-_ pR^?7'?kq +cUbrn~?1+ݽo?/ u>j?e?,WMmӾye?icolq>?AGP?8;Zk{¾"%X?6WԾ] ?Wƾr*C7?˴<0?N<@>J7g?N0MܾppT2۾?0ҋq?6fqD?C"?9ſ?Ya6*?9K"kD3,?A'?*m?H?(Ef?8 ?A??J :.?.Y'?BU|' ?2#?L?aA7.LCb,AI%?i2q?;țѾVf?*y6c?(>,zb]?L??ր:Ѿ=L?N'Z?t(i6>@9P>sr?\+?AKBǝV?lK?Ljc?]YPo t?@dn\?ܴ,>wU?F-?I\/@ry3@ +IYa\_{׾z;c?,dfW㾡O?nw?St?]?b?_R>*h`?"DM0')?/ҾҊ8O࿣u?]=plcDu 8˾s>4H?-/p\'j?<վiM.ḾLÞ>׽ɿp8˾a?>T4ABPR?RX?(D~?W4ht%S?5TG0>gz?L8Qx?4T?5/ef?Bw=྘ JG_T%?/?A?T(;ga6?6W?2?5}񓿬e?H'ミh 2#? -?5!?:h|¾n_JPb>?_YBq?7M?(;cn$?Dϸ?&#蕾"?#վ ?Ͷ?P7 ~>XѵvZ?$޾hJC?4Cyx ?6x ?/ߌ?=)t?ֶ?о6vZ?K?JTCS??{b?1BU\vnj^ T'EM/΅ƿ?M?@Y?5S?Kي{n6˽G?W8?>,As[TH#T?[Ψj?% ?Q(?F| 1᫾1if,?P2?Kv?Me d?ؗ%H?қ~B<ϴ?Hyr#芾uaww?DWB)о7>~Rz>aξ?E,ؾ&j$?B#i?9a^ ? |P?Zn?9Gs~E ?3s?Ye?V^쾗?r;$?El?޿徆??Ff??d?G 8Il?2{p4E:?,-y?CA"]?5w?Do?UB%RA聾8v?NxӠ ɽ<#w^!?Zھ?Bʛ?W??Q?\?6}fK=?J?DЙ9 ?,(B?;)\Nk잾j[p?յCʾ)Sh?s?[ޱ>iM({@9>ײ?$aE{+J?.3?H>{x?^.X?B?G 꾘O?&j4l?JL?$S׾Ծ?p^?2Gg3r/?TS?H+F?4T?,OѾ ( D ?rY?:ǾMT9ľ̿B?+tn?(׽َI琿B<?ES"f?'C?9 ?{E?7u?cGn?8)^@v?hۿ ?[8†?7?O?7ZSf@R?W. +Rƾξ.{Ի),qz +迦 &??C??ƿ~\/?=h?hĄ'?Rk?LV GG 6yĥ_%b㦾c^ +6??bo8?7?xYk0nX/lR?_ZpICmyZp6?|2*? +!g?A?O:g,dxhۿ+?P{uj́(9? +?75I?nE ʾ3~?Q?K?&ݾ뛚]N{M?DPrݤ|X%(ܾ!OXA[?L?Vտid?k*-?)P?Nf@Dp:CC@3~?.?4?a~$3 ?XeJ>T?8?oHRt~y?o1=`?BT;\hu +s?T׾:mu?Y֊?:4?\P~?,ϾZ?\.?Ҿ!9ƟQ<-⾯a#?6ԔrJ?5[U<-MS¾2F ? saX?A^(x9܁?߱X?K\ž?R@^i\?G?AJ/MFࢿAF?e"VwD@^pēƿwuо|⾱yt?A濠g|Ҿ@?'Lj?a@?L'?"y<ϧ3D? 3k4?& s/f]4d:_?/ni6?RB?a?18"ل?6?77[[?fݿe>?Kΰ?<ڨf?!¿.r*?B&?JETc"?:g?97?̾x)g?X|?J8,?2ت9?>y?q?`{6\N&nn?"f21_9O?:i?80mZK?4q?D?n¾P$?.?7M?ƹ?M?⾡G=<}?F@?L<о\sLv}Z?i?ҎꖾA?m3VΓ|}U?F#R?O`}?dK꾰c}?:?2q??ž?4YA?!, +־¾8?Sо5*4?@SNJx;?);?;Ȫ+?˯W#q8?3?C:)plM?P꾓Z?Z]?bn?6*[?_|R?9ޘ?N?Yo?,:YS?69@Kmh(L?./2(n&r?Z ?8?8F??%]?Ug?]?5cl?M >?z ?;?>~ +?3˾q7?z(Ⱦe?BR!B?R\F?: Ip>fBiK|]оM> ?'?4ؾ^? sIڿ?uf˪g5;wj$?:p ?:(t\?4l|mqbZ ?tuk>ƾ??@>? ?A]ᾜ'?#,6}7ott8X?$"Q< Y,\ +?Bذ?^biƾz5#W??:b;vX?X}@,~?2Su>I?#?#F8?SW?@ߦ?7Vm?J UzsľNL?*f?඾h?8Rپɾz侘z? cEPR?$:?]6gyS~g徎b-?'?;ﰾ{Zp?>8*Ab?Do~ƾ' ?ih?',?-X?WIY??;j?[f9bљ?W?+?1zi?% ?I澥 \?;yؾ^辿?= s?Ve>:?}?<GT?b>KA C͎@g( +?Z rZvz?f[T.Q?3tshF0?Gg,e̿?Wj<9%rOZX?17?=r?+8P?bN`?ޤ.?B -_?m}ھ>uj}l?@Z?R2P:!ھVԙ?'9`>?>u?M?2%yz???Z+*Rm[`dLR׾ܾ?+m?/l?@?FEHT!?2;>ɮ?K+oj3?X?悬 ?=?vz>D澟,i@m`J?JԿ {?TM?<ڢgL̾&9n7JY +?C)h?0Z,1fξeƾ6FM?#?Je¾=?P??CU࿝&|,?Umd?:T?Uy;1Ü?1.?};V@ÐX?!﷾M!8?R;j%?I! +:S?,[lqp>?;?U`>HT?0?W?,h?hν8rF{+z?V1?Hv.0z?tz?Q=QUpN?k`V?6dA7?UEH?=Tv?48?*Ⱦcy!?*7E?)Gcۖ?Gjx?O侸?sx?Y|@(c97?9?UI?:V-?(m"?BiZ+7.ĿLW?4?9i6=󤾖?VW\X/Ҿ`?;r?n'}>K-~?ށ^?Zeؾ>ڴ݋쾿:V辔~?aZƾ2pƾ"?R@0Gz?nϾA.V?8|b??T>6?,)?!ې?!t8>4y i#?G?2z/:\v"?T3\mu?IFg0?Q6/?4)h?cJ"쾃˾D>>mľpC|8??'6?[¾]ɌF?ѹ?P?Bŋ?:.?R; ?<?i?/A(uBY@ ++Q?NR?<O>ˡ?5: ? ?Z"$?2n{ʾ@?/ZWyg?վd6?'/~?S??|n?.U/?])%]N?d?:x׋?AW'Jv$4e,'?;\?1F#⁾v?4Fmb-ھm?6>?.L?3-1?ξ?e?9`R'9jt\o?-%~?1KQZN2\Fց?>G?.Lh?=!:wH(P ?9Z?.?Qz?LWP?6?SLtDʾT?@xA'?V?@S?QZv!@:D;u?Ou?*"r?ϓ\uþL?D?Z/ԾLJ@~?4H??G?7?N#.x?GOg1?nҾ˾_ҿ?%qD{ )'-?KP>v>^0ʮ?"??aBヤ,V4CIƫ?վ]擔п?#V +bKK? +ľ`ƾ&B8@?6v`?4A)?6``꿜[߾ ?824Gb9b??.#pqޫľ?X=*>Vmf(Jv¾;bNZI+Iur߾Df ž ?7?6ps??u:̾~:)?EY?7^?˨?0r?8\-D?..?Xg>݀?D]r YZ}(;?V羬Ԧ?&6\?2վI0? cT?2␾~spo?G1v%?+ P?ZZվ'n>"BR*=֛x? Ӿ "?)?;Z?H݊?7E[?'[1?D?`?I?^_,~Ɂf\+?gy?,I?N>qؾ[?P?)ҿ@{dOР?6ᄚ,V򾐊E/?6\XԾFh ?Cؘ?(t|?dQj ?9 >?AR|FyؾK?&x?Ci¿.n>4?-q~s?@oe?3?楾Nz?ˋY?.\_?0?6ݰdcM̤iʙ_ڿ?>2?L#]  ?Nwھ8gW?Ғø?̾c>(O?Mg?3-?]B?EIN?U*x?b+?`g?D)\) ?D?\ҾT'>N?,?=2^?D?ҿѵg׾SWh&hN?;~:?:"?L>b?Zݱ,abZGD> \ܾH:?T??*ѿN?B?9E 褾W\?Z?G*?-qM?4:?.ſyi?@|o$?5?H?\8?R_ +?aba?{?I?E꡾$?C`{??pϾ*( 1vrW3?Et(Z!f?p^R?>U+?F$gڍ"?_软q뾼/Y2侑VRmza^?= +Bj?^,{??7$?.G? sOտ~ Zf~پq?5Pkc]࿃ke{9?s־Jd̾ڐ?hW@0@ϾI>q˾tj? +Q?@ľ.-?=ZG?QUR?!(ھ?DkZ?a?&*wr8a??AGLk?Bx,"Q5n?C)?L-p?l?N 2`ϡH?>R?5r?&u&R4?5a'@?I&?`ƀh0:xbGB?/Ƹ ?(@VU:H?3݀?=z?*_?-{?Gfyu^ce'|O~hY!N?﴾!?P#??󿖱>ӣҾ +?=ȿI ?@ؾ2T?=Tؾ?M?o@"o?^CԾ?1̾ʓ?EG ?ߕצ?xhU?sswa@pHBA6?B+L??ľ/Pg?*x?_t?&9g?8C;þUf](vemL?3V?'?4R࠾EI7__'?/?nF=?xиۍ?CZԾ\6ha@nl?co_OIȽ^>T?aA⾁0?L_I%?]d>?Tᅵ?/r g#?>ZzS1?BF?6d?]g?:nU:?9DFp%.?-mӶ< >ྔSwmB ?>> ?!5پ?6.׾ Bv?)H>?׾O侭ԘyI?xj?-0|?b/?8J p.?=ԑ'O῎񂾤ڿ@?`X?[ȿ3'zVӾ\{Z<@BE ?W>2?ܞy?LZ=x@ ?JC>ھ꼾Oo?(v?5@?9?Glܾ;?/5c?N򾠴=ȾG|?Я?$e_l@?V>M?MC???U^^iY?V˾| L:-?Oק?::L6`ĿţT,(??d~?;ӓ?2?w?<Ս?4⾰ ?WZ_վ=UT/cn?6s>>4;7?=pX?, S<@$Ӏ?G@m?ݑ?P޾\z?-eȾ5n?Tֿ(3W&̾ n*?)4BQM꿠]H;?(w?C&)?A?0_>"Lr`s?$0?M>>Dƾl9_?2YhKAzl\ Lr'5|9?G?Iء?D? ;?9rξȾuz?) ??3ha?0оN?^yR? ?Į6|C?EP? ?Fm|?Z񺾋?S(?H?=`Vp8?;?02^?5`Z֭̚퍡iT{(]?چ?[?֤?cz?4~yY?WZ]??5{? &OdE?1+yR~?G?[B3?\!F?:~&⿩Ŵ?Nw{t㾒?VX6#\j?+N72?:r?NMro?#i?9hƾ4Й?6?K?,E?(j׾ 2>d?5?^:~R?ٵ&W.ܾB,ҾX_1??8;=I ˾ >?G̿ XjAh~7g?I*K?F>?. ?] ?f?0]~?R +俖s=,?yp :O?  Yʿ&?&kRMJ?F0?# ??迫Ta D(?]Q¾T>W?=ٿ]&7fF?B?꾒 ??.t?TSZlZd?.4?Fɰ? ?]ܿ;HB?0s?Hb?5?G-?Et9f3?+͉<6y`LP?@?@?]S + ?Lk?A}QB '0k^ʾC?&徿??"l]~?Nƿ6?BjI?GN +?ENjz[?E h?U乾a(?<ԉ>o[֩?>??I?CZGP޿v0?$?)?jMꀿs?YSH?/ ?H(4^?,3~Ҿ`?&>>?v?\KC{&O?JWr?Y?%WC`?!NpRJ?3c?G:?B+Z?8 K?PW"Ii?/?Kg@.[T5>Lj޾wޢ8?X?r@?F0>_N?UR~e+?7!?5={;_9?A?BӾ;&?:b'?A\,0侎r"N7}z*0Z??a.?HHm?-3? Hhw侗* Aӿ澶0?E0?U?Kj>t&>^2?Mr?*Nؾ¢7{?:EbľәuHE?61?yĿ?,n>}PNaP?2rK ?@dq~?%Ѵf?g`.?܆>>yb?A?_&?9??H~{ +nb?.׾}Ԓ ?1X?+D2*odmg9u{hK?;"ϾfT?5,>I?TAuWSb2ch?OV?ԢGܴ.C?]k??k>\Ff&?EenN־8?x,>澽?:XS?M?3M?Ex?.,ASԕ?7=%?Fhh% O(?&(Vs'&?8"btn?"Ϸ'J?-b>?>eOI=?7?Dg!vWKS>'?M^ ?/>?Jcnr>D@?3_N?)H +?tHվ=?7 ?6vM?XW3Bb5?[=?PkmP?1DHtv%P׾̘L?2 _1cP ? s?y?x&?P<?!?X?JԿ!?"0x?-cL?Tr?2Z94{?Dl?/? +g@c2>?*?/|hR?(M?Ƞf?A-j= *_?;P?M.?G<8o?辧M[?Tت?O?ܾ?1z?5ˊ?2?N9"?F_*5??+2/Mz}v?Xu?SȚ?I28?GpHK=н!>?/x1^?'b̾C?B=9ڶ`x,h?5?A1 ?9ᅵ{?3?%->e9?IT¾vԾ&~?O?J?A +mBc>?=޾jS~?5n3@3:-F"z?]$Vuh?O뿦۾S0?:?ES?"e;?w־qþoKk辤?Ce?(0>%>?7cteпs?^n?j?oZA?E?SRN>?RSݾ#>|~?>+3Q4z 㼾ܝRv?.w0h?K??n:?eqvL|?9;?9.~?u(zc:PM6?N1ž&?\?A?#NcD<?(KxQVܾa'?>Sf?GdH?A]{v,lǾwF9 D?T?[d-ؓ?$?#O?r? +i?-5lVaa\|?0"?0?NN|QR?'2??ھ7u?5$?"?$?DQ?%7?:dx"꿞Z?iwоT?;R7+?oMx]?3V?Jj?<| ?>6?q?,?e?&?*W?"?+I*J^&?i$?}p?ru=ҿb+%+?zпk?:%?;UR?"־R|wi2f1T?$P?JbM?9?7,?7?X? n?_F&k0?o?\Vhr8/?㏫GϾdIA?U:?hB6q? C!?R1?nu?T?%48-?[ʌxbcy?(.?jƾ :Q?V?Q?6*꾿|?CZ ?Af?JBS?sF??ʾB? ?J-k?7Ügjl?g?/&?<:ھV?š?D?Ⱦ??c?R2?1МTX,*?gާ?0?=)*b<?&>?3 VeZ?E>Uھ2*!B*?@B?I=?l??WXv?_m]?Js?+?Ara~о\? |l^Ts?MbJ"!g?Tz?Bwʨ?E l?p޿ +6ѣ?l?&I?5?5L?Pg忣&l?O0^?If??*]͚?(?2̹wa?K:?U >d?0:-4?-v?3[?q?tn??8'&ln?SGk{xPþ4?9㾁%Tw"H0mQ?>j?;d7?OQr|(]U?,Θ?!{gyw>og7؉X?EiB˵ +o?Z_K3?BQKa?C(οkʚԇE?HMѿ`?J?A)?5;qH?=Iw?^?GsHξցv'= B>IB?ygtwF?%`V?LHr?>?R^?ټ<z?* +ϚxT?D?Cc"?.M?ھ?<0vZ?H鿠Bn־ͮE?* @?]l?sZоsͳ?C7?C:S?@_?>>?H.꾕6࿪>z?1S?6?>澃Y?!?.Z?L?5?‰xi앾\?" tH +j6L* +?5 ?,ܾvV@*B?3f?? 1ڿN?DZ?%Yu?5+?G©?d b?M;gɿ*O5b?*$r%Ͼ̭?n3[̦?1_#?D#?JwzGs?QHN?-þ?Ncľ^{?,Ծ:lFy?.?rʾO2/?;*7?þ2??:w޾&"L\h>[? ܤ:Y??0$2l9|vE?*?4>@?lh?E|Wsf?.r?vX?6r?` ;t?$?q?? qD˘|~@?kS?$m#メ?=ܹ?PMJB7X?K?,ܿ?:?@<ӄP=?;Yq?B课W.4 ׾t?D?ʾ6Gxwghž OhzE7EX?;Yg-O?2ܿm!? ̿|>nXyx?4*?#0?4?)f?ZLt?@6?ɾl~?zW?* klQٻ󿢐?fC;_p?ߦqW?*nZnǿD?- `A'?8>?B?_?P~?DVNoˀ?:?<=W?iD?+l]?Q뾈?WH?]du@re4?Ai?e?:,0@_?zr?'U k}*aH?d?*=?S`*?;?^?@S> +?3־&>Z핿?G.$DnH >7g?% +?/8?<=?H22/(?0?:K?1ƻ +?GyQ4($?%L>?fVy?"?Rl?+ZD?UbWx?.KLF?Ko3V?/e_ ?30|zž?N?FU?2&m?L?>1?+1+t?$">齾LW?'t{?1F߾ss?r?ن?CJG?3tž˩kR?ZꜾL{V?,`\H?2žktXi)x?W\>VV?͹濧=?7f$? -?R@?L?E`k? -ń6>4?<>?"r?-Hٿgtyr?;nؽR?Fk5¿?\Ц=6?:? aj{?2j?)? zb?B%4-+/MHCހQ7?`4 ?7j?w?0j?5u0~h?C?@?HMyMz?e +2m?M?l#?K,?lῠ?"?+?^m%?<ཾ;6S?=삾mƖn>VwA`.9?u9 +!?93xܾL{4f}z }ZL63 d!b?R~CǐzDo?@'?+6l?dҾu?/b>eq?{_ek?$ӟ?UF俜&?*P?RĜ\:?=Dz0^?.rF?͋?a]俤L]hH@?֕n?9?=!? ?! ҿξ樿75%Ns2 }S??Az?[ ܾ=b?BB?H6?-rd?A@;`?˾?5 +,iO\񭾈{?n?3W?:1~o?]FJnR?M?4^?H7Њmx~?RU?ۏZ?H<2ѧ? +D?@ Yn?~???`Z?[l?k?dޒ?!:?ʾB?2%Z?2? c?$\$\?ؾq‾(.?<]N?1n濥>?/:fk$?IH?4FtܿdP:aӿ?-MeK×h?,?l:2y?]qI0m,>:'i ģPt?#=??sB@4۪뾖c>]۾Eo?OB?4*Ծ?Ƌm T.X6ҾsGv᱿z㾪br?)*J*?ғ?8cbh?@D?K=n 3@? +oCn&lQJտ8c@԰?/M?9?]ȾSҾ{~o|?:)?%y?=lk?F-??5ٽ`??Y?"?26. +?YhH7]Ծ2MWj@09 F?7BJ?LDҾ!?R(?Oݿпľ~bʾ/.b?[!?_6?#&U?4ľFʾl@k?I0p?=9#?A߾38? <̖?H&Iþ?E`T?J|ڌ?`&?\2s?NR?#}h4uJip?F.xdĺB?QٔՐ?gڹ5Xa?3Z?f?:״#A辺?&0?=s?\?`@%\AZޚBfr@-?񨿐N8% 牾|?>?]D%ƿ=?Kȷ?BS'LY!ݾ?.gQ}?-𾾄~2GL?&?@"7ͮD?=riUse?)|j?.\u%l߅?.?ò?)~???Ҍ?FC?;(d}]5L?%@?@־?&T?:;:k?<Ǝ?P)@=B@?={?Qg!d)?c2H(ѿ*D?iי?Y"0??#?NP:q>$с)&[?]ϕF?4Od? Z5?9?7q2?UB~6?P#O?>t?5H?9?Z?+ql ?,?=?;? ??#3?:?/M0@i/?&%I8%>?R/?7'?=Tpn?$pƿ6k?ZWS@-a?6 ?2܉]ˈ>Τ6N?Cܩ Lo߾Ɨj?>1?Tb?WF?&͉?Gj _\R?$eI<:?)]YuJv~ܾ?1{?)Dֿ?az?0]=`?澛п=?I?%Q?ٶ~?`!?2վĕ?55F?o} ?C?Lm?U?(?8z!;?;% +'D,Y6ƿ?2L?䛀vb>J+?&ξRzK %?.*!?=??|70?㾛 ?۾_]&po?Ռ:ڦ@ԋ?Oi>;>靾#ID?"A'ADz(?3Jc%jLTln?#e޿N?DR5?8⾗h +b?D*<$??H.t?X0 ??b?/O?J8?<@; (we>&?1b>X?\?n?*ȶa@ +@"L[?o"#c?@v<1?9>37'??Dྦྷcc޻?K/?(%?6ʾ4T?2nxDٽT?F?[bdμGHK?I׽9?=J:?IzT?A(8;←??.Mr?o?ReM?@̾Kz@?7, B3?1G?ӡ?-n?ʇ cm̾?G@/\?$?1D[y, U)?B?/7$?:м8?5p?ݍ޾|?Mu@?/u@,.J?Z'?;V? ߸?? > +Vf5 QrNuVc>}t?`jU*?3=?0V?#l?._>r? }?PX?KH?ʎw^?0"|G?ŏоھ3Z?@S@,/Dx+-g?Ab?8? ?Bi?&ھv-cDat?Weɾ09꾽C=?M?+z?_?1߾W.F.$>վt~qx ?B±hu}>?%H9b?(}?IUfKL?e*?\=Vx:?P`޾6J:<?'?% +?Y!](??Ft0O !?:i0?qx[.tH?(ס?8R?ľ?:Rf?M?;Eɘ&?PC܈p?RjkϘ?:(x?A'W?8?>9[??F?-` ?-v?';쾥TDz?6eM]?*ڨ}?7J?C??*v@NGWUN@- +Bh&|?-w?"?7|b.Q:׾d8?:t?4Z?H >ddP!>~^)d+пMq^辐?1Out?EԽs+?,.N??rپvoc78WLпe|?H}JwᄒҾ+v3}?쿩쾇Q?Ŵ_оAp[>򯾏@# Hz6ݾ`$wT쿎P?q?6}->8A+A%C?ξtiep?Rj?7?>qMH?@Z?;x?/T[?ƾN?RH?C~y?JzǾ&t@A(t?.?W3 4?U?ٌ?6Ixm?HL3zh?A[atm3yF?Lؐ?%?&ھ=Dʚ?h?Ri4?6jľ7G.iYjj#?C?6澷:Z7?D?YU??48V?iBL'??J8&MپP?DPU{?A4mk־ӾS㾔7ニZ?,_ÿNbSR?ľ;EH2Yk^XHľT?;C/=ݾb?74'Yžf;?6+ +‚?9 $ ?:j5?A?(qٶȲ?G?*& +?2;⿝?7>?N^?7/߾@h?Ә?Fd? +$V?F#?܊?9K?0̾.1l@`ۙl@v?ׄ2(ɸt۾R#ȫϠ?t2?0?F>ɿ73R?F"?R;?I.z>1显N,O?L ?>?P?({/P[ |?-~'?M>=fk线bQVr?EH?I@ɾρҾYY@<~,???ܾf-?\~5H?P@YҾM?_iZwt`hr:?< z)?d}>ʾUJfQ㾚.|>AgAZ5.?F0]dX\~?+?3h?*8?=wIW:u}?9iD?=4?c^o;]?%?2@ @j>?ZYa?K;? rվ`%ye?@Do޽??4L?:eX?1\L?T#?@4-?:P;V?xKƾC? p?Kھ7 ?I6?Pö?134?PoK?-%ܿ־?%@?8J +Mh?MR 侜?-R:?>;?.澔?ڿ,?I x p_?4E\\P?O~?gDš?-?,Pm?m&ׯ ?D#?3a?N[6fľK@f^9A>$N? q)L.?1\?.?3E3?0D>?M4?:wm$?c`"?Ux?F?N? tJƮd?Rr?/?6J?ܾl&?6@&?Q? '~?Ef?F#F;r?U@h+?Q?I1D?8{`?O?1T*P,??XNNvpoD?2.p?_ـ?9G?6ʀ?)B?'QuԾL?"vc꾯 ?gQ"?7՝?P?0f? 3p?h H?H"?(?!B7wT?ϑ!Ajw?;q" +?$jҿ9?Dqtр?/%?4w.:8?`[?>?wI?*tcr?$.9?C/1?ga?Nʾ C ?6)?>[&pľ_Q֢ؖ`?AͲ澶x`P?^?Lr?ذv ??, 4W?HUO?3&ξoRx'W?: ?;v;¾??Zi[?8L|qŝ?S;?3l?#?%,п5e?B`?J&!(?<'M?O%?SK?EvlM5?ض<+RnTR?B??)Ú m2?HD0q?,ƾYX?@cھ#?/HU@?.?DlEؾH;$v:?*B?Ǿƾ*d?!˾?2??O ?rٓ>l?+3:?-?S?V?+꾟ݤ?!?:UuT?)5?Uv ?#?C?L㸾?' !(Ҿw?#HA?%l"N7?G?-dZ@J?A(Z7Lpb?' (alt>E"Ov? f>p?6O?B2>N?:Kݦs?X濘?+2?W8?,q?9K?J+Z?OU?5w?ȓKt̾R?$?:(?Mf?4?Jz;#2?Y^迚Gu/*???*dr??0,*>՛'H?m?."f?/3?Ԝ?J?qоWP?a?(~{v#2?+?L׃u8 ?my?"oôI?CGX= S5Ŀ!?ֿ}?t!?4M?ʾ{ݾl?-aLJ5?$O?C?7{ ~?:?+Ҿhr?$X?z۾/yX?&?-l?%&6??A?%hcw[?.A?ѵv?1X^e_bE,>l ?D[?Ad(P~rl|QF?@DOH%?ZK/??)*?A }Rk?F?RS)?!w?M3Ҿ?3۾FjX?ߛ:P>0?Dj?͉? ?(i*?+?DѾPؽθľ N?پϾ ?njcHU`"iwVn2#꾝&?=+c@྇RӾp?4H?3J?:u.8??v<о=?.W`NH[۾d$~?^| ?>Z?0?Kuɻ-?L΄?=zAF?AQ1?*ӿ?|d*4[4̿2d |?#!??'?A㔾V|?9!wU(ue?3T??e?Fl{?,u̾^y??C +?-|?)?72uھ_?0E}{?=jW?*+?2!0ӐREJ=3?-?MD/:DP?`п<ւO?-P?hɵ?#iɸ2ANy?%$?DdMF%?*u?%L&?~qtsʾž4%?%{?H?:?O ?9?4yM?&u +`?G@)k??-?9D&Lǿ?&⿢c?VJx?»?Kg\fӾ!yǾk``@s?AV.v??'辯l?U +8Hƌ?3u?,澮cMY*lC?M X?RB?<=?:?`??\pAT??S)3?,avvU<-?3?w@,迦q#?%o?]3?[=ݾ}t4? 5?XP?B J?;C?">?5Ӫ?ȺsT??ݍ[?4 +?!>?5Y9? ?;l{i30?:d?$r?mH!/'?-ۘbd?ߢ?C?? ?-:?B .B?7nlT?١Ob?FYC?4^Ru$kZ?eGRa]s`ѿ@?N;N?L⾽¾?d?܈?%ظmi?<=; yO hG?Cz?;=3O1ľf?&MS2?@ξ=ʴ?^?]!Bj>n3?+1?6+< U?m>#пsr,w?I?+kO?Ylo?9=WT8T8)?K ?U:>?ݬz?N-A?2\3F@v?K(f־Gb?HVƿ?$I?:NΨ?%?6?(?3?'iT+F?Ab?2??=^(?`??J? ?I@ R?-?(|^Y?: VF?/@?Zr?F_Pܜ?(V?5?I_B,?o?CD?jd?4ؾI0ִ?s@PM?Tk^?+-ξMӤo Й`B?3Ogپ%? )zT\?;6,?@-?ʞ?5Ge?1׫k迟p>V?Q%}?(^28`mN?-)?dt?FM?%^?'{>gM>?/2?]7?@m^???.bS?*9?? 6y w? ҾMv?,~oy?36ھL?>€??I?B?Lؾs?U(򾑋R?GۭB) +0p??Lsa'?Ae?H턾[^A?>U? +Vt?M"Ѿz̤t =?Je?u?I挾 ?Jp` md^?Iw?s??5 ^S@d(?Bn 0(?ڡ"=K'?Pƾ?;ޗ?4d?|݇sQC\ƾW+>GN>?U/?Aw?Bnas€?-_n?)?B.뾉j,? +}?]lTԿ/gLV:)3ͿLjY[ɾs ?6em_?2I/!?K?PZ?&?3T(?.x?6S?AlZ?ʾ?Lhf!?U?%վ?E!5TĔͽvͣ?He.Ӟ?? ?c\?YW4ƾi%?5 ?/xÝLa@꾙3d>a??1!4z?ڏ{H?RL?y?6?%4`?@v??8??$?-d?2R8>?:0?*u?1R?]?3g[ƾ/4?+޿j?ә?@U/S !?Ŀ?Z???򻿚?K iM?cie 3 +| Hžt {ƾYlsk̹[e=?;׉ Z?IrEh?IO?YfC&um?W3?O?q?,o)&?9?G?Vf?2?`+?9d?2hZm?B("?Pzn?)g/iR?1:??wھ?TZ~{tJ&Q 쾰Rc?-dc?h?I??1:?%|K?7˾Ps_A<9$N??+?2H?>?*};$?q*hR ?Ѿchč?:A)+̫?,?;.+?C?A?Wu4?&dt࿭HZ?6?V>t>?y1?.?l8PD?<l(.>W`?RU??{B?Ci~?OX?@G侚?F ,w?3l?)vr?hE?) ?;AO?.B?5^7? ?;-?T=?k7 +W?F?-)/׼ ?.oǾ%ѐ?' '?DV?:Yv?2L4]?/ c?9 þdn[;g?'<?S?=?3?@o~?<>w{nt +e5?՟??C?II?O??Lv&P[蘾G;?;Ru?C?JB?uwF?5?LESaTo?TC[?8T?^?:;u?B#?WS/>?9A?Ԟ}^?5?&ӛmD?7K5?N꾿a2h5?W2?Ⱦc2?-(j?2?*CjXK8› +&?j?5?C?G?N? +r?k?4jBE?Jp?DǾ?D:GlJQ?C? d?=5u?.?,k?MfW?*a?NɄ :"?bd+?I5U?O÷?5?Dޚ ?Ю>玿;_?&Ls?2{x?B=QFb?4*?8Ma?88`?=?DE>澫̾$?HOL?O3?CG?0t8?R/۴?Ae]x[?C⾕?I?763 ܿ92?7ϰտ? ?/?J9!?-(u?Vz?0|?W?_?:>RVKUF84?008*b?s?+ƙD???@`?+価e&2?& ?@by+C@*"+ ?F&?J?B?4.$ssCI?Ӑ`.:ϋDB?؎?/^>lhI?X(u?$Z'I? +^?&?@ +ƕ?3[?8c? *𾜓h?"e>R?*srg?5ξd6?BS4>?3&xƾ(?? ??=?0$?3b$A ?=o?8V:YH?ZO:8? MQ뿠Wwkg?NcR?[b?bJ?>?o&?Kx?Vp>e?'\D?? &bQ>?%>-?7{??7X?-;$??Ge7?C?)?~$`2w??γ*# t?9n?PȺ<`>?C3D?=A?+;㾚Vrп[0 5jxZQ&?9Y?IWF>(M,?$gex?4@<XBf?/v־? +?!w?ANܾENR\-?=T,n?4پq?\f$?G8w?V˱?G̳?6^?" +?K-Z_?5 ?Z?%>jV?JZ'?>0? z?#/.?ЖC _@jѾBb-}?"V?o Y:y??ճ<@$~?-l?O?¢?DrL?FL?B:0Ͽ^?9b?(,Jvz]?¾%?=p?;?L$oҽm:k??^?,/?? {?(gVE?W?)g鴾Wux?l?E?f?A?+???Bٿ#CB?)Y?-?ߟ|N?=3 ?4K?1Xc?322BZ?Knd??nL?PhHQۣ?R?11?_/?En@YBr?@(r=f"پW?@Ҿ;?4?l?617p?Zgq?C?(b?{? Q&krg?.w?窎@'aC?lz??j, +R?@ ?An=@?"?Լ?۾!?U?-l?쿮:Ⱦߋ?3L?V?0߾i$L(?=?!;ֹ澤?<?$b??[Ҿ?Pkz$fྩ }X@?'Ŷ4hH>ɬӾ]pO?<*?H~qBL]??վӾX&? +)?$Z?Tgj?6ƉϾq*,7ܽ:Ԙ?vay־|\¾y*KX?(,?8yn~?,E??Zƾ[2V?LR?/¾8?A?C|?>%+?S[Po ?%w?$"CVd+")?*=yj-,wֽb>?[??Rr?4,t+?'Ҿ^?30v\?>d?/?{?( +oҴվYn|nnG?0z5?B\ǾN?'?mv5?N??P?.[?޼Fs +@=8@4?`?ƾ, +?E?9+>?(l˫$?v??-\?Hu&?9B`?k[?)2?%M?ADͥC]ԆA +>Z?w⾪?۾9??2u*?W?!???"Xl?:?S޿?3⾏^??X(?H ? 577?D?\ +?6?0ruWt?:Uw?8eF#/?$:ֿ5>?]>?};K}aᵾ?N澹t?M*?> ?L?80Ɔ?B=\KD?E d>p#VVӿ|~ǿ0!(?4{a辞ѷ?JP?;߷?"?=?@`V? _?Ue?>N??/?:H?5Ay3rDS?;?.O?=VaaD3??̳P?t?WtfSk?96ȿb?SV?7?>ݾ9r?N"-?b@S?3q? r?8?:?0:'?@Bk\%i?İ򾂭a?V.a:?Jj?`%"?5:۾^m > (?l#`S?w?R?(վھWC ?%?&Xn9=?T?- ??~?IuZS?4?G c_½>?YqL󾮆n>ǵ?JJ$?ל?1@%пοit$$?Qj0P޾⾯ @@CYCHBRM@% ??Ei?7qR?sPХ?IBL+ +w6f?w?1F?MԳT\?,?%]?Dh?Cm7?#nR?"?J>r@~źy6@?:H0B}su?_zhо#K}ZKms?4poнg?T?ii Ǿ{?QYD_?1?<\eNo?7:% ?/V?$ `?5BwF>(Ϡ???;0?/?ў2 C +?OQ!Hi?"v?+"?"H?^H˾^$?rQ?3@?G>N?1' ̋?پ׊VW?%-w +:?A? o?Z3h?@ Zg0.?ؿ H>Ƶm??Fs? {?@"z}>E2?R5??H?o?~-zҾȁ@?п$?=d?"a?J!?'W?;1D:_?վ? ?ȾβpQz޾4?vU侖p?9վ?h'X??5?Xz=?sؾes?K$8\;پ?@ླf?2i?U T?&J@6?W;?!Ƅ?^A?5F@A̤@rӸ?5&?@- ?!^?Fj?"?&m쾤X>L9K?h+?*@B? Ržl]?2?5(?) +~?)?\c #?W>?8c?/b?+6zlbƍo?0K?GlO?=2?ʸݕ?>-.}&R?D&z?ScIgQK%d.rr^?4zk?@:f׿Mmk?E?,y?:!V㾆|㾂Tc?7?\RX.?bP2=? ;?%1?Z oJ@?k;R[@! aȆF?:Ӿ4?!P?(mʂ?0?P$&?S>Ef?B??)?Sp?*[žI9?G??4>j?.&*?:?6)xPԠ*?6ȾJ?9%TNl?0h?7?L]?v?/@Zj\˾⿟X4M-?l?:c9?䰲?Pqۿ+?%?&@?(K6v?1~^??$???Et?,tq1ArBAe~@Τ?T{v>,??0?Haj?69f?->?<|U‹??!?A?(j +?dE~:?^?'>/^hܾ:侂ؿ읾TY ?4?!#?"\?۸>Ҿ>;ؿAY>A?j?f?,L7i?&e?S=v?%`?¾ϚKTk$t?' ?8Se/?U?M|?H@?5K8wf}?-??ƾ͋?Yذ辜?42srA?ճ>)W|վKg?#of俥s?BBGd(?9ݎ?5[? q^?$?JE?>t=:R:?WY?TݫJ>Ծ7'I^?;?Hw?ݡ@R@? ^k???ھfxef?(z?+>^?@^hAоF +1ttD?Eh"?5W??W?|p?@]5 Ȑ?3uD.?9$?=?4]#z>X??NEE?5$_??Y㠾?I9?0:!?0@? \|?Cv?7>?|?A?:n?AQ<ƈ?6d?=??M3?Vt?/g/xwϾ1?=쾯/tc쾋^ܾ;>?1;?vz"?M!?Ӗb?|վC??BR?4s+q?Zq᭐Q̿Y?,J8?YБ}sR^?~ƾξľy"?+w25p?$?<98>h? Ф??ҍ""R?AK2?H>?Lᮖ +??M+p?y?@:m?8<?(?99?)?;RJ|&/?3v4T:(?6ה?_Qjc?Q]DvxB?SV?wVĬp'?K?6(?dC~ +?]> ? &??Dz⵴#a?"`N1;x?O ܛؾܾ?ZA'C}?BAZ?l>?? ?84?=x?3?3y활?Itf?E?n?H?,?F1iH?Խ?.wFs׽?0n%?>ArYlh?2:\?O)?mBоҽ??6??@u@ֿ?1Eq?]?8#?Xf?z6mDd?5ö•t?1ѩ?S%?7??i)-?8 @"D?/n? '=Կ{֕r?) ?*3ib@>?8?AW?G}"?'&_󲾟P㾕wp?C㚾 c>}Hߐ?N"?N;S?I?)?b?1$ ?.^?EjO־?Ff?B?c?+`?<-?(?-?Aɸ>㿼? ?RN"?m?@N?=۾ƭIJ{?V?*.N?PUP?A/t?6?2R??k?G?J? +xqо^*?AoNJ?ҩ?=A?,?:>M?R5L?A8=?9ʾ2ܣ?& Ib???J?j?ͯ?'x? Ӝ;A?U?#Ֆ?*|'A$BQBj@?FC"N?>ľ]+?57?+?BV?a?OEb?R0ay~?@tO?VI?i?3N>z e?-?%/F)쾿ʢ?*B?;Mf?J ""?- q3?=z?G??HձľWW?8ZD ?*k+?a޿Oz?ߌG?ߟ? ?ǎď zľjj?' H?$̾6?k"?B??DC?(_>ۀ?;-})|(i׾LGţ?P?@lt?#4ڽ=A`c%*m?s'P#?=Q3|=E?olył?$y߾Ģ?p'Y[?'?E4@?T?;ݨ??2u?M:?⌾z?A~k2?N?:O*?h$ʿ?J]R?Iľ[h?6۠:М?0 ,?2'?qX2?^ŋ?$?}F?R`?.T_?0^?ApϾz11̾JnO R*??ߟ?4վN??&)R "??j?#?.!ڽ(42s?zo?'b2?X?a?=-?-wTYQy^pᾼi*>?. +?Nk̾+x?I]?'*$ _d?3v5pj9?3wq@BqBAG?oN5-?0:B?Q?4e?*Z?g0?F? ?HN?ʾ?$?A־վ/??FgR? sM +,?2?# ׺~풎a辕?9?*S~꿔R???~?Mj?I ^h?8y VM?#?=rʾ?/$3= ?>V?C?=3DT^@?b?*?%zؾ6 -gw ?Ƈ9.X?2?RC=0Gh +!봻@z?FE`>GsE?0_?%u?.B$??=@Af>C^? B᧾zN??*ھ?)e^?I?8]b8*?-a?)+mp4Ⱦ~@?J`'? ??3x?yo?6-i?f?% +=?,tN øYT~0?9"8?VBU+?B =???AsP?EFv?uſHZ ?,0Nؿ??>G?M3?3Hy?>ʾJ?tngL?O# >.?A? x?Asw?B=\?2aL_?-F?vI#\և<@v?Rc}?<>U?Mrj?)h,?I\žD9j/V ?s<?V? P?8; +z/<q$?QTn?!D?*????'?5M +wz?P?M-%?*u+Gh?4?g?+?.g? dL?k?\=f?_??澎\{ ?4оUS?2XVf?E?(?;6L??J9?Of?Y?V/^^?^^i? 8?.?*#R4? +?;4?_۾?+m+? xƾ[m̭k?$?I^?P?3ռ?D~ƾd&xy6B?,@XB=X@?Q?Γ?(?,Ҏ?<^@?AvA@ͩW?+2w?1*pF O/?.P6F?1?,1$?  ??;qǿ՞>ה+i?M:?* uP?,?)Zs?LPT?HV<@?<,$??*95]>x?HwcVھ&̾뾙As*?HW7?k.2gFG,X?M?6Y?4lk?KK?# ?9;pb?V?Dr?>{ ?%\ҿ<?/?h?c?VR?!3߿?%}ϾV??W?$?9?26+U9?/Gla?ӣbmp?8?Qd5?;^jj?? y~?.q?FZ?e?&e_ľgq\r!T? ?Ծ???P#gd?M?:?R=f?% ۲?/~q@ S%C {@s35Q ?(?8DҿO?O?:@$@?+?+k!MUEOT[q?f ^>7gHVK?8R7?ۍV?B?<>҄>z@gϿ_?2W & E?2X?0? ?9vlΚ*\;?@D?+c뿟J ?"+r?G?ٙ(?8H?4CO? ?$?z|??8ƿw0??s ?.7?&xƾ'?Gc=>?ukYg?:GX? [?4Pp?C?Qu?Qu[~?C??ofLmF?QhD\Z`?iC6߿r?CĒ|@"?*c?O( o&s?o;?1־ͽ?5:#N>o`)?戶?侲W!^?U?4*?:&?ؾz?2|?0%'?8?/̾2龖S쿥nڿ +(?Ȏ?*L?'nݾ;?UK?X ?1???޾ G5B?9?;卑H@?:~D?7?-|dV.?;#?=?5_?&)-#?.@ƾu4?K:T>x/T??I$o?4?ؼ@%} ??3'G\?;8?#ONf㜿?.W{@WqTJx?L?+^cf?%X?8di޿ H?;|Az?]?%?-Ԭ?J3Ᾱ؃?3~?Ӳt?9Ӿ >CľPgMVly?4?Hy>*(w1 ?aп6 +yWY?jډ= ?.:2yĴ?4?@ d?"?R!ü89?O\x +w?Lľt:f?>?1mr?Xvb?=?N?=ݒ"?@ؾt?EUAR?7? 2?If n?в}٦sc<˾Rbh҇?۝3?BcBvEH]c?#X?w? $YĬ$ ;&?FS2U?W?\9?, o[G`?P5&l?2݀Z?dObd?Mrwa꾲v8{f?,¾6nyg?)?? O6R>?Ԗ? 0?8i?$"?Y\AϾ?&?'Ldz?Z%,?)?6W?L?Rkwbᾠ?@ ?ib?2(}L?@ od?-);0Jo?F͠i?I[P?4߽?᜾j'4?F%c?9y0?|ާ?l?P迗ФFon?+vs!ξ#?lMԿ w?n ?RK?2頾CԾ3?15sl???E`/x?5[?("?Bt8u?؀V~?:M?Bk?GU~?תj־r?<3?(9?9\rʃ2x?䊂_EAB?0A?5.w(ؠ??˜ؾl_?=B>ˣݾ$??`?P99b,u}?[yCy-i?"?@Dn?KȾMO?? ־u?A8?Y?? ?m?.?̾&"?@Uh4m?Qg?=hY>1ɾ`?!?A'^g?" $?3vV??&Jw _þHO|PF?FJ\,4@lA +%?? ~ľ0?? ?9̾Ύ?=Q~?b񴾓s?C?3wHi𿔠?S&ȃH?:徂sƾkWd?k6?+?缸?>p?=?~h0V? M? Ңd??g???d?Xʙ#?4াP$?5F?=R?f?E㪾ť?Xb&|ҿ?K??.B +Br???$?#ȾԿw?--P>D0?8o?Bny?0,x+52{?5Ny< +?)?J,о͏G7e?'^?6?+Yr?2꾔-?D`H"?8?ܖ?o??;?_?B ?C ʐS?C,!0?g?R?=0?J ~l?LIਢ?C@?85^"侰0?7u[V`3'忕=?ā2?f9E5?8HDľR?B[=H? M? 뾛QClH J>?9&aſ/?Ud?-^?O?\?cuɾv? ں?Am0B~AH?TO?&/L>-Zܾ?6u~?"CQ?-ښ<}f񾂱??6 e??o?1dqF?#Q?)e?Ta?M&?MP?+ϙǻ3?D>k? |F?Et/x4\t?9 ?&žf??7f?/R?,?=.? ?9g¦u?5?‡?95ݾ;b俗?Gt?@]y?䠾:;?E?Q&?CnzC?wX?4ƿް?;0?8h0p>`?9l3 ɨ?r6?Ga־,?Jr;%eJq̾"?0ݿ?SL?/>$?6ɦ6&?F\z3?-uvy0 zgR?Nf`# "{]?i?Fq.?8$?E!?Mdbp?)(K?&?Ce?2-󾂑ƾ?;"Vd?;;?Qa"k'?ӌgt?S K̻!$?xT??Tr뾇?I<kr?3>iN"?%I?@N6A/?BݑB"|??O[ރJXkK?ɮ?*??KE?Hyh?7?оeNO?#?8վ:w?P?Fm&?#?;g(=5d|G\ؾ-?c`?4<"?Kg1ھ-?AI?A f*_s ?<k??0?"ȾH?=?7B?Ϋ?C??o?IQUJ?'*T_¾?7 ޿qUɽ_qT?,{|mU_ECUAk8Cu7?<ؾR6?._f?UR)Z*??ݾЈ?גҾ3 +?4hؿ煾!bfEi_x& s̾SՌ辢h?B_ξޤz?6xGOҾa(&ɾxzV?yS?=?MT?G0x?-䵿 ?0u?L5#焾Wp?"ٞ7?+Zn]Ӿw>?*̾[f?䊐?_2?4?˿1?c}??$ ?EEf??G?+BN?P?l?;>D???9 r??Hԥ?ݮٿ +??*b?vE>%%倿%{?G,?vξXC,?<\]ے??&k?y%?CI̾2?/0ھɰ&?p0z(?6B?Zw?:P<_T$ھ` j?2rcؾ1P'<@)D? ?#n?y?"I&)?β?Us?-D@(>=|3*4羳l|?E@p?&nn舿~W?k?@,,ZUME㾃M?*ߊCb?Los@߾`ؾ̾i4?-5b?' ??߳῜cPreE?I?k㯾Dz?J / +B^ۿ8xhľPtt?EN!N?E/KS?ƞj?IX}?#{aj*??uwz?뾋yEᬾ0?#J`-?;f?/l? v?,ڵ?y9c5>;\ v/Ҿم)?Oz(?13?28dv7L?Z?F(?:dS?0?5[??q?+)Ǿ#?(??$?dH޾nݩ?4Ҿ!?N m?8z?'6ɿt?G"/?2?18b)VA?d?T?7,c??iAUp?FB?D+xʾu?J?M~?R?]?8p?Ij+?K?8h ^AY2=?#hű?*?L?,9?:;?SSҴ??2N?B?'L?1_?=ibr?2?(ԃ3?ZD?p?&?<?.?'E>b ?L?? F?؉?ظD?47z?1f?Ee?4??ο4?%NyD?3T?Lɾ ?A|o,Cf?ީ?)0ؐerԾ +6?*¤EXWV?QYm?5M?K?h;5z&T?Dz@Li?"zrl8?W.<`$?A?JfH?Gg?9AM>3侭!??K?4RnpSe?Jݾ,*?Oq ?qb0d?Ks?*=3?X~j?2U2?%U?4'?=V4\Pۿ7?/?99sL.j?.?,?%N?\ U& 7,xDGqp +?0m(S ?@??↾T @,s?A?KN?_eNľ?D?F{?@X?G8 ?W|?FE?=E?Q?]h*YZ4?I:?Y>?>?(Gݿ{?C?S3?7gX go?' gh?2K?*ſ ?*=b0??.Ҿ?1&%?N\?0i?)y?, ?S뾘k8? z?໧?"%%t?9]?1?8B¿rb؄?>?,7?'Ac?GҜ?? ;O?駲?7Ȭ#?"̓?2~W0|zip?DX#? ?ya(3,# b?5Ff?ӌ:>^?#/x?Խ?I?d?t?TcY>_j?>x9??aHVS,?"D?KA龑 ?SD?Y?9vӾ??* [Xk+?(B?\$?y@?Jp&oi?-fԬ8h?6C?5h濮ڗ?,'D5B?. S̾:?O뾓Yn?BZ9?3H`?$?t\? 9$?+?D(l^?/V@ 0dd?\ ?= ?ҹ{$>x?D>; L>4?%Xj?!y྆2?4rM5D@@Qv?L@?6s?yu?8?z?BʾK?E:,?Q]U+?^ZpND?j.ZkJ?-j~ݾ ?XDvXxXY\C?@)/B?H楾QH?81?J [>'q>?IaS?I}!?3f?/$?%?R?Ⱥ? {ؾRR?$w?u*?e6?4λ>?<*.?w?"?+HF7ӝ?T?K(:?W?@D4?ƛH8sd"H$$Y(U 3b~f):Ԍ+??оmV1?= ,!0l,?F(3lNξS)?K;'&?=Ҿ>P?^??)5C͜?[R?d?OD5D־M%@H4?N+d1ӝ?E?]x2Nt/YþoD?8L?=*s?Dn~?S9/Ӿrt?-?4? L?'Vj?O۾UX<|?._#ɾnM?б5=VwO/?,4?=cɠ?GY@'O? +`侠SK?F ?7t1?@z? ߾=Y?*,?0';?^>96?HM?9[?B2, ?",6|W6?D*?7mF?)G?ROA?/Yl徲2A?2??͍0o?45?bk?0?L?c*l?8;l,9т?9yJ?J1?/4T?Тb=%?4z۾n?Ƒ1-?71b?7wmBvпeixo8?bNj??1,l?,/0^?'|?YD?7(~@ۀ%Tݾ-?62(@?;=?X?(S?'?8|?) n?A>AHAGX @?%=?f?+*?/P?K??'U?))0?w?8s#?+u?=?G^?9?=Bо?G?>TRn?ۂ?K?&|?( N?9g?>?Ne`迗\?v?FIӾ?KR2Fe??1?CJ=?6:=?=پJm? p:?&Lz~O?4X~? >Բm>?=C澐=?Jq&X?L\ )D?6?$??M֔?-Ve9Rh?!;?"@#-?ۤB.?xվ徤2hþ?W#G?X׾t.?Z{JѺ)?Y?$?!ƾF?1?Cҽ.Fh?.8iD־]k?/PKN8=?+{-?V 텾 +u|>m`=濥$?<?ۊ[?:пܾ?2̃?qK~>^=e@XTh?V;D$@p6H $J&??'?K:?=?.?C, Qn?,v3_ ?Hu?? ?1^žg??QX-뾖?7ww?&c?;GӾ]?eY??µk!H?$~?B% CYžt⳿x?Tg4@T}?:vb?;?[c5?;#rn +| "|?=-V?fye?F??u?AeP?B?k?Oo?-w;-F?Y3eO=`־_]徺?9?(?ʾ ?G?5#̾PYN?9 +>&P־Wata_־T?j8õ?0|ԾR#{|?6N \?Wu˷? [r+ +?=?Nl?U@Sy?2??D龳 +?2p?Cx?3\[?̈?Y?1>L?־%*>G!?P?R?:8G??F@@#lnY?K?U{i? +CȂiN͋?M ?-??l?Eb?9R?%׾k?( q?#E?9$t?<\?G2+ ? Jb(9@ˣ@-x?1ԩ?. >jR?=þ? D?4Ն?.}'ڒe?@6]=.?-ZM?Ky?^"?%5?+}?)n?W?3x\?;c⧾R ?::xچrP?-T?.԰.?ޯ?Jb i??3T?.h?JƄ.?@}޾2x3{]ƾ? ?8ÂM?4Y?P >?=[?=v?&'?7zK}6b?0?3Ir?*?l徧 ?@d&??4m?q?i?=bfIS~D?r?.m\_t>aqܾyr?p?:T?D]'?<\E??JY?7{?:4"i>5 @C?MԦؾ?|ؾ_?D?.j%yQe-?Njuؾ@?5bp??UϾj1jf-{ڿ&wo?8bz?<3ȼľ?V˾d?d?g %?8;?c?%x.v?C&?J +?:'?,S?{?5U?44?!?Fx?! J?-p?+?*dK6?U?":Ȏ>ؚ?g??D/ܾ?n\?冿?/\?WWոg?/;?>6龮򾪔FG4=?V甎?F?%~?4Н?+?1c?2;?=?N?=1?)L?Qƾ?46?ғ_?JY?̒?+P3?A?r?b?B?K?Jr?$ET?ξP? Xk + D?-'?1^wB?9ヌ@"ۑ? +?x?!2-?Ef?/UVJG?CA?6E?p6?:?D?૨?'&>$Xn? *?mx?&^G1O?)6>k??-&?'?.޾L?_?K?'Ǻ?+B?J&? ?7yݾ>?@5Hw_vw?dA#-?@^ɒl;w ?Gv?bu?𶾲5F?D$wzU%?4m?9lPH#v?,d{nT7Le?*??Dfѽ;N?7&f?:T|?+*c6(?3Ծ[)aV?񣾭?0M? ~Kޛ?;3@Z?<]ꔾ&?ɺ?TA? A>㼾-gP2 v?9?3;?1^?4?.k?;Az@.U?2?̾?4 \l?ڀ0?/v?2`V?&|qb?-?$ƙZ?vbо>??$ꔾ?'?$z?SX?-??ۙLtJ?(I7?& +?9(7Dh5?5?;G>|s?@Cm??WX?~?a/ʾnп?:? ?3>?'?0?ξ?>9^??E?W??5<8haSA?1\|m???^"mPpy#i?0ξ˼?@?I?8?P? lw?6U濎?D^ſ?JY?:f?'xVBP*پ]g" ?NW=?4夾2=*?KkV3\?2Xe?%X ? %d"?Lf?<}Ⱦ=nvؾ쾮R?+?C1?A@}n[^0?.T?D??;?-?_Ԯط.>:2?J'?S?;?R?/?Qq"?3 qrRH?'B@&`4?fp9Ą?A>?/'?I?ݛ?Kf˾ҾMk\*[o?#f?""Z5? 뾃-?"1HW??3"?8@#W +?? Ml?s ?h%4,@%P?0j?02:xg!]w :?Dt?CW㎾&?Y?7\??D?>VنپP@?2-h?4x??;|?c?/cAI?:Өt?*e@+|??`?:p쿝p?9?OؾŨ[e?/?CNY?=?e%bھ~d޾J?O `|?3p?8\?%??%Ծ#)?(H ?X ?J?⾏?)dO'?"8;Q?L4 ?.R?H" d=ҩ`h?+ھ)Ikʾ'[g[ׂ Q?M5?#?B?4eg?0(r ?ci$-6?AEk-*?;#̾.ھ(?;U?NR?9:*?̌s?0?;?\Hھ̋?)?ٖOᾖQ?՚m\?4?8]K?I龾A??D7?%?P?O?? [.? ?_?#w? _?*??`?=E澑.uDL??7lh?$ľqi?<?>1=},gj?Uy*?I=HB‹4?A??$Rnn$1?9z۾Dxˠ'??pmc~??=2h? +侂ˉ? \8?H?@~ ?P@z^A?K?1 c?>?? t?ɛP?:D?+Aj?2 S7?#?2?6!?528?0? FT}?B?9:H?' +H?V)A?r?> +8?9?9b?$?C,-G?;r(|?9s?i{ߣ?-?+/:?Eھ +3W?) +:?@g?Aؾ&?\ 鰻[?9t? 2j?cV4򟾏F?9=?8??LL[u?!3?N?[1>A?3?$YbX?$3{8?Oྮ({?* +?=E?֦?4?0?'?>A!;?2We?(?#?I1ֿ?HY^?%Tp@Cw??4??R?6?C84?"?"y=?E ;ղ/$߾?#8?D(x?!?&ƅ|5w?6?EElW?%?ʼn@g"?6Ѿ4M?!"?-/hWk>nz?%`>?F>n?01?,?Ͼ?ȯJ? 1u?. 'gU+4?0C?pT˹?0gj?6h?;e?W񿱇?!;?ݜ?i>"/ ??.׾hՋ?C?"?0㊾8n??[<+z? ?G?UXؾ?;937#lf?)ϾD\?>sx྇?bmb?EU?JxܿM?IwV?Nש$۾h=w&Y?!"ݿ?,|?AU?H<?LdRd?y/??@iNtGК?Tk +m?Ԉ-(8)?+̶?=j?33>[?Zh?EIeF? D3?1?<2e%??9RnI:?/:KT ? J?#?F?F?G3?:V?(,8?D?.?U.>jG_?B|6?ELͿ¾?2?4?.6?σ?=?ե@?Y?о`?!.? jUNgT>??2`=0`?#hd???ij@":>㾐d? ۾N?*RT?A-~⥾C@@*?E7?LXO?)vԾa?AA?+W??6JFM[ ?<?w}Frj/<=>ެ?zV\?@?J?):?&aAG\C_@f/?3T?Je?6,??;y$d?I~?J?F;x?+DҾx0p?*FIY?!t?8?ſ?@$!?:s@?)?Y 1?C?1L?3Pc?V?8F?! v?@f?حƷ?2?-Z?9![?Һ?>X쾂Z?U,?>?CBCL?{g퀾]?LT +^z?4zC?*\D?|5?K?"?ՎFK]?eѾλ\P?C?-E: >h?S?Am?4?>A? 羶Bп?达v>Qô:?"@$ǂAECd?(6?I?Bjx)p?N/?2@[1?,.?+"?ݝ?N?(<錄"fiUH/?O<>0W.#@>6?.j%JIY}6QCQ:3??@׊"?9u? Y?AY?Ǧھt?B ?h?;L?**Yd򆾟K{?cC?ՎK?&]l??@ؿ|?؍?%'??޾:j?= + +'n?4 T? K 'Da?*(?4^ ?@*??$]?Ëb#?Fh`??3g1 O'֯(Ay%iA$?%js}??784@?"/,B?8?-oԾ@ȑ?F' b$п?=lƟ?/d?G?4??a?H\?B?0X?u?Z`>,|i?2𨾡0?a5F?MT:ھM&In?K?)Qzac [?-?G{?E9\?8S?g\$?*7??!yĪhҾHX澾kL?iʾQGnjT?ZCxnmbn?.&v0? ?.Ծ?+n?eM?OgNW^.?Trj}ί?%??NĿ&T`4?Evx?ڛo?xS?0,e?7?2}?c??<^?j?Cl?8޲?,?9V?S?U۟ +h?"7? ??M-?jY{?;60ꄽČ?@?=խ?;㾎d?[?Ex?4H?c!? E?-a ?`q?Q ?ӞJ?T? iBqBM?ӫ b??6E ?h[?,lgy?FҾ?)|?>?&[?ք~(þh@+〾]ֿ?,ϿI?JǦ{((Gt?B|g?C?i4`?K?L1?;p`۾?6?C , o$K &ľ|A?Fu?P?/?u?HEj̿?fпϿf2?(3?5?V;??ƾZ@ Ysx徹7>?8?Ck}$=?5?Q:?.T8? ?;?6xFm/uZv?q? +i`¾)??lR??:ھk+ ?BV?;`?!ɾ ヌ񾋸?{?:'f?n?!J ⿴y?>cM?*Z?+@w?,?0?;W?64?q?q?: `>q Gw?>D?Ū?J? ? |?IxϢp3?DP9?7tX$2?)~cdG?*P?w1@HBJ?$tžzLr ?.2.?Ƕ??.J?It7K?4v?--NסH ?ͤ{?Ȥp?@?6?d?8\NN?2x?C2W>j?#?D?B #־, ?7߿84?#X+.?&x=?7P'?:þ;?BpZ?1A6>#0i?N?˾`?.?%?E?w?R_!ba?8$BpC?7$~n15?i?u?YH?$17Q?6j?;8ھg##G b?RH?>/~Y?\SϿ?SF򟿢?6=%m)3"?'?@K?578Ͽȴ?N n?1B?`?-ie?Je +??1>i?$n?&?,?:h??ߞ6?z澞?2b&R?/}?&?0A?Iq[?:M??<?X?9レ m.I?1ۺjL?)?9#u?='?$mV?*?*7?.?,"g?"ľH???D#t>ۄf?:lf?A|F?106r?+??V?!??-m>?C>pL3\P?:Ҿ?A!>MоwB?A?Zp2?0ʾc*??^?E˩?@>P?: ?0S;? ,? ξ?:,ƾu?c?.m"?-?I??Bd?@[Bf$?K?Ce*D?6?8y3V澊d?5Q?Y&??E?!2"z?A=x>7uҾLd?оK*?LL>љ?8A?-? &?J?)q9? +#?w? +?FMpm?&K?&j{$2?@ԾVclƾnk6?+uqX9?D6EWb?AZtBVFM?`q0z?=??q?H?u^?E~#? n˾x#k+r?LZ:l?A"GB?jD?y?쀾?T!?G侫^U?ϟ?H̾O?COiI?>B|?&?O .Y@#>?,."6?">L?C1 { 4?'4h?fI?W?CS?"1nƾ|?#mɾc]?ɇ}? z`?J??&?rߙ?0QR?ɩ?23@?/?;Oh?H|־y?3D?fp? (/<$G?"r?N辚+mhھF\?9z>T^?;w?-DX? +ى?.O?ˊ??7?y?ƤI?E+?/J8?G2S??%??7+X?-Z辇P}D?^󾲚?Am?DM?5j~?6߾lm?k? #&??6?)r@/?,u?Cfܿ?@ӯ?7M?8k?o? u?$|=Uq??8?½?ͭ?90?$J42P?&)x?#t?OH?-Cq?@Q?a}??k0apH?]??OqL?0i ?F? k*`?K?+#%Km`a?(:?0vȾb`\Z?@8?4!q-0?[,WHU@?^-Wξ*0?BF^Z{?0?𔾉Ѿwi +?D?>*?7f{?RӾΐ?3i?4yž j?#<Ŕ?.2_Ҿ?<&>RТ +2?ҟ>*Hq:?/R? x? 9s?G)?%gKw?ݾpvF??;x?@^?w񒿞 ?4D^@?B,?)ʾcXjhBT o3?B࿛7{?H?D?@9>S̾  ?UQ?҆??1OSOr7?͵W?(K?"?x>r?*UImb4@V?(?9>wN?*?+@&_ᄌ?Ů?`V?s[Fq?G?Am@#ķ?B?)n?$q ?4x?o?D\?>{?1 ?::dpqUbǐAJ?UZ>?M1?Vbz?ۂx??&?=`?M}v%?Q܂?2b?'ä?77Iÿ޾?59?Fup?z ־oG? dľ,_\t?р????5?L?(xL@#JᆪXV?tv?E#?/X꾒>Ȉ?5پri}?7S(k?7z?\8ӈD?X[%?%?.ˀ?/Oо:w+y?E >|4Pv%hlj?+{3?5Iǹ? 1?/fha⾛9!?3?Ҿ$P_ؾ.??:?C +?E'?B+u6b?2NZD?.?VxnA?:Nf?Q@?(>?$??Qc?$.d?Aľ%"65 ?2?ד?._žgx?]־}~W?E?0?1?Cv?](?_f`sȇLz?B? R? \6?^qJ0Gʊ?D?8 T?࿚[u%?4k?@>?&CJ?hK?.?%}Ǘ?OԾ?Ra?Lh?'?E?!?G*?侅2???Jˌ?-|??DH?XdG?(e]@a?(mEzt?ɀ?7% N}?1e +?8R??37F8? d?)hh??3`?&>z?(?(/?;6Y'e?DEh_>293??D? ??Oa?'g˿?Lb#tްTbx>&0?-?8P?';4?2"U%/k5XA?ID??T?ʾڧ?3? zп??0 n#ҿ+oO?>rFs&]?$晾 AK?@Ҿ?*78?(׬*?9㵾γV[?s^Au&? .?Pk???) ?`??>?Yd?y?ҫ;i?辜vǔdui?_F?k?P1??񺿴w?8dyd>vP?Q ?/?M"vϘ^?YP?J?AmL?&?)?ͼ??F*?C?&?$#)?,?I?*p?,0x{=.? ľT??MUA^?2t`?Y?/?+|?yh?JH@?YI?Z?B>U+W?*??:)?/Ӿ˙-?9Ct?( @,^?-?Q? -?8Kb?VW?1E?wi?:Xjx?f?X 8*m ?D8ʾJ?Nn?.N?%??|t?K|+t(.??ؾ@z??׾{W9?Qhl }^ts?.?־X6c?(H&:?FA?Ax?_?3";jzϾ?cucp 0?\?+? w>Ӆ?1T?{J?)dr?I2?OX"?۾???~?%.&6?-?Կ(?#y?ItfX*?CfD?g?k~???4?^^Ǿ֎I??1r)Ad׽?V/?;?LE? t?R?;V??+M??ӾB?oG?,?Q +?٧W?[+3?)h +_?4j=D +L?!?3h?xSJ4?Pi?"$?k?9b?y? WUP? i?xqTF??*g\?U??O?6֛?#4?G?> 6?;?)ge(gIe?b?Oh:?Ӡ澞?W?֗ľ?Я.?5?&?D>?3G?-G?Y?G>s?"R?4ϥ>>?u?*&?Tp?.Akm͌?7?EO@%ھ~?X4A?$?,x+?բ@?¾?,ٿ?*?R?)?+0?ԾqQk?Sm?"cz +-qF?0?0|?W?e%?A,?uЗƇMj$~? ? jBBG?9?-?prZb?$?,7sU?1h?ר +?>Ll?%2=Z?C{?Ri'8?9辤>蘾G, +#t?"0?PJ@?Y??쾳P?;֋Ͼfao?b?z侬x??A?:ݾ0?2V?F&v?4v]?ɾ}?O2;?#>)? &?vd?.C Kal?ݎ?4J?7[h?Tҿod?BcU?19??5w:bg?3S@+?Ą?!^?'?B?B?U?#?-OT>6~?-???,?Y~?!,?88|$?- ??&w?:-hp??'p:|?-7?5J?%;?9f?љ-?F1Ijp??!?AZ8?9?U9@IT?]+dɾz?R?]?ֆ?:??=r40?<^7?:?+9H0b?6ɲD?hG1\=<릿E|?_?=?/ay?Vt_?D?꿑j$t?Pvkm?M뾽PYJp?)B?GuF?fq?"E㾒v?D?SSݏ?,;Y?+hF`c{?ַI?DEeN?1C??OJ?>?VUvg&?+4G?!"?Qh?"!?B?%y?;ζ?0?Άfv?0S?8l[?f:zY? o?Yp>7I?+[^@.50|ľ?6)z?GTP|s??L?Z?.u ɂ?T?x ƴ??3ݠ?9pc6?&m?TƐIR?'㾚쾤<4??4ǾI? h>?2?'b ?6?,K? + e^?*]?+]!?/_?o&?'/@)?9?k޾ Z_|j?30?4|ȾgJ?.`?پ?%?L4??O? ?*B?,*=??3?JR?@0,2?%i~?BorpKaͿ#G?1?ݍ?N?ӄBrCr?#*#?>1?F>>?'侟2?">!n2?:?-Zpл?8n궾e8Ծ|Zz?Xg辐?_,#?Mt>g&?͛h?JI?YxPvo-?O?~D?k rHo;!?NW?D ?Gj{?+͌b*e`?.N>!@?A̾¤p |s6?S޿6?:`]? +,?,Ǩc*?:D׾?9K?<l@I?׎?<n5?1Y?Hؾ#:e?A?>?{iH??B + c9?"c7.?֕ ?Q~_?!/?|D?@\?.to?bw1B?3;?$?[ ?&>߂??,?Y澋LT?.U?:q1 ?c3|?b?$ +X?- ?8PV?*o?Z`?A 6̹A"9?^#>?* AA?J(>ݿ ?/?S>A?2 𿞁c*?\J=>?;?8^;b?,?6>\¾Aо ?G:?d9?0>a`^?K??-H??\0?.T?T?Us?@?-=?-2CN?=/ ?K$?Tx*!?!BX?:%|O`?P1־7ecKԚ"\?8H?7[ˠ?N1?Huvi?V7?HB%T?M?D1^?Lx*?<^?+*?)?ʢ3[L +CKFIjn?Z?-ǘ??"vT?4?(m?a;?/SU?鿾]??:?BU?6ԓ?H?0?M?/1?>?.?쾋HmT?E}?.c־_Ϳ]?Nt?5̂?Fm?ĺ zr?9.;?3N?2 ?Fq;?.w?D6?,Z?@6??|??M/??[?;o?F?@/0?G?;4??U_?A4?j?::&?$r<' +?8DY?Y?E??/ܾ?͡#侤?8?߄@k7E/?ʜ?r6?Ij|?E>m?]?m?5ֿf۾UO?5 ^8?ԾKپ?53~ +[xk?ݟ`?%:?HdXz̾DŽ>b?iy 'k?/7T-x? ?$?4?(*߾?(?S t?C߿uԾ|?> ?@}?g +?*>?UM?­?JP#L?'J?6\oqd?0(?:X ?-?9K~?)UI?V2E?6?<\s?n?Q5?>?SP?6B⾴0`&?D3?;.ݾt8CW辋UB?C$?ҽR?9?Y\x4x?f=e6? T? Qr?6\ʾU݅R?2/??1@S?8$?;d?>>?cU𾐜?ݴө?=?("v?h?+?:s?9?"۾-~?J?~оk ?@x? ,?\?GDo-?Db?Ѡ?32??7 IVb??#4?͵Y? ?7r`r'?0C?8^?#?"H ?K`R?39?4?޸?7Ҥi:? E??Ab?2< @?@~D@ ?CviYCQ?'_&?-c2? `bse#H?5R?G“?ld?DeO6?7S?Lgd)?&8ݾ4O? +ƾ7?+H!%?"Xg?G?*7?3?HK?A}?O +?5_Ȥ=*6p?0?:Y?:?"2i?ވ?N ?;S>IV龻>zm(<4࿚^?GJ? +?=)&?-¿Ҿ\a?Iߍ?6!Ѿ(?) ޾B,?0?19D{zPv?@-$M?+A?9Hr?"H䚾G?Qi\? $EBo>AQ8+j.;?lz?+4A (?C-~̾n?D꾪7?1f?`?cm?@j?$;3?æqHve?>?%F꾨?,}x?#㒾ݱ?7N?6?:D? p?@?K"]?dX?$<.Ć?츾Z?X?'?̵ܾ +О?2 ?ho&??!g? +???Vٵ뾕{N?%^*=؜?=2TW?&f??G^?F?7 ?DnL?Yz? +s('V?/U?~?!?:?+>| fD?),? )aq/>$>Y׾'F?DhP?, +`c[F?Ymd>?,r?0M^?*?&?J?=?3C?%P@(h?e>ΐ?A l ?n7?\r@-|/C?!q5?Lׄt?C|?1E±?-??"4U5ʾʰ|? |?$/8?N}? ?>{?I2?jM?)X?6nJ)@?IC??R?Am?? ?Q? ʾv5? ԾVj?Ӵ̾c?9,?؃?Ͳ3??%־|?(r?G?>'L?G ?&[?H?*`Y\D?=hN#*־e+c?gM?Ek?1KB?IF?#\2쾏G?=F?̔+?2kH?5! +R!? +1ϿLF?\?P>Uf?:Lp?Dij7?8Roz瘾P0i?7ξ}?<;?<;> >6#?.o ^?3J?42?JT־?xǾ-\_i濣HKm?ľl[r4iI?-?@mu]?3\I@?9?K4N> ???3vHcc?`?E?!待3; +?GI?!=?ߍ=?-j㾍Կ?'\-?7(?Z\?V*?7?%<Ƽ@n?Bu׮LHtt򾃬m9?HN?Bi?7û?9M?.B?PE +t@?=4v?7?0f]F?I?9?C +?"e0f谾>Փ?M?0Ѭ?Z;p u3?hR'"?"?/z?"?3'? ?'x[?9w?g?~>h??)N?S(п??&?x8?U7?2 .?(?l?T?5?8?C?O?7`N?JϾtP?5p#?;Shf?*?R>C@ܾvIq鶾v"}R?+?̢2?@ۜ՝Vpf?,i`?c?'o?3W?ܕ@% +?)p?Mo?򯿟עH?&X {^YY>d?uA?(?ʐ?(e?8~l8E[?AX?. >?:Lw??2?1g?wH?0a&?(i?*???4Cgže}c?5=T?;al@U?LP@?9Jw)??/,?ԟ>G ?:{?3>s?{;?-fҾIX?;>?:~?J0N+lz?7>v?B ?4?d?B&?@?д/?4D ?4?48?=?Gտ/V?ĴU?[/?0sʾ+?t?co?X?Sh?4?f> >ۛH?L?ⷾ 8?*ZIv?H?I?t?%@?1pv?$? +?1?%M?0?b\?*jzྵ̮|¿XI02?T0?6?&M0Ȝ_?`$>J)H? 4?D?޲?Rw? ᾘ6?12?,> N??.`>??AOo̾ي9^W\?+gr\?6¾l??{?C)+sξ?K|Xٌnz п;&? xwf+׾H?9:?*?٦?._k?5?7MiP?@dfժ?e?(xw(E?2?$n?8?6?;u辇fx??2H?6}?碾?#8?7οK ?;?o?6Ivgb ??뾀?*3?5쾥?5QR4?:JA#@j\?sx?$?n`ʟ>?5:?3D? +n?l? 𡿭3o?ItGz?J?4ƾ>J?C]ֱ?)} +?'H?6?*?"A?9{;>88?3S#?4V?"?J"??"U ?8L?G?R??flo?.e?4|? s?'jξOlt? 93z8G񿏁Z'ǖ뾲4?D?)?J9?('jξ_?3?+|(?f?߾pzvD?.V(l?*($??YfT:?B[y9D>Qg2?P"?/$ ?ݙ@ 6?%i?D?μ@"?3?8И<ؾbZ?WHd\B?6?*.Ҿ;sKo >j>3;l?GVvcf0sxrb?L]8H>쿬V?pF??1Eˀ`,??J:?8w?AhB?η?)`|?G?F4?$?10M?ǙO?/~?G??4L?"?#!?.i[?OԾZ?޵??ɘ??@ܕ@&\]5@!>>=?=?Nf#zc?7Ԇ?0匾?JLvX˾T-}GӾog?վ?y???&v?+???>I?ߨ?0T?!d?3-?FX?>I`޾Y??+?D>K?5n>ݔt? @?"ᾔU|?? ?7?, v?3?4uFx?)A?}忉?4?!1?"?)=rнW+X?6"yoVA- ?gʿr2U3?1{;XҾ?[?b?5n?+G??&>A0C#B澍lW_x ]@nݰ?;?1?:P&ξM/V}4앾Tcmsq?<?)|?:a?? |?_?Hjx)R/?@՚@[ +?;Y?߃EA?I?4Z??b$?923?0mp?=Rda՝?ЌF?(?3d ?^zs?֢?0m?N4L@ {?2? 0?r?#v?t1?6 ? ]?+Q?:9?+A'D@жv۾<ʊ?+?=@&>?B޾ 꾠r?<Tq??̞?up>?0?%?Fg#|?@?6?Ŷ;?51?F +m?;Eラ6?\?Mn?z˾/V?#v?͌'?J@"ӿ?Q?,(#{le?7sо#?Ɂm?A?׎?C쾗?Zf?0?Yw{?0F?W뿜u!{? ?Á?%#??LS4?^?-~Y?6[V8?έH~?/DF?!F??O??-?}?1e޾ J? +"e?+?Ҫq?ՙ>?N?Z?%$fDvR?(:w?_t?z9DT&澀0[FZ]a$?C.(WҪSJ?* ?0x'>?ؾYB??w&x#VѮ?JW??.?A=?0qw?;оg5w?ΤM^Z?迾 ?Z?ѳ,?<6?#zx?ڭx?Q?+?4CH@&cM?#L?4X(?Bq>fD?ɉL?`"9$?0r?0H?(dpH?x'?X?(gY$>?β?6XX??,?/?K? O?-N>?F$&?S~?8?3?-z?A>H?N0f?G'@P%?1Ӽ?ͯ?f??,?ڎfR R7?b?`0{?ۖ?A??7Sa.?L: ?.W4ަ+?4?IRnl?:? 4X?ơ?)VDi?"j?*(V?(<Qbn}ھt,i[T_z޾ +R? ?wr?e|?=I?ƾ@Ǿ,?}R?:T ++`?5?۔ʾ?澩? ?s¿[?>D8?%?ؼx?W?Ȯ@!o>Ⱦj%?&12e?8^?!?#;?J{?}?C=iK0?7& +h?EMƄF?_?Y?3G b??Rw?֠Q/?%?dn?[z?V +? ?c?߾??f^?*7?5R%*P?V@-N?ݥ ?/8?' ?fݿ]]4?l?O\Y??.TY˾~X2P>?յ?P +?,kLR?&5?*NS,?@⼾haFzeW?Oʿ?7?>?P?%#?1T?B&8?%.uҾCD$?8> lNH4?"?Az?,r?^p>%.? 5>5?܂koO?6B?)Jg ?ӹPp?Z!\?P?>ľL>z?#?迨l?Ap?(Q?xˏ^&? ?G@"D?.Y?.X;?0? !? 9?4.@ X?#*m-P>?4Ѿ,?>?/)ԓ?J7?%e4Ȼ?X&濟Ik?(a_'?g֦?.9?)yP\?|$?K*Xb?5H?@?P4?L¾*?U#K?ƫ?!?OEp?Z?8 0?p ?j??1pL +@?5B. ?Ҍ?x??#?;.O?~.@@%8?$վFF?)%?)?$q?7?ˡI??0??8?'w?9>%?9]Ͽ?KPF`?@{ʾ&19?`b?0?*?#6~?KBSaT>?Uڿþr2t8侜K!bҾvd?X?44N۩Jȅ?;TTT#ѯ?I`?֍JQ?1I?G@ID?81<_@-?*0?,X?$!??+Q?3)?9?'?V??"l?:Ot ?M??^XĿ ??:-k?Mо ?ɆsT?@?1m?>vR׾??Ç.? L?X`B?z?9?*E?0^?ݖ?%8?;?< ?/~D3?[?>qҾ"4?&M݁?,@??]>+?Jt?̿?_idn?;f?j?6?)t?85QXF??-CƔ?ԘăuY?7?F? [nZݲ?t@5 V??*Y?JV?(m̀?0?bN?(?BX?1?`'$?&[?1??n?/?Wq??p?A?>?@?1'?7'GYG?.F7?՜?9">k ?_??#l/\?\@ۛ?<?ݹ ?1 ?+?/?7?*???-l>n2kV?[?4˾]O?-xa!?J0tԐ?t&bܾLMMsH|g?D=sà?G?a,b?&qONJr俣ľp?&i?(?3ݰ! ??U$+?A?vuԔ?Ԁ?_d?-?#I?ذ?/0e ?A? 7?Z?,ޘ?$ f?2>?1#>=x???9-?$?+ZZ@6????? +?$8?SS˾-/?$y?%??1X?'uâT?6?3(>??2? ?=TG.sCw? >l@?Cv? +a?پ9y;??ը?d[?)x?<~?a?P?ܙ? K52?&(S?5]0?C?" ~v[?&.N?<۾_MbO2?H?پzaּ?7s*\ᓾ6c?BRI/?O?7l? +?V4?D3oo.GR,?"ʆ;RK?E?q?01,ľ2?l?4?߳$>?ƫ⾊¥?5%:O?U?>/?Es?,?6?,bC?-A>A:?״?iCK?N?b,?7???9?}?0N?J??&tF2޿5????1R@'79@T?.F?O[@2???+?@ n?,(?,N?Et0?ܚKƓ?>*4??L?$?#0?=_> ?.?Q6?Dr龧eU?'sY?, ??T(? 2?#Y +׾ԾQ?p?x>C``n?3?DJpw5?F;%5?0"T:x?"D?=.?.?τ!%6;OX?u=\/?(slVQ3pȓ|?l(xw7??!}߯?UN?,? 3߾4??:J j?7$?R?B7?xő(3>Ě?? ?Pd3? ,?;S4a2V?Gu?Cp? +R?Oq6?AӾ?$j?H]')?ƾq?n?81 ?>?$N?R违F?)?Gi?P>??ʧ?2@?!?J@(??+T?Hi?? ڌ?)^D?6U?9ʾo0CvO?6ol?1G?!?44J%6?hØ?<7}?l?#  ?>`{?%?Au?"B#e?Z@$5о?;,?J۾I4?QN?=9m?cGͪ?M?s?Y ?.G$'?pz?(*?K'?6 TH?08??6?B?.+]k?,?MD'J?$^?Bt?R?SY?l?DQ?4A@ɾFfF0?5?$l0 ?!=+u?9&?\ھ|0p +-?AҾS-,?9 qAxľI\$?8Q?3Ɔ?;6ц޾Q0̾P􂾶CξۂK?1D6L:KAc{n?)+?|Zh[6>?';?қ?p&?E? l@&?R0? .@ϰt?5L?IUO?,\.ei+P?H꾌v>U!,߷??@i? r?-c7Q? 0ͷ;?:?cF?F|?+D?Q@?,{Ѿ:)?ἆ?^M?!L#?TI?" ? @?ղ9?/"?־پ(d?-? ?+`!G@?ޓ>оm?ι?R? ?־|P?+S?US?]}?XcW)J/:Ⱦ6Ӫ?}-7?CnVEvԧ)?ն?ʟtо(??y~?U3?wަ?v? +?;h?<Hɍ?0 ?< ?+z??!V?1h?"?H0?ĺX?+8> +h?2GoJ?PN>)V?<?Is??3!,S??aQ?=׾?b4?Brv?a{b:LA?G#?:Go>Vھy`,KPx?tq32?M[?[R?J?6[@(h?JV?!? hD~?2/+-E???_e?p?҅I?8?dM]?1c 6?Nj? 8?,m8??+@%N?EJ?+-C?#G?,Aj_l^^?%"?¿Q?.EE?O@o忯#P2>?$‚?ӯ? +Z??Ҧ@?@yz?*I?H1?'?@@+?v??4v?az?A?Y?u?1?E?)??b'?3*?15V?dx ?/? ?7?]%kt4ַܾ'9?25`*?L?77?P??*%?%?#8?S?vTdž?S~K(??3?ܾ??K3I2?%־??%~?&?ҥ?9yg? ? 9?9?LT?EB">ߑ?濱[eMM?:/j?!d?BF?45?O?0G< ?يA?!?5n??G?L>:?=?i?E5?,)&U6ion7X?ÁXʾr qS?r-pϿt{>?"5+|p=?@ǿ?3پ"u?c& +;TGR۾O/f??;&?D\! +=7t?@Ⱦ+L(?2X'g"$$????&ľ?⑾r>ߙ?%: +P^??۾X̾QF??ow?20?97?5>??I>i??,Z?1"?'i?^???Ⱦ s?+m:^ +?)s?=w?0G?I?!?St?A?vlY?d(?4^???m?MRf?)?:?nGr6?0^?Nyj?V?hU?Kд? ?A?؁?2t?<??t? +1=񤨾?_?1־ؾ?4Tl@?n?v?M?t?1Bp`-?Qn?V'??3w?#U +?("MB?N?T$8H)84X?R2?J+d?Kzپ?Y?6tp=H%(.?6C6Ծmp?@s{C:?i@ @9`9?l?P{6?E?u.?7sMn?F-;]}?e2?^z? += ?0m?G?RJ?2@?&> {?'0-?/?VW?`?̓o?a?/?۶?HE?????62ѰE?Ds.??׼?Fdz?/?ҳ??,?Ԛ?Q@&/hþr?B^?AQ(?>?U?ϵ2?-Jm2?6`{r?K P_?8?m ?;:?70T?޾_"? ?)?L?h?/?̾I6?& ? {??:"/?f2?0?&^?HH5Ճ?.?;oDZœ?'?8?2R?1?ڿ?& $.z?.ò;濢&XwH{?81?G_R?8+,@g?ھ >=m?)qXn?3];?F.?;/?G &?.5z|?a +V?'({PR +@yF׿??+8 ƎC?2?+?--?%X?Em_?0Q `K.??w,g"j?# 䜾~9c?ħ<ܵ? +ʿ?/㲾|N-?;^?|@"??a|iSɛ?'P? +X?%?Np| Wp?L]a?,~??J?!e?B84Ļvnw?q(?l?#Di?0D??)'AIBخ?΂? 2|?4׾؇>C?W4?r̾.?=% @ +¾G?d?=DT?$?+El kZ??4?+ɾěN]???+WS?4q??0?)?;֪(h?5VE??,?) f?G3q ?-ľ?q~? X??+v4>?ZWh?+ ?澦>ؔ/?;?C@?F?SA???.\?bm?7?i?)>#d?H}ֿL?>?a-?׾,~?#?(eW7`P?%*bd?RO?Hәls?U?3= +*徜# ?6R[ҚX? N25?E#"?ྐ?.΋?HJ׾Tm$?Ҥ|?)Ha~?&S<|)?GJ9?9 ?^?/|?)k?$b??;S??'??5Utr'?u?)|*@?R?zޭӿ*? @(C?;Ѿ?K?@$?5]???4Ⱦ?v?,u?#yk?r"f?+?F_?υP? +??=0?6թ?6$?S'?(-Xu??Q v?S>?S?ƿD?"X*?-L?q?7?3@n $>Ʌ?`JŽ?@w<{n?:UT;???Am?B˪?;.-ܿHw? |¾?%?!!˜>9$?0G>;W?)J?ڛr:4uu!0Z?)~?Fƈ?Pw>z?@?F$ji-?:?/ ;[.?1?9+]?4>2?.f?Br??` ?3ai?D"? J?16?#-R?J)ї? m?P5@)?8`"?C@TmC?@3??,?"?՝@)?0T>j?+??Pj?_?ͷ?!,?>ݸ6¾~ + ?Ծq&K@?f?RľV?(?*?.R?y?澲y?Db?3,?LZ?$ @*ej?P?o>,?#;p?&>jžf?J8;$?r?*ؾ(.lPjԿH־J?:Kb^{& "np??8?DyF ?tT?,fƾwĿR?.?6%޾i徰A@J?azo?> ?vH?ۻ:?h v)>RO?G?櫹?Ҿ5?DD?-?J84??<ݿ}>Ë?-?36龃a?52?Q?>1X1r}Si"^@)?.???hL^L㾄^bv?4?#˾?ߡ?B:?B?4?ݱ6x?Z3?=},b?0k?Ŭ@/<8Qi?#E2?^ ?>?.00瞾?ςg?.??4??,4t$v?I}?AU?5b4?/@־?b??BB?a *@XB@!{?G:?WԿn?;L@#~???t!4?EOgL2?.x/@%?'/>$?h̾>>񿧼??7Wp?<&q3?(&׾v?3Z^?:y??Z?MI?6??[1@'?)Pd`??>\X_kvЊW!'l龥!?->(IㅾmUgf/ÿ~I?ߠ ?AvVy!~?I? i7+x?#~if(羧I0o?4ȿkCd3b˕Fc?<"ξ&X?-{.P?& +?F?(hh<.?ځ~?8R?9Xɠzf?;߮4??R_?$\4,? +#?K澇1Md|?>#Q@?Z@%B6@?D~e?Ь?A?>KGo?)?/T8@#?1?Y?a|?3Ί0B?T|?&澉?Ѣj?@ $?ޝ?RG߆ ?;?"~.?6?:z:6?Є?+?Z?:?H^?5@(ɾzn?Hp圶?l?5ɐ?;^?-h?*?@?KS?8ftf(Ź?>?= U羙ia3zsO?0Pjl /?I,?~E?4C̪?j6?H?3ʿT|?+mϾN?)k?44oz-.ܿ)=Hf8 +?*?7B?=^vhg?2>?="?>x?P?4?,TľJ^?x?QVub?,t@T?ت8?u?K9x?Nm>.KK?62w\z ?JC?F?_#@?`AB>EAp@?@ (]?N?3?¾4~?U? ?I&>a?6:? ?2?ξO=~?,?@%@ @$?ZLjq?;V?,l>?٤R?/6G;t? q|P)?8Φ?,eT?7?'=?׾{ +?EP>L??;T?7?R(=I?y@?'*Ay=?9?C? LXzv?0?ܿ7?ڬ?h?Cپ| @o\?^?#?8?Ծ-|?3?-Z?HU,N?>O{?rAtωhܾ@) dȲ?zG?x?!/?Gj? d?(pM?ؘ?Jt?.a?.?+)?.lV$??;j>'|>Y7¾SUQV?5?/?:-h?>lƾ俥,迖2 +Xir-zj]>lsr?Cj??W#?@ r?蛚0?W v??/D t>NԾq?B?-]k?܀?&$>?Vmǿ྘{Z?H`?+>W{??CO?-myP? \?f?8H?)2ʾکԪ?/0Zq??!(?I&? +?JEM9?Ks??l?7śV?;?H?'C@.5eZ@*B?ȣX?3??Iz?-n"?uMi?/5??vY@?-D`?IG?E??p>?-D?Gd49`w?0G?)"?ȏ?/Lþz?,5>{M?KP$?+?@e?\?6(?>C?,?,Wz?FU?K?&h6T??=B&3??2j?'x?CI ?3AJ?@@%6z?Z?RȒ?'ONx?1n?)?5Њ?N kp"?M9?h?A? ?3?`>K?=?%?H?0K?,?2?>?ү?f??#J$?CEp&?|?̾ྡྷr?ԫ?hؿ!?@ھخ?Pj?>naq8G?}?F?QhϾ$HHQ%\a?SB?2Bm?=?8`?%EB0f>?1n\?ESi?1)JPx?"cn?F|?`²?:?X?,.Կؿ(?#q?%~?r?龀h?+2?+,QV[6D?5=?@Vs< P?N!?N ;usоYg?@>AB???٠>6 ?X>@? `?毾Kf?1M?Ǎ4?$0?ء?̪!?hV0?u"?'?@?x;|s?|?탾,???1Fz?"~?>?a?=\&c?;`kM?Q?'g̾%D?%Ⱦ)>y@'?{r?,? 4?Pώ???^?¿0^?#Cg?'뢾r ?V+ĿƬv?վLr? +lO?&?T?=,?ی<?9'?VX??g?.^r?B?N4f??83A?ӥ?T? R? *L?˄뾺lH}?%Z?ZY?2Tc?d?#fؾ?>n?G$?4ƾB>A?bh??ҹ$?Ͻ ?3?6?ȸ?!Z?3v?O?7w?I:?`?!M?η3??-o5?+)? ]fu3H F?9?r ?!gXI?xZ`?3v\V4j?*FYg>ma?6:i.?hƾڽ%?A>W??nL'x[1;9?:XWཱྀEg?o%?=i?6?7?gȾ/}k%5WtE쾮`zʰեz?,?F~?)r?.]???)??1M~Bi?mt?K6?,ƾ9@V??f?:|*?'V?9@1I??*5T?'?&?$?u9CNP?ۊ?@C??[?]?S?2?/>?"r9U$?'ξΪ?*?|fC?[?-? \n?/@t?+E??d0?9?0??2k6?e־T&y?Kt!>{@" +?N@ }b?T0?-?C綾ԣ?33>q?4pؾ1\>?$cnx@"?)?-?W??%?p? ??9?-ehn @7Q?/@ݬ=x!٣}"DԾˋ+N?2ݾlt8eP?m?aU߾:?=?.+?-?H `?4w>r?Fs?'GK4?OZ&?Gń?b?aסP?8?!>?BT%? ?;A?X?,ar? I?\^$&?T޾-?,?8֢?>Qy@+PwBA%Ծ,fȨ?DD?,G۾?=rOj?6h?׉)?-Ī??U?!?PN ?JamH;KP?K?Ȋ?׵?2ݶ? @%|?8И??H羥">q??#,?6վi٥?A?K*T?Q +?Pٰ?H?0ž~?&1K?Frz?Mq?I?=k>#?tV?.?+?vk~?w?-:?8)?@0?7ܾ];T?,>?g[?*@?NB@'A>$E??ߊ? ?Bd?+A{ ?*?ַh?f??2ܿ!.~t@'q?<ƛ?U?֘p??Vh??_;WPN?K?Bx?L?:(?]?IgᾜS޾t?>>"!?ҍ}QŶ?3ru??߾F#?2=?đN0?8j*m?j?#$N# ???&|Ԫ?C +Qᄉ?J}?4Hz?5I?C?3 4gy?L?"?z)1?B?Tyj!?˥?F R56w^?B3?@m>>?5 ?R?4/6L?9y?2??% Bj?M95?a@?!?d#?2?,?E܅>NhP?ҿ?6?ʄz?55?LO达??)-?04?_?BpҼ?MkrX???H?6?6龁Z?B?&/о?Hz?W?d?p?4'H?D?<>!A?4\@?F̉7?#gҾ7~?ѶP?%x?#N?٪?7 +?FM?Ё?M/?:Z?D־Z>XPйѾw^?@B?>4@%!u{?Ӑ?A @/h?҂?K:?5?!z?.ip??ZG?mvt???0X?6P?;?]pX?$b\o??4 ޾R{?k?D?Ccu+?Տ??H辷2셿3?CV?G>?B?ܿ}?E/k?\?ajr?):"?BDsC? t?۶4?-DVY7?3?@?))>%&^?;?9 zhK?>S?=Ӿ{࿰ɉ0?++~?Ah;? ,?.T?[|̆? +.*?؎M?LGJ ?1"?@tx?4D}jj?¾n?Y?9?E>?1>J>?"y9E?Sf?E wT?,8 +>?dtu`ϗ?(?H???[?I羼~??,/?+?Nu7?vr?DE?0?w?M!Y?񄾤s?~?F ?9s.Fѩ?7K?+?3U?HE?= ?$'?G?XW?3ߐAFZ?&H`?Q?cװ@+-a??->f@G@?B?/?:.?;?*%Ͽž?%l?C?;龘q?&?8>?6T?˺? ?τ?O? y?%?=?J'??H(l?`?%Y?AX?%)??F5^I?6Q@$.?'-ѿ24?h??xvԉ?:T? y? e?7?>T h<;?Ϝ?>8Kٺzb-:*Va|*RM`?!j,?;7?6r?И]d?Df?MڿԿn?5Z?>`^/"?NP?>A?1 ??9Ҧ?<.v?:?5(?+?N?0#  ?w?+ђ +쾝S?8Ϣq? 13\?9?*?>?@&l?:?F?ա?d4?J8?A?௾ ?U?5#?8?4QJ??l??B#?+e{A~?؄?0? Qk>Msz?0<>xP???A?Cl?BP?`?6@ ?Vw? ?(?*m? +oWt$n,?4) >?Ez??@?$?1?Œů?73n?N@޳"?@%׻??(??AS?'?>w??_ P?-?(L?ܻ,>;>.\??7 +?Z\G|?ր?&?#?-r?y?m@,w?Z?3FH?1n?"F mJ@$(*5?? ?[x?< v`?ْ?׾?]?1ق[?T9``V&?,?&>龦Jl?~ѾK?_?=9k?/"?%?ݐh?2H?hOHҾ?'h?G˱?62Sj@X)?:ӾUQ³X?$q?PLX~ʿE?O־]A}?>$?U) =T?Lྸr?KS?7>?3{is?Wb?3 ?A???"ΰ?C2?26?45?ۢ?34?u?%&?1W$?6?%?"̥=?Ն?0?$pr6B?d'?u?:?:D?(?l?EYY?4y?,pD?;/F?Ծ}?8e?0i?C^L?86ɾ0?̑B?2g?;̃?4e?ۀ??P?5޿F0?34i?T ?0Teş( j?5#w?3 +5?MK@'ː@'??M?E?߾u?H6?Hq?:?E?#?-ވ??ܦ??;rG?K?W,N?%?.?Bl? ލ>T&?Ko?,_?+?K?&?x3@AJ??U?-8? -???ҿۃ?7,l ?v7?JkA6?/7???ӛp?4ߘ?gwN?Z?l>?P<>&?D>f~?,?P)HРT۾?T?X2BluD??V?]%1?)?Bj?8>#U?;}.WjQ?B !Ҿh?<?Hȃ?Gl?j\f?䟝?8llH>?݁?ߣ02?31>?mBz?Yj@( ?n+? fDr?L?X>zgҸ?$:?:?5`?#$2?5?4R?x?G;0M?ažJ?Tx?M濓ǚ?-?έ>2?X"?L?f?a?>WMg?%$?jj?;T?7R86?q +???2>?/?ྞNV$/?@?n?ΐj?J?8'?] ?-`?/?+{??2?w5O0ƾ?.;}~(@dӳ¾??r?3?5@?`?$??"+&@/s?I-?3?=@&Y7?9Ud$v?PA@??G?Þ*?,W?%l?8?a׾%供6?8l:?^?#?|ˍ?/y?-?92?[?ϙ?3&,3?<`>ΠnI1Y?ah$?#Ą>A ?(A̾Wv?~C?ڝZ?&I?&LN}?V @%¯?;? u?Etm?*?E}5|y+?oTc<> ľ +j*4?F?R/?)F?1;?9n?\I7?%rZ?D!?֜t?̙;QT?ɐC"?dn}?.>jyR??忤r?5?S?Cu[?P^^v ?9i0?I&???U?O?n)?Pc?1G-?6m[ 澨J ?;A?$\l?,?Y??p?;o??C?=r?!ZB?+ +? @?$g^?*B?3? X?[?=??-4xy?'U?q?ׄ?)? ?Hh??7|d?L/kX$.??6a?1|??AH?%@%-?=ξ޽Ө4?1H|d?[ř?KpBZ?6?Д?.l޾ }?(˵??'j̾Pr?f?1H?,BC?F?4}?? ?c`U?y?߳b @ @ع0??W?@W?4hF?$Hy?*?6 +&4X?TþfϾs?.ބk)?H-տcs tr?(]x?A>?0?Jh?,?3??"1?C,2?>U?:/f? 3cW?,>֕ +?Z?@O?Au1?`MQ?*I?7Ӟ?1>Ӏe?\tVc??F)?.xY?$h.O ?>?"r?I?&?$Xm?~?Dw?/FKk?Sj?G?B?-ヌ""? +?zN;#?YL+RX?S@b&?Ag@)l?9??$Q?m?Ͼ봞?g?;p>!?0> +Gq^ y1?y?7>??(?BH?Ρ?Áj?1ٳ?A?*?J ?R?g?[ d?2 +(?D.?,h?$?(x? r$? ?.,?-??>?5|n?3N?کP?BN?4"3 H?:GyRW̾h?KZ??z?J˸_?x?W?WUK?E(??j$@I +?L?@8ǾEL?pV>^PuStx?I hUR?,#?#?!,ʄ?PʾRھ8+?/S?ͺ?:!?0\?<쾍 T?'Yl?'{P ?-?55%?b?weDŽ?>0Aþ +?5N>?(h? +N@)z?t?(o??*D/?[\?/e?/?۲?n!ξsb @.?@5t=?]㾭E?&O?Z??Zň?+]f?>?@S?W +?_p?GH.??s?5?Dw?}>@?+/#?R???Eh'!?nA??x?v)m?:|? +?6_?$?L= ?74?e\?T?B2f?ˎo?*?ӹD?L7?< +?(?OH@"W? t?Z?9? xv?"3>?>U??0?=*>?'g?2c?O/?%{cJ?BZ?->ɾl-/?2䦾>ӆtj?,w>&)?Y3??5? -?<]5?6'??;N?3?? Pؾ}zK?'??ԫJ?ֺ[T?>?* ?%ƾ\ y?*>Ud?pN?2쾮u@? k?:e?X >&'^?-?2eV?%oN?ۘ?, gbp?PS?ݪ??Э?<48D~辿?$?<&S(}`}y?iH?Tb?+C?0M6?'$?N?=?%?4׬?>Ⱦ?#_g@?.! +?˩\??4 +?kF?ș4?5u;?;z?Fn?&࿡?4֜빐?ݾ>\R?M?:ǐ?R?ͮ?(.?/,a=?'?܈E?2r@'g?>C2?M /?8? ? ?܎>^Ht?5˔?G?1\t[?"j?4?4hh?-?2a?20?Rc? 澹??%G?~e>.?C??`v?v:?:ӾA??TP_?;m(;H?_yJwNʓο /<#???VwF㗿H?7]P8|?&\s?$׾x⾑?*O$X?0&?d?Uj薾>?=ى6Mb?R>P`c̾\%?,Ljf0k?w???־J6?(0I?^?ӺTx݋?OZ?;?2j?Cz?}&??ޅ?5ܾt@1??KG?@K?:??!?#O??}Ⱦ??Fjƿf?t]?Ɋk? ?"?3U?t?!Z?/X?4dd?_??@L?.?T{c ?JZv?CS?2FH? q? +M@(v?V־Uh?@/[?0{? ?EG?/?5)?&??̂?>C?)pZ??:?'?>?3#?/ʹ?$?ǭ؁^?Df?4P? _?O5??.]?M~?@OȪ>r\ǾN?C^rd#u~?-; +h?T?$kH1 +?`~`%?2^eZo̻?;,??;N?͖?b:b?V?Qi?@: ?STAwM>$?ލ"?;6hH?Q?+?Jɳ?.iw]*:?Qh???0?%?Ey?)B3ⶾ9x?ܿR*<dž ?6)`?JX?0?΄e?ʩc?$t?;x?F2?چ?C^? ?(p?Є?K?#.?CI?v^?:?+Hp?C:?;36ȹ2>@.nm?0#?F$?Cz?S?O?sn}y!+:?[Rm?/z?( p@-xp."6~D?˶?Gd?xp?Wo|7L?H?e?R?K?@wW?G6ݿ辢N?G.W?aΈ'~?7Ū(?{Y=rf?*^?AS?\׿I?Q޾A?x? x?1'ۿ?.?ތw? 2$?9'aj?7o?4?&d?N1X?9?!L?N?9A*?.?<\T=uX?Q?:ξn~?E0@׾C:r7o۽]}?%?J?:MÝ?C"?G?P>+?.#?#?t ?9羉ѿ?,?|?!?"y?'`x?ñ`@%:>ta?ZM?9?78@ Z?:?86n?L?#|?>`&>%?BL?.?6Ő?z?OOk ?K?Ѵ(@ ?5;P?3?Rھku ?$"?д?&@'jj?>!?8m?3wG (AY??6v?ߜ?5Ԓ?۳?0cy??+ԾW?z?):f nF?fCֻ?oy"?3n?5[?ݸf^Yt):~#??>wLt3/?618>?9"P⤾^(?, ?-?WGp?⾩$B?2d'{?Ov9D?1򒾔f? ?!{Ⱦ Q?3Byͱ·?0ʾ??Hξ?3_?.t?!?ja?6݈?b<\?!O*`?(ྚB?=?#'l[?'AG?3`???gN?0>c?%?.q?&bK?q8?F-?濡;?'?|y?$P?%?8@???*ȸ?;9u?2?N獿/J>ҿT??>6a?%i?`8U>Q???C|?3H??f?z?#?!D?Gq?f +?W40??-ͨ?1?ؿ]?ۘ??8/ +? rֻ?! ?%E?$>??@a?F?^?j?*Z?4>Aj +?۾+w?.>??W?ҷж??J>x?/fN? ?=]???q?6J?ӎ?}?2.???B?2>V??+t?4L?CJ?@6?ݬ?j?\@ 18?7?7?݃?&?./?9]?,??ĥN?X8??()?-4?>'8mmݾX?侦b?;$?=W?/W凾H}n?>S?D;E?OZ|?[k?Pf?.(?NdTc!z=K~4rƿ9??+oOʒ>/c"Ӊh_h?!5?'?/ ?7JH￟&??6CxngM ۾x侶f ?J ?6??>ݾ?%nI?A/?׾ᄍ\? =>V?:h*?X?,x'?>?#qʎ?g?H??eq"@w??Ql)?2?; >"?N֖?(#?՗@ ?:Y>qqF>?ܦ?%{?,2N?7O?"ʾ:?yJQ?ܲ?6=??٦?*G?>?4?0?-4?Z?N?/ ?2p|?&U?7D?e?A2>d^?kt?$ɑ?܂?F????U?'??:F?5s=?\`?L )8?P@eƆ?` ?*;?%?m?K@*?f?ɪw?~?V? ]?Ό?G<7?E.?La&Ф?GF9Ѿt?c1{?I?*\9?n? h +?D?5?1?@?5?R6k@?Nz@?2u>?4e[?Ҟ?zk?$3? dp1 ?& ?h>꾐W⾽?AnB?32&yοF!?*s?8辇?0r$?24?%hJ +nw u?;l/ڿ??ߎվ@^t`i?(A ?-?3LO)N?"*?/?'(??,G?(l\?8~I?y@(?>u?*sQ0W?).J:D,?$?BrǾ{@F?, ?>?a?6?;(@1?B@I ?*1?Gig?j >PP?+> 3?FR?.O8?b?(@&>?HA?[?3_F?F@"?ٸ?&*?[B?3+x?}?.}?%?Eb㭾ȾK߾,b޾u?GتmCp=f`Jr|?H?WrD?3P`?S8?Io^iX?L䬾<]bLY?3\C l`ł??S?8?Ex,Z?*=?@G?AzL{?WȠt@&kQYʾDO?^?uXkP?2p?״?@? +?#?qf3?RX?B?_?ϕwՙy.BH?K ʾ'cA?Yw?~G?,;?- ?y???:!P?s?)? v?FxXBL?B?/轾Y=$?\?:ҾF?VEH?s?C?&lbUs?1?-^L\?ϳ?0?$J?.ھK,Š.V`>lž?he? +%?e? ^?HQm?A?4OS!?C?,;m?O?G?Tc?#?VsG WTEZkj?`??"??4f>?;W^@#=P?ҋG?#8?@@&?ö?VH? +i?-?,(5?:eB?C.?$[?C?+? #N@%?6C `?P=Ok?e"@(D??"?0)?޾ş?A?&(?V?L3?l?^]?(B?GM?ޥ?FJ?z?گ?W@(c?$$ӾI?&?,L?{?#r8?Fh?'?r?z|j?$?(?^ݿ䨾?4N8Gp?14SqN?P忟??=lj?N%Xic>{Y Wƾ޲?#I?Yg?;,r¾k?⅚=Dۅ_ }m޾?:F?<䢾[¾fH=?ʸ>D1?Y?+h*?u?Pdt?E?9J?˴pa?U?,?? +7h?;,?;;??I3? 9?7?J?{B?"K?.?bUO?7h-?M>?9Pj?HmP_?"Ԭ?zj?D??Q?"?Ն?%?# ?(?Bk??A?0?4?(?M'?P?=?w,7c.X?3Y?-?|>?i?1|O?l ??2D??Gp?q?9)>M?6=H?]8?_?`i72?6 ?~?>?@@ξj?5c?4?֙*?_?)??v??<$@c$PN?&3?s?%!~\q?I%?-?K??i;?!=@?M?6T`?Iw??x?1?/??n?302z?7Q? +x??0G?t?Pd1 ?8?Bxh?Dg>???O?%9Ҳ?m@?%q?O??Rؾ ?ԥp!ھm,?4QqPԿkoͿy?=ۧliw C(?LR>\?8龩4?*c: ?*NjP4^^?@j?:3:nCϾ ^tP}4??`R?3~vx?=7&?"[??(u?⾍"?#?HR4?0?=Px?n?)7??{@+T?%ތ?5뾆;?%[?Edt?KO?Ѥf?Q>?)?@?'?:e?7n?Cm?I侹 ?+;?:T?;8?8r|?"O8?U?8|??%?WpL?Jrb??q?z>?M&@$?ʵ9?-Í?Y?EH?>?C"?(?KL?>/wrqu??T?5%?* ?-?YV?6˅?ª?W?w?Y?>aF^?UG?Gt?5 ?+Dct>|@$Y@gކ? S?x?5D?'cD@+\?I?C'?6E0:?C??5KK?X@0?*?!o?)۵??? *?L?| ?m?,?v9?t(ܜ?.N?#?%>[t?*~?%Ij?*PL@!βF?*`?$u!??=~?#?" +? +x@(U??$0&??;S` ?3c_Bғj|꿘S_8?[ g4?)*?(󳾯S?\IT>]?,٧)?'_\?& +?Кq:%? Փ?˚?cbkd?('?U??9?/?0oF?۾ )4?z?:?g)??3f?ˑp?˾? ?ܨ??!"?z??(|? +???t?1i?% ?pB??bf??]?,? +]?t?H?v-?(;ȾPt?Dx?Ey?y?1?A@?J?~? ?*??)L`?ٌq?/0?*B?Ŷ?Y?=f@$;Fl?&?)@ ?>R?ׁ?(?9C?^? ??ӌ?D?:?ȩ@,|^?HQ?(\?ٰb?Յ?%?h?9??F?(T?Nþw?/`?Kt?.S???E,y??P?\?6,?._? ??HJ@?>???L?(2g?64?G?B(?O?4P?Z|~?1?Br?06H??G뒾, e!'?D$?W02?N7`IGQ)?L?}K?A꿒!~?[u?'DxM?Rd n] V?<5Ծkn;SB\?ҡ?Iƿl?D9jb*GL(|=k*?3:?Np?#%?1z4?C?>>zO>:'?y,?*i?2)`?gR7?8?* +?X⿦hV?-??R|?~t?4;i?G]?՝?ݱe@,=?La?,?7k?2P?}A; b?=N2X?ؑ*0?%b?Z?6?Tn)?(¾?h?tK@(i?Ղ>穼?+??z?@*6?$?/μj?VȾ/?????gJ?!K?'?Kr?N#? ?+8|?Ȳ?OP?????~?Gx/?Jz?+?K?.,?yh?8s?T?ߟ?ֱd??"]`?ԛ? +?q?/c?պ?P?x>D-?=b??(???L'?H'V?){? @(Ŀ辤>mD ?1?*?*F?Ŵ?4?2[f?("?(I?Xꈿ ?-?L#c?8 #?LI?-H㾅ph<$+`{:?Fd+?MɾByX,=?>]Q?ko$ӾnW.?U|_? ?YG|J?ȿ ྪq??u?Ф?+#6)?3H?D"ڿLɽ?C?@'?,9?M*I=%N{'?@e?5,W?// ?oV\p?l#0)?ͦ?߶C?H ?4O hYj$ⴾ*:?L71?,?۪?N}?)A?#8J?/5?I~?( ?:┾?{?-?B?ƾ̞?I?(6?9?օ?~?EV?߹?džS@"{??!,?@l?f?=\?޻?$?ጃ>q?A>J~?Ww?)??Jz?F@)|?\RM??&?:d쾗2hy?0Ʀ?+?e?$~?*b?5??Qnz=t?A(?c?@?Q?.}j@"?EL?ۂ?h?E?F?.?$^?v+?̧m?ϕ5ɐ?1?,N@!?-6?%Z??1Źw?7O@"?#?@h?ř?F??9V?g?$?FྡR?y=?-L??A'V@%??J̇p?7B?(4?h? ?c?=?0Y?3?P?ڛM$?]??&r? L?}?B? R?Z-O?م޴4=F?Impr?3j?/ľ?z?,?1Ҿ@M Bqo0K?IfWP?AM?ETق24c?υ^?!оgi&?BF?.{? X?:?A&b>r?ђ/?0&?6L^R??4?D +!?͗rU-?8?++ w?a?/ ? +?x?,-оK?Q?Ք=?ʣ?Bc@#\T?d?=擾/^?9?Aɩ?^%7?8?̛?I>R?9`?@?\r?(?84@*3@-I?J$? H?ӢHgb?/6~?D?۪???'?؉S? !?@#R??b ?C?Պ??0?&D?J?6n4?P?Iu?.?c?bd?&?8?>6?H~? 4?,??/o??M'?J8H?%B\?чQ?[?%&?%\Z%Y?0?K*@dw?6U??{Q?@?J??/@ Q?D1?ŀ>'?(|?R@$?9Q@(MF?Hھc/8~~?0@ ?>ܼ?6¸?p?+i$?%Q?MT?,EW?4i?޾ٯ8`x?PuXl?t.]?MB?@J?=Y侊 X%5?"B6?d僾{?>oX ~?B0gnr$>P?=m_ֿe?(5?/.?,%龅.?S?/?>;?v?-!A??Ae?ch?J?tF?Z?Z=?Jtju?5Cd??K?,c?:?rDRT?C??w?9>e̿ U@(?*&C +?'Mi`?0?&ڿ:?%2?$?A{> DN)>U??2.?q)??M?ZU?4"??6?%+?D4?~hE?? ?3?n?tXcL~ҧ0?,a6?0r@(s??)?4f.?8ޝ?1l@#6?ռ?/?6Rbwy?5B&?кL??? 87@/@!^?ڻ0?~`T?PZ?[?;5x;?0;?SNj/$?#?A6?3F?v4?*@4??x@%??.?Fv@\V?6?"pr>6?z?޸?/??`?2"Z?4?@C?$?,#?Z?Ɏ?;?z?֜(?/ק?dA?# ?Aĉ?T0?.r?7L?=?#xl?Ft?;ھR?C`?/&??2*R? ?8?W5D?:?8:?Ȣ6?1p\5Q?R%)?- ?Aѽ J ~G3J?" א?CF2\? }󞾴¾?'?|?(Ȋ?E?_@G>T>A?&?X?'3[@Qk*>($ |?ʿ?"dr?S?Z!=?]9?I??5Z?f??*0?2t@*?79D@?;Bݞ?- ?@2?U?ذ??@ƾŰ?j?,q+?l?>@ H?Hي?]?S? Ҿ?9U?κ}?ڋ6?mW?5Y?˫S*>?<.?1@# ?8?Oz?)?8?*$?6?-?-R>=?ѫw@% |?ϮBw? TF?׋@?7rJ?C?"O?F9?{?d?^K> ݾŶZ?&1?2&PHe?Ce?U̹CK;_?Ϳ!C?Aȿ.?Q?4h?!(1?Cؾa>i0mФ?d?5VF.x%?@ϙ?CtH۲?hDE?%?K¾^?$pͧ?@qJ? &?!tf~j!1ɇ?BXz?&$&?#g?(4?L$q|N?!V)?e?jz9&?I>?E$+?!?.?Q?\?(?(c?#龙Vs`_T??J?;'ђ?ؽ?!d?Y?h?m??$??I}?6j?8)S}ԝ ?ψ>1C?״J?ٿſ???6???,Y?6x+t?T@?蠖?ɯzzHN?"t?%,?WK?#f?*?>&?؄?HK?&ƹ?{u?]?$.?]e-ÖR?R}?ʵR?t?d@"R?@%D?y>??#?_?O?/O??bD@??5;@'i?6?4?9XV?N??(H?rf?NDr ?jN?M?bd?2?f?)??ܑ?NP?+Ign#@?>̘?5i?D ?6?$9? YTt?9ા6ZR?l?Vd?Iʽ +x_&[d>}DA𾷅?6?T4?3l?76T +*'?L V?3־(??8? b`?CG?/!?[c?=!?O7Z?3Q2?E?4?*Mf?7-.?0JľW"?/h?(B&?Te?"3ľh?t4?֭?>ۊhI?QMCr y?Lf?D¾/ ?*M?0/B?\_?n?;?վ ?->-Ӓ?k6@&I?F?P?(?ԉ?߽?/?:?C?m?۳ +?.Fp?W)?Ӿ'Ⱦ?8?)?\J?x?p?8&?ڏ@+a?]Ӿ?3\?Z?//ȑ?"?$??6?5OU?"?w??Ϸw?Ӳ?3pZ?>?l??I?׮ ?o? .?k ?_?J?+?,?x??2?J@$e?=9e?|l?c?K?>B?'[Yi>˲N??2???5?՛?12>EO?%?2?(tǒ$?M?H?&Wq +DrT|U0?b-@$վlބ?CižMϾ\Y$E?(c}oM>)Kj?E;E7sg?H߾Dv*?-9sv?LI?;@o?KN׾:먾[?Lb?'R?8B<5,? +#M? ~?;?6?2M!?(5l@R0.U?6?JMy?4?*t?U~@.-?:?8 ?5t5p?%?3"?ѣpm? ?Բ ?u9?К?J5?}W???D$??-a?NgM?l@%?5ዾǾP??X?>?O?@??M?6G-?1?&+%?Ծ˥?/?;v?ٽ?+i?)?4?J8????w?1j?3 o?6X?6?&M?A.@W^???M?9a?DF]b?h@#s?Q_g}?ڝ?&8?/R?Ӽ?A?dH?6?̭A?$$? ??&#D '?6??@+?PX?;?\?k3?d@$Lu?:? Q?-5@?@ Gl?X???4?ִ??6?_B΋h? žؾz"?n?3?CT?[?M?VM??"@>z -d?@;?->5?I?6?*2x?8׿:?92?S?9Pm?I>1???H䀾[ؾ +Iłq?gƾIZ=˾G쿤4Q?%5?6}?;3N7?o >N,q +?(*?S羛 ?!03(] +??E?'|? +?ɶ?!^?;"ྵ+3?SʾEd@,0El?%?qT?C1?7??CK2$u?D?S4ӿ?q(>?>?(@ ?j{!??D!?-?ʫi?)?.?)?LeC@$9?']P?APn?Ai%]?C? ??!?]%쿳+?9?˔\?A^\N@ ?-F@%?%!UMo?,Vv?y?"* K?7mľW?(W?6V??}???(?E?ϿU?z^4?3r?/@l? '?,?Ӈ?)@,l9? X@-r?tľW?ڴ8?95?ï`?׿?1 ?ܗľ)y#@"?X?8a?@?3Ƕ?%4*@%ھ?/k??߶4>Ј!L?G5?ӎ?"i?/x??4??*?J,?o?Q1@#/8?Ğm???6ҵ?FC?B h??݌?1:,?S?>?!@ba?.q?B?n?徕4?B[??ޠ??&g?9j?&R?ߕ>־ǰf@'x? ?WMH9?#a~?@,?]?g>ZNb?]b?M9?ɾg?i?8?ȉ?a;?V?=϶?"e?&DH? ?V  H?3Pi?F[t@+bn??6|o? ?)3??͐?w>a?ɝ?-*?A?R@^?ȑ1?4n?ȝ??-j?B@^O@&?8?ЃRh?4?H#@%Ö?5K?j')?-?3Z?8Z?;?"վ(?"?$J?$? ?&?*? 8F?'8?RU??GY@NlG?0?:9?/ɟ?6?Oz?A?J?0?I?9 Z۾)I_t?.ʾM?>F?+.d8;M?^8-{?>$3v?Զ?wG>mہ?;?8x774d`?7X? !ľ̆od?5Ǘ?NMp~ROL?,>?,M~?9?=?'2H?&?7 +~)*v?e??酨?]Ô?'罪?2$@$(?%y?#?+?0~s? ?l?$?kl?$?A @7u ? M@% j?х?3@?A?+ϴ? +8qg?Ҵ? t?;@/?ƴ?|?ʟ?/@$q?QZ?@#??D@$?1?9? ?֛q>h?~?}?B?@??0S?GH?T?M?ٸ@( +֐/??@J?ܵ?o?@$o??)???G???0d??x?i܀?1d?+<"N?8&5V?ii?@Xx?HJ/,?@TP*GÐ?=n?W?Ð?B (_ݾIx,?N?>?28P?R?HmgN?4ھ?S;Bo?3?!c?$*?1?C-@m媾p@!<~@ P??I +@$p?2/@!D?K?=snA@M?#@@*?# +?R?%;v?ۺ?!,@Cc6?0n@#?ӯ?(Q@s?Q? ??3!? u)?* ?(ž ?"?H?"??@?X? +?<?9,??']@\p6BD?Jak[?5oq_ 4]ac?Df?Od>0-0?;"?E?A(?(}?;&$?Hd?CaUJ??$??? @ц?%(?$??>>fw?ƾ?^??"?!Ҩ@' ?n[:?ª;?%?/?ۘ?g?ٞ??䦘*)?:ƿ8?R@(??G?8?Q??ͦ?ۘm?q?ՎJ??*@~?x?R?ؾv?f?+S?>@ +@"CY??H?p?Ȕ??*X?3@+C>]@#??U@-z??2?'G?,?w?ڄ +@֊?@?)=?R7?șN?60j?O+?&R?ٝ?#p?PC@*? +?1?;2?Ї?A?؂?2??!?ԓ +?;ަ?׾^?3?f?ٮ?(?.-@#1!?TR>?/?.?ɂ?$Bô?F`?Ԟ?B?άT??%@7 A?K-?$???T/\?=:?5ސK5?;[ᾢ?5aG?ATy3?nD"?1?DJ5% {?=?2P>SO򌾏΀)?>$}u]?+?kd}zP ?近 Q??Oi$=?Z?H ?6c?DS?*B?:G?' 2?3)G?7F?@' ?*׿??=?B>Q?#50? ?3>MN?2?/??#($?/?87?y?/!@.P?I ?J?FO?'8?@%c?t?&+M?ؘ?χ@+b?g-?0#? K?K^>o?)`?o?3v1?p?Ț?t?/u@(Ş?l?'@'HPr@(H?-?LO?ʈ?!^@)@*?@'!??I?աj?Z?.?Ew?ބ? ?.?K{ʅK??x?o?jj? +g?k@#27|?7L?һ>6?҄U?*?A¾.?3c8?-?2Me@ٲ?YߠArJ?1F?3N龒?9jbnҾeIf^3?G),ھ}ea?HZ#p爾*?F?V,iXþ@z?4WZ>O?R?IxG?٠?8u?#/澨?m?'.}?U!?ă ??輾f?A NV?|k?#`??Q>?>P?GT??@找Tt?)?ۅ?l CZ?ת?/*h?#):?0#?;w|?$?? ѵ?$?9?7(0?P?Gp?<?\>0? +{?Vy?,8>?oN@!?:?-b?@?D ? o@?<?/F?ĥ@.)?DJp?@$޵?\?-;?α7?݉6?X?0%?8f?2? >2?ҹ@)]??>h>Ŀ~?iVF?:? I?!W??ג?@%?s?P?C5??8?5"j?%x>Ì?A?v?fm?J?+8? ???b.?3Ho?"5? ??'??16o +?̎v.r?) ?D94yז?$Z )x?-??9P?*@@0~?xB?ǀF?B?܏fG~?? ]'?&d?"ڰ?ڦ辨/¾PvT@)?"?j"?U??ن?o?S?@k:"??8?P? ?߶@&1? @(?1?@&!8@*?K?!@!-t"?-?(??'궰? D?:a?\@'Q?0 rdT@.|徚 ?#?:ؾ,?4?b0=?(@#@_????&n@(|?M??)%־9>? 4? 3N?-?8?-X x?(?%T?ڮ?4?r?#f?F??_@+tȆQO?Hu?5%>?<_?:?6?Ef?zBξ}$m?.O??Co:/lb?UӁ?#?Wz4l?0w?LJr?M?`-?K7?8O?c|?;3E?e1?G$??=?s $85@?90澌M鿠a?5оո?6;:'?"Qo?D͘Z5J p?9?:;?XU>|OE ?9Fr?8?L=o?!?Bdt?*u"?+f?F>R';?zH?@ܺ,f?;?3ݾ +o?Ԁ?,?0R??BwM@?@,?h?I7?J?3??U@'@?&??0?88 ?&c?c?G? G?DuP??dy?H?٤P@.1?駻?.W?8o^?A,??:? d?&?MF??17K??ݕn?U@+ݸ*?b?L>j9?9o@"?7$J?%f?.>T?EV? i"?ۑ?%?%?7x8?a\?o@!?4@%3N?*?̙@a:??t?0W?@P|?? +@^V?Z?5?S?.@|?? P??ə?2??0?h-?@K?֋?O? @%4? +?1|ᄏ?ڳ=?!nZ?I??\?/A>?¾|?2@k?Ҡ?@?༾[:?"?YU?(Z?'CѾ(\?)$=CQ;?-8֞?D3rbھM8kV=r?Sgվ]߇?Do,?S#s?KƾԾn?QcrMFK?.}?NQ qb2?CP;bAZ?_|???|?\T?5"?Bо:?fdU? +޾x[yo?HOz?Fc?6?嵾 ;?!U?W ?&x?Ӭ?&rx?, ?(?Fo5?>=m?ڡ?J爾 &?5o(Z~ AP?DSq?F|xm#оw?%?ji??>rWƾB >X>ٮ^0b???7?0 ?EB?Nྋ@?"@'Y?q4?冉?lw????,&.>;? ?s\?:)V#,?v:w(k?-?J)Z?˦v?"9+hB?K5?X?*P?`?T?B?9T@"?J?*ȴ?2˾?@(f?I?@@%@@CB?Q ? )?E?T?d?Jc?V@&?Ed?9@^?Ѕ5?%?A?u?@,?Dx?*V"??6?Os@?x ?J@)@"?b? +??6?e"? ?RI?P?C@c?|?ܨl?*?O??̡?2@j?T?σdn?,*F?@?ՈV^?9 +??.)N?!iN?F̾ȵ?N@/m?<?M?\?]x?/?T/]?7Y?/?e??ABQ"Y?K?<˾l ? +?ݙ#V.zde?0X?P?FB?@V8?\̾ ƾ.KM?:L_?ru?2ke?; VA?eM?$O?Bv^?'p?F?,P?|.?*?X-?>L?ȕ?,llS?=? a?#3?8?f?n?Ծ|]縨?7?J?9iӾ6?u?d?@#i@$c?N?5%3?޾+ ?҅?>?@ ?A@*)?+?-X?[N?M>x?C?w@/F?x@%iJ?+L?+V?4PF?#T?%#?Ao?)G??I@d?✡@j?أ?ق?"ze??!*?&?%u?#V@#ޙ@N@"??Dp1@%1?DB?$?{@) ?Õ6??.??3<@)??'U}?e@&8? ?-"N?@::@1i?Y@+@e[@l?zd?ۃ?ex@!@?3 ?-@+v?>V@$? f?$????;@'kk@"u??nI>RX8?$m?4¾b?B?N?3?'>0Z???f?N?O?q?)r ?W?!??`o?&ݖ?/f?,i@??7X@{Ⱦ~?I? ?,2@vMоi:>X\0?:Ψ?d?Dɾ7v=1?'4?@OͿ?Gؐ?AbkaI;?Ζ?/ ?O`E? )wƾm?=K`0d~ҾzlQ?C?N8U_ ?D?^,j?aF?/0?"?8R7?>Xo?MdaU@&?ˁ?u????'??/}>x3?ׅӾ^,?4쾨hp?!?얾`'?`? +?́?ۣJ?(uP]g?@܏?!?J?!??,?fP?N&?e?F @$n?4oJ?.۾?(?lZ? x??-n3?Le>j?Bd?`?Rr?I?*Z?z@e?q?]q?{?Z?e@?@@#@*@?&]?@#5X?%??֛?@&&?7?6?Aj@AFY@'@/@) p?3?F?'2?@+@&@.V?&@?%?t?p?{ͅ?t&??27?]鿧k.FB ?7v?H ھeZ?8n?!]Xh?$HH@z@)df?L<ƛ辇?0?:ƾ?v?i?0&@3BmB>#S?/?$?L +?Jtn?0o膾 j?*3?^p?.?#?8?4Ӿ_)z$?{@iЅ?:1?A?>_?;;?9?̉x?BJT?齾?AH?2 @@"˩@,?ɿ?4m7+?Ȅ?G@%j?@'?Y?;I\?y?H;?"d?@"w?7"?-Z?NI4ܺT@'??@%j쾐BC? $?.;?rU@%q=?9?(?xe?1d?@#ԧ?DJ?=>?>L?'A?< ?[?!פ(:?)M?%5?=쌿?9?Y??s-?( +S@(F?h?F/?#0jj?->~ol%?Ng?W?PI_?3P?8~}?6q?*>?N??.HhQ??:]?#?4p?6?T?sf?he@(-2?=ƚkA?]+z?׊|f??JX?4?5?DJW?~?-?D?*}N?Ս?FC~?Dl*?Y?Nt@)??(y?+M?$g?9:^?9p?R@##3 $?.T?/嗅>f?/cs@'y@*zF?%~0?# @Ms?WN?Z? C?@BضBjAF@!0 @*]?S??g@?-o?ٙ??1N??ΰ@@??8?r@%~x?O'?؄5@*b?-?؂?D@#HJ? (u@$r?*@&y? ? @o5?ܨ??(??6$?@'l?&>B?t@gݑ@\"?k??3O@)?E?D?M?U> ?GlI?CK?6m@,??=A?3?9$?6w?փ][^Z=Y!?>?ϩ?@.cA?DL¾s?(CO?G!?^ԾZ+?!9zҾȺ"#{ȾV: +?7Eh?FRF?ʾq7?4.?-?]A?Ƞ?<:PZ?5Ҿ?)m?1s?C,??Ch8߃wG@?Ny?R +?(?+þfl7?N?:?!i??:ܾC,??G$? -?+?`?-4.+?6@$?b(Wj?6t?жT?:k?5w?M?t}?eY?&??1]?xd?"?8?3o?֙?֏y?6?'v?)dV? +??9@/̬>"9| ?2?04;?#?, @i?Ba'?X?҇@n%h??"@%辵?3P?ߢK1?߽?VJ?΂?9?@$?iBBC/đANf???~?13@!?-j@)`?o?3@*3@U ?@B?ф%?@b ?9?AX@&@)4h? @`h@a?!D@'x?`@.?K?8?/?A՗?'?В:_T@)@"/2?5P`?1?Q? ?Fz +?!0?4'?FS?Qf7*I>F?H?Gb #T,@%H_?P3 t?JS; ?J?BM?0t࿩ V- +*o?~n)v<̾dS8?C^ ?KV?:?A1辪VnNt|1/ o?B+>.ȿVؾ }k?WG<u1ٶf?B?E?5?C|U?Nw$Z]??E?)??'?"҉?C?7?9E0m?>1?" ?NW?*<7侫o???).?2V?74Mؾh??GDQ?ML? ?3Jl?V@$Br?1gN?F@%9p?? Q?>?z3/?? -??ٟ?ݗ?@? +(?!?ƳW?>Y?Q@"?\?L?ع_?HPj??fu??/?#@0&B@NQ@gi?@*J?7@+h? +V?}?@ |?>?OT??%k@)S?E}J@( ?v??1 ??=D?I4]@%7@.!'@.@.~?#_?Z?f??{]@)hg@,?`@,?k{@ ?+`,@,VD?"e?-T?@l 7?*.?n???E?F?>?[z?3@F?"?6t?K`7?KX?צ?ўþ+?5?9?4s?-?T?3?.?+?#+?=s?J??ܳ? @*m?",? ?;?]B?,9?)?,em?6$?uCj~UlᾯD?RM?](E"L8sQ?=?;h?Je,?(ŸJܾ͸?Vˀ]1B)vJ?G;E` +?2s?9v?,)UG?X?en? t?=:?q + 'k2۾5?,q龅82w?1d9񧾞C?4Ⱦ?ߠ?>T?s?@# @(;?ϩ? ?h?G@(Y?f??x@&?s?ur?[r??Ո?L@$F@%j@l?i?ȼ?ҷm@)If?I?D/?ʶj?a@'?),?y?S??) +?=}F?֑??Dp?'r@.?5M?&r?@'ť?ۇ??] 1?˶P?{?5]-?j?ľ?̟?-??@ޅ?7?;?*?.q?-L?zᄊ?]~:?>JE-?2' !?O?? ?>?lT;M=BC뿙:1`F?Zwv?˴?-B}??s~?P"?0Rw?I +?2ql_B?'e?#?4[s?&,(S??X-DG5?D[!7?Ik?E亿]"?5EhH2? +6?.F?L?A@ɡV??Ǣ?Z?U?8G?0`?ҫ?FO?D\?@?P??˅?Ta?JH?+D?;~?6?OI$?X?]? ?LO??h?@1?Ԡ?;Lh?a8?K@$?T?~? ?Ru?;S?p*?M3?l@"@+{@lI@$?%)@&b?y?ז@)?̓`?b?܂??ӑ?0?E@'@,?ح?5V?F?@gz?@-?@)@b!?%fp@d?@?]?ع?|@!? H? . @+?@!Z?H?'?Ӛ?fG?X?>9@?+ϐΰ@0Y@P?)?#]?Lz@V? ?$?u@(~|?1dP?E??-?1?H~@-8?x?FV?!??ܣ?!BrVP?0?2J?6??*?60>xxl"?H[l????b?SN@ ?=B޾pq!т?0X?-?,?|.@޾;u? N>"ꉾDi!j?Qȿ8?I[y|)很8ϾEFIH׿ +0 ?*NT?I~-f@;s?Ӆgbk?7ap;?F ?t??J>n?ː@)?6?>?,?85w?F:?Ɉ ?Bd?$Z?@)?C?"?/?{??I@%N@ m? ?FHh>w]? |?]?H??u??6B?=?i?@e?ܦ>?"_a@.{e?@G%?޽?? ?ݷ@(:@,@#?@,!?%x?D@i@B@gE@'S@/$ ?p;@aU?@*@gU?A??!@&e??߀U?R:?cQ@(ק@)?B@m{N?<&?U?ֈM?B@'?NLg?@+@%@(?"f?-L?,@?y?*?p?2F?8?ן=??% ?,?ޗ?Фo? (?զ?O:T?zB?Fb?q?$H?Խ?f?(>1??d뾫?_]m? \Л?<"t?(𺿹짾)ۮ?n?9h?&߿?ԾQ? ᾍI &X??JF+5n?H ?.p4d&,?/@T\V϶?3,WyL?R;s1 Rm?%9Ӑ?C?/4b?I氾ܾ$Ҿ6?3[rח@Ծ.(N?BR?2K?n9Ӿ?l?X?1dOc,?s?|@!:6?3B? +/q?2?aQ?K<?;?e&?BR`|=>?*̆?5}Іb?O?# ?+?1ߐQy^?9g@#$C?)S*?[\v?Ƽa?݉@J??۫A?N=@f?H(?:? @ @*(@-V?s?Й@)zg?,@*%j?˙??lT?^?ë@o9?$?ۙ@!ю???D?ץt?B?39?W@'J?;>C@? ]?B?Î@c{@ku@(?y@[.}?ځ@li?<1?fY@'(,?մ ?&n@'e@,DP@+ss? ?5&6@*$??@ia??Zw?j@?@)M?A?}@)a?2n@ h? d?S'H?/l@)??c2Ґ>t?R??Z?M=]? ?7B۲?26?:? *q* sо>D kpO?/B?tf?@qA?=ȾP i/8(Dعx/T,Xؾa#?+`0Zpc$9?'kʿ?ޑ"h迟?)?B W?@r>xqs@$mn?&''n)`?. #?hJM?'2?$'??]?FJn?LdJ?D7?^*?(d@/?3X? ({?N?ǚ? \?\?+|?2F>^1?V?0.?ģ]V?_~S?;Ȑ?K? @?8??˞??$@3?P4?#Z?`?]?.@ 0?Lv???9?w?D?(`?R`?`@)z?ޘ?D@#l?9?L?q@S!6Wy???#"??$@!=gg?:@"q?ASD?BL?2@)a@*w@.@*f@fl?Ɩ-?٤?@$Eg@(?<$@Zy?!@&?5@797?FH?'?0d{@!?;h@%E? ?@+:>G? L7X?-s?<?PDi@!~@'7w??R?.c ?.Æ?,?L?@,4?-=?A?T?IH?&?s??'?;??t(kF3?ў??3??w?冾 ?B?<{_?3?}??=sbjv?+89zq?U0?F(ؾ.L6?;(<}?)5o?=Ծ?6?"W?OD?,MS)?ɀ?C?QF/Є?;t?EH4?$guzk?*Ⱦɾ3dc??*< 6&??Ҵ:?VpþEG?Ls?9+?*E0?/?"#0?U꾊{?צ?Ĉ?B?-?=YN?!rV?,]?A?8?Wl?%[?;_&?83M?/;Ҿ?1@%?/\?O$?(3?2*?Ę?.d?3?2?ڊ@(??F?jJ?FL?+?&A?ՠ_?]p?&:_p??-ÞCAR?Р +?X?4??ɘ?<??ʔX??Z?ٳ7j2??Ԭash?@boD?(,׾s?#ݎ|&?cmM?T[䢾 D8HqM?Q?RK?Jl^z?Fm>?~I?W?PՈ?GSp?:s?BM +BuϦ ?M7\d?݄?ץ?+? @'CZB +i?>?*a?D`?-.?8?ˀx?6>锝?^??Hn?3.$?I;@.V@??֘(?T?ye@nϝ?ԇ?X?K?M?>뀾D?g@d-@aM??H[1?m?iP? u?Y?ٰa@%@?@i@kY@&p@52?t-@m@!@kl?2@x@^@*@k@01R@' +?,@)ť?*??о@( @ ?b?4?-?(־=?E?ϋb@'?/A?Ɩ?8?ǐ?ݒ?+n@?鯐?ž@c?- ??0?+?^n?`??(Ŏ?Ŝ?ۭ0WRwa@&?r?N?2p?c?K?=N3??.? ?h?)Q??R\?F]?zb?sCR2 ! ?JoMPs/忰?ܽ]j?6 _$ؾp?Oy"K?,6%y?X?7;꾃?seԾ^Dkf>0&X|B?LQpva~??A2f?oqrhh࿡]پs?u J?p`?6;tj??:޾N|?:j@(G?3 ?2r@*kH>R?ĺ?}A??H4@(@'d5?d@5@$sm@!@$?ұ???C@$?&@i)?%!??]@gG@%sO?/@c(@t?1@@$1j@f{?0@h ?$@Л?@!@*CQ@)@.y@f@l?@ מ@-@#@bj?b@(b?Ь?@@eO?$?-:f@'J5@`o@2~?Э@?jw@$?./t?I?e?ˌn?lb@(?? ?-m??͞?#? +?@(;?R?Ȁ?1??.оL?%?Fh? +?El?j?-?7 >ʾw>Yb?5f? ?b?4YԼ@-g4? +ߢI?C] ?AhW?J?94˾Z⾯IuWN?QY?IMJ`+?2!о?KlH%\?B@9?&[V6־UjiM[v!?L ߾K?c?/mھ˔{ʼn]?ȻX{쾠?Rp ??t?Qv*}?(Y6?[?0?5}?" U?tq@,Sr?Q?(?6?Q>?d?I/?tM@H?!Mh??=!?׹??%2_?@''?ZB m~?jt?,Bw{*???I0~?/v?MO?>p +?d?#0?l?v?x?0?؎@(?.@&? +?7@Y@k:?ʵ?%f?D[@m7'?@ @`5s@0?D~@(S@@,@^@%@h.@=>?3=@e`@cw%@qIn@%{@ޣ@$??U.@n@i@g@28@*<@E@d@l@XV?؂@dw@6@ZL@^,;@@Y ?@:2@`?&J@$hT@H/@8@kU@'G@f@!9?7)??|L?Ы@&3?&?ѱ?(?ݠ?R?=@?.*?2?4p?O? 辕0Z??@(Q?P@?^@CE?/?C?3?*?@8|?Ͻ?׼}?5@)d+?6 +??5?\4?$71?;􆾮?O?D:(l#P|0u?$چJX]?͏þؾ꾷?,d?:?;ɬ?4县!Y> >ʾ?.ྯ?!Sk(ܾY?<˼?#VÿW鱿󾟛_Е6Xs?>8>xg_?-?3:?IE?ò?;D?,? F?XL?9?3?76|?D??>J$?Y??8@V?9?P?N5?.W?(r?k8?8{?F?V?v?ϐ?ե=Ì@-G??عp??=.?+?i?Dn?y?۱P??k@#@z@&M?@_;??'T?P:@@"e?=?E38?,>@"G@ 5?ʜ?Ι?lj@,>@,@a@-@dl@e@a@08@%?*y@bl@cL?Ț@hП@#S@@$@l@l@j +@U@eR@߬@d1@_t@$@_w@gy@!D<@d@+3@du?:@#-@@@+D@ @',\?`?-]@"d@i@_?}@#.?܄?՝?JH??e?w?7ȾO-%L?ߎQ@/ ?t?9E?ު?s?ѡ뾷??d?%?B +?? +?Ӕ??K7?S)?>*`?By>&??K?+!?_?Pt?(O4?1 lk,Y[%#ᾨ"\P%U4f?YaT ?2꿦5?/?)7ͻ=?*mxUJ9S;Z #[1k!Gq*̿:*??ɹx??GZ?J?/? ?;VJ?0,2?6t?0AO\As? ?.[?ԃ?/LA?Ըf?9wܾ?8>7?&+?eϾcY?H?Թ>bD?NF?*9?r?Z/cR?'?)[?׷?M?LV?_T?GQ?GQ? ?}7?2)?ԉ#?"?!}&?{@_?8Q? ?דh?/f?N?1@-"@(̫@&"@h?@$?1@+:@"@(2?3O@&l?NT@'&@@d?L@Zs@[@@B@!f@U-?K@)^?O?h"@a+@m?@@b9@_@h@&@jL@)@=@b*@A @-^?@W@Y@@б@j?"x@-h@lo?et>m@+@d4%?4?O?t??I@@'?6{?ߠ?%?ɿ~@&^?#?#?@?)?;ԃ?հ?Q@.e?5,?f?ٿ/?@ߥ?+;̣?"1?%a???%D%b?̈?\>??(?"9ώ>*?@ =??%6վ78jBZ7 +>b|?@9qa>t?@9jr̿_?@EIA?#Kw?3F?"ԒEA?NY?JuLS3?@K?/3?%A?M?(?!?$LƾwB?T|?U? ?-?ǯq*?ǾGp?d8?9'?>7??/?,A?? пG??_ ?& ?W&t(???Aǔ?/=?T]?2?!h.?>;?F?Z?ݰn@'?ժ?6?1???`?s?F];@&Px?-/_>k? '5??J?@ K?5@O\@z}@'?b@Z??Dr@e!@f^@h@J%@j#@d@e@-A@e{w@j@Q?̬-@a@g@\|@3^B_@X@N@q@7@'@p@$}s@f6@@@!@n@@g<@]ދ@O@p@<^@i@d+@p!@ w@a$?N@&?*+?ڟ@'?@*"@31@-<?e?O???#e=@+x? [?CL?z?W?٢V?'`?_?ѕ?0? +⾻!@ ???;Y? _?0dR?5?O@(+@??|?p8Z?D¾m?b?66?^ ?%馾^q=Zg@. 0?f9ҿIǿK?3dz8EX?C?5j'?!ĿҿL?2J?C8?㺀??H?Mv?AQ?m?I\?L?Ϩ?F@.ز?B?>?;$?1?2$?CA?~?ڏ@l@?"@?%k?*w?$N?3M?Gk?2D>| ?5D?C@/?ľ̍V?;?( ?#??6s??@ͿW?@ ?F?8n?q?"þР?@?V?7? +Sl_𾖍޾r?S 3O6|?f0w?|?0@?Se׾I˪4B?:3ވ"d?*I?&??B"4#?NР?TF@?H.?A8?.?6{`?(:?vJ??̓ Y ?DϾ?:&J^:?1[?0?C$?9?@4R?CZC?2?a?=?k?7?0?"?W?[3?J?Iپ?_4d?4B?Y?~>w?>iD@mBAiѾ?M0?}~?ʩ2?n?|?3]?8k?&?N@*p??#?j?(@]^?rm?@&??\@"?:ӄ???@f?!q?z@fO]@lQ@iA @?خ>?u@+?(@eR@e +?ۚ@`@@(YN@]D@[Y@>r@j@ŽA~Bv Ax@/s?5k^=?P?оoxsh{Aѽ#?D:&ˬ?]?.BN?D˾ž(#^?>yj2?2"?$%O?&Q.AF}?L>꾃濶?⿬r?S?$M?o|r?x?4`־RQ?O^I!gm ?O?Tv?;?3%??9iđb?.62/S?ٮȾe??1ξ?J#?D,?fԾک?9?3g?a?M?+,r??2j@?0 *@$YBCf ?V?^?;?L??d&@fGv?tJ?ْ?R v??ީ`?i?bE?,?%?ѭ@e"@f?c?ը@%@%@1e?@$@.y?]@%OA@k4@#]?R +@T@cx@(@$I@hR@r~@ov@@ѻB@4@`@e@+@ @@@H@!/@@xj@@@F@ahA'@_HAkAk@Ԡ/@Ӷ@쪜Aa@@8@@k@!@i1 @hh@#Ig?œl?@۾?6,?g ?m?A待Ĩ`Xt†?a?iZB?8b@?!=k?CJ7?Dr?9?-vcq6۾19?*wA"?- ?*P]f9??+??VL7EdΟA?7qޥ?“~_Ǿv?(z"??/?0?՜O?B?JF? >}r?+^?RwF?;?F@'??ՙ%?؂3?W@!@@?%%@t}?(@c1@@&R~@MLAe@:@]@&"@@cq@L?@( @_@w@/@@kD@~@/@*@r@_E@m @ҩu@@+ AA' AA%A5AhAWAA&=AѳA'9[@@P~A&D@@@@g@*@mv@ .@v?S?n?i'?&@" ,@K?P?R?)V?>L?->B?/?ݥ?]??-(??'Gy?3?c?'z>-˾`?!{~?=9?!O?3?S[v?M)֗??FP?n?;?[?DUb>?,?Q+'Yx??VN?[Y?.kU<YCa`?5pT?BzggpuyaRR}8(/ܾ*GپR? u?1ϿI߿FZ?;L>8KXV?8O?+'n?"?!? ˄?(E?T7?jjE~?3*?17?%?|J@, ʾ9?Q?Bmcy|?6z?t?DH?$t?#Y?#h@%;??/¢??(?||?5#"??ߒC?Gվ;!> +?l?a?ڭ@!?3]@?>A??@ W?/a@]?3@)-@#@;@)4s??5?a@hI`@@aD@ @cj@r?٦g@_o@@Qe@mB@G@"AxA~@, @q@d@^@@@_RAHAA&*A57AHRSAӨAVAxAqAaA6:@o*@ٴ@p.@,@np@@)@ah@8@h>9@iP@f1,@# +@_@cj?d@I^?@'ٻ?<Ʃ??־/\?7s?]?K?9 w>?vg? ?F#?Ix킾h?2B??榾b?5俒UJ@?Qx?Ͽh? Bp?)C J3PO?A?MV?VQ?eh3$a?B?VUǾͨ?E/ )U0?E*}WE?+.̾P?0{FNݾ_$?3lk0?"ܾ)?8 zSj?>Vᔾ$?D`?/>?\*?O~*>5V?܋?(?0?2v?h@)>?)7b$?J:?=پӒ>?,?QA7?8?x?SB?7μ?.4?%?$\@%#?NX??ST?Q@hH?D(+? N?Bv?л^??Y6@a&?@gF@/(G?A@iD?ϻ[@h@d3@"H@ju?׾@a@D@ +A@@q@@#@B@6N@h@^@݆AR@cAsAq*ACA@@[A*AAYAZpcA`+A:AZAAAA]A9dA&\d@^@@}@!@Z0@@jp@@o@@/@)F-?+4 ?Е@eb?ę?&'?\@-?؞@"D4?ٛ?M?#"?P?"`[l`?!?'q_?zz?. ?1?a}?b?6F??07+KL?h?/?>H徴ݲ?f?@r@W?J7?,;?Z?"?(?A`?d?Һ? MTn +]4h1?#0?M̿ua&?(lP?@z}?L8\FQ ?7X?MuZ?B?!~$g,!|¾L?1[2?`ǴԿo?oD྇QX?@Fc>տvQ_\?*?i0?k?8ᅳp4?`UL?3e?+?Xa?(z2??C +?(u??Zǚ?Ͼ?\?ش%?5p??/?ͯ{с?ı?Bz>?.?@'j??X?K@%/@( ?~V?`????-9?׭>ZH?/? ??$?*K?k @)8@&B?P@{@]@*4@c ?t?~@ri@Y?@!GO@d1@@@ "@H @K@v2@+@fv@fZ@m[@@_AA}@@LAAARA NA(XA\]AYAjAA&lAYUAjtAZ@A>A%A4ALU@@@ @@!_@@}@/A@e@1@ip@*@'pX@&o?՝?چ?M?ӯ~?CN@&.?8(@{?#g?Ͱ!QA?\?Db@">q ?2X?Ѣ?k??`4??B?#D?@?LC?L?6X?? ? ?ƍ?"?*2??t?(\e?2:S?#V?:KN?>샢?F9{@8~Of,Jޯ?S,.?_zوtL( ɾZSx0?9Z?j??*&?ѾY?.u?ac?=>V`? 7ھd8o?/??';?=Aj??E<6g?P?"?*ޯa?*.<̾~F?u?c꿞1?aַL@'|?']Z M?>_ת???p?08x?Iz#??ױh?@?2t?@0h??v@+jR? X?ή;@??P?*?&o?ʅ@+k)?;;?Ĥ>-@@@B?ב@0K?ak@,x?ǒp@]@@@G:@@DAv@ӿ@z@q@_@v@AУA&w @\X@@A gAʼA}2AY݁A{AilA ALAnAFAGSA\Am80AAX@@̛@@@\@n s@*@dTk@e%@Xn@eii@"Y@@-:@)_@)[@0@D?Έ@#=?Bv?=[? Á?T?Ġ?)_{(?;z?О ?Ӿm\?J6?ж%?A>s?4*??J&@!?U_? +?7@?C?,4@j?*?֭AL@*u2?8w?*U.R4?T?&̾M~?&f?:[Y)?ֲcj?!p-zؾZ?9?+!⿧X?EYJ?"tz?,ʲr?Ά9?0=}?dh? v?=]@?U?-(?[?y@,}?! ?Ƈk?6??? +=?Vp~?U?E8ƴ?4?g>?'@f,?5|?sb?ԟ?j@1y ?NT@`0 ?R@)@"k?0'?Q?$[@`W@@0^?@W@A@@g@\p@'AA&'A @[@?@ҏ@%@A$VA6AZA8AM_AZAGAJAAyߴA AmAWAjmA4d6AhAAVAS@q@@@@@ @or@f@@g@}UK@5+@.@]m??@b?c?ه@eJ?ld?@&@%?٘i%V@X?@&#?9D.0Nz?* K?ѾP?%ZN?8侢??ຈ?2?֑?-Ow?V4,?Ҹ?v?*\??B?;|?T??_ԾG? +JX?U\?7?F???á?̠k@*'@h??ӂ@(6w@f@d@]@>@3:@z@`"@@М@A5AEAAYArA6AA8"AwrAZAWAuAI6ADA A2AiA^Aه5Aa +A¸A/mAk=AAI2AUA@y@K@@f(@ @>@1&@o@`@)Ln@@}z@c_@(Q@`,?x?=7? ?K@A?ph?(V?m?J?Dp+??'?  +? ߾?ۓ?4:?=8?$?٘?"?C?!)?(̾rgJy?կ%? ?C2? ?>ɭ?f?|@)ʹ?$>>s+@"H?-\?$?wy?=v|.?c ?f꾔RXj;V)?Hs6T?)z\fS?X=N?ٲݾ55?5L? +gy[+?B2?J=?MO?29*?*?\ .ư?+?,?@{?Hjk(T?G0B?F?q>N¿ž?i[-??U![M?9?N ?M5O?R_v?6?oP? ?.*?(n?Z3>O?Ɲ??%?U?E}??݉@^CuY?v???Rf@-?WE>ھl?a2??̓\??P?R@+y@';?d??@$k?ʾS?$?Ή?{V?9?ʵ@'d@*ܰ?OZ@%@)@#|@G@g@og@~@@@/@@Ս@A'rAG$ANAAVAGIAjAkwAFJ\AYs/AAAAxeB5B>/BN B9BA@ASPAGB )AAA5@0 @@@ +@@cb @]1@l y@)eO@+?e@I?@jo?11?ӵ@*@-Zgq?o?@?y? )?@)ڭ?`?;0?[?źp??;nX?/a>5??n?G?Чu? .??/ +?hy?.h4c?WG??'I9~ᄎR?/(?*$?9?FP?9#?߅]?'? Lfr?Ltuр>7`?$;m#{ݾ^S?Vx?!ӾXlA:K$A>4?+־#pξj???.Dı?4?5?[wj?=4|? +\??0>/2پ$4hey?U -???x5?`?fo?)?|o ?(N?Y?X@BΆRA +g@{@,WȾ?%ը?JY?#9?:??`?ެ`?̰?5?b?s@#3?$v?K?n?.{?~?@1N$.@._B?ٴ@,@?򾺓q?@g@f@,m?N@,J?҆?=)?@d ?(@7(@cc@`@D@gz7@̛X@@@qA(TAG4AB +iBetACAG'SAjAA^AAʈBA̒ABYB1aBYءB% +AyB|BBxB1^GB;AA5A@ҵR@k@j@{@͍t@.|@c2@-@"M@mgm?ׇ9@/?%@i_@?9@i+h?$?p???./?H?9?0f?*?ٹ??+?\?"|? ζ?T?V?4?.. @,H ?$??B?$?";?Ly?Ԃ3/*? 6r?¶?-?@+@*?H?[,H?ΖJ̿:ԾWSƿ,Pv?P V>X?=]ؾ?*i(@ + +?8f?Ѿ:?=[;?⾫?)p? FC.?mC^?G0>R?0pEg?6q?6?'?=-?(;M ?@P.kbӾAK???27c=?$*?B?>?/#??RB13BtBpB,Ax"@-?Bmf?Y? =@+-? ?*?@?z?#O?)?>??+@)?\?,x@af@Y@#ǎ@$@&@ds@#?̛A@aǿ@Nid@@k@)@:@AVA@ЁEAA3JA|vAAA}AjAwuAAhBܟAѧBBMB7cB,B"RB)9B:B B +YfBB>BnBFBeA@A8&@@B@@@vK@@&?.a@h?@-D?4@,Ų?@pk@)?۾@d4?Ю8@,b?/I???8?9%p?ؖ^?մv_?F7?[?C ?D.Ծ'@/?n=?v>C??? '5(D?4?i.x>ھg?j?#@?BP`]ۿ ?.44/?AS>rF4Rx}?X?=(@A?@˾#ƾx l銾[?6?0̾Av?5.?B?e#F??D;?&5p?ӡ ?:3?>6?Rl?G=?3 qe??W??Q?*@mA6ƀBiAf@\F+[?]x??VS?ȧ?sd;߾@*q@&?p?m?Ba?۰\@)ע@)Z? \??ּ?ӱ?ru?9&@1?α@jW?ʏ|?@?`?@n&d?؟?tP?yj@b/@ +@m@>7@t@%@@@@M@@A&AG AkAwB2 +B3ByBBUBNB]B&;B!ƙ?.2`d??,??,+?X)\?`L?B{91?XxgD>?4 hM7t?թ?J%;?,$ؾ(alHmF䮾 ?AptT@2)?6?4^4\?,O!?,@2j?Ϛ>;T?).?'Yn?ʾ澢|?^?^A?:8?f?@k?JǾ?IV<|c?CƯ??8$?=?ݲ?<4[??2|?d@*?֔?^4???¼?g3?CP?v@0?5o?Ĝ?(}?y?\@ =@#?? +?0?v?S9?l>@(6@'?g??K?@g?ѣ?o?y @*#$?@+4?">@y@^,@$(@@b!@dU@@,@@όx@=@R @MA7}5A&:A7`AW*@AyBBRSB)Bf'BMBpBBBưBBBBiQBRB|Bq}BMBtA IAxAF[@D@}}@@fC@uM@l?@co(@h?f@+@)*U?ˈ?1@Y?@d@*c??ЕR@ }@<@?D?W^?X?B,?<@*j??/.?>4?~_?,=?:@,9??.@/?1?OF?3?̪?7 ??@?ɑVB ++z?X?%?C*?ʊ8?ÖQ?&EM<?_Z:/sv ?i}6g.??/v꾖C^e迮J?aB־?P|?N :5,`''І x>^I>?G.c?v??W ?_)??I^?.?){?gp!?6?;?.H?XMľ??-??Y?҉?ֆ?z\?[оA?4f?Ͽ5 @P+?"ھZ ?:sq??2?\?J?E?#쾔;?%?u@,a?Я+s? E\?E?K^?jg?T?T!ݑ@&3?ܨN؊?wn?x? ڿpq?*,:J˰ + K?O??9s?8?A*8_lZ?(T6<>? + ?+?N? Vn?#QdQ?-R?ږ?.I?ڏ.R+F?3ɾ:t?1nľ? +?Ԯ?H?@?&о!ǁn?0?f@34h?;u??v?3?FV?/??.?F?K/.?@?"?Wsx?)1J>?j+y0? ?'E?8(C@,??=3?0?#?Ń?@/?%?4*^?#?H?Ɍ?F?q@@&۩@%??E@)@(X@$@:$?5@\S}@k N@/mB4@{[@(@@S@7@Vw@Ҷ@(\A% A7lA%AX==AF~PA{/wA`iA]BBBC6CD5{8CC=C.ȤBB_B%B>ABAA@:A{AZA6Ի@@+@ t@(@@^x@\;,@O@@c@!@eG@j׻@aRM?V(@.!g@dע@.3l?R@'ҵ?2L@+p?ۅ?&?PI?P ?Йr?㾌?,"?ܭ3?;?F걾c?ƴ?,U@*v?a?Ԩ??',??)⾲Ҿ?*?-&?? >i>?>I?:(޾˟?iq? g`?+>3@z"?)TM/?JV2,Z/dWJF^(???>Ҡv3'?1?9־A?,<?O<^hy?8?9D?(wf.8_gھxVh?=T?'i?I,C?*1?:U?6˚྄.&?/}???ͽ?{e?Q`ľƻ?7?J??I?jt0J>fE?O'ģ?*?q@/?ں??MȾ`?v?#?8?>@,A0?C?H@' y?䁄?5?3m +?pP??ɟ#?A?j@ !??j?@j;???V@?̞@i@d?;@Ae@ɲ@t@S_@$@MjA @˻@ĦA%\AG#AHLQA6AZ +?AA.A2BuBCclD 4EiďEiƚDCLC_ClWB\BavBn B:BA+AQAk!AyaA-@%@+H@@<@r@as`@f@P5@lQ@j @@0b@,@?ҦE@&@+:h@%?@լ@jI@(n?h(@lf?Ec?*Ł?5N8?=?.&??jF@(?ǥ?5P2S?+j#Vy?A?v?Tȧ>|㿪#Fy?+Hɏ@h'eL?6k- ?%͔?l@?; ,?1zhz+C?dS?'u)??7dP?'6xr5I?*(ʿ(G,?2?00k ?5g?TG?5ž[G?GÉ?Ar?!?YDz?;?=? 2?%>S `?۳Z?3?.? ?Z?Զ?7?'"硾K?2 ?ZԾesX?`?֨@+o?'I??$?1?BP@0@iQ?,?`?I@Z@(.>@&@%@#K@g02@e@gx@ +@]@`'@=<@@@/@m@A ~AXk??ע???lI +? ?">ߋc@?4&AK辷%XI?A͂R?)\1`%@.z?7H>?Ae?~yfnq?>&Y?4?55?N?@'?$?!p?1+,?#ћ? ??:?_???:e?4? ?)yC+6?6r?(?&?"a?x?Q`j\G?/p? ?<|b?.Y?p쾳%?+s?5gNב6?"@%?1M??ߖ?CB;??#? @( +??h@ @"e@&?@#@"4,@$@n@&@#8@(c@#@]_@@c@y^@&As@@(@A)AiAz DAvA|WAlARDA BFQBBS}BwfCV\D۞EiǜEi5D(zCnC BžBKB-B)B +w;BZeARAOJAAWAr@)@@(/@2@b@h@z@j/@Me@p@)x@g8?´:?ĥ?j}@^^?@-g@$M/?5Z@@ S?ƶ?dX@h @!?3@-j?ͯ]??;4U?ʬ2?=v?̦??.?Ǥ1?ٵ?S5?g?:?|?Cm?-?(٬?K?Z?<?@?{?/ [?ɝ???$d?&Ekr> x> '>&aaB=(>|?{?>bM>8>L=Z<و>)w?'AmA0?EH2?Z>Rfh> ?_?"K>3l>,v<{PFH7L=F=Arx\>)=M>+w=J=Z=s?#6=>=bx"Rr=d@?:>CE?C>,I\?[>_#{=;V`_>9ֿvnr?i>?]C=hl>ѿZohZ=Z>S=f}?pt?䐽Μ=DZXpվhv4"뛿ChH=Ǭf??svO/!W">;HB>"n5=Wl?Ħk=r?a>m 2S~;h>Be? =y?J R>J?Rj?`}6V =!?D?{>>}=7X鮺=i(>}]P=}=`>4fD=jj&ä<_?yA>>r?>U@/=}T>9ZY?ۿ _=\>Iiv?iPC)'<ո=l?u>qK/>"UA?otB=*=􆾜>?g>4jg~??.T;>w6=>4h?v>'dD+_JZ>4|==9Dc?=޿N>g_e;@=?# ?E;>.Ls,?B@<=<_hX7dzF?f>m}?SSjA>g>ij>)_e>7Qgil>]5a?'sN@K>>#춿]T>i)ؿLk?E>wV=t_?&5=Bx=_0m +>-9?At?j> +?^[?ݓ<?>o_?\\f>8Ͽj ?/8? 9#="<=HaT=È?|kk6?~LP`1=x?XNV=5|>-8QUtH=nt=C;Ǡ=G?t1?i@L|>n?un?e=??=&>4=.?gxv=м;R=;=t &=T?X}?L>2y=U=BHL=;?*=ܼ;t:a`Wx? 0>1cD>N>8 +{?'>2d=f`=@R>.=.N⠿`8= 8.z|W@=d=v2.?ff>)H4m?<H ۀ;<5@?2=zgܿgRaY @`s?M6:w:?.|+((<"܀sD[t<֓X^?褿u ܿX7>#N?^]K=Gs?\?s&p)>mVGe^^EA>P(>yR=VA???־kF䬱<ЃHC綹??{aPo?p>GÆDULY+>>?«=H= +=?*BoVS4> l=u>+8>8A\:=.Y>l?9 ?=ȼ=xPוhmu>HJ>5ή?>"b8> +u=zh=ˁ?hſYs=G=Kp=f?v>) ?Ss=Z?aZH?{Sl?\?zrK_V +lR?Gf$࿎xh?Jƾh< =&?zi=aK4=RļE@Pk.tW>gr4>ݿ[N=J +U]zP?r=^=?VŤ??^8=k kr+=bNeC>݇`=!t=s] +dc*@#g՞;;@`ҿeD?p>ý?r=Qtx?|۵@g@ 迂 >#J>=/^ d>s< ?Z >p<;:쿋3v>uu->> kN>=T+Τr`P?]k?X=+T> + +?u*C'Hyؾ ࿌(~ +f?3v +o.ub(==fn 何3$>z]>L e>C$1g= >wbd>R>n,?>#>V&;>&?x>F `hdTq)Msy?qA*=Ȟ>>h>Gv ?d{$3>E2?tF>+J_F>s?k>(Q7=B>@ѿx:>Z-?G~4?%i=Z>U=' >/=r>V>S^=a`=r<Z???Y>>ȿih=%2>=W=[e<>z?=:>IY Bˍ=]d?lQ>6@?v>>j?=vSpf%o.?t*oT=ƙ> ^v=yƼ+8 l> 1=? T= ž0EZ^?r??+J@׿X`U;@J?=>0c?I76>>P0=ֺ==BlM=$E#;ǩ`>=TDN>*U>@t?/X%(j eS?xοOc=F X>B/?;{=N>x?r{ S=V?rĿ+`"^a,?W=4V4? Cl$*>;X4=콦? v=?az^a +iͷ|Nш=Ws>=͚>t+>ϿJX=qbpVաiJn;;4>wָW4={w2>-=?>$?Wٮ=?wrt8>Q?⽟0,|i>S?j=!jZu=>]l[_>bYB>4Tu춿i&f?Ŀp}g^*>0'~>am>6 w=>-p?Y?|mpM?%=`?-ڿ_?>*a=x=ݝrV]=e0?V?E>pU>r;P'>|>XRĿneO=J=*͐MۿZoO>#>߸?hKT =#G&Jz?*>^8>H=ȶd罿^ZJ?=Qx=t>B7Z?_=>R?²>}˿=V=jg0=0?<}?B?㜿>>V Yd? U>Zrs=z?x> 7X=d<J g=:`?j=/>t_x%>o1srM$BV>cZڼ`=I=x@6mAy^wu= +POi?X=⢎=Xl:>=>$v~> ?D=’_=5tP=RH??=Jm4>$v@dJP]G= UVrۨ#?}s"i?{Fd?7пu*[H¿aQ,"Oߦt ;;C=ym3j>=JZ>{=h>)>c㿀[a>Qh=>>?>VߴMv|>2?W8=jn?οMB=bYTlH=2,~Ru]ӹ]> +gl=?@DA̿_FV=JY_i?QGR>?ſKgz=ſ> U^>@фRF?=}yF?>=a;t@=<>=+vo~=.T?s<ǀ҈kw^>5I @ʹ>CC?F$0>\thKT>1@>*RdĻ# <=PԼG >dĿZ|=ؿms?R|/~>K5S?p??7=MId=?z>=$x\S?gL=> =BlU?b_?,=οcM>C\} v;?H>/]`b=뫨rb=dqPuf+,}?Egz=7b f$>ِ>DY6ؿt=2m=~=?+?Cg;`?;~?ܿzԾ?uqk<>T{x4v>=o-Y>օ?쐌>8ca>1>=6A>wj>G}=f<?^y@$?$?_1>yl>>c< ޻?1\>]'l=P0=S?r?X@-?]T=/>,Y>>Tvcq=΄>^6>u>`j?oV?.?n?}#x򂿄>Ev[=)rL> ql1>JCW>op=<0j=?8嫿w4~?\-R=֜?>>½mBb?=/ݺ?}=(?U =@L>-+=apcxn?n?:?t^.?^=9l=vf35?y?m ->?z "=a[=hN|>)=$=4h *p>yUF=ױF,x=9ɼ?|{@?4-,{X7`=T?.0 0>H2?U=?`>;?s>Y83J⽆Ud<<)-UJo??b>8qN}8j5T\=ꤿS=F?Sh<0[<_9a?ݰ/(F?liQ?>xGd? @@B¿q6=DUݍ=Hc>Y>Depr>< = |=x>8>CI>>n?> +?>\>wxP>*8=(iA6W=>>0Ư?bп=\\x>" >#=03c[=0%> `=a>2vN.ꞡ8)M8@>!$K>Z=P>l<>;??p,FL>s>.=>L=>Da\^b=LAf>,s%AԿh=?&?jdZ?O?%SJ<6P=gVV4=>>ʰ=g!u^=sP>F +=Y(>4Md>?>hl?|<1?^>=6> g; +>>WC* ?n{z=пʿgw> V?Va[>`Hs>'P=8?ο^Aed3=Dbm<@=L ] += ;m=Z̜rWa/gT?z)=/7=@=,>[i>foF>:>j?7~>n< =^?[)@=lt?US)=@>KߚR;Y}s=G v=n>UÓ=F?eM,?j܌>L>t@&<( }=1l=0>O?(4=~ȸ@[n?|w =/PXB; ?gU>SgHmX?UW +Xl=f, пG[=`rj2<P?u>h_a>P0>Ę?4>C.?>>}.yOh>EE=E?p\D>4?=nY=+>*?g=>J=<п]=շIV>D`>>U?i|S>Nm??>|u<20P?=?%<>zC>>=>I_>euWZe==,hk>Vbyb=?؅?K?.?ВĿws=>Y=K>C>n!?+q.>1ZY>J >Q>8ø~CH?<>&m?`=r>C>q=\ܿi<Ĉ@>@-@==޾>8[ƚ=seXz=}Z@B?ff]?y hxͿS2=<~>p +p@UDP>}^L>_?7H=|}== 8 T=T86T>T <=@V?;_=$=Jڽp=n2>(=񕨿a?)==}^?tHfh=tK=?(e<˿@i>?>@N?c?PTA?=b>w=?h=P>~q> <}0U [&j==p%>U>|>U̾ZD|<' >=r= =C?>]:t=ி׿z}%?t +>c4X?n??>JL{oſQdP>CH뿪0̿>&:jN?"Rw 1?w?kY=?Qy= k>>{lпZW?~TP1?5o>.'oH?=z[ V@> Z->X??g)?DWHg?O2>@&>k=!==Ax> +T =4=+(?z>>>f jUJ>6=x=?f->3[,nlRfPҊP>II=D?Gcx~>-ҰQO xh>=I*?n5?l>L?\ƿ k?`as> +u価?^.> ey?iG;?o!>(=kؼ>ǎ>NB??BeY]Sa*:h->I&WkR==Yp=?7?c?&D>'=4R<>3?sl>=7Je?(X? :=? Miʠ?i?[V`>ubY0oj=?t>Yv=T$H՟ 0=p=>{*<8? +]?B>4IL>=ϵ0dժ?<8({>L>8lc;pn=ךuvq"t>7Ix$t=קQ?>Q?w-hoX>CZ?˾a=>|M? bWHLxH/cqj"f]=ft=q>?=P? S=??|Ӽ?/?Ő=&?Xiн4ٽi P>^5r{5??>7>C?bK=9ؼ >i!<$X =X"w=ʿn?p;7? +G4=m?>+v?a=R?Vx +?Y[G?=>"Hοa}~>lLsKU=*?rf= CRm==+ =0=x?p=?L=z=">:@}q\<ؤ?cpp7/="U<=-}ƣzbϼ>>'z|>_K|?X>PaafGyE=w>A9=hR{>$LA==d࿃p>ւP?X=S>Uhi>Eȼæ=qYbw>|3J#>l:k>Xahb=̼?>(e=v(pH )-g>/DTb zr>)>X\?=Z\>!^>\C=%=ot=r>=.=gu+=\;~~hMa=֫r?C?k&i= ?U>P=[?k\>&kΪ>O=M[ܽ@ ]tg=0>0$p]%@HA?p=\ш>^> Ծ{Nο^F>)?Q>ͪ>7Y>'(? ><> ?72?^<<>|>9XO=>][x@?w ?!?j|? +=[\vkU]d=wn=?\Pj= +AQ$T/h=A=[?^LL>7ʸ?C?=&)> <P= +6Ŀx9=߿> +,Ŀw>+`=*8 ?մxJs?? >Rѿ? =Z;6>H>@pVܿ~>F=ӝ<ː>S<|0~ =%H?ke1==7pz7̻ wv}> =6PerY'=eϼ?Xp =b~=<>3q=* hN#Q;рmO?P"?n7<@?t5+h~!?|/.,?b] +>D=_J>5(>9>,5R=w=?z{??;<#<><-~?=>mq>Yn==?5/lȿeߨZ~>'D> }=o il,d0>Z=e=6q?c?lY>9.3?{7=;o{ܾFY@=jB<2A!d>R=aZ<B$V?=Z6he@ k?O=X >Pl=gʄ= >X=O>=>!ǿpn<`lQV0?=Ģ=;>$C)B b@f˿]CFwD>p?xNt>1H?d@?UF TfPM=zc>A/ =X?}_ph?l<@>K=9n?T2(=o\<0?q=l^j?uo?6!2Y?w9T:=ޘ=`?~1?'=>i~d?[R>k> .,?>!`i^='c>j*=<0?t?hߔ=;ɢ>)?`Icx=>A?{ +=' ?X}!<0;Q怽>R\=jh=q=B;?۽_>2pF #?L/[>]E=`=л:= =Hؾ???S=9>hӼ=c">ka>H=:~>4>=Ў>9 ?HAq(>HԋY^?z?5>+>h>PB +=?=Ә?|qM_D> +g>R&=Hca]>$axQX?S==p?%YZE&=O=`>F>31?'Og"hR>i>B?!@X? 9J> +=`>Qz_<0;'&B/A ?uZO=p> + dȿȼl=N?}=>>=x>K]EW;@=7,fҞ=,0=Ҿ>}OI]k8>?*ӟs.&k@=޿A˪Bc?I==^b<(b]ـ? +">0A>Kn=Z>H>?<[:>U:$Jl?>B?zm???\k?y%wfOG3gl==)Z o>e~0Gk=ZV=^<~t=?C=6=Rt-ӄ?eh><ۿ"8?=/M`>&=(fM =ώ=ᒿg=O0&l?]?9p=mP= n>h<"w= X=^?zuj=bb?ʿy=ZH;d3vJ?C=Phؿci=L=͇N>/x1ì>p6?r> &?6QC&K@Uc`컫?f>>r ?^1{G?7ſXnD??~?tXxN>3鐿nS=-=E?{??T?}`><،>%(?P>l_>ye?F>%>a '=ϰ@w~=L?}},n#^e?0>>)>%[>b1>s,?}:>j>j~kt=8=ڥ2:ނ>R=K=irT>zT<='`P??10_@~#ua{=:?=>\\d>"r}⼉O{=ڣpp۷`|8GV?n?v8`=u(>yz=>Bl>[?Q==w)\[Ch*̿EBP>* l +2=.%> ѿH]@?mZ=rj?\o.?~C6?c!Ur?u2G=G$>{?7=>?|X=z>Ogf? >[=w>=M*tU?X>8??hnRJ=]~==X?w?z"?=\d^xdRlJ=^ xӺ>>=e=ZX>=XpN&?=+?=T=D+Tr=ÏN@!daf=h0?ά?h>~Y=l+n?\qT@[d=E=@! `>X>?xtW>*=޿r=j> oPB\c>T?rS?Gw=G=}DgP=@?pF>>2D\N >Kpn?Y>no><<= $>l?paM>3#ڛ;&>%?^=s8rf=f;mMS&kW=&hH=P +>?wsa=愾:09? -;俕?U=ǎ}N>/K =q=@?sufc忛 ᥕTl?M=j=WywOp>t"t>=Ľ

e¿[{*?O,?wLέ?]l?q>q>LL>n=v(y,<0 ?q?&Z?1H=Ȑ=pX;lBM?gifm{>p&V?1=*df>C >AR?E*@7?$P| |I?~bKb>U}>>VHI>SxԿ}K@V>G%l`>:Y?t>$RjX?Qr.\<=h?N>ҿM*?^&v.A>;x~^X̿?A,pib5E>&8Կ_̈?f#?^\w 7=h0c>`ض==d>a=Cڼ@?ⷿb>?Dn뢾#D>^>m==ߢ>(;>f*>$?@@z@Pg?*>,!=B=J??@>?:=M= -#ŕ+[i?;e>5[>]O< ]?x?>iDhjIEؿno1=?;=4==}=H,<=oP>.OD?ڿZ>j?ԿZӼ>E=h6=>?H=Ne=.<?%=b<?pba=O?m>?>5=Ŀ~ ?B=D.,?s?~tvH;%!=Ϯ,=ӂ06?ǣ>!R?h*?|h>*ʗ?nxa^I?y30> +%2>0=_\>7ɻc?`ʀ=˚> _>Qw=&D>J8D>#t?uk;1DW?tY +pk_X?kE??{Rm?w=fؿz{kd?F?6=E|Ocm?$!r?Iz9z(]<=B??l;?*u5?TNd@>{$ '?<i|dp>=>@ nFk.@} >F^?&>JZ?zL>n&UX?7 +U|2=ݗ=yDD?g=9,?x=K? +v=.kݿB?[`E%bKa;vP۔H?'ciU?sN=>Nvbk?yr==$`L??$7|Zr>Y6+< XϿ==;'H>Z?%>%}=L>H>P=U?q uRo2=sdHo>x>*&=-8>6 j">-6>L?.ހ><<2O?Y<#kPX\?dE0?|G?hLf>Uq=L=,Z>.?a?ӿ|пh=Gp<+??{k#5Z]"e<@<"?H??:?Q?uN??{_U+r,57V>gw +:?O8=4X?󊼃={?X>=*vH?,`AT??3!' ?2{=ˬN?XW>h?pO?f~g?4?w=oAm=3載C@=p?u L>0ֺ>Q=B?u?u=6=kȻɠ?ͱ>T , u?p؂??(gR?>>&>k= ¿G[P>`>C?:>o{=X=A?˪>0>M"={,>?}>^ҽ4=/8?:`>sr>=4> ><>vbݖ? @>=}+$=j@N?Ɂ=UL=k?UJ>?1&=thD+2=]p=(>sn`?e}< _R>2=ɾ=/8=ad>4==cj=d>ǿ=UĿl 0˾5_Q??o濂r2S=kҿW迄>Tȿ_4?¸=ʾ>>k?<<+= =u?if);π=~=\kLD==i m?rq\=ꌪuYpvi>s(%`v>2u[?\?^=y?BE=>vjޏi?kzoM>uf?#> +BiU>%mxNs-#8=?a=7W?*?3C]J^I>MMx8?~pg@ =c^m:>wr[j>S0?v.= =6aȭ>B? +=0ipbHf]oMpsXYc=2<mпRR> )?ǽwh?P=Uzߋ>Ӯum>l==ΖfW>A>+Y>n]b?> + +=v?0V\> >Ln>V`?Ad=U>ec2 +>@=?>P]9>.> P%Pt&> o^?=l =Ȼ(?>k=0};I۝bp?%>@z=ĺ=Tx=U;`>sos=e?=>trFs=쪌= +l> &=tnR=f=~>?5?ic?rBy|_>-Qi2>whʿ_M=$>`\=)z; &P-;Y@=f<>/β=,89z`|߿f"h>{=>6<5?=K^:Yb3yT>Rȏl>[=NQ= >sHa=?n=0> ?}C?->5 6O=âX>2e&?%?N̪=\O=a8=wh>Ly=fjP9R?Xd>4yҿ8U;>_?=sQ#&B =yd=:zb?]R?u,=$iy<+R?7H@v^;==]Կ\bW-0;?sz;`?>gg?p=\?2X.?x%>p?i`|ſ5>Ob=v_sh?=SU=Q4=| a>Wz>>S=."b?,IĿ?8?}Bp`_?=tfn?;;<)>=Rv?=@>CB@{Q<0=> ]@= ">_IP=x=M>Z~?ƾ;z> >=]X(?gr'=q^v=6nal==4?pha 6پ6>c~>-XnN?|C?@P>ӣ=5<>8?vO1>Y?M>1`; p?rD?sz=P^>U]?7<=-c~h>p۔>=m4W?U==?`?=;f>+^=Z?4-H>y=D_>?X>n =J<\@> h?AAod?N=9wJ>sb?pV+ =?Bj#vrZ ?~?r?N=R>=I(=?{D?>I.oXq7?>.[iο>J>L}v<7='>@=?El==z?]=6u\=#1=> v[MR?Qq={$վ4=Z>*?m==J i xv[P8P=l>) !?<=y(> ?p?8=lp(,`Vb =ެdG>k9>A}c +?]=>o``>F> .>=l\>`>^> +}>yV??=rop>7]>+zAC E@]6>4=%?xO»?<%=$= =J< Q?.t\>9̼G%<`:A°@?%=|yP?Ui=( u=$=m =j?jQNb_`;*=D?5>g=M:==m>v̿URۗ=!L4P]ϿpRg}?7}=U^Tx=S?}!?g@D@>?m?w=N<*p?O=cD>=?u?Tv]Q@N=ְ6y(l>)=>;?6<}sN8=_> #3@F@=X w?cuH=?qt=?~'?x[<n ?\?4=,?w:ݽ? #@@bwi??Z=[ids@>?4?~1;?=c)伨=0R{c'&?>C>##s,uy<4 >/? +=u=zOО=zp_<ѝ7tQz>d>U>`p=8>X^?.>~ >I>Z>DZd>@ ƿl=s<0?[0=|=tx=G _S>!=c + =WPgr*h?U=Ǵ@di"<#X= '=`ex?4>?/ku%A@?> },6>78=H`if*=֟l?6?'XRvN?@=?Pq龿ov?m]=%?l>=Jk >.i_sa??|vN=|=W0==mo> +?Ps%J|%?K?l $=R?!=P&??l??M]??YP?KR>`=*== ?vy\?d>B7?X><>?0>n?F=r~?le?=?xeV|}?=x? =z?l^+@@>|tX@?w?=p=-d;@?u=1x?X"AL@ν}aȿrR=ֿM-c=aT?iÍ=?];^>P\;K!@=5!=@8x=K?$Yek=?HZu:>5ut!LA??u{H?uQ=>=z?vfԿtEjxҿ{>=.>?>`AlO>e= ֿR+=Ǚ8>+X1=`Q:>i=nH<=U?0=>?lNox=gc>,?>)|>H(?3c:M?D?=Y?hJ<2=֘R>mZ=6=<&?Z>s>W=j=:p?|>^(~<0?,D<94[yiR<;>>aq?/? <\H>&24:l?Z@jewG,=p?O=N>2<}V eFaƼpIߪ=U;l>5>+AP/mAnd=|?= ??76'_??nGU=k80?嬿MV>e->Ϳ> ʐv?ڗqY=oZBp=M0V8ML! _=;?o?>*>j_[F??c=?=>3u[t1izJ5j*?G?}kb?lP^5za>8y=֣p6?>0R=?ݿ?jsA_?j1ÿ?m>=?fy.(8qr?^µ?k?] ;?f}?$>7|lu?=?=xu>==j?f=>.S>u>\"HW?Cg?l>˰>Dw:E=V>_'?9?>h?=ѐf?L>_V1SBt'?|fkB_F?Wq?I1`> +$?5,?zp>ܢ>5>;k5/=>B)A=YĿw߉6Y>"=?f<+X>o7?.B XdtP^|?>:=G>>??>Sky=-<#ـtd>Y`?py={Y>%䠽9>+þ?0 o+?[Dc>DVjQy>HL?οjJ=*?n9yaн=^=iR:=Yd?oPrD?=?o(Lhǀ8?z =Ƣs4hLl|w r[e?=BD\t\?v={f$9==O>{Z?E=o\>.K==R$Ƚ׃,q7?~=W=-t<@[??cĿ]> Y>;@=/<ؿfH_lA?vZ=?j?=H?xŴ??|+> >{s`<=_r=6[>|ziaTr?|=α>Xοp?9?Y^?ɮ>6?`>(ݯ<8>H>jD?> 9ޠ=?>6ɽ\#7> ?wA=9w7v@>ĿiVe?>!4?`>Q?|5x=ڴ?7h?Ը?n==̚=.4X?[7<ë>Pt +td?pCO W{ ?>&j?o?|=>9n_#Ϫ=Ɵ=)t>=߁p,~ޥ<=>Me>=a=6?@ +>I> }tG> T=W=T>0^ĉ=c')!?=?kÿU5>9zA_^E==PZ= ?'Nvfq=V> +Wc?>! ˿{R=X/>l>CY?_贼$>o}#=r>I?{y5>=֡d~bY?#>Lq=M`@?.[_?/̿i$=>a=C=X ?¿P6LT}ƿ=1$j>_+UK!?zA?~@X?{1?Ge4 ==E=ζT޿.?v> ?v=F@[=q?q:6KYiV +< +V@n>)>\$YR]=>>񠽦=Sc^?6=PsyE:sa>ҿfؿZh3g?{?RkI>?Y+P6=T=Ю? ?1H?Y??q2]i?lI(=N@^V +?8>+>'>1߿^I?wuQ6>Q~@>1_|< ?=dI`v?m)?=*=B?X?y>'"=5:p=;fid?=qfr]u}⿂ >2= +=l=ܔ6.=[Z?i>*T=!=?>0o?+ÿvd r>n2<Ͼq\yReԽY`Cn\?IH=dȿdj=PNt$??Ob"?Za>9r@?m>7?~[?*=(?uuo핿2`>x?h=YT >\Q3h>%ԺOTx=ORl?>i<Ǡ?P=ew<>?Aa't==fp> h?~ ?=zj|?x>?1?a`[ B=>[>,?m^>Ǧ=a>?=*=;b=Կb>=¸q>?%{== +=D=_>4>=QN=E?@=苖>XtǠ?\v?zkyz?::='bXs?=z>g%F=L<6?rs>V=7%wܿmRH=˂=Th>xKCO=>)V?v@=h? t=?r>x < h><`Wc=?P=||B?v_ʿw࿿[޿JW==iI7X?v=2c =?Y&P^=6ܼ?BY[>f?j7{\&=T8=H@?%?i=p&#G8|?~z=$.?L@ۿ]?o_0kJ/d=1H/ ?<όjac ?i\C=H={ `LO=tؽ-r=־W s<0=[?L=l??ʄ?{?TxS> 8?l-=(N? bP?q#a?zj8>=zþпpN=ҲQ=flmS<0<^t^<)x=;?ry?a8vu2?<?ty?"_>Ͽ/8>=(P?{ֱ=m0>hFlS? ?s,>|3*H{=.?I?5"?j`=@?vt2 <=*Z?F>r=e=8+H=L=.?U?TOѿy>'??A=@=Nl?o$0H?naB?=^O0?>rD=޲[ +yE>"v=T?]ѿfXTU;σ=B>y?k&=۲>` +f[?,-#=fR=p޿c{?|w*?|i+ +q>#>c?V:=d0? s?{4?=# =ο[g?L=bn=v=5=Tl=f5T>?3?`=j d?~=dq> ?c +=8d`S ɿ i##>"۰=dw=l)^s= m>}g5 ?ռw?Y@9>moS=nls<ŽX=,Z>9{=nlZ`=ML=TL>'1>?+>eнs8>Sn5?u<j{$>;=:?@"S¾"Ŭ?4>D-Ā=u~lt[=3o">^a=0.;pH<'8=r\ V=D?q>s +=$hz=JTj<6>XMPX> K?7832 o(=ߨLqڽ<*)A?=\`>&r=>Lt>.m=o`?+o?:>4yt>Z={>`|=>#֗??G׿sFF=:M:%c?=5A>q>'\?m,G=J@p=mHo$?xٿ^>.(=ֿzم8k?=r>/r=\?=:b<80/x@=D==sD,^=\? +=m"2 lو? +<0z:ak<>=ڼʘ?`;==vQ?=K=U= |>P{? x@=@ztX?>UB⿅7.>a=ܐ=X=8<2?AOaMh?<;S=EL<@(7+=ٶt=?#==<=x=\#>B?x!` x=#@=Qȿs5L۳??g(A #?|N?n?sh >OE`=&8=mP/<=[ઽ⣿t\??tW<\=A>C֨?՚G<>>>=Fh>?Y=@s=x^`=y>Tj=>X?ȾKD>OJ?U`w>d?>n=@J>-m?˗>]-?{Ĺ?,<==rp@>13I >rH=>̠r?3ZDa=۾4@t7;w?L?6s\hܺM=Ϫ>P?$>KH>=A=]0k>(B=2A`?aM>hؼ=t==>p?w}ͧ>(_Zd濅 8?c{?uT^?my8W^?~*=8?XSqZ>R>v>Zj?ЙU??g"?dr=p]{w@^eNt( +?~ĈwĿaF=>5k0l?Zuhݿ_)?U =[gLg9[?4x>&X>+^>>P=NmX?$->M>PshQx?=1ʀ=\< =p=J=| ?R(?J8> ?La?q~Yn>=g>1X)= =ֿKHa?zۥ=*?=J_$5;6,@?G?a\=?vκ=$?wO=\;oEJo>\(>+=O濟?=UШ>N?=(Q<`?bwzZi>VoT'??xla=FvrxbN=S?r<=DDu=n8tÿ9"2Sq>^>6yQ>3q>Nig>)d?w=NԿ]=rjY(푐>Z:e:yS??_=F>*Z=p?;B?|?I ?H>AL>uR?Sy@R?B==8?>C1[s=6=r>ED?z<h=>vd?ZῈ@?g+L==ca?=,?m=| +? +&N=l?|z?.> WWcbw> #Z?TaF?~h.!d?r0?m<ć𽩜Lx?y>P@srxjv?p >#FhL??Q1?qb=#=渿u>rɿn>R=X?K> =?icH_>0EQB?>i??}@bOK =8=L-?eB=ˤ8U^q?JcY!0I?1T?M,G =>^`,}=0z= S>tl>i=P~;7=2>2SZwT=_>e>>2mx1=>F?>5??y>!nSic==?Yy>GjYSrEw"=h=+=3 pע:?r>F=z#=$?i0?l?_>?.y?^:=-lps'~=JPX>Ҟ=L>U>N'i<(=8D==RL>1X<=?o;@@7I(_[n=Bw?/=л[>&o>s&\K?%=?e|>0>WahR=bؿ_=J?F=|:`=T>j?HVڽq+??"?v)C+?Oښ覠S,rq?ΌaG=Cg==)m$>>ʒ=}0<8?Z?{??ht?x.=2=\H>/?'= 1?꿁8ӿ?0?Zh<>SN?t>@x?]?n.OD>A?~Hm۽eL?_~Z獿v\2?l(`O?u-?g<E|*l>}=P);㊠` =((j=T<=넿pl~?o{?"~?xd@=a 0j`/> 93t`?<پ.4>4?lE =mfu%?q?gQ}=xܾ>(D[+xj\?+P;Ah:X#i v?#>:D=xLRmR +Ao>=[yhT]"r=I ?̾M>I?=F$=Ȃ_oG?>> e>1ۇ>a?3?ǫ?iI?|= l=??ldHW>3=R=%3Tc?1WZ=Z=Vuƶ=v<>=v6&\:va=0x=ڠ<:> +T,|,> ,>=8 +>!= `?TO2:st=g==Z>z=.>5> +G>Gr?t=ɶ??{B=N><0?I=&¿q=_>?U<7HP<װ==}?t!>HW𼃖p=Q*$vڍjξ!>@?X@^0a k֮>2q? }?})xȽax= Ŀg"q>"nw>ܺ?G=?n7`˿^F|S[6DT="4lCjT?Z=\*p? t=Z0zP?fvk)=2=hG5,^ zV/pF?I⾽=j=-z7X:?|4DVI=??|GC=rHS=8~>1z?8`\wl?\b?R?t> +bFy> a >5>R(=fh>Ta=3|?>CK?jS?"&p={u.yώ$3==;?xR>i_Y=>>9i>R-I=X?}n!~-=`? =? RBjP;C?;>7J?L?=;:>j6?~ =5?ovpj8?Ҝq?r dr=̿kw2?{>#?=ke?\8kL=9?Tz=E"?0?>*9f >?h<pxO׿uF?5$>[x=ްt=9=п|Cqtv??ſ>)n=6=|?D +.wh$H>L8qNa@+8y>ܿ伩[?l=z?w.?p!u|[=^zh@lr=Vo=o+=۾10<)uY +?K3@Yu쾻=sP?͠[{sڽ~@?~\H{ +js?|֌=>`qa> v=2J?f v?0oP=d<?mH=_a==?8=r}u28?jy=(!b?X<8?u0ȵ?f?(==|C&@yA@<ը=G?/=ݔ?}tzտ =]LƬ>oAk&=%YlX= ¿Is >_->,q?\KH>0n>r>g>Dȿp gJ>@> 䐿mo<8>}oDf^A>3Pd꽡?oH>ц}fM=h:A?B |j:F?nl>[?Ba*?u: pZ>.=@H?$ɿZN>11?=z=V?~+=74X̂??>07y?Q?x{j|r?q;gG?I=C过ÿTfE}uH?`8?v]_:hp}6>L`<=+@0Q< ==:o=*Z`1E>`t?Q?t>Löm:=;=wLjὊtnힿn$ Y=~?q|>AJVrCRi =? +׿w7;[T=X==TEM;k=HE;H?qX0><>ؿS?p=L??kJ?=.=¿P=ֿfy¿J#6?oHCD@?HlP??8U=Pj.ֿi='^ +=>16cի{d3??dq>7Y?vgfؿ$?>U0< =:= =>xp.e|aB㾢lK=\>+䠿[?LʋU㜻u >~=!=|톪=̘ ?=/d?g<ћXk;?O?=5`%=Ŀ +<cA5 H3?=}?@<>"m[?k=̾[^xVb=^t=q(==ahqiB?\>"/^>e=L=3J=$?=h=j?l'@q̿lrLܿl:ͽĿTu?iv?=F>M=&|?xo>-/r??ue-z?s?rT>t+=?>)>?49?Zɾ׶={Ht>EþNA?qp?7h1e{ivά?=(=?\ѿ>-R=z<x=V?{p=S8?M:=(h>r%=T$??5W?m^Wq=(?2="^,=n?Mg?=^=V=R>N8?X|>;?m>j= #(q=X=O">˅v4=?Ȳ_>.[x=A¿==R?j>ܿn]?6㼚V=?R>#>.+\>@L&Z=¬H#=~c俘(0>[>7>`=UfK_? ^>}=`Ŀ^_4?[IQ>?:=.t*~ϿQȽjܿjo"N= rh?Y?U?&wD>#|>9?W@=B@ ??|by{w> p=qH8=,_O&K?z 0U^S 8j&H6eRQ\H=Ql?W ?=6D>_L?.k=e>/=?Uu@%l>O^>qLl?z+(ֿ[H}= ?gD<"пw8R>6`>*>V?vg激̬R?=Z? <7?X,yeջHuf7 }P|?jEL2=Lȿ `=z?}v>.9O?R׿?Hww?)?QDi>}B;P?p=Hkm=n<ue +Q??}J?l?Ǩ<??b?OɈL$?= N?b2=/N?)s8> +N?~> dC=L=>0az[5F=>4;?P>+*=| E?rQ?Y?<;=g<%`?tW~E==cf?jHw'e=x?ّ>.J=bĘ`==YWD>QN= +RX<|g?O== =>$:X=YYl=nT>;@@=<ꌈ=<(N032=b6< ?4$?=P`=>=rr爿? 8?qv=ͺ"?%?=w<@{'= |=t?XN=V<?+=¼=X;?_3?Z>$mXd?>W!@վM,> @lu w>F꼀;M&@?{?jv5 ??S=#`p(@;{<<`мp?b?E= Nx=?wHW?}S`2c==m`L=XB?f?7˿f<8=p@~+l! ?x -q?vs=@Jp<40.ҿy=o(x"s~=-?v/m`=ɕf?{G?S?4 @>=`<=·?/Ͽ~=H=n>X +=?S~0= >w?_I?%R>ҋc\uA¿Hw=\}>Wq(=^>=<?*>5>>C꿛;=?qx??>W=X>CS ?r>%U_ =oho=&a> ?h=1a;QK_=РY>; =$KC6ȏ@1=/#Ľ! >U?]=޿b}ӿYQaݺ}'dj>?v?n`=.࿆:Z^c8l0p<§?kMd=y?.?> GI6俅 ݐ=~n_ +?l\=rhwn?wa=~X>^?&> w?!> < pu=r=N=enpvs?qN>b ,=G/h?$>98=\t>*E@= ?=3?`= +?fS?z=`qS=='>1[*?? +>Av=3=pv>&[&緄@BN`@>G<{?]=ܛXu?Tb?_0= => ?}L<м:s)A?R<|??I?= \@?<x=hn? >*a=/Yت?c*< +}:=:>MH?3@"2?>?Us?k??{+[?~?=?;>rS~h9>C> kT>"O?fVb>V> !">E>4NB> :fv?&hlgoO5!?~?x_7sFg=Q>4>W>K>-wiҾ6[v=0=hd=>j>??!=j=1X`|h&>=$WTa>*@pX?=?=Jex?>=D?|j?d)R?(kJ(?s>1Q?ӈ??`jv=q׿v󁽆>?AP=?_e?z"c>SR_> +3=d=@Y=}"l؋c<-q>Dw^=L?@?;<!<{?{>)SY>-KO~m`A=dC@}j"zfs=njfR9>޿o0wpS< ?j=S?]n+XH={4>gA> +?+?w.>ס=>p>I=7J?*ؿv=T?=r?t_> FҾp; k;G@=] ^c=m>ku=D>T> G=_pl>r7>dY<Ś> lY5h; >J?(w >DeuPe0l>'>vy`;ŀ?*?J=v=B?ؾ?-_͹>8+>6h}wT:U,?@~#=fz=R>4?> 4usl@L>@=ךn<, v>eֹ>}ջ=4=7Р>1r=YJ>kyۿ~=vN> ^=>>Ŀr?mD<9|3?@3['>8?T=diI>OIh>nP?D??x">=P>B>B`=(>:>3L>:ٿe?^?n>9Y*!V==k?S>ƕ"= fW=>x=?=̊_==MWȿQ? ?1>zx==i>*= ?ɼI?SKg>Zipzm> i=vX?g==#Լ@)=¢>!ʿ>Ex?A.?D"}W\<==F=wKW;>> t00{g>@?TZ=5?Ÿ?s?F?u=y>ut?r?**=,?6*r*<@=M{h?<֨<1?fҵ=XDp<2=n=`x>e>n޿ZȿRy =6?x&=?&>9?>"2?~_׾[j>8>"CŠ> ,rbel=@[D)E=_D>-3W>/_T=,=}x=.;ȑ=̽'Ŀ(i<- tzx<b.q? ?p> O=jy>٘=> dg5>T]K%y?|HnT`4=>q?=x?@?{0=Z?V;݅?qhSR=?M=={==ʤ^>t@B=ջn}tlsd<(!h¼ `#?ƿ=#I?zL?8+=;*`=?rX;>?iY>,\A=z<ȿvI?i>b?WؽgļA=D=L?-7ȺE?rt@=I(<Ϙ=?u?v +kL?>'L\^=%H?_o^?l?~M?0==+tP=)>=W?s=0=uU$?> %s>pRf?w"Ud?}(?{Q|=쿇?yT=h23)?N俏`=I8<#(> +L=b`,G=0g>)b>BXM>}J>R -\=y =$f,>>[$ǿp>%>TZ ?U?n׌<譸=?=[tK=,?QJ~> o=8T_L>D@<@>$F%|f=D?(WU-`%==0?v=8=T?u??Y?=y tʶ:??{=^(y3=4=:?u<>W<8=]g=h<@?y?=ܽʾ侃Q<𐿂ԑ> 4PԿcA!P[x=rkK̖=n?v6?l?j?>M|>hZ?;("?v?ؼ=*=?=@=5H? ?`tq?x^L@_;>K G=>=z`?sѮ>F{y?wx=/d?dӾq<-<@ >,=v$=*H=>po>-uE?(<?ֿn\?7(>O>/,!P=J?iɾп=?@?\=z?e?=n~?% o=y?lG,?=[~^O=RBh=?R=+JrS>l@?,?-¿_qܿr>=mD< Es <!=?)VY?=l=矰>gz>-yhv&?>Vz=[tOH?<=a4=خxë=\e=:<9Z>-IYƿh>蔧?z >(LW>!5(=*>5伊TOd?=^n?2?.?~?<=_ȼ%yl?)p3?n6<ɇXPb=x= 4?pM@`_9?x?姜=j=|= +b8uCR<ꀿrߙ?wNC{(m?m>??qҿ7?|@? +>%m?{?45j> 3?kU*@> +?FB-?\% +BѰ?A"<ϵh(khd1l>5=(?zx?{K`=Z TLCa`YĜ=9@?0kȿx}?vxƿp?ebL=+==lTvbW>^?t=wn\?PN?5=?Gk.0=zi\?y#qP=&=4CR=Rz }Kd@;?zW ?t8>>~>0,>%~}U*-hs>U6+=`?>e=6$>~Z=P4?bL=.>B?> >>$==FVƴ>"J=۬=W4YL=?ݿe|-?ڄ=%J?l0r-x=0Vs|#D?_ ?>?>K==1޿q ?{6=v?^= ܼXt;@Q? +?_MZ=r??t?у=}>2ǫ{&p?,;=J=:6=TtX?B`?l=[=d ?Bh?v77{a=Pؠ??Dz?&|nl>S?幔?cf=q?(~"?)96?MԼ,?}?{?X?<="j]bY=? ѽJ?]pz0?O==; +=u,? @z?>>WJ=y==`4?o3?0gi?>I4=N<$?{[?!?lsH=Ud`a?z*wgU=e+x==?sqsE[bA:ׇu׽\?=/{b=C>5/I<@`?߱?s_DH?m}<,`z3Xn\=0?qh \^?=(lJO=?l =u?i@?M==ؽh?dd?Y!?II6Opw@5=Z1ܓ?i,=6ڱqL`=+L> =YT ܿ\on)r;hU>R?c?'??Z٥=n%u]UH,> .<?u +>n>J+l<>ik<+!> Ծmxf"?nkX=>X=ƿg=^ZsS>FM?;c>y?yx6Zd*?hd8?\=ޗ?6>7 ??Ǐ>c><=,p?gĿm??m= =,X=˾=z?iix>IGC< =.>l.U?@.?lA?话2մzL?Rx_u< =1ֿ\.=mf<1@>hB>q?q!?~?]6==߆?vq޼)?u@?D?v?x>3e?St?=?l> =t?Xw?Uן?0<@=Xn,k?lN}=p6=X_? ?.?uy?c?? > T@#!\?üP?Dl=̹=?=\|>ӿ:Q?gâ?J?K8eqh=#/=B>6PY *eHʻ@?<#??@Ћg>N=>ff>Jz?{ +??H>d==>? >'#=< >H\r? =#X=}:==Tlh +?=׊^ >J]=iPiʽWD?b&=N>В=ۨh/@?cmn>>0<?khؿSֿ4I>a=r#uȿo<@=Ә~1=W$%0`>@?z>0?=C==N~x&Qt<: ?M#E>+}?n=੄geZ8?ڔai?s&u?^=O?l<¯=bݿ'@?="J?_zU=R{T? a?~?+:<@?L޿w׷=>!n=6?h[l:?$`,>!)5r}2t>'nN=M?D=.>3?=Vs?]s?=a>3FkB ?>?^^@<8=a>?r=Fa<-?9 >?? ~^??rz>8>>M0 >H@u?LQ@;>]:WAK7Rp=Ut`?rFL?=to?z?@ +k?<=I =?8&qrZ:=^=0ߨ= =?xH?\Kr{ `=E=?ٿn:N<?Qtl í>BLo>Rm?7?ɻv>XMq==|*0[b?{ۿ8r>^}e(>RNV?`?@tv@s=T?w(=r/ieWnN&@G ?>&*o>9M=5$=L=K?}?wƿWH;_K +==ql?j[;p ?'\?O2,i?WL{f+tI=v=~<{0==>[r <"?P?+=a*JX8?]Ș?,|>HX>PI @ j*?1p?dȽoԿ{m>~?߅?Pm9b~@J?s?)?L=?s5?|$?z&==>K|>I=Q࿌۽>ڷF; =;=I8ݘY?g&VH<ʱ:Կc-aM?9?r? ?+x=j=3r?o>T?k!>C͐_?}?,=?~3^?ſwS??q^f>jQ*?T=\"?Կ}=g.k?qf= = {4=Z?>'uwտ=pL,?$n?r?E8=+(AyT=ga>?qb?aV?}A߿Lv>1=f<=^0>d.h\?E`н?=0 @O +Ɇ=O=Ji<@>5^~Y}>EdT= =(F׽=b $)2#}vi< +<<`?b㿄N?n)=R?:P{@GA`@?.*?v>@< P?}~)?\N?tk%=<=:㘾?,?u>%?q*M=?\?)(?^:>6 Ӊr ;@B0>+;f?%?az==YE=)|sHAP#?XO3>T? -*?J =c2?k?a|c?T>?&k=̤<ۀ=[?}?K=y?<-mj??u?D=S?cgb?I<?}up?o?I?5?g?qV?t?ȱ ?yТcPX?j??hp6?! ?p.ip?Y?u?^?4`?|0?oO=žAuF?w=-\=]̿L"J`u=2?X=6?|=>3B ?nS?p>/-hoڢXM? > ??e=== ?[$>m_q>Gh>G? O\> ?> ݿ[-9?~=ow#9>/'??_d?_}>+?|"=h$O;aj.??t󒔿pK)=% @G |>*~??Q ?}l4>Q?0f;?=>0??>_?xA>'?|FZT;`?|IVMN?z ˿r?{t=T<0?mEZ>O l>=k?bfW% @ ^X:3<ɠ?Uw?w +?u#???$?V?l>'0=ƽVԄ@i6;.?y\AvM?]`?A??* +Hj?w~?P?^?z`=ŀ̽B{>0s>%8??LuXKG=Fz=_>H?碾ժ?kij>:iPPGC>ӿE&?O˿_{V=|>4>t#Ŀ6>?y>` )>?{Y=Ȧ +>8>>R?ۨ?_g>V>A>\@aX@??><1?x!?92G @?~=DĿq?hZ>=><ؾY#>!=U??y> ?=?z=>7q"\=e=Uj?%Lĸ]𷿆|??qE?=.(=?'?tw0=(?h?]??:>Q&d?fJ==0aY?{xK=m8=Zs=ax =?;=?]>iTX+?V?'H= ?XGn=Bd^*?| K?;=(>9 +ο96ܿZ?ugڜ?jz?l>=P;ـ?w(`\??z<{+P?i\S?<peO~TnՎ?o((|\%_^=WPtuQHw>F}u54оR#?E?s?ݣ1?[W?^@z=l̽?i$?Wo?oT?x=q*?|3=ʧ@fl=&$=??+S8 w>CŔ|=ܗ>&e1sQm W`>:f蒻2@<=I= JP>@0=#Y=&?(;`=PH?}F?.?+?63?RܟPD?ֶ(wF[4gIHަ!иZiT?>bU.;Z\v?{= A{1?MM!>fH"p=H?=zg+tt1@p?+y?> 2W|ei=Fx?z3(W)>=>?;=1T`?2?F麽\kA +i¿f@pj?t=b3=B??Fs=->t=ք>  =Ľjv!׾W?=>=$?8=u ?[,bh> +?|0?? +=z)fB?0=> hj3 :3@^x>.@=DX?r~=tZ??oH>,>? ֿy=H?e[?[<p[t?L=R־ڶ?pս6P<?[|<>=U?Ju;` = +PfN?6=s= &?7G=St 5>?wһ1=YbHp4??Vl?k]>#.o=?V<ָ?X.`@R? +nJ.>=Xh[>F=3<}C=6?vSP\>A=Ā¼==О@P>[=D?7>yx>uRVnYQ8<@>j;W>AuXK;?h=B= +>V_:y +t-?za?w9 >?C^>/exsD](=`?d?C?==8@?l=zt_8;@qpk4c?㈿N ?rcـ|r?Rd<7?Zu?1?Ұbi&\"?V#2>>\[0<=ސ=M?_[<>?qd>'ٰ_hhj?D0??yֽ?S??y;࠽Z8?:?}ܽۨ=UDt=.l?n=l=8>=3>_hܼ'=#켞w=|=j??}?ʢZHH?Pܿv=??X4uiw?d>m^>*U>jG=>x??P=9?s?1Q>!~EjGP.?:@,?= +?y4="=0=b$jp`}T?0c߾ +? ?v?Rؖ??%?enT=->4?Zf?qdпjI4?s!=m0?jBῃ=P?x~=ܰ== ?R`l=,/?cy>`?f>Ysοy h??y>8Fc=(@?l> <\H?>=f>efF=.}B @0 ?h?.=TGt?x<мؿ<Ů=N:U rؿ6Y? f6?}?=?IH>bZF>C +H?ɚ?vD_>by[[c=^?=!1?J<=ol@;B#q"@}Xd`;e@>*?st=J8{H1|#p?u@f?dVT=؄u&޽5_=]X">?|??Pk?l =R?fN?=n=2?e2=9?}?_?nV +?@~}i=<=5?{X7=CzvLv~=̞""?}=~=L0?r~i?hZʾ"0s='4?q?m{#?p=@@J/?>!?KǍ?s~VY=M|?h?翋 =Π?#@<?~=9d=g?d=ݒ?87=)H?Z?\'?M쫽f{t,? ?3j=o#4?l=@.?>j>([)>?/=>oL>>)=d J8F?~BTm==C(=m_?}R=8?`vѿ=ܻ< >5?s.lhC+t>a>@uI彲;<> JEc==P(tx?W?> ?==TԿcю=BI`?(;Z=?`= +LP}?WZ>==TD=?i?j>:9/~=x=@x?ڴf=CܿVYFRb?ڙ?z8X@]D8=uh0???b?!?l=:n^: + ?J?<O?:h?|c6?J? ?#n?p+=8q<@Ɣ?Ii?{? +? `?u?wXx?n:߀@S!!A_C='m@>M&?x<1=?{&?pk? mon4;F<͢0??0>?:=1?Ghf yo[l= +?dP?=zLXP}ʈ?oH?uL4?~>ƽ5+NCk >0>?h>EV=Δ4>gp?)==n/xZQ~Q=l\tR?R=2<(>z~?5=?Pg=??wPp L?M޿Mo>D?~8g>~<ֻ=/;?`W?>:_U?U~=?l.?D? =s?jo>#p??r?}>>]y?c>:>(v~^`>$]?}>B=:=3 $y% Y=-T<ݶ< ?U=`_?п=M?].j?Q=4gԘ? L6ٽz?0>:?k`={䖿,U>ϻL?0p}a<؆=vr@ȾI='??W_ֿn]?M?vn +/=2\!G<?T<@9=d=?}ӗ?=e0=y$?fz?0 ?f]?r]>? Y<-`=Lhh|?x?al?q?V*? ?yA ?=?g6@"V?F>05?򎊼r\?a?X[+ ?d=HD=d?q>/3׿NE> =HޜpZ>R >>HQ=5]>a?}0>C=P=?T>I z`?f>>y=Zu->V? |>,6L@l6⽛r,?x??(??=-?~>=e>Mr#?t? Լ=Xac?S5P1ɿF>#-cyb{pݪ?A7{aa L8q"=^="=e??=¿?zi>xڽӘ=D{H9=@ >Rx>ٮ?@.½"P=6b=='n?|uG?<wϺ>7>=6m>1K> r??AX>s:Ң?|LH=נ̚?g=?u^??f?xF$<\|~>P??*?!?T"Bxб= W?qB;q?a=J%P?U??zJ"?>1?s?6.>=<{@>Y?z?\R@-?&?uo>$?@H=FH@Tr?s$)?x?+ؽ4{?w;@)ǿ@??p?Rn޽tb={=SX?<;濅[?g>@tLox>Q=^VGf?ו> dvX;BL@=Y6=\>nG">)>V>A>Rc\;14HnJ>-@b]{?8l=骿*>]}%= $?{}޶>bnOv=iXkz??.=Z<Fp>md= +>N"?O?n7ɽ?hj:>:e= GZ?v9}?|N*P@s鸿?l䶶?S3<=?y֌? ?yo?kp??<Zd2?x>?jgڽ/B>=T&?zvZ?u=?l.z?K ?w=/|?d!?#=W=$?C?t<@?-x?p+=:?ru?===|?\>%O>08i2?|2X=>n >BΤh>E>Sf==> Žl=¾=5?R?3==|=6R?{xp=Tؐ=*<|0U >"t=L=R"=؇>%?wz1=Z<ߔ S*L[>B>GN,w޾v?;?}'>M'=o=hg:?}?=RLnwM=ȼ +u=hD=r%Z}?>@?u +<0[п}35rފ"L>򡿒Ŵm?_=w?=|L5?tZ> <ƢH!T?e[O3=g0`;?o?Y;s@?q5>% ?.<9H?sb ?-?ؘ?IP=<>V4%b=Ic ?=s?ov>$t@ϿѴ@o?kg4?XI?}$=i<>=iܽ㗔?nC?U?)k?T? :=Ts)m'Dڿa0>To7s⾢>.|]=u:=b#T=C$dS=rV??$>=?=&?^Xv?g?{1?sio>t>hd>IW4=0>6x?=;,>Q:=hk?u?Y=?U=Kf?ڽI?4fn-C??/>>k׻5`}`ML?L=<>hп#?dֿ]>x.UD ?RUyx>I >)?z!̿l> (??eo_;\P@=c>+Cya?f(@IHv󶡿s =_=h=Ol?W?r lyn?g>I!l(Ύ?0??1L:!6~? +<?D?}Fx==VX=?vE +>쿆m=r,?TD?s?~ ? +?2?8X?t]#?;Π?tŽ]ػG`?gȻԘ@<.?q?|I{*=V ? ?TȾ?C=!ఽX-?~=]><#xlh; ??a? &H?ƽ\?xa?0?< +=ZDe?t=Ἶ*Q2@B?č? +l%p=2h<}|`9hc>oek?K>U>?;bV>HWZ=,d$=ȤAsPwhc*\ )=l=#{>#Sw>>&~g=٠8=4=4=d>(ٿl<ܞȿ[ֿFr=:?y?gfA?{*?ؿWm|?W="?b> GZ?M??r?pR&?Ձ?_@??Y=VƼ=7$@=%?`?)X̿VYe??~=Mh?:?h:^qoh{?ؓɸ?վ {=$?bsw?\=v?o=S.<>`e'=pz?{&~S<30|@U|)t?QD=s=>E@?s?jj=tCoj[?]38? &u?&?eP9?ah|?t;=_V辺c= +?whS?L’w?~?|FKxit?c=?@H?|?؊?p@8J??e>,?gA;j@R?hzo ڼi@>KK>Q>f? =>h=>]Ŀe>ዿzsK>=rti\?>q>Y?ܿDw>> =>(H=H=e@=l[j?~&>gb=Q;=6`8>PܫZ)?1?:[? +0<@?p=w> GUX??je =GX9f<> +?Q?hF&?w=b> 2?>"u?;S мH@ =Fv$vA?s?} >0~ ?ˋ?b?]>==ƙ? +@> V=u*>KUfI??֟d]_`?8?N ?G?|˾q><=G@`g3d;d@=ȸ=N??o#?{M?v)=??Yds@y?k?3Z="> $r?eo{q <=^=<ӨlC]?=5T;@?7`>A(p?1<ŋ?y=1::',=ƻ >?X>#=}fL@V;}=sVH?n|~=?b?=1S$>?a?P?>&$hi?,r=&?<0X?U=<`?yP=T&h?нU?o?|z?q?aJ;a?T?i[d<'a@f[g#*p?b>oN>Ry>}= = +eJ]=~<@<]p<䠿SZ?k?>]/>(0.n^c?[]ph5>N>c?g?$=c> s?C?\ܽ0=[b\?jZ> ?x'm=D=d6=U<>*5>@0?V?{տ=> 6=%t>gH-=Jix,=J?gX?=:`=/>\lH?giMl??vI =2?US%o??T2=/>Y=~=>??}&==J8?h?#?󧿃"="MI1?<f>5=א=-x?~`?j ?F?Y>w? >p> [?$q= F\?WۿP>T2s?sf)>?OB>!?wl^?t=:?ŗڽ01>x|X:=vN?9\>=?[?݅?=bEf<[Ԑ?Qn?}^k@F}?r?{t?E?!ݿZY?R?;?B*=E'?%~=>>1:ԅ;??@ +E;~@? +7D?S<0?n`= \?zw>.!==27\ <KL?y=Y,QC$q?{."?>?Un8?u˿m|콨ؾq0?u=ƞM> MocL? +=<?|*=G?q?J.> +m"=ހ?B> )hp=7=>3轏\_葽x?hjd=ݝ@5g>\?)>`==4<[g@''.l<H= 'x=?k?e<$PwUN?b=Stj1`n='?>:!Y? >R=̮=?H?n>$?׿^p^?S?x6JlS(?b<… =,??z?W68vV>+RJ>P=d"?|6j^Q~G?e}Ŕ>?=??њH?t(i??lK0=y0?8?W?E?w x`>}?k#?r_-=S?s=[輱'=?c(>}:R?~u>~>GQ=L=a?zڧ?@?=-eX>F??wV_=G逼P?Tʐ?񿟽?L࿃t?d5=?~l=Xu=ɀ?}0 +?>ss q%B;!@7*Ô?pR?s4@:oZW?u?`>pNLLƼ?m׿tw=i +8> ξ}>q>> Wƿ]+M= \>C> i=r>$pR y=|h:=n?>')>?aj>CXf=x=.=kp*xQ?H>Eh=H<޲x=,풸>G?G?w/,x?s=@ ?}=/"нND=߲C?u{U=i: Z`>m?t4?pq?:?n?t?qj?i|?tls=_?lA>)B=n0?V>VYp@?0g0-$?p?| >^=;Z@?Xt?kh?Y$k5=7?I|o?`8?y ?m*R=4l==Ҙ;`׽yF=`x?op?Qul?r??z/"??v?f_=A?u2=L,<_`??*?U?$`?X]0?x

&?Gp>[h3}?rf?f?i~4=?n?p0=P>H=vr<~=J4$,?tt?a)?%???#"=m=+?y?G߈qM?t=s>\R[_>>:+xaveGlޑ=QĿ;>%Te=C@~c= >C>?O]>>us=0>=*l>~y]+; ?qiD`>#Ix=Y=>1s==T(=:(?1k8=oh?׍< 8<ƨ>C?bhh'<(?l0@]v=ϣ?L{?s =`|t?]$HjA Adb@Rw=(~ٿr-?`?l|??hҼ,>%#bj>ȿ=X>oO>϶?~?ղ?1^?w=?}b =qpOĿln=" += +?mN=Bn頿l{{?=0?6=Ƚffd>𩿀po?qt>??t?QT?wp.?G&==p?OfּS9<D?=Ll=RR;iʽ)l,=,?*??>$fyVp9?tsd=k0?j?ݾb@,妽\??r?j?#Z5p?T?3?m?]⽥`?=$(l=*??>?,p?$dה> F>:/ +=t =8>u>? d[^/T=?+Ds =*>> +x>$=>v`=\|=??b8f>[??>%ʿzl+Tت=)J?b,Q)>F?aV>5=&b|=|?d=u:<;p??;<ѷx=n>C?%޽? +?_ +Ƚ8=>=nL>ּ?pr=X >P-?gC?4/=nʽGz伔AoBѸL@S=]<B`sl? !=c<)p@P=O +ÿWz>9 >ؿK8һ?%h?s?v߿|?P y,tE@o?vs=?=1?LX>Pk;@?y?o~D?C??^=H?&?Z~?t>oAS{=肿lT\?C{B_#??1dLC?>sm[==d:=`?~b:=@ynZ=MaoOhE?GRݟH?4=SD>@qCP]=ؤ? Lɼ9f]?)?l_?_e=rʼ<0?>}wiR?RY???.@>?Kr{޿=t=?=<5@ ?{>V}'R:\do?o˓!k?po?^C@=o'hA?\?%@t~>,8??'o?Jq>>5 ?g,G?2=*??~V=}p@SxXEw?)=A?>A2? b?{ ?e@2?opD? m1; |?>_8?MJ?>?l=C<?>;X?Ha?ah̿M'?^9=㋸p?v?^m!?si?x?ѹ@==f4v?HjyF<<=?k?>q輔\?i ?l?whLwӵ>4?d=?1?o)R<"G࿌zk=O?T?4?X ?h?[=@=ٵ^m;eO?y[? ?q +=.@>a6?~n?::>|y=U5d>¿^Hv"=>?|%l>fH!<8 \d?r>9?;@=饮=@;k=>1.l> =U}f=m=VF>>^޽v=*=u?~Z n=%:[&=d@=«j=?6<н(h>^:??=(?i??SEK>.Tl??>%!Nx?k??PӎV?:<& ==ׄ=T=vV׵?8f=:=rg@?x ?|;b=}=T?f?)3sd?=s?V"?T옽}4d~H===?d1}nh>GI@!?V$?L?Y)\zOԿ?z?,~? ?nʽ?>?uv.=j`?|;࿂?=_4j8<>)=׵ ?f9<0 ?{I=?F=2??s^.==0j=;?vr?w?A WǤ?V/??`?J#>??"=CL=Lf?z<?S~( +p1=(J\;/?X࿅Ε>{q!> = ?R&=пb#o>v+?c?U3=ɪ>-=>)ʿk=8?{< =@^W]?4uy}*u;e=B=SO@"oý6>:7=JZ> 4Y?J?6w>Nj\?Igg;+?Z8ĿmsS=Ir@S3?{L??>:=V>Bmm=ǡ=^x?~ɋ?eS< > = ?}=2:D>EC&?^?ʥ=lN#@>Yzed{\}F=޴=N>?Xh>>5[zy*jL=u(?G@o?f1L?zh=5?$yLSeB=5?{n#>]`J= +пa@:H?tFP=?6@6ּӐ=ڞ?U;s?LտpG?Dl=???=G ?SH<Ž࿆?ѽh[?l+f?롽³=+?ʡ0;nJT=;H=5|2=?h|Ԯ?c??sr@??9<=?K>H&=հ??|<=P?_?N=,iV_jH="?=g{?O==r?G<60?%<6뀽@?1=@b>=b>Vp>xֽŘ=> E<1?<> +J;?1?]kR> xC>P<ـ? 5vpr?{UfU> PO?{%=.>W?W现l5??y;=@*?;=пA=lEj??}>,<۾?a=Q<"ཬ >7=9T0?oYC?庿 ?f$j?{@??0$TT?e92?F(=ke?T,T??<<Ě?=? +r?Z<?WeR=żzZ?|?'qK="g[?byݾ?~P?;aJ=>]v=5=n3yZv?z=ο?h]D?O?`)?v?a=v5T=OL?~z?ٛ^?,l={q迥|Խ>?rH?̇?r~S? ?nu?|= b?w??~TkP?m4iܽ="?-7?xƸ?|6 +?½wtݴ_=Ľ <5???|?>@;h?{h?=Ho1h?K&=d>5Sh%]x 奘t>>8B]?sa=MпMNl(_d1kM=0=eN>gu>nq~k>ِ?v??j|>\K >JW>9?>~vQV=hvn~>L0qz@>>?d?*?@y=.=o?[?|F;~=w&P@l?=<͐?y=~>!'= =d >Dw|0?(?X0?<}'=|?(>ON?m|?U~⽥8?ldUFE"p2WȽW@=@H== ? t?:v=&?u/??q x=>==Ov>=S:=`?医@z6=?´?B<8r`?eĿɥ?Oo=[?~b>t?=`=E ?==)<`'x\b-?^S5È?9?glH@Bd?v<`?rӾ P>Ʉ?.9|?m0=U0?H+ +=< VP>,dT=<=T?y +?}-?}/:u?Zl=:w\0>m?\M|?_?t?}@@.ȼ?}:?h輚0a?~;V=Z=T>>-c>_]q=_пSg mg?3> +m?|xo=Yx~p?\?ꑿ{Ӗ> Z5qD?ݼn=8K?=>9>2)B^?u_\=ۨ>c=Y=,@`?]?dN/<$=Z?v>KL=[c?t@ +> ܻx@> ^?jnN+ +>!΁=eSʿݿ>EO>.=]:D=S if=P5?k?g*??H@[XF> d=b|? +?TJ8?ؖ|?Ow%>Hg=@;|G@?޿q?:.y,?7?pT@`?CX꿇/F==-:?x??-9??eY>9t|:k`8;`^l +?>?}%?r?y:z?l?">:p?r;?_l?n?oZ?6=;-;ݾ ==Ԭ>7?=p>P~j?>,<5(?{k>:ЪSp=y^>Q1=[Zc5=s?Sh@zz7AƵ> D?pO}c?lY= @=c=<Ű?sƿ淫?s<B0?T|7=ш?}6=p=j=À濄:?wH=o=+>l0" ?h =?X=?unqH?k?lw?̦?b\?Q?н$>o4?x4?N)??i?ؼK̰=?{<=ɪ?vٞ=?2= }=?t=F@/?P,iX>< ??x@>w~=v=t0?͙<}=X`?Ot ?}?Â?V> +U> ܼ,X=5=9^seb?B^;.?<(?&S?|Uo3 ]w]Y_@O>C=:>$^? =d=Q@nW>8M?2?/?M+?zG=޽=H&O=묿E?e6οT&X>?7C?}mm=(#h>L?($SX=Jdyh6?Az$<{#8@?ݼཌྷ&B? O%?ts.?N=ֿeX=Е?I-퟿=vD{J=Z= h?y龻<@N=<׍?u&=/=p$=<> \<%=q^s:?lij?a>)eGg@?^?z=v;o`+?^H>%?g)@,;?6v=W;e~I=V̽ t⋠@?w1򽑠U|=@L=X?y=$(h??L?Tz)w`?tP=u$=.<= iRy=VXh?wer>?k $_%Rb=pIP? ?XX ![=޾O? +?|St T"\Hi=%\=J&=x=+f<``sE\?dN?~烻_o;}@?h=K&}B:?3=l??)?g_?Td=^?P?#OJ@2h=4r>OV[=`JSF?WtYh]p?$,nx/v=?΂=тk<è=aĿv*q?6=)TD}?'=Gb?=g>Q> z9=_n=&iԽ'8?tc;N{=O>*?*d?b4=ۘ?l +?_F=?Fr?>aGp>/?p?}=iw ))l ?=>d>> +]^H=j0(? H`?{!?w?;o ?bj]?~ Cwn?L4d =W?eB=?`z80?=Hn ?)=&ٔ?s0?1?yC?Af< ?,qi=?di u??&d=ڂ?6;ـ==+O?zޞe(?P[@?aM?f( ??}\?bC==\?4?OV?r˜?uG ?{?&BRJ`(?=nx?q:???X?w?֩]?f@.e~(y?t??WTYN>?Kxk@h?}$W=b?P>?x>=@L=p]q=}?.>"h=pf@S=٭+[ =6v|? >J}>y>(N(=T???v>, ?z!=n\eR>7=O?\`>l̮p?S?f橿]}l>(&tתPl`uxX=(?2=d8ؽ ?`No?#?Cw?<~=5y?@;=L8wJK<=G(ؽf`?_9?igzw4>5Ӑ? >?nS?|]?}?u=R?L= ?eh> J~ }dn??Fq70?l?y˘z)7y0=˪?u=B??<ʵ=|6?OmC?v2#?BqH?MyiE +Oۿq?='o\t4= +V=b>cm\=Y3=ݝ>%>a?ej?\<+fШ?2oJ<Ұ~>U<ggO?8>f +Oпm=>lTǿn\@MĽ¿{?7=R?q6d;q ?> +Z==h¿u?*>ຼ萿7?}=I>?NW<=ؽ٨?Y?I=Zi^z@?tL N='F==0=i?w*p:aj>FO?Z(BmAO#(d=?><4=.?->!?qz;ѽ$?=F?KR>=#D?ih=zN?l?z<@t=*Hl=2Q8=&?_:=? o?T?v>>]Ͽ=l?=kFD= +^$=;8?>է?Ⱦ ijC:?i - ?9ǽ?o^ɏzlTW)t RqTc??z?ޑ?G?GQ`=<0=bZ:acP<@=@p?a?_?뼝x>t?cd?#=4?u@iE?=: ?d)=i?m?9?Y?x.h>@V=~J=h\<>.¿> m?5+@`G>|>*?POR=@{t=N l>V4>:]=="?vuy>Ox?͊wYk60= 6="=z=띤=D?t??k2d===e=?~4l=2=quih=oa0?,c?#?x`=4 ^Yt?⺿Q,I̿T=st?7۽Ķ<5_P=G=ǀ=4t?rV7b>)>??ey=[00?v% @S?i?d ,0?;*]ll?lÂ!>E=Le?ϕ==?=$2?wz=z9x=;"?]? lJ=$<[@=k< =|@BE8?g@=4?Hx=$= +?g@o@;T~!4>A#<8(=?o@ؽ<k?jP =@'>17Y +??,?o=y?T$t?o +?nlQtEa?]?xt潼ؽ@ =ճv?0?o>#=8 Ow>k="Ojq%@(q&? <?F?*ܿ$=g6=*Y`]56>56?<=9>j>i~}j?Aj?/W>$h +=c>Y=y,? > 3=Δ@ ?kм=*LU?=< 0v=c=?<ǀ=nNq>p=?w>l?#].0о('p? ;g=~vH l?h?a:j,b +@K&?xJ?]?A?fcp(p>(r?7y?{<BBZd@5i?5:r=<ΐ?s6??{z=;>M?ٳ?iD?}Z<@p PW@b=yP?JiŸm?aQh?q_?T"?͚=ڌ ?X-?d&?i?xa (8?mv?c"@E?s?p$.?rt=<?r?o?K4??o3y"?zJ?.ɿ*2>bA?n>A:j=Gk_kf?=h?F=HH?c>_U=V?=d˷=?Wx@<=}l?,R? 0?t/=ɖir?x?gK=FU?Ĕ?7=)=s?}?==Na؍qm2hAm4N&?}^+^?dih?5=ސv콨M=y?:ـ??ll?mq?(UN>9 7P#? ==t=VIT?@LC?~?S???8E?f?JR?'C?pQ?X?t*%?p?kx?P#hQ??{i?+?<ԖP?Pd?k^=c(O=HxX}?3B?q??D>?X>v>wC=(?J~=>n[[=d>aQ ?2?sJ?? >DS=<'>d:|:R?wڿw>S>}-tGDn=x? YЃ>)S?A>*w?qJ?}?K~,?= 0?~x?>MZ+? >=v =Nm;{jԿiy=_=.>2ʮ=0<P#<,o?ۅy=4 |?Z?t=0`p=:; ?~"h +=?*>*.iР> Bb:?Q8;=.FP´?q$:=0L??z%=5?kE@?م; ?vJ?=d^=1E?gi=BY0ȷ?m ;yc=0=Rȴ={x=ė+(Ƚ%?ug=?:-@??C>J9>Hp>Ԃ?#>8]CPovj<,v1OxR?!>?$Mg>">ې=RI=rx#=B>\VR $HU>6W>opi&>H=8 ??5>-LO?`%,]=$?bE],B8|p>=!p??S{>m=(L?|7q>$?Uo?t틿e?=lztZrf=6@?gv;=yt=Ice~=?e?z?5>E{?r?B;?eh> +?V?_58 +?U fx?zB=i]????SS>?ww$?{rU>k?~-?~l=?ݴ;J>9D?UE?l=r?(=a b>q6+zS+?,?UPZD8?HZ=ج?}r?yF?&$?R3=K\?^?U0K=D?Mwp:?Wؿ_??v/?n??iu?^?㴿|?~޾2)?j=t +Q9>alؿ??jq?Y*?n3>4v=R=;^p?:?Q?X=ҽc??-[=w% ????xf|>x?,h?r$?Y<~v3=O>`>;7?/P?FO ?u$?>?<. <7=[=J爿y#>đ>>VD>+T=ф>tf=>.s\;M>Awc"տd ?(? <~-?d]L>e?V==[?H=W; ?b>\}c8>=P~Bd:?=f.0?<1sP;@?.? dyQ^?{?I/@?TX;&@=!rd;t<<_^U?YJ=)?zW= >|u¿w-UDZ3?XpF$>Dh@??d} ??J?w=WPX?u=?tp;``Qmt ?(?/S?*d:>d&<0>y?\>o?v_/@jl`8"=M [LA>IN;?=O̼ i?۲=/^HH5f(P?j ?~ؐ?=:?j??%<%`?RM%=/Ŀg7W?h_=J;@=(X?qS?@C?C| 0?p?8>zY?b +H;_ ==Wr?s=-= +_ =?d0=d>8YOsv=޿u`=F>'\>p=Xޔ?Wv?~t=Ʉ^=8=ڌ?o?뫿[>)q>2 P!?=;&>5=L);?1>)a޿0>ya<4@?HO>ա??=J>Q=S?5JM?Q>=[?G?_=eX?>?i/?T@?`>ܾo?~g/Bg>lR?r߾]p=2? qam1Th +=|S=ƶ=dڢ@=b>>3(<zbL>?^; +`?P>f=K=\?a$~׉=8<7?l#=}`?tpH|Z8?@??nI5ژIuAŪ=ѣ=߈0?j=̊xN"g(|??x?][%`?='ȿ X=ICӿg󲽢=x'?L=̿6z?eJ:9?{Q?D.SF9`? m@?lJ=%l9Ii!=p?kq??=(,J?U?g?|??_(= +o,[?{>`0?i>D ?sr(?$=rqq>2Zt0x?,\R> +h +?fs>===R$nKT>=kx9Fi<0v???MHh3?˻FZ. ??@>z9>Y>/?^N?_Y?p=>vþ.0&{=4=6?8=&Ľ~u=j 4?cÇ?Z<@i?Z=So=fp?@V=cH ?E[fhx?mJ;?ث?w@N Zp?w6@0?6<ժ?}@?gVϮ̽ N4=J@?b4?@鉛=l7=F >jt.5?Awt>?ps5h??w?4W=n?f>*~wq=>V=kz>+? l@>[hL= 3 >v=IP>*?w;?{H`=> c?1qtyyB?M.*?v=?ZE?Ci?ٽP?,p2v>=T?o?{#pc?c} =ǡ=?wT?l=&y?<(??NP?&?t^=Ǝ?D??w=(?}V>ZHPh?l$TȽ= + >m?Y`ŻnV`i =b>?o=0=Q??x=w=挽V˨]=?p&=K>=,= d&pp?2?k?b=<>$߽H= - ?fm=ך?L ?e?=q(,r ?{p?g=$?D; ?0̻?Y7p?[L?I2?o[%;5@?(4<&€?'3lzҽ`?s/l0;hڀ?i= +x.0=㿖=y\;H?]??Y"?d?dT?U:AWS?>&fW|=Y$l>>==>G0?>G⊅?;^z R?|=ʿO8F=$?>UQ<>gy)=R=k|???ʁ0Ƽ>$=5u$?}=7=>VS&>ujn@8}=>?c?y=l!< =h= +=Ń>=d)1H" <}?; l><,?/?S8*> :_>2M?=s,xd>=㼔`g?=Zj?X>4g==?4 .?>l?Zu?zac?>]*=D1;@ 0=\?`?DR=3m=1t^lH?-2X?h7>41?`ؼ:h=N?ul}%?~X=z ?c\:?I@FO3>z@Z=@?Kv?J=*?t2)??{rY=q??Tt=l?}ry~?yD?L?[?#X`?C\Dbо_<!?kU?-̿~H?J`$?i=p(G =SĜ=Ǯ2>>d2to:=0(<>W>0:? *8@?B?_WȾ0>Z>_nL><ۿaO?X=<>k?=>5&?x?nxB |A7ӿx=,>?KZj@^??= <=f?"?]|?o =?^?*?ng>.>*]<Ù`=$?%a?CpK?Zm=/Dl)<> rK>I0??eͽ^>E?K?R?,? ?mp?? ?'?=G h??|' d?b? ?_??Hxu2??H?c=ɡ;?i6;T@H?f)K=?X?Ϟ=ؾV?(a=ҝ"}?}=)Tȼ?r[0eD#0 jȽK?w= p?s\TtBLпAz}>&7.??|?1\?.==ԣ==>oD=\< (M^+=,x=\A[A>^G=A"(>"+?=r̤==ܭ~=??=>@=&mWheS>3WMݐ=|̿~?/ҿ_31@F??^=\=r6?w:>Xt>o?[=%T=d?8>p(>R ?2u; +>>[=)Hp>O?\>砽9Ԑ=ؿN`?qGBgb>fu>G>B> E?[K?{`H^3?{2ZքB:==a?sCp?[X??q<Ͽ%R=&"> s?^O6Ā! Ż@pd=u?=K?=1T?o9;?D\?>%PX?;Tq?V?H?0>U?z p`Qn?}(j併~V({=TY =ū=_J< =(V<6TPVj<^U? C>0> ޼4`=f,>?zd!^??6?x,bAB[7?65B>=P0P=?2|zn>`#!:<=@=,`=T*=LpN>ʬ=?~>Kۿg,Uh?z2 ?_D=?pu^?XB>Wo=_:[?j|Җ=<ؿr>&j?n]2?%`nU=P<0=½C_=|==GĻ?N?D>JK8?qeQn?*;y@OBjB簦>-ө?mt?p}=, y*xv> +EJ?Ͻ+t>;x?}8v˓=ek=+&ފ?vQ=R?Y?vP\@?t'?v=An?8ѽ/ Xl?^m??d> ռ> %: ?b?4?|bT?f4,?x?uڹĸ=t);?Z<6?iͽ=j6?<]X>=\?K UT;4`=et>a_;@=<z|?h>{?m?on?z=N? S.>Fm<Ɯ?z?egs*=$a?F=}Ŀ==l>!= v>1z#@J8<(༿=^P> [\<>G|=zA?Ph<<=c"L?@?? ? ?- ?= ش?N?`?=T?p#½ج= D?-8bؼMΠr5?{j~>`̘?ɻ?M#?zTrB?gNvP?Z<= PI?nQ<@X<?_?é"w9?|ohՀ?CeP?q6p?_l` Ƚ?CVd.0/8:.o-?|ʽ^P?H?ny< @ +?NC=‡]e<;=ؿr"|?zd??Vν?a=@!?mLk?:PX?K|S?rhBA5=#4M =͚(?$w+&>9 ]?ؿgiY{3?/iC> (>wa?[?@>_ ?w?/ZyF=-ȿhT<8P?>d>%=Ն<:=;(kZ?;?f?չ>d=.=\>&?.?ʽ^>3M?&?ݱ?w=="=([VY>A&R?wN= /X=H==4<̃=Hv1mp{~>.wV<=>~)?(XyU=$?x +?Oػx=RP?x <?<=ǢL%\n*2;c`=3=\'=Ľy3t?>/iD=c=Šd=d ?Y;=YP?cGBIxp>D= (~?=F_?m=?};Ǡ?~=??b1 ü"}?t?e?`G$?hn,9?s> à?\Yv= ڠ?|(q>e??_n?n?⤽\@?=ANPju?{4<0d==&q(?r'?>9? =`'|pqu?s1}>?nۿ<޿tΠ=d?F;}L?x?/ҽ?r~mq,X?.?tkt<>|p0=c;8BXsu?05=M>T-llZ>t\>)?f>A=Og?j3Kz=>>P|=펽p,Cewf[ :m>"?ƿw]Ʃ>ckzIgh7{տ]=j>0=U=z>">=kv =ҿha==>=?BV?cs ?֭=C=(?eq=Q> >Zvz?6=z>f^B= qnj{=F4?9?iӖ=)?p\*=Af?p/پ!p>D>ɕ̽M==?>02?@f;?IfؿI'w> _\>2P=Dx?k =P< p{8= ?W?g\OT=?[]?u+~\=: ?%=bn2=:w|?ou<$x?4:? +=薨=Qfzɽ}r=d?nq?\=~t?g =T?Q?hQ=kP +|?mg|Tj?}o@;H@?2<=?SO?8?|?t=f[T?Y?u:TR4lZ@2後l=<0 U?{d=XB JO=j>?qT`@k4#=ň?F==t=>'Vѻ)H¨> 1:/)?t>sf?ZnO=?1X=箽͡=-t=@>3?{;k@=ļ@^^PoE=*Lg;³ oS2?yM>Xn?xill=f'?T=m?;??v\R?Y??z?fh> %.jBc?B +qۿ#j> <&<>!0 J?)>#[?Bƿ\_H 0?y5@:BACB뺟Bt'A?m?lP?6?ҷ=1?x׼ \ ;5>S=?V?AN^=,~d +u:?\??P?; nTdq ?UG=`q?9Lԁ=6BX?]>C=*~p?i=x<=a??WΜ?Ҿ`==DՄ=@+0=R1p?L=E}T?`M{7?;l?l<@?<*=ЪA >%?bT=jB?]l_Ϳ8;@?g>J c|>+Ͽ{9XL˿)[<Àbk>? =sV'ڽ/RbNP=R*P^D=*mDk?~$l"=C\M??j8?='#O.?X?nL?==!?zcj= d~f=.>t =^>=?Wp7?vp;@ 7CuDpoAN?H>2hv<&@?1?;=4N?۾ ?Yh='<`J e^??Cc?E?~n8?DƐ?"p_tJ??j8뿁_ +C?}?j??rP=f ?=Q?"vs`?@?z.}h? <= +n?ٛ?u`?l=>(B!׷?i&*?e +?@9=٪?aпu'= нQt@=;RCA4 3 ?h ===MrF{0>_\vh==ķ`==?h+@=d|L=84=<.]?q!A=h>Y!?6:=1 @s2Ohh=ذ?k~=*.==m?`?̝=#?hYtMRp09*?t=F???P;>Q;c>\- +?}>V?tp=9``>@?F?xeL0L@??{y)h?}Jyeؽ,lh?wb#T?w?A?xO?A4B @1??-l.׽?.G>=f?m.݅=ڼhU񰿙(?i<н*Ŀ}=ƪ?s/X??շgۀf?@5=j=v?r f?s=h?j+ ?$?g,=sZ#v?z@>Q=\?Y=t1?cX>+GtͿ>X=<=KT>"'=w0?6`.=եX?\X>i?J;?>'==w +x5?̴?hǵ?"?OyR?f=]kj?Q#H>Otl<߉c9νO?|?\ ?-;=뷼B?w ?vF ?n8='ʔ=Qk??YZIJh.S?.Jؿg=9=kSN=,x=_;S>#?fY_/|<pbqanA?^g?\><0?jj@@HI?ž@?\l?嬲=[$?>u??ݳ?=W(uqF4D?f}ɽ=Ŷ?r>}?=(Իέst=;0.L?V<@6?t?Y?aKs?^B_???f/?R ?l@9`?b:D?I7<ޓ`X^̜>8=Κ?>f+> ~=I?w=3???=2=E}?Rqm>Xp?#>(r= Cx?iK>7b9}+?*=}?d;u*=m=hl9>zE>œ?v=ʅP=X?PྙSn{=d="0?vrj=S V?>Ǽ:G=|wa^~8^nT?P5?p\+"l8ᔿ]=^=70=}Ep=2̿|?CB?[Yr :?pLg^T?'??L?@=T?þy{?aT@ f?s<~л?=<ت=?^r?$?e@?_?bY3L??of?QI?Ƚ(??>ƽ5@|_J9?xi`>';4?'+?1 9L?~ +]= ߿=Ԏ?|?߶W\jӴ?yB=ÊYY@3?yN=*?\W?m??dF!"e>?Lyz佪@@6>ted >Teb#>%wڿa> =|>_?=s1ۨ?g=yf='M?Ъc?mοtp0vH0?=Uk?S>%\j?"pG!wb>)Z=S"p>,=KHPW @F7= 0 "p8tK|D?qt?nd[h?Z//\?Y3Կ?{?zQ g??Y?܏>=XL={D=TR|&ؼ<:J&?A6Vx= +H@>*+j?J?-ZԀ? +>C?}z?|X=ο:!=~.= >*S="d?kv[i>N=l|?etU?)=(?d`8={$cc%?zQ5=7}6?kԽS @Ӿ?;*Gu?fT=Lp?m?r =H?俁Ou=,}r=Հs:ȿb?hFؼ Р?; ?% @?}_g7a=Ax=CD@ܽU_?\?B B<Q<͸?c ??m6|?ȼ>WbAȼнuU?vĽּܿf=h?t?H?f=4=zv ּI?qeI@4?&_j|?Z.@?<=S> ?@=-0>*G=k^> ?>M|xO}*?M ?p=PX?u?9V=V=>4R>S@~¼ >r?彇P ?ך==^u!f>t>MQ_oxTU=???r{=?y@<1?z?x=?39;sbp^> ?=6J={<`=57?Q"?vnW&?x=҄_1@=|C`Pa?uͿYľ<@`x꿀^?r~@cԿuG;?6}?y~h<𿟡>l =a9=~R=:<2 +B==?C>.>@=T^=/ Y?}t=4(?P欽 B<$?;`?U#\ =LCXN?׽? @ 4?uJ>E>vUb<<(=Cl>_&\o?b?W>e?zV?f+l=?,hL>/FmJ=P@>`~?~?D]?wa@J=hmh\>w^<ؽ?;?}>TkKy6<{$tg?.=X??fNܚ@t??ck?=qP?f@?=?7= T4nؼ&p=Z=%?p?C=* =j=x(ֆ4=0h?s!A?T=V☿x??p?#=W?;u9?~0>{?O^<>7=ƅP?8? =ͦ??`=3?n@S>Kq^?߸@8?YJ??dz?$~MP?}V<3;0?aA=o?rE_?R?Q=`֘/ =}6?=<<ق0<>P|쿆$uގ>a- ^'?2 =vX<0?|"*?ݚ?rp=WOH? >?E=5$k>L@ O>R)>m?i_D>qog'-=oP_=`頿{T??u.>=W\=s|>A=l?n??%\u ܿQ$>?F>26UNl0v=Ǭ?㝿M<.>s7=8?)?xe??tT~?=Qi=E=ҍ@b +=t =L m0 +R? +dT?R<}ɵ?#V=?}h`?r=2-=PĽkz72 ?C@?VϿ?wp;ä?L><>f?ꟿt?C< +'?q-?w>M>1>l?c])(?S?"=`> <@8=Uʼ?&@5>5?q?tnR?j}=֌?e?y +?q?/=#bIڽH@lD=X ?/c:?=ׇb?C^=e>2`_z?r{?O}K+c?ڎ>46-=&k[Y~?q]?e.phVg =VQL=WD??1:?=O +?t?h=-F=A>Ø=F?BL?~p?k@ϩL=$=6=o=p6x8*?[U>?i࿃_>c iP}˽R=x#?Gcl==?juD͋?}x 2>\>\L?.z<>"ng]?h6% ?rz?z|`? k5 ?}L9ݡ=^͝?ca#PR?yf=<ؽ?{b?r?P;=4$`g,pkl`q\=>ON; >Mq>=;v>D{l>he>(#N==x܌>N ;n @=%>kϽ\=GK?mȼW i,?u>a.a +=&?r> =Ŏ?p΂~[S?#dP#=rx?U $?C=0iq=>-m=,Ț`??Ñ?b?>6j>$$?q2=l=Eg$?u^?a_`= \b=/ + ?1?>?g`u=D3ôl\=ӇL=?!9RO1O ?|\= >@??u=YB?I|u!=k+>ս8;PB<À0=qP=o?:\༧ ;B?iBQt\`?,1x?tu=yK̚?d?d@~>"xkI%[?>v?%#>6w0BG?ֿhіV?x= =<9`e=>g ?w = +Ŀ?s?d?=ظ +. +,?<( +࿉oH~==]>>>H?w7cx==FH?] +=4(??=\>^oF=>V?~[UZ?+?d%/?pw?p;@?^y?~`=*ݔ=D< oH=y꾧x?C˽??xdv콣p=Y I.)*?wP%?t?z?m+j? 澑J?p>?qlC?h] +???bz1U+<Ű{+hu&Z?}=P=j?u?ԏ=K<>=0ߕl=Kp=2?xV??r +e=U?T?%=+=h?>==᭽Ө?,@y?=@=*=?h>Ø?=`~?k<# >;@X2V>>KS0d>2TR~_ft?> |A?xIμ7@it=UL>^`?=5 =3ܿY >mK==cȿo(2?w+?o?)=լ??m.H輛qP=>=.?F?lX=Q; "?һifch?Ȳv?o^<H?_?b?{Ys=Th(R?zpvT8gA?=ƽ{"ngJ"=\:=yԐj}?ʿ4??(Ԡh3?_KzH=Ŀob=?bM? ?Fp?=N,A?=?mĂ?T{9T?W? 8[z?P?P:нrH?`|Ŀr?^^|?v; iR?v=ȼl0C:l=0=$?r?M6!?1俁? ?r? ?f*ᆼX=tZ?mSPX俅?NU=gF3V?r?f< +@?&o/+?v?y4н= Ƚ +?=$?0?rdR(=5>+=1 +=.2==v>~??|?e?>'VKT>=J>||>>'?e=$>4_<ݣ?xx2?i?C? |P>(?>6=?=(@i=H=`> P> +O ?PF 0 ?=-rs?+&? i?|^?z?x#=XkBH?>4~-\>zἿTV?`JO9<S=ެ+?r=TEh0 !f?{G?x:> /?k.nb?B;?2q2?Z?t??zt500?ZVO?NP?h=a=:?n5k'[>tR>_c?yDZ8ѿWP=r&>2=Ò =)=};f<޿K?==0,x=0?z,iZ> V> +>k> 뾒>??yk=ĿNм@Z ͼO>>>2HϠ?j=V??\#@BQ??>?ic]=񸿥!~6=@ 0?i`J@>Z&@?{p>(mO?s?j5?VwvRE{z0{=.=dxp;N`8e=@?c?ӽG,V=ެ?o ̬uR潾c\g}^?Pz?k =h?=<#(151?ᬼs࿑|?xk5Πn?p{j?c\=T?\n?[?tj)CnV?c l<RD@&}?9轲n?L~4vNHZ>'?r <= q\=OԿk~?y$?xȼ=?3z.<2P|[?Th=H=؊=RU4 ?UJ @ zbq =l>1[?[⿆п|߽$p?7 = =_AY=z?x=n Oj>%Y2S:4=e=BCP?v~>mq?X=gT?q#*ͽ7<|:@b +><_&b=?H<@`?<|?{O?o=A=}>^Cm?_><*dm?uҰ#<@>YW?S=ц;E?C1t>(U8?+C=L>GY?B-w]=1?==q7=N?0һshߢ8?kb|=п`m? (pP8ռj`==?Tz??nljk'?vh> -4|@??}[)>K@k>>b+=?uv? ?WmD=ȿpRQgn>1`@'m=ѝLv`?[,-M8=n?nKgx?c=ɬVg?x/=AQxʠO&?p.5BU> w=oM?C==̻?录Z +'$=#?5?QY +=.𿍜? l=<?S?0"aR<=pE@p@??V(`/H?þ ڪ3c`&? @޼(?m?q~9P?必?1oQ?U")~_>d=3 =lF?>=8>$x=?-<`,0"ʈؿv =¼Ώؾ]>M޿W&?{?tL?(R>мɀ࿛Վ?>?^R?I~>>fd ??@ٿ. ?˺6d?d’?ȿOD+>*=Re@©?= K?vL,?ih4Xg??}?u_o?{uK;d?w$?[?*?ry?lwy?v]ui?aмF??=7BD=n?q-̿`m&?k}=h>iH=,=Ad=#l?~rB=?Jd?>7?pZ?[?1?=6"/7 p?wJ߿?`J=v?\=f?[ȶľ+U)@?kM?d92?u`9>L?z?t ?w 4?vn¿ܿi?vz;`?1? Θ9r?t򝽕t<4Ƞ?mp?;C?#?S{.`He@2l?{MԿ[dpB#f=?LW<;ܔH?=Mȿ}p=٘=>B+Y=x=Rt=8c=r33h=p?>Z.>SL=2??⿆0=k?u>5Ek?XwdU=u<=AL?=C8=)xl2?h?v!?|zD=v?e=J???m(<=eYڣ:D; ?.Ѹ> ۿyL??̥=R1=S\=7?}=:p=0 +<*@ +Hxݴ =>,D[>H> };PR?dk@zfB/WA?r?OQuϴ?PX|Ԟf@@~=*?\z1ǽX8?Y?{E ?moΡU?c`2Z=s&r??oHsO?s>/҅?g?qP@H|stR@ ?: ?l{>> MO +fkC>?`?X^> }>n\SĿz?!?_̿vBT =,n>9=:{8??f۾4ʿ{???=\=B_>=e?}F'2mtb==Th?Eo>B< +Y=G=e?yIu=m?&P< @?-&?zj?Z?wD2tD +@=M?f2?Ox?~;=v?w=bCԿ?yM@"=b> ? "> --i)?tX?r2f8E0󀿄FK??7h?b?}H=<~мtP?!s?S:=j=? [?C?Q?s"~( ?D>?(*-C1@n`c -==T>=-8ڃm~'l=K=(t=0/tS>sd=;}RD|ټw( =Jb =74==?Wc?|?"~2!E=?n{>O?x+2`?"!~d[zl_пuD n ?A7?=W?C>W(X?v ;z?<`=b_ <]P@ֿcb!?ʿoa= f?~?1xkf/?v#Oq?^?dof?w?j|=d-x<C83oܾ$h??i}}vG=h.?DF̾'J4?z)?ܿD?i?|%?}?=?>>1?_lR?!?|W &<pcj>w?w =X*=Uq?-0n ʽ?Qҿs?t(?Kg?R?ic7tȾ?r#?my?M%BwC=F^m>7- =V>Y?>?Ed;Er?Nb>?M=?͐> \XT|>8>$qg+X??=(?wc>>W6rZrǿA$>O;G=հ>ъ?9~|?Y;>+I&N?k`L=?=^? +zܼ0=?/=KNb?M)? h@?}}=2S=d>M@ kHj`͒> += ?=~nh?X?s/X^ԿqdG軽@> 9DŽ]"L<j?x?A0p?@<%=Qdq9>#&?~C=|?p>7D?-}?u=]=^G0="h A>:5?fbZ>?a*@_s2齙{?im??x'= p<@??k?kF<=[Z?L\58?<<٘E8>w?g>!By= 0s1?h{=@<R[ ]HF?t+TD@?Ma?<\<.?Tt8?ta??пsm?srX @2X>о@4?MhP=5~=R =o?\;= +ݽf?i?{=(<̒p>u1=|=?T?l|B⾯e?z>U4?+>%G=<7>by>VU>Ԯ?t<@?j.xA?{^??pHP.=KP=?$le%=tB?i ?ab==yV?^6?ue ?00kҿ[s-_?}hUaP=i0?f?9;=(H?=r?y\D?@>3>Nu*M̾1<??{fe>=z?=z,??[\<?u?}=ڽSY/0?{0?p> ?(?j;xwl,v!zZ?t+Gh +?sDgp?> x?bг> b?_=~T^l;@w@??<?Ii\?%4?B> +pv[;Mqp>*4?jo_*=A?:s=>QL=3?AP<>?L[="ȅqL=d.x?cP⣘ +>dؾ+?T??ſt?[=:?o½|X@C"w=js?u< =3G=zD].ҽ? L?i?s&??lK޽=6Y=sP=f3y<~@BE?~SJ?z>==TAz=eFiC[~==HuKQ\ -aZJ?¼&(J==JR.<?L?x`=ȽOՠ; 昆UR>V=>3qs<=kFp?z>dp__V? -?r= =?g%]j:m$$??v?Ű?(!Ue?w{B=KN?J HrX?D?U?}6-ޤ=O?:bHH⠿ſy>d<z?L?g?h$%u+x< w?o=2><mZ|=JNk c}<,A<ְ ?u?c~?P6tYV:b?; =M8\=LnԻt=!B +=+=9z?ܽ=Sؼ((>&S +g>?fg?lĽ>/M=C^R<@?v?:#? +x½)?꿇KC??Ș.uy=Hu㿏8<n'==?a伛=(8=mx`S^f?Q=]=6y,?eN.8== 0ȿoxM=1\?jQ< xJ =c(?@>#dɫ?w?w?Ŀz?}6=?H?bG?jˍ?/<=(?q$d?T @B?i=c=Ծh?~1->;=YT>ki ]!?uP=?h4B=,?^C?qL^C?t?@d?r??u?>;͠`gF=X?Gg:S??u*p%?P#?Eb&?p:Eژ!``;g,@rP?cvlj>T?3k>Ƀ8X ,L<`;$?pu?n6tG,;,?j@"?ZOX]<?o<?@Ѫ?_z=,s==?_gBYc'^C= +?m>?~ڪ`?kg>a zxĿwV?[?dӿO[>S?=fu@=>=<,>h =L<0qvg*c? >=xy,r>G>j=txl> x>5? +:6?iëxX==<=w> ?*{>~.Qοp]>9?w?>c> +Q??"r?~I?1?rJ=#vgs?jmS~I>=?Y?}==G??h~?t==?.ֿ^NX='u=fpvr1=݂?Lz3i`?Xqq?`h?='F?>5=-?`>NЀ?<{?dKYxP?` ?m,<=*\sL?_;TN@?zZU34?s\#@0?~7m'u?b=Z(i; ^|?>\ +?ob?tfh?uጽ%!=1I>"pOejD?aޚ=BhWNp=*=5\?P $?|(a0J?\rL<%H'T`4-5q?wD?&ɿv,Ƚh=Fn??euUH8?io<)?yаhmn= x,P3X?}ū<;`?O1=o?t}l?Fʽ{?hJ?t&u>1?}sV\?GZ?Hm>73? +?OVCོ|DB݂?^> G <<=|B>ɱ|M4Me?we8=-D=,?#o?P$rTv=@=Г?Msc?:Y@Ӏ>7>MV?7¿iY?0=B?~ +=펆k->$=Sd0>+" ?4RyK=~.=Ŀcl?m?v;QEпhP?8$=PP=Z ?`>J˾C?"=@|==XuH(h<뱰?/e>?Sݠ>:F:.f=UJ V>Iֻ0P?f==꽩l>{u?~y6?2?=P= >>t[%t?Ud:</=l=#uܽ9 +.'-?uj;tO?|@ t<#(?|=F=_];?qm^sD[¼K0?i';zԽǴp&>A>y}>(>E=4?dΓ>Ş>%L?,~:=H?Z[=Z*Hfo?z>3Z=Eʾ<<`;f࿏UnN࿇ڿyJ{MT>!_!;`== п<~?I="$ ">so{%X?>=[aпmEa0[>I =l\?xB=񧰿t ȿcC>%h?mؿ` +?A=z0_?wcuſii,=JD= 4; ?E?<=gfT@~g2Kpq=,?|J(b?r答<=l=`u??? ?|ԅWR??=|3e=8 ?l;@u_ =릿=fq> >,?Q8?qG=+X=$=X@?ktr@`<3(@ƞ?W=S?w.* Ͽ#k?U}9]شĽI,ǯT Mu?`9@ +==*ܽqԿ?j!?N-?TF?d%dY?r hAg=\=m? V̐b?= >W=?sĿ0(j/?>BhXj>3<>x!e=V<@?~Jt€xNo=|MrFuf= } >Qt>dvB;o`?HgFTh?ck??FJ%=,?s>?>A]<<3?aξPUDοC@<]; >z>-0p|>z?ax%^x@?f=;_@=C?(=FY(?me=U>?_?=z.?rs>]a<x?h\Kz`??p~ +^n?\f?rA?j/܈?~H?3`?IG}࿀/[h?k@T?g-?P<Ɣ ?Hu:/> ܿn=?^Cq?_'?lG?pſ@>?]ԛ?"??Z?l98s9?kƔ:;?qy_ =ѐ?Yp?7?SI?[z3޽?ft?Wn=ީ,?ty%?MR0`!'uh=j?+?m$?w)i?lkf{(6^?x(&Ƚ4:ܸ?;V@A@>[?=Ŀm-0=h?#K??3@>Ǯ>0?ܕY= +=ǖ==\=В?b=mФ؉;ݪ>7"ÿ@?S?>_\d?J +; i?nؾ Ơ?|p}?=>=οp(XB; ^of;?=ĔE?R=>*0?0=<-\:> cD?d`IwVFwm?$<%9?y?n/=^p=Pp? 0[16H ??w=(?]?tT<&@?hה?fh<{p??绻|=H?/!4@3 +v??7^|?aF2%@?߽;0q޼uqxe:yQ\>?"?o?r5>/X$Ľ]Ƹ_?'}h?p@WH<@p;=_Dx?Y=势l;=<>Q??=P_DW&Ŀmt>r=U?|>"|>p%?K콀P?d7c5?b= <м=Zh?iv>3!F?F?o{yJ? հ?P/?_ؿjV=Fz {?ļt?e}d <0 5(p(ٿ{}l?;x?z =W=^?a| &??>Xz7?j?*?Hg?E9}?{~ FA?ccP?R}Dj`h=%p? Dg(3;D>?$HļS>Bd?vZ{h?_o ?bi=orA<+j0?P +>=n??ei:`c2PlM?BkLSBs>O?e~?K$?n)=n?w ?@?j*?ڲYy2u?|<-{!?rᅭ*=?hwIs0?Rvy?rء?Nk"?q7`?t4h=<.8~̿e=4>Zk1\?hVUZKL?t%H=lX>:>m>FD=>QJ>h@~|A,#@pc4=^/DgJ=x?Xe ={,`>$=>AdH>>N~?@2>qZ̿prhA4C$@/tj ?e7>K%ǽpMWԿҹ =1y\?=Rhd=@T,`>Ŕ?u=*ĸ= 8I?">Q=@?"?w@=4?F?347@^mؿ|;yF”?v1?N=,G8?mn`@l?vQy>tf+t?=?w9>[>\&>tL?M=?Hgp(4kjL<<8?`x?h`y(??# 𿅚?S>K=-?Np?y0=qP^?Y8,?y19=_D B0CI?mY='g>zZ?uFm|Y=EL&?G=-=Ď?>U# =f +<`&s=^>@?lhĿOݜ>!X*>Xn=Z?uV<@?q+McԿb%=d=m$?} =ƪf +?tU$?;`?m=<<+e=)=$t=-"?<޿<[?傿/@@+@!|@>Z"=4?{D*?3c=W*Hd?Wçr9-vp??D=0 uO?|U}zp?q?`H_=;̽ph:1džn^H%O?g>t[zIT?e?}'?R?=?5оi=nLu[R?<)<?j?ڞu~?aDͿk?N? +?=;d?aL=Ց" K> ?{Q=o=?y?O?[(o=X޼s0ͤ`g@㽵p=x?>\?&ؽP=JD<ސ`?8?c?#bF f@?iTuCL,?= >;?='??E>hj?_???*\;)?m<=H=o$?Y=d0??7<h?q{?^J?k{?eFp?YFpdDv<2<?뽦=_>03c̾Q錼P>b?kf=Q;ͅ?>?^m򭿆u?<4tt)铿tW.K# ?vh?n&> ?>=wƿ?*=?zb?=;%=f4?j82C=?Dd@Ji$X_?i6?g4 +,D ܽu=&|=pt_?iQ?.s=?r?+?6i>X?a,x=b!=wP?vpUȿm?j7>~T3ܿ[j +=~ >?I>4pxea?ݿ\\wYh=Ȉ>)׽8x>1{=k?sY==v>/@==f?`?slT>(h?j@=ws?>~@=l%=T 8pfUW>8?=?X?uE?\L?=t<軺?V}n=?l>05z?~q0ra:`?ڿ?^ܷo=r,>;7l=?=M?`H=i9Zd[0??y$?iþ?p5< ?i=(w?p=3&l?q?e?WXe?q߾6ؿw?0?VKºǹ?g=\;5?B??{%н]9=L?=T?ü3B@X!?v(?r$V@@2?57` ='4`=?hl~䔿X. +<}p:??k?4P?;c="u(=o>>hMrx>!j0>> CiZ-z=24q.==ehE'|\=`>V9@m??(`]\>l?5@^=?\m?C?wc==ip|yv<> _+>Gu.x==al?m^Yi=s?N?xvU=7\=Tx>JE@$=L?mj:}> +>=ێ / ?=?juPmFY=mؾTܾ!?R@WA W?uD>Y?n;Lx͊?JM?e6=^Vᅤ E?}=?{?t"'0!6u|D?av?8l?Nu?}t?8s\aԺb?T&cD=*=V<-hx7hSp=(?n@=ZD?f??M c- +t>+3<=J>K>ZPhiT = =d?(f1>{>&<='?ޥv +=#=Xֿ=Vo2>=],`=UD=6/? f@ye?0=ZP==f9=b~(-!P==1=~F8{=i䐿u^=?e=s> )q3~=wֱ?n>=1=??{0K?x??t=&H=&?ҽ?5=c>G?u5?>2 ?maYb:?q'1?cj$z?s6?+? ABg?=N,wm?v?u p`?^?ENʐ=o&пL?2?n=?#WN?ah?j?hh?O=c&Z?{?Y5~i?`?tмq(98?,w0 (ϊBz;5?zܿ}/=Ŝ"m,?y?w~?f{p?P?anpV?<н88s> r?v?d?jz=ks?Xx0|P?h%?Zk@?p"@;b?iYK5.et=>?xd8=Wb?='+?Sd??=wػ4=쿆?ju=*Dk@=W:=??s}^P5> +K=Zh6 ?YοhrsJ?_?.b?Ind?k:><Ԅp??-o ?l>?eh4?U[?ڜ?,=P +Thh<\>=8=D?eN={Y?m +P;2 ?5=_Ŀ_1LtDE?e&g?A=A=;w>]~> >^)<֖ PS?fX{ 3`@w>(%U;@?zNB?yYg@==߭$'Ƚ {,?y?m?q_l̿Ҥ4?$?%8 ?{ ?d.<Ҁ?8ub]?pd x@@>j޿!oпZ_\=/}@aer +>TV= } ?]?1F=(W??.,H?oB=lھ ?{O鿃#;@?v=T?|?r%dpX?I=@B?{=.uet='(`2 ='Ƚ?8?rgMX?m;L?n61X=`?-@=k\P?R=T??e $Œ(=ٸ?7?i-ni??Z=~>?E?d=+ U6@ +a>)ɀ?L|?MO?xJ]1m= @>!&Λ?hDy8|A0?uP?f}м 0l?N?=G =4=;>59D@=}Ƽf=$=$hҿ=7=ŀh[\>,F==?Ay?oqU8=2??V?=s%?/z*??x떽#?)T>?=T=G0ֿI=z=<?u~?g,< ?4?y)T?v|? f};"<, +$bƿu.h=.=5h2Sv༶p>f=L?J<<࿃L(?qށT?j>[=5<н Q/=Shw쿂eC>_=\s=n?)|\y=W>MB?9J`?͕=\9?p =5 +X3??w`?_[K0B{R@ 4=L> ?vD?.?um뽤MvܿjBm'$??\ ?l==Ȍ y(>/¾н($=I?h=F&x?ȼL ?a<[?_M~ ?5~?n@*?zֽId+轌qp;?f<9`?/?oɘ<``?zN?Q<Zsx=L>`e?l0W?ts*;L@?t?v߶?n_`?a =Q?rik?T0[߿=Ә?u=.Upt`==vm??6>&=(?Eg>@?c=>= +=Ř=? ?$2I?|?cr=XT>Y$?~Y@+izT?=><=aXD%??2u=ɚ?#{?>??rǖ=3ɶhě +=nm^=̽=U= +x,uF=:?>?N4t@E_u=JFh?><"ps?~?~MÈ =`p>AZv@">h˿cL=Jd?ʿhl?=Ŀl=\" x4?s[?}_~=&H@=t >H=STl?|=\?p=\=8|>@s1?F־c=@=ƿuGR=i ==L?v@W?}޿j'n< ,@??=ɡĽpd>>4g?f=wf8kV-=_<==>/$yh|a&唿h) ?c}@B@B$o==?SkK=,=3N=s6}Sn<̧>jռ$p>@?h|=5|?Կw?Tb%S0?&?Z/?(? +Z=~@+H>6n?$>x=&U?SK˛>#|=%V?2 ?wB= =j>bx?U@@D=οL=J?x`=՚t=Ծ=Sx>Am9x?`?M6J^=?wd?d{"4P?^?vo>^?S@=Ŭ?ae?||>MRQZ?k=b[`=Ŀk=O>_Hc?w_?o7<`=B3Lb-? G^?v=?%V=;޼DA$w(]>*c_==s?z?H?=?xf?u9=<> xR\<|j.?z??)u?dZ?=]?UZ=RbPZ=V~`l?D?h?r]=J? )@\>> ?V+_?Db}=?yj?k?T&ѢT?Ky.D-?p<Ⱦ65t??\\k?pȿ~Ol?vѢ?kl=ψ?t?G?62?2;><|=Pt><'=>k?=>&ؗ>B>=ɑ>oj@:T9CAA=^=Vl`R=U>7j?=y{?~?qN=+?qb?5A?C0?>=.=*!p=KLW|?:j?I@h?f>=q3=]?!8V?4<=P>e0hȿp<࿀/?t,-<ݰ<=2? 5 r?qddWx=<(@%kt?z1ʄݞT?oaJres轃 h? ?t7T0?V==Z?;=>xb?[=D?qjJ-?w/V;܈?^?I=?5=k[8?6{¿la?}?v>?vj=W@yn;7={,;=?] ¾нӀ=٤4?Z=$(p>G=} ?q`]?Gh~=? ȿa%> +APB@~b!DLJ::^?A8qgi^rz>쿀p\Ck(fsZ'pB?g=0dr?VN.8=? +vT+=Zr=d|z=-t?vQ>@?=<;TpE;=F<F=xc ? +ڿ`:=?w뿑><{Yv»逿<7xX<?AɽxZ ??;=V?AԽA<=m>%=7`?rA?i??YA佬2uH?k+z;L`i]?ori?q%l=%/`γ<#оcu ֬?kR?l82>N#> (2^H?@H KڽW ?nw\;9@=b,r`@4?zӿ?|? Ƭlr X:X+$=8=y=Lm?i؂?= r۰6??b?&Πp?.=O0Ai=xg=̡佂l=|TY?π?=?,+!?;nlԽO?wƿRKux?=XQ{Zw"~;|<?xE.=xr 8px#Ȼ9@s<p?g=&нsKȾ>s꿌ҙr?"=H=Ir|$YGT?^M ===fP?w>Exwp@U<ї?p󽤟?h?oc= ?(!࿌^ݬ;Om<}>'JBa;=!P?e!g?!=e=r}4=W?Cn S=?2=2d=?Xq=>=5,=p=ljt>+Ď?ͼL@hT`?#u@M8~?т=??5({=!=L ?~r?lJJ-w=\==0=r?:dG=N<=* 3@>n-5==? +<8=?^g=m?Sm6=ǔ?<'P?m?h=5PH=b="8>w?8/?ݏ)t?R +=住Wfqʽ^\;$?r?]=cdH9 ?釾n=2?tV?)h?|=`2}_?$OL?'ŽٿuK ?_?PF?{R= zI?(?~~?s=?MMorƼ0?j6?fbV<?d??C?oa?bq?i4s|> +E>5>LC@?=9V$v?T5\P>Vp=6N"m=t>pɿi.=H= I(=[Ƞ>:6t[>J+ ?s~V?s<Հ=X>oӒ={ =@:tl:=ih8g}_X?׿q'?>eg>9#-r??i?c>P ?`<>?~r>\x`<{D-tݽ_W?cV̔?nk8+?6?A<=NjHc= ?k:;@~XRH`>= ?w$f0=6W?|K=0P?|4?r"?=S?ij??V?GwZH?,߿xW?'gā;V̀Խ%H?A\?3UXnƻW@~?q?Jn? =[6?3)iu=p +1h)w8Xj g^e`=s9 =YsI?:y+G=νex?f5.j?HGH <$ ?p?v?k /?ߒ??>$ܼi?>9=d>k>&0/>g=b=+<a@?~?Dr\=?rBh)7?4O`>G{=:U;Hm'`n=Z$? ?F=1{+18=$\?=ZX?5 ?l?}1Q=Gh /A=࿏e+?}(m?w{?~ I*= ? M?t?s?rh?o(> |$ޤw&.Aƿˡ<4X=ԦL꽳L?5?}Zǰ=1:?p?yi\x/<?2= l=W Qi^1=h?q.?k?w5?ySL=|Qop5p^=D;H=}tr*=%|=޽2T?v<ܡIngp=.Pu>?7=LH>T?s2?{7!??=6s?T? +VsY+;?$>>y;?S?p.Ů=L?\=Ė꨽/쿕ٿr?wzU?p =G@?Uǖxr;S?M"Iz=94?J~ZOaD=n@7gHW?>?=/mUD?{\>2WEA?@ȿd=J=[8?r=X?}=\??}=""=4>==>=»?~=6<S=;ZXwexh?cg'?k]==u>Ϣ??լ=V <ཀ|f?qW?gwz=пo~V^=r?~&?0=@ePt7}@$&?yG4@h7AU}?zU7QX=x+ =,J<|?o?{?;;V??Qp?zi6?x%V?zN??Z?f<ؐkg>>̽=ʥ,? =FX=b躡]<? ">?H?{.K:;@C["J{~?Y?KWuq2?dzcK=++=x@\x<?n`d?F\KҼ~|!;`==ƿZZ> $Z=u(=l?{r>oe=flk=#̿cmTT=j<?sV?nj=|=gjm)B?qeJY?<5J?A|8==`P?s=>ZuA=!v=4??|}=@P?H ¿{I)H]-==| + Zٽl=ő& ?h?stځ4 ?ս~!?j=9A=,;=)hnѿa ?=Hv p1M?mJ=Y,=K(?B߽<ү`D?X?M? ?yc=QU?ult?A[0@}}?t"? <>4=Cx?ƿv `?hCn?n?\2?lCh?G?gMȾо2<~`?OJż>h?d@Rtp>`̿^-w?)5>N`?lʿI!=d@~^Sм x?=tv?4>K8= 8MTY='Đ=XKHпQ>=Z=Vp=f=XD>=>@6ν p|?\~oֽ>o>(6j=!=>yq +?{TZ=unq~?p =J @=#==޻*==6>2&c `?Ho ?E(;Q??S3=%֘ U @qJмD<>*l>|<ph;`W<oYLuqy̿e|?t} `?6=e8=Q8?NZ=g**kO[u=M (>?eSп=ꌿ[mC=)5y\=V,=bvZ?{8*??MhF=J`pF?l'=C@?m?~@0XfBיA?a?D2= N?Z"?=>E=,?P5*>\͕? P?I?Qƾ*>ؽ&t?Z?[ ?Iʿ?n?BZ^Pk@?uv?P\>HvR\=H>@Zh>&><=ݖʿV>. X bpXH?vfO g?e?qa=>W=RT>gL<}>2ۯ=]:?_f>R>y=Jm0?f~; (==5v =h?[ "=п'5x?j=a?;?=P?_2=(=p=$=8>W?}!~Zo?pv=޼^k ˜,\?K䠽,=q"=N~ ?fƿzx>yo=Std|?\=>@-90ZUc=ο~ƀ(b?}?gOļ =,<ߗp?xJ?< Ru?x,~ԼмWztx.HX`?&d7=N[8=[=?c:=k=P?l+R=WOHv,=@?[]?P?@?vہ==:=.a~" b>[?id?_SBh躽X +0Q + ?^Ie̾/^L?n^~L6=ȿ";tnӅ<ɿ]⼿ ?JF@}(5<?{t==_f>;8m?\P =u>h\==s=/(=% <30\?d=?>(=H?=<^?#I>F=g{(i-=?xA<jSLTzw?Gw=Z'h> vb?J=1=zTO>Hl>4q{?W9$sYq?ywH=ҡb^E=$?r%=⽔=X??q*?=?{Z>Ɨ?? =Θ=?yk=8?SNQ=?YCz=ȝ=?wj`d??Ӽ|JkԿ?f?b|er>ֽĉ@: >?i2?W?|P=8ް#&{,???}v,?^a?y=JR!B?8K/=^k?pi=TX3nǸx-=|ȾY?L:qfg?d)a?[@?i+2?aŌ!(de>f=xR<=jH<@x?Dr@MN?=H?T =v@\#=t;t;-?O<^v>#a>dX=h>=@??p}?<l=BWZ?Sj>i>!-־;($?a*U>-y|i>ѻ0m=/?>Ikb0 =p=DDн9??'D<2P?\=p?+|5(C4=?hq۪{Y?hZ=q&پ= * ?tXDw>91ͽ?`dmYiս?ze?@FFvSj5=zJXXۈlܾr=(&?Eo?[Z?*%?&?{D=6֘=H>7WFS?E@>%f=1> <>==VP<=?ּAPL[?=?hsz^?l|?:>(?f4?nN=L6=?v>8?=_?T= +dJ0?Hr"@?}>=ܽе>3( 2? Q?w?v=?=f?@W <{?o%Ec:оBx>=8@5zD/?bL=?d^Ӥ>vXPE?l8?q8E<=F+={H?xH6?sZn?lϰrA )J?z9T?l~̽[](?_zk=8w?W^=?dž@>"&,P>?:z=?x=Ƚ8ٿ?[@=h8?Atq!?f?6vb?I>Կi(V,>9K>?\=cH?#0=hH=ڜ?Իga`??==ݤ?n=.?m=;+=朿gs==30=̀==?E dbR. =d`?пP?;??rB?o?!d_RP ?޿t6?ua= ?h?5TS +=vzP?½Вp=NI@4=%l>1JR?\& z^Ծɷ0?qˣ?=x=]ؿOZ>a?t??j?mjc밾N?Q6 ?r=B?iR$=H?lUz?'j?x8j?X+= ? c;E?:F?DJ=;\V>u>0>>m?z?vOd>`< >)azf=EZ=2=zs?<°?:j&? ^e0>=n=N=s?d׿=6=NomF>"[h?ea=$俫 =b8>PҔuE=eƿ0.itu(?~V?vW7=C?Xf?MAy?jԿo Hpֈ?x􃿀D*>^?a?a=[p=]=^=m?jU?^lrA]o{>6=W<=ۭy3L2p?X5࿗긿pKM<3`=apsl8>⼺ 2?5=lhg>=N=+.?{-=l5JY[?q>+?bi2Z=~N=VkP=]x?c?f==X?M¼Ѱ`b ?®=&=@2=0q4?ߍ? ſk|<`?)܀K ?\~s~?XĽ~i`?^L??Կnc?{??]V=&"ƿC?] <9:+Ko v?{=6t=цvFp+,0>p= ?tz=d) >r?S??2>XqhV\d>=;9=G9a??ON|3?rlZ=rtU8?m`?pU?|IN&?#lԻ~?z<q''=C(?no?s'`> 1`r?\y<=0??ʝ?s?p??}͖= |>a?S?|Fւ@=(8<\?Y q |8 6< ?=`=X]V3?ZIwU?t$__y8T2=$)(?YrP?^pz `>wؿQ0ܿ8?꓿ :C?u?V??j|&P𽷀ʄVV!?P.?u?c fIȼ|=4Y?w=vB+пJ??b(*?PݿFȽZ?_GD`〿F>i=x;OT@:gA?d?{r?~얽:? =E{<8 ?@8WA=i\嗸?z9G0<?py?UJJXPJ[=<=൮?:=)~?s=,>0&l>Fh/&?i?4N>?z-?:gҰc=>>M:em ??s+?=lԻ>??=x`|fؿ +"> X?_t|@ȿrp=⿁?`޼9= +? +?[~a=6?H)9?_2<@@=?|L?Bx'0B&?ɬ?g+u?db?^B>{;A{6?hs?F?v[?k=t2?zZ?G@g=,idDY*?+`AA`> oA=e@??Z5'=,}:&e`?zlqJd,?i<ڐ?RjsfBi?Ht?I>H0u>C? =Up<0?sh֣??R??~~`?K?TX^,(SH>s1O<\X? =TԿ-<%&ѽO`>?r} =*?z{l=7*?g.?x>i?o{Լ0?|=dh?zXc!?aU<¼;V?98p=tUܼ>5JC=6-?,|;>w9G4<`<> ?zqN=$??T`D=MfVQ&?̰S?mHb==[=?=?$-=пmྎ?>J D?kkzXlx?1>y@wA a?n x[?X_0=?dc@ֻ`π=;J\+2?y?|>H>րH?.A=/: <&O1uHg|v`b^? >=ez=H{XB?NJ?m@雽6񰿊?}v==;G<*`mkZ=ç?K\?=Tw>t?dν ?umvM?n??mn=,?ti޽7`/6z Q?Yg?I`N? ?rnx?4b@1[^?czk߅?C˾|jw潧PU??Z!G=1>8tmn[?A? ?p?Od ?ԱB=(K@=dvh?`nHlA=DR==@>O?yW=3h?>E?2jF=I(>&s=x&=mh:

"z1>ڿ?ؿ=(?^ D>`=?sP= ?"?{Ly?ս-ڨ?؎?%}7n?jd?KN0x?oR?[Lüx>ej ØqT?d0Ts==}\񫸿*̄?;㽓i?e?̋?Oe.5?<#p (Wp?==z?a\*]ǝϼP?O:锽d 64=,4?tՀ?x=?Yo=T{POf>)X Pz??T;=⿎)?eּȝ1X=??6O*??p.J( o D1@ePȀP7= r?_@< t=9Xb?C?=?i2y?T?2d? ݾf?ͽD?/*?Xtn?ތ뚿4J?U-H?cAU=8Ӑ>>"=M[>0?Ϳwكjr?8?=Th==Pzk|e^Rj<h?=M>WWYi<󧸿w>s)==TAlbųB=]!R?osK?*=~?m==1> Wp=<TjW\(S`?OX>*F= +>1Yz?DsO=3l?mW꠽͑&=VZa ;b>_(==L+&?(?2X?f&+;?=\?[< ?o?X$h?:l= +g ?e?']p?u:&L켥δML.?Dn?S??yX2?Kk? =pl??mX'(zLCi`?q?a0?N=~L=?m>s>modoq;^> g?uIDt.^>t?nR?>JD=ϴ>~x#@X->G>/^x@n?kt_=IVT=zX[SY=f=f,=>gb2=1={>!;=*v?z;_ < +?}?%?俊Ee?=`=Ώ=$=:zlID??|q<P?6=D6:;&=:P=o?n?]Y%?{[(> B? '?ڿHXJ??o=~?}`x?rB=B=l|پxp>3{+w=H=?.5Ę@H=?SAٽ!p? Yq4?{*uF=DdyX?zK +쿞]<_˸gƼ0?!Zj.<2ҿzڿq;??Ts?rX)@6??v8l?lľ"V?o(R?n =x?N?l$?(?p >4>?=2B=={ؿh#?Soϫ=PڿmR=L>$q=z=OD%9pZm=@=F>2:cra??M= 0? @=5pV/8?8*=BԽ0PpI`=]6,=י? M@=~zNҿ??[־ݚT?A=Z?i蔽~лKH?=H`$01?| ?rSe@d?a?wzp:<={v?Twy|^N@L??fk??f <p<80?=\==<=öfsппb?o罱?fyaC0?h!+<.t`:l?`?t;C@ +?0>/Ǽn`oQئsWb<@=)ؽK0=.@ \, @m7=(IapJ=۬V= |?5c@ +si??&>,j?mه?kiinP$P<-`Np:?v = d<90?jk=ܾI\>?|=(D$`ClI?wu^=Dx \B.=!i kaP>>Z=`=CD'?m?Tj\؄?n??<}xnR=?=6>?;?0c@<j1>5Y\~>Eҽٜ=B?p|- ; =%l?>O?=ׄ>&5??~<@HM?"˵?t?[>=z[6ϩ7f 车n? V?o?;40?{?L f?dx?2=Jr`H=T==S|= `<]2=#?`_E-r.W+\𿇋e<:l=<1t=ς?Gr?|?ܿv}?=?5?~`>_7 ?ۆ?{N?wݼ P?n?7>n<7 +xu<#@%t?䙯kf??}s?ggT="=TFM=??\L=lp#C?|>ntuя?A@vAAAv@[tqm<Mtw_n8>E?rR:ňiʿv>08= ;>c}dܼq?U>:O7;Wy=NgHl@r?>P@=oTT?F= O=Mn?0$}?lR==%Y? >TJR;?@:{?h̾ZR=%Pt~?fxn=Y0?eF?AH?| Ao9B}p$=h?3b?h<0?a|<?f^?K<`=?n8v>:4^*Fƾ5?jﰽZ?/<`?y<شh="Va?F׽Ix?v34_?n?^Gf-?o=9B-K`}=C?hkXe?vA @ ?[RWd@ߎ?n\D=I?ꢿ%$z==˨?[iY?n>=>G*XbŇ ?y=[U==^=y[Dua?6crRm>.sfÿv?0sr?TοVGu5V?hMa,>p~=L=Ŀ?p?f?d=>v@N>u4?f^gsi?VH?zD?=<{֐=8@@"?Bn?|<,@v?~ud@+?vJAX|J?l*?@wQY\?Fȿxe?[Rwb*>>&P= <\TC>cd~>?^0<ؿZ?/wv? ʽ0R??{>yhVs=M?yz==j@a=|?H&=DG{>*=`YdR>t.4t>QI==N?~~??^>>=ڼۀ?~hi=?|?ogsA=z;PP=EQp~8k ++.9 +lp@1?7=7B?u><>H?yu3!?½(?\R?䛿iٻ =V(?q_?c=?g⿊>y5=Qh< ;T>GIC(?g,uv`!޿ߦ=Nr@=Lg~[rhi=ޘ?E?qo?ڃ?҅?},>ky4F;l@==h? <݈=7x?)?=?v%=^=<>=x=<=6? =$=ڦ?:<`=\'Ҽ6"`a#==>._~ S>!F?d>@ +0<>ep?nĴ>$f?dyf?Z>@?W+%gn<?t'u@= >=M{=5L>)?7z> +kҽi@`?{?ie==jnO+4=^x=p?GH=4;\ꀽb?b7=.ꈽ=`t8?Cz> +!ֿy?? =x&(8Oÿ}{==M?d=~(?b/@h6W߿}??RQ? =f*J=fQP?>.z/>!5> >Yx=Ӣ*?= +Zx?|K=ѐ^!*ؿqlVŜ??rd=`4X<@*n |@ x@?y==DA?thѿh7'd?l=X\9ƽL1PӽD??=x=@?iHr= H=^?^O@ =мRh=Ti>0LTϾ{Ш?҂?j=*?GY=}=,?սb=Z?J>3{?.=@kHc`=I]j?="^`v?]6G0@l=b?dڶ^係e,@"{+@o?^/h<@k`_-Nt8?m?ȁ<Ҁ?8?xva?o=0tx:`Y?H +==?t=<\?LPJ+F??l= \?s=`=<<>$I>FY?24+?wjF??b/?6?v*?ֽD` +1w ֻ=G|zs+3?ǥ@ebj?q#<<=lhh?@~??_*%@^?Qlv=4>J?zG= +Vo= P=\P:=/?Rrc?*T` =X=|>H;f<=u?*+?|poP@= 0??*AD?`?Y=>rF=SH?>Yj>o?3=T?|"?$V)x/%'?-Q*$=wƼw??}?}}1=j!L8?n_?OrF?x¿wd/??ZvS N̿\$P?e¾x?N?r?U(=γ=z0B.0n2?a:>?m?i2}?>nd=򠿑x@<ؾEbSuezsj??[0<20=̌?l(RT=2p?{@S?b\=5:7Ќ?q\F? %C|?d-MwzSP=:=\?w)JD~[= `=t?ۗI&@iCh + ޿(i"Hˆ[?L.=FI4>?wV-L=x>"sp>X=>g+ ? i>g˿nvJA*?x>,tpK`= U=c?j> ͜=˔?z:3\;&=}迗J#=E=?|6-s@: =!?_hS4=tQ *VH?65a p>E=@ؾP@N?[)t>W=zF;?$>bVH\?~?t"lC<0?hH`P=Jnz?gW="=nq??P?a^=HE\<צ8?|Pr><Ź ࿁1<`޼?zEν?5z=s;l< X?]̽οQ>櫽դ=XX?^EdC=nX5?v^C?=xi?fM2?<4p=ܽxؼ;<;:@=7=2@?пýN?hG_݄?Sƽkl?m?z<[,h=?pRvȠ='{(*^k kԻľ5;NO@=?/ܽNv??$???v?r,>rd*:OP>!m]wN>Ufj{ r>"Yo?b02?>`i?Uu[=z>S_d(?b?^ft@I^$?oň<а۴?nlO%qH?ZԼ?l>/#Qn=LlDJ?!<?=hڿf?:9?02??p=n?|?psd?sTK=R`?@?f}׀yy>@>ޔ=@o#{?y=}(8=Nƿ[>=[d]=v?|1?Ai?N>3?e|rsʿex==?d_=.= ?z?~[R$d?<5?`aJ=@l=Zv4Ϝ=??xQQyzF=Id=,M?s*>?|>eռyugFJ?(Kh?B=߄?Yfw1?wi8H=x=WTWbp><흽?a=:Rn6^2?P0k!N?5^?߿"?nuVQ?Fz?~ +hw쿁բ?[=۶?p< =NR?0=K4<| ?sO.?|y?sy)?q{Z??hw?g`>uԿ0]>2Y`<3?|e?kӮkfbȿVq?;e??r${2>, '.8=QV,i?C=#=.D?Ew|+l?"< ?5?8?H?`?w?=j=l*B|<LXʑ?X>\N?ƾ-@ ??c?y<(>b?|j?GB/=VP= H=z?6?pcT?{y/?S&<D^ =޶܆x?_~Q?t3=h?h2귈890(?oj$=8޲?lF`?|?R?(9y謿}~?g@.?d=x?v> 4s~ UP? =`=5JDw?$:?cDӆT?z8+H2=j?c>%[KT?`~¼h?)=~?uB*?Bif̲?ݽ/)(@ pתw=.P@5<5q>?p?P?!<;`gA?Xy +=͞?_GVr?ʽ??_S=m)~A,?ɿct=|= n=F΄?Vnyc{.=WW=7z?d>n=/Q= JN=S> > `-?q?x`>fG}|?c%?{m^?d?\*K=ߪ?Y<=7f ½Կ??IXX16=O̽>?w?Oo(=H?J69{/;-|?~'D&?IkD?n?pH=3?6G?|=L>@V?cG=L@/R>4a>)D>$?ػrC??=B?U.>H=Lyd]jhq>/,ǿ~ѿ}X=W>'@?wEIL<:.>==b =h f;/Y?t=?x=i2p=FZнnrAylX7`@= +;;{ =޼h=vM=-j=m8?Od ?M~JXо?V +(ҋ*|p/ȿM,.=v6Z=J%_=Jl?K޿5D)İ!Ou=?1O*?dC׌?]?MO?l*==轒R?x?b?e=˸;J$@kd 6?f?y?aa_y?ӃjW,?A?߬*B(?FinB@e?=:V?[{=<5R ?S|?D|>k/=+࿪%_?^=۳?rq==Szm=7X=y=.=H,;y.*>#l?~}bH I;=ݨ?tA]@ ==|;?Z?oK?e?zX=?{?z˖= vh~H>ulw ?oZSG}f?2мbOB|. ɶ?d?5?|3DoLb=i$?a1=ޜ<ן?=/0?wLf=)5࿎q?C پ=ĿUi]hH?S>?f3<?x?F,?/yYs <=p>:j?x?Nz=q?l^b??ru?vXګ=(`?JUxa?XM<?V<0=?]@|?=w=嚪@0x?R=GJ?&<8ldh ?glF3؈=$P?}/{)??'ݰQv+?9νA?)cbi?cAc?ݿix ?d=OS<nhp?f2b?̽,1Z@ A*`>|8ta=Nl=?T1?o>Aj_?w?=m:>cp=t@=b?]=ELu<цh>= >$>b=?Z_p>#97hH?熻l>~>C#<2l}=ll?3|?C>Eh>}[b4=b1d?2zwi?vV>8p>5k;@<=;e̽mx>=0r8?{>nJ? ?zh >̢j =2?i\rO=l??sϧ==D?=,q?L>9E=K>=#?!?v< ?h?wk?A=`yV?^P?sT<=?r?s=ۮ=F?p|?t;Y`>܈;@L@>0=""=x軾yZ6=f=&@̽gQ?j?wq>+.IО??~?M?/m?]PF?W=b>ί?q?ewc`wlT hTPo{BV?w?oP?_;e6=p?=ʽ~> +۞>,"?T*|>-N>a8=9A A:c}=|=|?U?>!,}o@>S?c=&H== iL<Ѕ;| ?l>!OCf?oL?=K$U?O͸>$v=GP==)$?/>V? r=\=e^PI`>=tK o=hYXS=Ll=v?9J?2wـb3iogg:j/H??b)=Ih[?~(l>&480#_>;ĿgxнH?|,hհ?d? RDŽ|V@=v8?~c?x`?9Fp„?rt5LR?տp?jz;Mq?h>?`?R0^#X ++@X=a>eI<֨?W=2?JAQtB)Wοl 3=6?^?h?y=>:sH?hg? >i%=r$?;op>=A[Ŀz`?<\N ?vf?L?Cט?k?6?nXf(H?hQν5a|=|=u\ HltR,x?b[H I?˖=A? ?|$?Ug?kiOg?|hmm<0?tM࿂?d=DD}`->ڽ9W?6?_пy?m=Ԁ=W^?k8lP=h*4@2< =X2Ͽ^Ŀ,?g?n h?5?_ +8?G2$?YK=)`; @|?iO,s<Ӷ<Ӳ?D0?f?y=?>Ը?N_?H@;9W=^?O=t?wM<.wyk@j>;r_<.>mɿ>lq=3>|{?kv9f?}A}MB eCZC@:?z>;C>G>h=?Zaմ=QN?|>.=Ƚxg(ֵ?i?zs?H?\xjps?A}?%ÿd.F=3?^?p%@Kd>u=?t?bf?y=qr6@3;O@rD,6?re?y2(XAZb?~^=@s=?=?{s:0=/6+?J `';|=>4R\ +=~;)HX@3Mgp(?{?D?To? =J??^މ6`<`??Y[?Vƭ?˿?iP: ?y-迓\4hܿD?mLP?hUd?65Zȿ0 +e, ?7?We??yv?a?|Z=[@f@\=*n>.<48 ?^8?sj*?g1@M0?}LSpXztH?R)6RoQ?@>~AeB[>^n6=xxS=HĽ"=x Lp?`E=?ҽ3^=P>w>8><*|h=\?r1?ʔ<9 =>¼LpTḧ~+?|d=&=X7RX?K9H?@̨ҽ8=J4Wy?g?v1-Et +xW?Vn],<{R=d>΢=ؿv..ڽi<&;$?\!a?#Ȁ+A >;>|P?kҽY?h3=f`>0{e?>bտU=RW=k?@> +,?)&@> < 0v Z=K?hx<=x?-?~@?>E<-=#->ġ?EK|R<{h5?gi?a=8?{@>t?{Q?T=?|?V=5ȿR{?Eh@ m=?/;p=f@X(>Ƚx9%?lX?bk<= E+Pi<=04 +?]8ĻՀ ?z0Ga:_x@z;QX?E<+p?\k?z`=;L?L?X={ ?DRXΖ$>=?Z]?};Tu">BU=ѾT=\9{̿=.?m=?Od?;tKy%=¿}$н<@?i̿\ż<p?w=8|D=l%?~=@XIO =8=.0~/R?_F?r)x=:.̬<Q=?1?p#.WqV>;=H?w ཮z $=7h??=="CXD?aM޺*?L ?|0??|8=82`?x@W B=[k=댽U[>gʼ6ʠ???\m>Hl=o?Hh]^&<0Zٔ.?Eg >nz=`qn<@ng̽>gB=ݰ_ =B}(AFb=A]f>C5y??f==?=*?Z>??~?qg=Vdx?nV>@=̮P=A"<`w`1?fټՅ3?sP=#h =?̿w+>=|PYvFp?sٽWP*h>Y?~: ∾.f?md@P==@?_GCH?QMs' ?x:?L?[i?f;=?>;?p#==͙?t(?V?}n@:B'N?q ?5:[=W %?p?t?X?f\;""V<<࠿߽ =뻘2)X+I=Ⱦ?-r?vؽ!y?wu=D?*52M;?;>e?rM?0eQ?dW=E=p?DN?a~?mD=;~ҋh ~=L=h?~~K?=Z=.?G?.`70?xD= i?~d?l?4)Y==Z̿s_7C=\?z*z=?P?? Q!Ut]=f?W xh| ?U r?]P޽迆h=v!?cPoP?vBB_wW@;91?>E?w?}Ơ&ֽ\R^ﴽ\R=/06Xt?8Ŀ=rH?}^‰?_7P=` `Ԥx#JL;{@?q7_^+,?#t?SKP=1?`5??C??W$< +[p?Px H?3DU|<_<;=tAlo5?d^M>-輰) +|L`S? ?8Q=?&d?`%?t=$ Cr?vD?? .?=u?y7H (y?-<|yp8?'̻@dܽE=8>Ad<=K?g>^MCd =< =ֿԅt>cu?+?s > >zB=vLKJ<א=Qvp;kst8 ?~?`b?p=H?@?o憿?i}.?$9?e]ȿ?SZ?ol^l@==P"Q(&9=U=">=xϿZ<?#=,<@2A՗-@y?A==YU@tJ<==0f?% /?%j\=1_8> +>0R>Z5 f??<`>;B1pNZV>bm~#~Vs< <@2=a=q>lؼG=#<@,c}?ja_n]d?w +;BT\e\?ht= =QkqA߿=Dōz`b6=6R4CiX-?lE@?Qn>]+<x?<0?|_Y=?o< bB?J;=P?-$??I?H]G`?n$vwg%?Y =i;@?vX?u'c==?>C?fPT14L:fJ?@`b+/od].?i?u?Z?iG?f0鿉?х?\zƾA?_VPؽ$%H?T}YcT5?OIE=пx"3?Z}Ծ3h4Q?~YJN4p0=be=j=g@?}e=8{???f_>C>ff4<7Zy>R??e"=8¿qn>C>'m=\{dkY?zM>?2:-=<=?z=u D]o=@z>25?+? ȿ +$ qe޿gN=r?r7>jq=2~a?}Zp?lD?~J>(1>> +>vOXnf=gTl%b#?hxs=b?z-r2!`d5=(>;0ze{ +=jHDh_=T=Y^?'iJ ;2?9M=L8?=$=Yx=m4?~?uTܿhཚGh$ n|*?w]"?'d?wp"?% ?궿ަ?῾.j.?W5U?ih?=<`?yn=tD [ =/>+=s>.C`BLbCwJ=T% <{]?om?{=3VaƲ=c=P?xD]0H콐8>M>*>T:> g?e=$PsW2|u~|<=pBt=԰Yw6=70?{ =J?zh=J?=*3?v|[=Գ??gClr=?uk=;?Ѧ?s]uo[CHz\?C?$?W<=z^ܿ>((L?e@=֖?}R>?a^P?V?=A=?\L?Eо St<?ql_?՗?B1d=3B?|?k?}]6`B=b\?p T:?=>sa.i]b(=':ͳ=Gؿqn=\P~;> =J?|?nI dqj= DI8=(?fX=ڽX=N?X>,5軽[m>W-NZl>$窾t8vj~cX#R係2??{Y|?Ksz=?E=]=I?l?jFG?wM?l<? =8=9P?xfBwP4Y + H +&;?QhսнмȾ =H6?_a+?\;=?9,J?gE?N<'thTh:-+BB*-?vV&Lp?q"qP<=?H>Oi=<=0=z0lP?ip>`<=o?!L >+h?2?gkh?|L>?=?B>fo=m)@<Ԑ<==h?a==ld>;?v?(.> $>Fs<0( r>B?>!H? UH=Ep=B==w?,]??>!Y?> ) >=E]m> ˿a3zf L=={hX7Zl+=9:$=`]ȿejB=ɺ=h ?V>7|2>׿Ws>_p9"?'<0=t??p==ֽ=G0C0 =1F@<;@?+?&?h= dCD?El-vev?mY߿y5Nh=UX/h @6?9;dH@=2x@;pd7?}v?F=нT=56K=<P>!ٶ;q>E=`=Cp,yc?w)=k?t>9]S>N:<20="mV)f=S!=?Uf|cW?*dې~ ?=z?t?=á*r2lɰ=y .k`?n\B= ?}$>p奄g^DB?w{= =Uv^EL>-?b,Rƥ?J>>?Wؖ?ȿvKM=I@@`,?E4?tn?o# <#?QOj%l 4< wg?}%?X⚿th=t=-HO*v- ?9A>X*8A?ul?q=nx?f22 +=$=N?O" Ƚ-umZ=Aܿ_ 0:?_?]bxN?P?%U?8=鼤?q/ks?rb?b$(?~ ̼ "?6< Xnv=j<?J׽]?g$?cg樿mܾ<p?o +B?e$P?r?F=jXg@t^?=BqAIT< ?=[DA>\ vm>3#O?#= 0=޸>1.=J?*>\=>=^s=آj=HYrF>#;@=m=\? > +!?2@=ؿtSZO0>@>oM'%=ԏ=z>P|=P{cmt\\?od ?խ=;=I-cL<4=/l?h>[ H=b$?="Aߒ&"=* ??pi1`=ZL<8=R R?=Uؽ=ڂ?+d?RP<e?}rp?=fH@%Dz=?h?Ƚ=M>"Ž/ŀ^>k=*Ǭ}?d:转~lJ,=@P?5??;"=.DHV p=+?r?_%0=}?x=,:9!=܀s?l??&?ij/ =?N[?qB.T?q%?e=#|{!?渿=6#DWm=M`?v(??tY9y?`~E? a;?s?99J> ?bEWjm`}v &=2=)Xx??h@4?=hl7{r=͐=м `?+(ӤL?J?[9%?{ ?p `?轇w( z|?=?W;?N$?iG?yy;?eX==||b>a?'J=R>>Q=`¿_E =[P=He?r=ffH:>8t=b>?H5=>5g`=<?> 0bYf$%V==ϊ=S#,}<<7P?y3=Yp=U=P=)7dqL ?7??u +h?9>?$??rRL<"?.==bb2L==xs??{s=zsp?Wd?n=^DSrr??9?ez=( =u2?` -?N}k=S?w=?b?]h= z+kO?Sy?wXr?O0?|9.D iP@e?kyR߼?<*?T=ڶ?I4/N?p??ܿ֍T?6h?nĽvGؽK?Z?A@,]5=1x?ff??⿉_rzQ?u\:Hch?t<ߧzCˬ?~-t?t_0@Kt?XJuI?DrQKBξAH<ؿn?h ==*9?Vf=K`<<=Ɗɼ>O=ҹ>7*K=L;K?Yr'?V5D>#zԿ=u?~j>?J?y?|Ž?z%?nz=}Pƽfd= ?SLP*VpT~ 0B]}?NCνпqX=6.B >S?龡4?>S'?aN?Qn ?"y?ySνkhx`H%>0Z?tW<`= ؿXս=?_?4R= Ș?8۾4j?0- =?|⿄4ȿ|>"=<о64RLY?l9<Y@?~?_wrd{S== B]=ěf=7 ȿI=L?^t/ȼ?k% +3E?}Fn`(?i??z?l?k??}<пj稾,аV 䶴g̿]*&?uB?`?O⽺@m ?nC?~Ӆ|=?vz?> cR?;%ܔ;$`=L?[$6>M>!uT(i<=R<@>L 8Tk>VC>&d? mn>8[pC >s=>/z?>F뽞?x7j="0нb>d=bR??= \["v?°=; h?v>i>)?d>{] +<.=X=$0< ?ox=J?m> >>Jh?=k1Qpcx??Md?T?L<о ?{F=K=|^ྜྷ??sí?V߿*Qn<ՠ=y> V\?֍?~]?jVm';?o޽V=I'`?o82: ?5`?g`s@?=<@~$=VP>?q>?c?|=ڼ/?Joh?s?Y?hqֿ|8ɽ(TjB/ ?G@IP_(g=ʈ(<0dֿp7A=u&=F?J5=߆diKZ=]`=g=PUC =0TQ?]֘={lY,ֿ]ֱ?tןE(e<=?#D=UL?t!2=t<.?nXrL\=!?<~=H?}9}/zG?{= ` 2lļlJZ?^(0A?g[;o;qh?|jO?.(2Ľ{?G=Pད?cpU?g==yt?q6=ND>!7[6<㛰?Ŀz2M?>&?_x)k?0?}OE?|ϒ_>Z9E?Ԩ0lm`iL?x" =m-??𖪿?q(?38Ęȏ]D?yK66f?u)?c)@PkQ?h?\6?༂<߳?H05=͞ +?v+3J??hRd +~?aڤ=(?>I?`?h=JpuP?Zp@?h?SM?dG?eYwh"=d?TξW|= X&>H??i=e|X=]j?PHUm p8J갿_B??t>?vj>Iu=[0?#%(jjf?!4a=N<4ȿ%o?/a=8?9.V>"C@?{>n}==0ZJ?v&?̽y%=*q%b?q?tY=}hyx?v;`}?R(D0?nN=P:Z6?^Np"=;}`@6: |=)?<6 0\Bm?=/?x?E;U> gT?k?pP_?kA3Au=Q?q~7d轫hFC?k?]??h> _-:Z`Sp=޿7mM47<=vl=̿}?~⿇<*5?|bpr?d=D! ?Bp????H@?dys< ?0?ZjO8;@=- nY<3*.9!O>s?j>O-x?c9?Tʿn?&7C?928?~=1T?S$U,n?WN͓?=.=C&?"?O?;y@?W󽡌ȿr⾎j?y|?F[:-=uԽN=W԰?Rz?5_9v`>>o\sXܽv< ?xF?j?[;>b&ب=/bxqݻ`x>=NR9v f迄<|?0`!+`V!y<K?R@?\@l_1.BnC&^Aν?Uɫ?c|L? =ب?~C==q =pԽWM[xF?mH?~,\)?Z +?n*?bXKk?`|j+춐4<~运"QH?frN?|ExW\?|z _ y?%E¾?pʽ5X?~?q ?]?J5?ʏ=6ƼP?x6<?;??n?]cW;+='d>D =(??~>Pd=f[]q>F?x3=G==!t4?tV?Xrє?tZ@A?偬??=}z=Fl??oGی?W=%}z,?v?u+ {?==U;`?_a2=lo`jh;(?|=ʜ?G?sjcBy#?=)l1(WV翌3x? +Zpgd?pR?x?qѹ?VQ鼱 ݿI,?c^>e?o +v>d?_D?Y˽Q + L=x:A?̯_xp<?;t?S6 ?PmJφ`=}skĿ ~ӄ.¾M#+ژ~?S @?)dl?Q?/3޿{U?h==p;cʰ% ' +??tIW? +~ƽ~ ?Hlȿ% t?0x=l?_οxľNbl7Dh $ dp{F=?s?UPy?9etx*<,(;?:p? ?sȾwVl= H-?QοY`:lKKؾ0 ?j~J=?AQ,k M.G?L<(?`Ā?i5Bnwv +UbΦ?oоtoތ ?1(c?͆<ߞI?2|?iŻlc̓W,8?O-$0X0?c6Dш|=B@E=l俉 +|??iO=n4G?~큿B}4t(%p? loȿ?O;W?a?'/?6>?`F/ilԽ?<> ?jD??y?OE0?YվIw¼@?b?Eҿ??[c?8=?h=д:v?cڽ3R?s ?N- >@E?N^?>b?M7 %=?q?H&?`׿WF{p?L˿Kw + ཌX?`| |=|~?J(.lڿ|`v?Q:kg|?5=Vt?Vr??_?Wqn?^"vBI +?E ؽȽ"\=8 U"؜X,q߻]߀?1꿜$1yMJ?LZ?g>0cؾ"=.b4=/<>%*/(~4Ἵ@=ۦ?=?_aV9w?qi轲= t?M}?{b?O'`运?Pyыr?(x?V}Ќ1}X'=F½b?zTN9oM`ZDh?n:lM_x?bP[ԽVzYfpe;~?9Q}?p=?\p +Xn^?JTԽ}gru9dP.z?i +\=֨R~?\?8a<ܿ?-$x>9~,v=|?>׽3v4' ?d[<=Cdphwbc?Y?=rv?w#S\0"o4L^??{O?b.?/Ҿ.~}<;F'Ax?o*\ wܼS!`1EEx?2p?ng^HF?Qb{%?B_'?ER?A#?I޿'{26Vɴ?_נ?d;¯?U?E!]t ;8?ٲjN?`?bPUB.?_4?0?`ַ(?a?u/?f?n8c?Jժ YՔȽ?=Sn&FA?{K#͆ ?#'X?k~@?l=ʽT~i?B3=_;o?N==U׿kxHQ?s77< +=Q콍nc̿T?!⿅y=1?YZ=%@?%="%=~w Ͻ?4J]?tԾ.?Sx=yp?kP@[=?tl?@?^ ?c?lھh?mX?٢m4?]=[ =H?_+[=-r4?AŌ?nDƽ?=bz~u +'"r?y.~?i w?GEV?ckzf?:KZ?R|0?\dI4 yV:q=s׸?p-S?$; ?Y?c3=v[=[ʾ$OB*X:(Xn?PG8]0[b?+Nt쿀u?#;ڽ41?cftd?d?(Ϻ9EV9;Ұ?N楼ܽ0 rԇf?yf?[`G>ԾD~IH=Et;s2_;Ҡ@=ɠ8V`J?Dm0?l =ʾ$=W- =?6b?΍2yL?>]=[5=={F2!ھg{?ܱThz?;T.ۀ?`h=?VwԾ?f?޾vwc:?m>m?OAbz?MdJ=?Gϻ݀=ȽL|fe6?g?'=]4F=_⿆3;??Lχ_=A80-hd?e ?f?|使yt $?X+?yBBs@s?VXP9p?pQX=ea3οbt.?M*]< +=??ubl?iw?t)?PἌTU {پ| T?QM >^ZJ~?T0mGn0?n*L+?b\nc?U$Y f:?^/\?vw~g;?9-bP'?O?u< ?~4Ĭ<@?6e7%¾#X=S?ܘn?n?A伬"$P׽,DDX_=o[sw?\|@L?Z?BM>?Tf\?=huPoؽ!}']u??m_d'ɿ$>T+?yn?ot?=?t?: d=BŢfj+#?R4x?TZ[V001?i/먽Jz?= Կ(/?OǫyfD`:R=xQ,kƿ50=-@?UW<;F?oe?J.?Bha +?J|Ҿ~\?ᒨ?u!%iV?ly?bPiVLt.?7-?W6?Ǻۀ?[.?]o>h*TM!=`{?4i.[ԿMY?C? ?pͿPD&??Gp=_R?_rv>, lݿY?-J?~X=Š?QCcWJ?a?|yM=Mx>ӽ?F>1G>@ݾ,L?vȿAr>:?D@;U|b}$H?N:=D輇X?#Q??3?V䢽̢Z$r80#":o8?Qo?VNqRƄX^?Esx_C~lROv@о/l?~߽e@?*x><>`߾hp(־ru~=ڿOϽ18)?4;c40?vۤ^AJ")?l&8=' <Bv5F<0?K $><&P?Hy<=I&=eA ?r|=a?jʈ=ug=u?^=#"v<=!H>݀ ?]?y=/A?k  44xm?YO?c;T?-[?pu;?/F> P?0?w|>ut?~"?UQ=d,?Vٽ u?A=bjvåݾ?^D:zK$?QA??aҿ{<pLּ?Tu>py7Ï?5H?K + +п-U؀hdT?-䀼(=$fNԼ?M(?`?c [?]&F? U"?fRdV?g<Ȼ4$;Ð=Z>.c.Z>?\?odD?Z~=?g= +>?0=f 5?$t *@?<+h?S?*rz?6?bo =_Kv(Pc?ej}<06Oq?o??vAY?wgѾpeG/?Nc?bu +ACɳe?E> <0??=?¾:_=~h?[2 ?Z:OMh?TʽrWXHd @?A?j?p?w?q q=x@"?l?8? +*q?Zf=g⦾:x??M=f0s=ITF Ǖ?SaybWL?ljD?AӔ?rV?Pi[? 1;律kp=w?UB>/`?*D?a@b=aT=w`쿙=c?Jl?=&H.wԾ`O<ԑ?}?0kӼ +0Z?q?CaK?Z?X#i|2rcܿt2ԠZܸgB?@Z?G_??.7j<8xO?os=b(t?Mߦᜈ{r?{?O|ؿ"kqFq?K&?gwCھ2?'T8R:7 m=ö?ؿl ܿ?,?%׊??2==38wJϾ+n!Ծu+?xkUR?M=6^?c>A?^\K=Pi}6uOܿ=ڔhY?ef?A" ?e=1g?Y/¾|=?P?MR=$=SL;k?ؼ*?ܒaHc#=V$T?e$?G_?%f=׮?4q#MH?Du#?>'dqzkn sD>3# ?fk?HþÒ*F5ؾ"\$ڃtz>BW^- +@l?R<+@ߟk%?c$羭?Z7>DŽ?8`?or^4j}NfӾ#)?HM?JΞF:-L(?Qr?D`\9'j H=5DR8?-?M87?F@9`?0$p?V?+  o?4(?O򽋁?p'X c?az?I^GU<?/vп{L?+C_?ؗ>.?Y`I꿀DV~t?@r=v 3d|x?=`g[?t=8nT?͝=,?tz nsA?^?a?`'4^AS\6?^a?sS=, ?M?ƾ.1 f̝4?T[?iLfI}+ +?CJ# H(z?/?,t?sA=LE?Kn?*s?F?2׿o? d zWXL9!'F@2?'0:9Ru|<>@?,y?p۾c^u<=%ƿ!?iѱп ÿ? _C,?B?_D=$ؿ}z?iUi=z=p?rf?]c?4u̿=Em8?uQ?JZ^P?J?a=I?4S`0?H~44?d2Qk>?{+h?憾S|>7=)?}DR?Y$?~^q?ɾJ̙y$8{G?Uo< Nd?1\4<~נ?c gq>忞+x8ZS׿Q?^TlB[ait鿃MU }?wi۾ã?>J]?|;\h?p?=ľ~Hg?_h?,ImNYHc@ +?Rl=O?e?*p־"o??"<迄?&vKbt?@WuuھxY*@N?Nq+RZ0o]x^P?if?Sb,Z=?F bʐ?9?&8;E?G-i>?F?#kۨ0?_UFĽD$?ڐ[>Wq|?0s ?/?1Tp?FO?q*M +?A"_ʚz?K=;h?^21X?.%(:0?E0?E??I?IP=?|=nO7ļ֐'?󒿅B>I?$޾=R瞚>S}J J?ȿ?-t?k(?}`2?YZjd=RD?~~?wcC@j?8}I44b.sgz=={?lƺ?p=8=>^^L8?=ĽᘿgнY?vz#@qGw 0=F%@>gu𿎂60Q?h"bs=>aR/?hؑCB]|c1?Jy=Z?=+j[V?n:*=F?yn=/??eϿte?)L2ic0?=?Sy?n/??f6w>=mT?ZОZ,?4$\$\y1 [T?3 O?Ǿ3۾b=,A49?=ֽG鈾Pmƾ%m<=q\=Ŗʽ?kW&?5<0?JZaW ??V9?qo?=?CHt!nxDFo?d?gp?D?i Z??k*h?~F5j==Fb??+￞Js~V@?*I?e?.%?NLjˁؾ5?c1iT¾.ſ@?TR=#̽r?r} ?_Ϳ .=_>ן={4 ?f0cbzܽd=ۑhaE ?l?^0BnB8N>XCjxkY?5`?8p?v_x?DI?*?J\?{u߾" (drȽ?r?Xcp>&Կz$R<84?!=Q=Y8=D#o=86?Y@?2 W\wRsڿLX?ll?`R?Nqv?y?*h|E??F:L >pF?xP2?M=Z_0i!nDJ?Z+q|9ͽ6>݊z??7?PR51 ?Sr̾NŽ㲾j/?-ӽ'!*<E?=kҿݾO!1;I?sb؂P?N>؍=&01j?NT?C?~;޻:˼==t=Q?5Lpu 9t:?A?j߈?PcOu?R?n/f?ȳ4c?/5\;h>yneb?lЁ÷uP?C^>|:=u?b}ھ>0bj̿eżQ\h?FCV?xs?L\To;6ؿu<@|Z=Ƽf^?i郾LC< mŔ?K*?qo`kts=J?s_~$24&[BP?$= +??07 ?w޿i:@?AX@| AN?i1$s?g$?M=ƽ;α@Q +A.A͚Ϯףܽn?Op?ik?LC]?c,V=O8?,¿z?:j?T{忋uK??'?!?T.?x?X ?YQ1"1?|?Hx(;}?E?KF?G?e{=@?A +pƠ`w?-_>t}?)>Mr5޽@\dȼq>S?26?e9?`?d46w?+-?RM?]߬?j8e?I(g/t`=2,=94?}<8\y^ߖ?j;?^U=ܢX?I?DI?mW?nur0=3l?2<.?{b?F =俖C4]?C?W5X=2=_8?SEs?E =?QM=L?Wⴾ]A< ?C3 hZ@?Z=Ǝ?BV<Rm@z?X/? lhl="ĺ?,C=\f?΁A>ՠ^I??n<?nK?Nff??<FV?HJ?>QVHO +>?Hē?P?A?|75?%\1?&>VBe B<?fz=A t =UC̾ ~?Qv=̾H7j d?xKٿ?<TШ?rL?:R=ԼD=wcɶ:?kϷ8'r? vxdsM?p M,e }C/0?n=фi M?\yW ~>$AW+v|?P,> HV D=J?T?oP?d?i);e׿fֽ?ܾdi> aҬ=Ծ?xxiνNEpޥ= +?=ukʽAu:?=84[tD2`@?K?jlE?|4lJ?YiֿFGģ>1?Z?\!Z?zʄ=:D?Nw_?x?FAw\g><(?Uӿx?7kl?Y(=V?);?mFᅥ\l(=yz?rրaֿ}нɌLK?=4L?dkǿ/l?f7?T 0=?f?`K5K⿝J+?nq aD?t (?Ajbh?av=O?a?E>?Ombuh-?D&X=̃>ZP?&|?^ތAP8??M?:$=t(ԽLd9L'O=8?dbn.?7J?7{r cCJ;?|6s9|c 8?XX?h~?F~C俈}u.Ȏ?<6H?Uξ ㊽R?[k=mEGf?l=i$?uo?yuƾ?31;?=츿Dn{>O?nLxPr2?.$q^?z2:?xu| ?9v K?(or>j`> 8>,\?x?bQJc#uWiw=Rڿ?=~>$㘿ҿk>u<&v@<z@s#=y.~??AB?ki9k0??rx\ӳq"?Rѿo=NL-pP?Th0<>pHp?|ÉyBcdh ZT@ye&=y 6}t?o?dԽ5=o8?U?^Ț0?j;``i)m=SbxEd -3?t&r?GB?SyQ?FY\?A=Y(=AT3\?IGF;澓@;"oG4G?9BDh?΁GAFA26?HlB?=tch⛼td?,*R=ܿ~?aNq?VwHG@#Xx$9v?BŮl?Nz?Py=D?S>wIj1$?Iflp$\CN?l?_8?>?_C-'5-?Y6rľwz 6?V(y<شG8G~P?y3?gT5l?EU(=.&0' '̾@пC?-ֿ~1 +?;[g?taDؿ|νz@?[o?j2b=0r=޽n?wg?Y?}j7?cҖpEPAP?UȾ,@=8uoC^;̾WNڬH$3;7X?K-F\;^?N?~7?)bX?N?u7̾2{?5D?X?6Xd/p?D<ɺt> +ѽsy,r81?N󿉦|?k#?вo꿌}?-NTb?n+B C&i@>( ۿ~=+?^1߽b*?_?}G?}>'ъ=w3?p=NP?wUp?Z5?D˼I@?$:?.?9&?K?]Ҋdb7&ߐ?|/?!c=D?L?fKqz>Y?*ܼ<??8 We?Ai&?Uþ :{?Hm\0Ls +L?Q~N;迅K?``|=UP?ZI=쿔# O?V?S;v?D?6?bj|X '؝?R?yr??b;;@S?X?qbWH?Dw-ќ?j@꽚r?`?7?jt?/Fϙ>yc ?F-<*?\?~@=H2t?EL=?n?W9^@G2?N(?tܾg&?N/z=VL?T=3k ?e0?e>?Hu?Ѫ?>Y 1~ 8 ?%?F<,?v?UD~||X 3oܽ-?Z ?[\h?Y>,?ORL&Ծj?\9?Mu/;<@?S;?EAp?r ?T8?m;徟SU?0g?4&)O?EW=5D>1Dx=: y?;?@^?$x?_>N{?(@6G]ʽ?%xu@ #6Z_?Y!MdW?=t?F?rM?)?iB?H|oL?U?m?h +D8hT?0T ?n誾@S?Mx?hjܽ9=鐽.ZzdW/̻?UVsd?a 0;UD?d`X?0=?p }{= Xs,?s׾Z,a?]`pF?Q$nE?Q?YM?k{?nV翓u?biT_޾ +?Fjy? ?Ag=DJ\, c*5ս D?jHؾQ?Iu?H(q ʽn’鹾/2H?oP?4A?tM;?a= {?%W??&?0пE뤾1MMC?LJ?w ?9w/Yt?jK? x?Me?|r齖?cT>.B?Z_y;B+J[GTs8<( +#;o`?KCҾ”"L7]@?.4Ƚevp/=g?=xx=<< ?: `?C⥾ +1?h?F# (?78yO@2=<,?s;E`횿q7W.?X?z#~=YoIJ@?S:>NY,b?m sa.?T/?f?`l!?s`]@mP?DV=4}?8҆HX^d=hl?vuy>:?`?D:C>VA2%+Wt `f=?)ᗿ{06,ƾS9?= a(忉];`?MMU=c8ܾcY7J?U:T?鿎t?L/*P?5?LHļV_CMy@+-,:Q<'(8ľh['0ؿ?d>0=EKؾ@4 +þ ,C)}x?{W>J,`iZ1?\&L?@_?U;d?#У(g3:VD@46 +==,?SM?:|%`???9M=俓&>*?' ?{x>Tj?Ua?zȿHg=Gϩ oDS?Q=?`?\=ý =h?f'yD?PDOžT6=2?O?7?FʽԿ}?1r@?q\w~ ?Jÿj\; q( `?8e=δ?Lc;~񄾁jk¾5L?lY;gJLi= 举?=.S?\FP?Af?K?j<;@G=q?R?Q%q9P=! |?,|xn?JӾ{1 +Y*>oj?u5R]= 9`?Ry?f2k{?]{$]%?MտqFi ?T| u=l 񿑍޿h[&R?ca*?m7z?"z潛Dkw?g?xXs?j?MޘV䌾)kڕ?ǽ ZT>PQ^콈޾$=?ƪOg?rHt{x6<i`U`??`i-?G?yt=fȾHX?gq}? #?M?aJu] h!ľjs?aڽ?<&?yؿ2X?T=d?YIM[x0Wl=lP?8&?t=XVн?xEX?x1yо=Z?1J?p&=п 5=0~ZʘLkp?b;߽r>9ȿ Y +=c?O*.QG[?Ywiz?Y?d?¿y.'cZߋ?l^p(>=z>a>8_ Lb!P?sU)?xs?R пi+m=?jF;>7b?O rܾ>6=v]T?/?<0?cS?+mP +}mc|+;U@4'QW?xd=85\]vl2.\Z=nLnh?92U==[V"?E?'"?4 ?F?#B?f:?.ʿ\1࿔&?[X?;ɾ* ?]=?W!g=_ɓP?D$bװ?]?=f?'4>b~𗐿S? * ?:6?M;Р?4 ;΀?E7?3VXaݼ?RQ<rz~?'|O??g7?2?4]㿎OӾ^PU;kӵ?C?dP0)㠾]J??I6?[NN ?9=s?/J?zL^@i;?C!?EK?ԽQ=yyo=)>C m<7??L<޸xd?)??f?>C?q +o=J涼`v?񨿽F~u2=?t?qFu|1HWb[Hؼ< x)Pt +"iR?Yժ<Z~)?V&?g|?t¾\M?%7?v=G a?U+@1?V5CW?YLƿ;ǿ?}eAξB VI鿄L7q\ҽ?H( A{=?Uɿj?=/n|4ǀ\ 8=_tP=MCI}?=貾τ=;3e?\z?D?:tȾot!?Hh~?pQ{p?T뿀?,!"?7D?rkv1ܚ )?g9Q䩽&DǾDDz?7#k,-S=@P?瀽N<^lZ=\L$Pо6Xz(?3n0{?Nx?hп,!W?!NjC? xіh?;F ݬ>L2%.iޥ?o&; ASh=ge? ?o 0?C2~`?y?UrF?Rw?L=?DܼrQ?acPY e^-{\?r?Q?c?>D5R;ʪCsM?F<]?%xN6B?7Wrz?fhӿ?`!W?V0} +?YPgBE?V̿K˾W?Y,?j)^ftf?NX+S݄Խq?Yھ?7]Vn?i6Kcj?i╾8k`I?\㘿b?h?0$>3)傼sP?(p?U?00쿶gOl]h`?BY?oH?7寲?HG?W˾sg=P?7?xrʿ^0܃=5\xdɿ>VV={ܿQy=$?R?e"z]?Z޿`V6?DB*W|l>)NqMh?xb=HFq=m(PkK._!d?7鴿t|i?S =7?eO$?Mtz?'6o0? -HP;@?j.y)C?Ry>=Wn=n?Uz=mO鿂fe c(<0r|?o:=t!r0l>!<U?p?S=?vS ?ൻĀk潤F=E3=zT?M?IY,;y>?B$?NZH=sF ?e>tz?+0p8ؼD?k#u<]l>4ې?`xܿu5?fD?O? ࿑6=?iS/#yMbe~1Cؖ@?2Խ$>`r?ui*fկ޽G =P?@O佴hq?W:*!0uNJ<|8?I޹??`F?a<k?NB?2ò=4?a?L*.,?:ͭ\ t0?M`= +??]D?0Y?Y뽸"?e{?4 +^'b?8 @L[2Q?J;=?b?qR?WF jJF]忀t?De-T= |tv@<7@P94羁͂6?B:1db鰿%B='T>*8 =_&?zN9@.CȾFf? :b?O7l?tc??P)>78B?DW"#~ϾP(=ʽڿzG-,V˾v{-'oV_?c!5Y?I翁盽}=Fh?CNvr4 ?d?P M>VtQ黦?@i˾+ؿ.o<@n"' H?>=<3_վOqؿY7o +@u;4m?0<4?L̽ J?&?}(Y@<%p?)SԾ9j^?eC!$!W5 9=,bL񝿂z\I[E*?kZ}ھ5o?~P'}z,Z콝$?j=־s0Z^w轖v`?, 8?hu5;@J>?KkϽƱt3K?h|PT?]= /:h=B^? v +C?2v)?WY@?1;Hp^T?#<?U?gM%:M|cL+?t˿qC<?C?2Wj?<?M^>P?o6?E?^jľ&jZRƽU*?:hS"?\02lI0p"!9S?N?P`[?Tda?举!BJAۿeRB??L#;`qm{V?$?Zy?6Vxvx?UQr?u ?5?%&F?5cHs0?Ok̾WseX?ov&M$nתF ѿr n?@?]c?MĽ.=4=,yO|?*.?ݾeI q?BAR <r?w9`o`>%9ٕ8"k(qt?n?>N58(?0ֽ`7<|Z?E8!KI>E0?V?L?qrt9<1?_a+j.R2dv?꽉`j?;?:wh쾂E2}?Kn7[? >x?V=̍^Q|z?T{뽫'Ҿ2>?]?d=⬌?R.?9-+V{Dq9?y8[1?=> b~Y=过I ?UԲ=Wؽ <"о쉕r?e?g#nyD,Hܸ<8=XO?tJ?rA?D?kZ^Rh?8]<?wt@ {i?l&%,?,H<PUhJ=3`!ѿd-=6?mU?k#оVP[(h@^?`t ?gRq|Bܨ?Ly{?e?gAY70?/3h<%G࿇LI4\'?am?Qx￀?[#7=6?U=| ?>,ڿUO?jrxRN!D?Aӽ}< O?v(H ~?Iy R¾ +8=X?8?qAf???iPN o=&L?]W@?Mg/?6-?< )?3??Q5eT漀?v}?1#>?IK?7L:/ݪ!y?*kۿo?Vv2?wR?R?G=T?MEnJv6?4?E=? Dbc.:?&= he?]^U;7?X?R=z=xEص=??EB>ÿ?Th2ֿ0v?v~?}f?qO?k?oՌmQ?gnNi?Uk?uN><(<о8> X=?C?%?&D=袾e<(h?b?0E?c?4B?*|@EùS4@)r?x1?Y̞m/ ?l?u7D @%tF8 O>k?H:m濈eWGo`< 0yS?-V=UCP?J=='I?6b?^?wj<%v`X,??\dpkD?lP?ZP@[?SMl?0?ma8?i"?Ϻ `?? ?j?<"?jԿhJ?Ñ(5f?3?W֪=W?m%?x2?Hƪ~H?*b?dվ}r-=kM?o7DHǼ&x?.7?bV?=H]`?DbB:?Ie[2߽??#@>BĮ?ф =-?[[C=u`뮽X˼=t?N ?eaHzl|*@8N?E?qV5Rms?j9?W4?I~=?n?L*zZ?!?u`S?JM>?)%*@࿍,K\'@?SMF=pn=VھvIRTP+)u;K@?< Ơ0=lŽ5 =V9=P?oDսqxF꿋?l=n?Y?=Խ45dȾ+" +.A@B#@*?rܾ#8^?MEtQ?u\?Pq 9?;~<숿.?axh?v> 6?=/T{v #i:?O?o.V?f2Yu M ?a-K?9%?d ?5^vmo?T: A?P2?;w;Ŧ@ʳ?Ts⿆`0?9/AA5?S PƘ?jGSVC?(O%p6տpf=_?`|VҦֽ_N?i`;p?%TԮ?: ɾTP1XpىྒྷfZ?Z?c z?PND?͢忄\6+8_>Ȫ==6=d=9 ὊFn۠@3=^¾W7̿|B?b?ljS?^|k*Y;M`GF=N?-f1.?q'ƶ`3?$k߀=V?p[(?ȥ?]!?k ?<*?q +~t7n`?Tx,9?t?E?C4Nb7޾:%p?)9pt M@0|&?;?R]; +0T=|Ua;,Ⱦ$<P=Y\6?VX=!g@?0X?ip' +Tj?r?AeyvL?E7-V UFbpdIX9?P/|?L^3G:?9 <Jb꿎lmؿ&S@?gH?Ke&=Xz=|*NuD +Rm4D*?ӿvD?8???3 + Qݴ?vO3#W=?0N?MN[?W`q@2L=gx?$Bp?D5??qL6}?:?T)8?+?UP +NpsDAXl?z-v(뭾>?R <47>6?/"?|?Cgc v\f?Iþ= B?nvz=pLljkQ H?SY˽@@? +$&??4=?CB?޾awJ6&P=U=>=4,?X(`hެ?T2>Կv?Dkx%Ϳy!ֽNd$@?W=/>?qR6?S'=.=-z-?.]M:ٿ672;{L?mQ nAb˾N?Ne|p>?o'0Nz`uc}?@(Y-갾"D2?Pm"?Z,  ?Ế%;QP̽bM `:@0&BU.?bUG?5 +?2X"?P\D>4< XR(8d?MۜM?оfG?9?L 6%Y+O ?J*>?mֿ s?~߽,=r?:j$`?<h=??F ^n>[NЮCPK?QĽy返Zx*t?m5i|?Ic;-ɿ:W?:b?a2?]?iq?Fqɼ6>2?6My= m8𿆹UcxN>Ztg/?Oxrw_s6=jI?uZ~=31P?Qm:#?6?Tf?LY?fwv? ot?^d?Xi@$?U.?9<?Ƴ j?U>o={P8?5#򽞇8 4R +0 +=ԋ8?dP: s46?a}q?YL]ȿ +#궿n?x+?f?Z>%8?v,ͮ]lv?:>=>?JC쿏B^<=?xNxɐ?^2y.}?|fm?UaQ= f<8?T낿p㾾r);;J  ?FH?9.)(H?y^Ҽ> ?N)H?Y=pmu?8󰾭?ue?U2X8.D ʿ]VBsL?eꀾ!;^u0\`Xdƿks\X; ?T?T2?3C?O?:?>?c&=-4 ?CC?t`e\e.?OlV>#a?-i?3ݾ?sݗ4~?`?G?;νm;?!Ǭ +b];],V#?^L/ά?*pd-㼻2p??*?z |{4`pCy?3 >]V|>"m̿oB?\ +>3@}3&˿m48e4?S^j~s +- x5;le1ؾ('q?+C?oֿQ?_=/?P Ľ&6࿳H?B??_Ewt?vԊ?Bн.n;9?^{+=ֿ8 4׋Nhп{Q'?KeM?PkD?I3zۂ?g⿊T?|;b<0=6hGmSQ?Uˏ?L?귴?V4ޝ)lؿiݿ=V?.ƽ짜rb@c?T?xҾ7?Rvs8!:?_y>; ?KJg{~o$ؾ(3h?)j`l?]Ϳ.?~?-pw ?l ?3Fl뾋>z=.d?qglA=|B5Խ&;d?>F?eY;A 辢ӟ5?`ھ*F?8$a½+mm{Q(,3?|?RF@]R,@BKU?4MV=R?)jݾ?\󼣘?hdH?L>" %J??ў{{Ct?"'p?H3i?p1!&꾈x»?:1޽?$ Q?tl?E9~$R@CU(?>usƮ?O~?E~?Z +(V"?5ʾ EپRr??Z@r1nx?[R?0?e ?x7y[?^by=tX$ʿh?Q?G? 򀿆p꾊j>1.<$6$:?Wr:?[T?%7`?aV)}n??sg?_{v~6M +?I_nV~Pr?6deS$濇Of?W4H?`{]>Z?$J@:eAqS@? q?_8o?aw?M?Y?á?r?4?faD?E>q\tŔu8?4 ?LXj?* ฽v?ߕ~>0\侘ZHRվ +@3gIݽZ?;?t?^4h6?L bH֬kV?O@_=?a=B?E(?d}?rr6?āƾS=?h>A:K(d\d?oWm?1=?xR<6ݾ帽?x^1?4x=G?_7(?}C?C.> ?Hh;a??: T֨`J_=(@3ǻ8:*,?jc?%qs=|g=w07?o0?duZ'{<È=Tc`<s0?ԧ?boZ?G^w2?"VZ?eN?P2)n2ӍNc4#@;`tArvu?½ +R?Iݿ?\$?Ef%3xpľ_?Q?I ?¾4A?m,IlVN;]>;=0zxX?<֒ȿ^T?)?KdD?k?r?#v=w(,{_8?Kнh?ڟ<=^^=?Ƚ޶oV=PTrwՁo¼@?TF?yp¾B v ?o.@޿r?>p}=?Nv=ഽN~?оTT0B׾̾#?Y6>?p?^ܿ|c.j?mQA|??m+Fx ?+D?ґ?R8p؞?B?e~w`J?*qAqB,B,\@el{?P?f?_=?3f>%﴾))騾h?\[M>?3=?rܿv=P;e$}?5B澏?믃:]"?UG?L1Pg%\ ?=\*+DԺ??m4at!??.:K?A8uA?<οGd|??DXd{)@.o,`kew\?F/"?Kl#?`B6U?zDR7<0_c*s8HC;(?_N=?n?N-O)| N7K)F<϶ 4dYt.Ф?ff;?Nj4/V"VP4:RO= +;<ؿn?v&=HƿL??h?bU2?c8OL=Pﺿn8?(}hZ4MB?YZ?:Kʽ`IQ=GH?HJ@}?|ix? qt׿/[`w@?(+A@Co&Bw@vB}+U?.?ifX?X?@?>]{BO1MM?[v=?^6?S?lпZkOϰc5ܽ-?WY@Bc8 +?DӾx?X(PW=O@>T?lzy j=;8?3*?OF??"{95?5`s(ىJ#@`b_L?[qb7B@@$gp?fO? +X??h$ B?E&=n,=J?=bt<܈pam9?}x?<^?.>``f?,`?_c2z}|;P Đ?Q?N2J*=WD?U1Ҽ>"}(?oz?9?0 +}\/0?a5?|Ľ!i?ukԧw;?(%wx娿G_f?:о_9SbȿR?\y[g=0H?E󿚝m~?ۿ*?.?NH?Zr@!?cw_cn?[oJ"G? ,2t?9V[h1HQ}xҿ^Fbdqt??9&>NX?o.4=c"H?2l$?O~:r=zAܾW?L{s ??6鿌Bl?EhC?:*C%?dl>\?Rj?d&@?5?fI#<#!?@Z?b9ƽ޽sؿ⓿hI?c3?{Z$?bϾ F?tA촽&= Y嵿 =(?)?}ýn=~PY>(p>p݆>y?h,?lC(?pm?M\0?LBܿyf ?Xr?N>>?k~I?R`4}I2<?Cצ?V?QwL`R?8 +Bd?Fh=D?Aoо߻Ԯ}h=ǖg);@?C?T:=D6=2???B{U?s'ݨWp?Fʾ?,5?Jؾ V?gɿc=?:ξ?SHi?zꚿ?^,N?<ʾ>?Pڤ}Q?BTkW&Ӥ?m.X6?7?+`'=%CJ?] xY?^?2ȪlF?W[;?9OΛ}h;\3KW)P?0?Fx (?H6F?zϿKu۬nw`?d?H?(ᾩ5i?s8ԽR?DlW??"տ=?/=?4?|cAb=ZW>6s?~o2$2 X#j?\Õ$?'?"1i?il?d5gs5u&?+,>ߜ\?R?zLo=|?Foku/1?v?T=l?l~?iN ?m?Yg +q]mk0??{o?D=8?dnU/O?^?:I?0'(?1-ܪY٦`p?[؞~?r??IHQ3=h5?=;q?3"D/e +#R?7@:qW?%┿w?ߍ?.)? <?#q¿b!?A촽̽inM𿧜K?90&6?M?,+Z;ܾ%^* ?JY<}pu_]???[=ZP?,ܣ*jocؽ#?Oᾂ\7?1r?a龼|%?mMO??|V@H.?H)tǽ?П(?g,)ɗK ps=X7?$z?ly?;?IJ?9l*< ?NH6,"Ŀ8$?Wwھ1XU?ds>? +?F$?\EwujS.;@vx?mI?x-?2m*z?z>u;aT-b6Ŀ*rAl#޿hft=L,?{(rg=&U"пdP~[?r/o=)v6?Tf@6|?z5ph <2i0v?{\ʽFZ?>?;l^s@}??]I ؽ5T?9D̽KZW?oq?;q}U?p 㿐r=?,?d?%]츎?33aо%Pa?~#;O=$&T1?E?T|o˝H󗿖?D_?oҙ=uuPs@¾)wJCPS?X =m?D?{Z?QeLۿAw?b?i<\=?FHMȾR=?[#n῏&]?NvN?Nin@G??L?g?]K?+`=KL?dI6-?i.?]}> ++X"X?BN?"m=4L?r|Z*L:{$ ^Bj?tRNֿ|>TO?e?F@Tx2*S54j>?BP64<[>d=\TU?w'?674??#E6d?66?cR???S?1vО?I2Ol,X?? ! /?sXP=.Vl}FlR?Hq95u >ʠ\,?UJ?Q< AP*(z2?BE?c +JĽl&9 ҽ4XӞ8 paaF{ =mK~?ld?!mtL-Cu= +p@-K3@L!ʵt-?7CнX|9=%쿗k؃lJ+?nvzE??'wzZ~ :?q ?L?B s(?Ѿ;Êtq?N8?&??}&>6?Z?I~2*FT?BR@n; @ ?Y"׽?}IX5? qq?Q Ud:E?D"+?b ww?G?z5[޿?wjgGb?Zf?J?K?;D?CQg? zBE ?fLNE?kz?=?iQgڠ(?9&ؾ6m?Td?[@A>BG@?k?O廽?; X?2?Q[Խ?ec?* +2?9)$W=:H; +?z+?f ?\M?҈?X +%6^ ~L?T :?E|>侸?fbQ?g+?#_ AG~?\.Z?_!o?L?Z? hN  +=1b?R2? +6-!2(6OQWt8 Eg=A LB@+?F ?#?G}ɿ^xmdj?IYz?W?`5޾r`㿅lD?G0ؾmh?n.?UG&9*?¿6wھm}=n?9?Q:?=&?+G\?82I^?p-39? +??0 /ڽv1d?`M䲾?[T=:޺<:{Hо 7?X暾e@+oZ?{0c98K +"?;\x?#k<{fj??8l?g?EO?N8s?3px2?Aw>9'џ2P q?U6|owRBؾݐp?DB/Bog?K=fR?\=VE3?4ᒾ$.D@*ԽҖ"?E?H+B?[Lή?4?(oDæ?2tp WU#=P4>[~?0)#H==\Ծ2'z ӽFF%p?x?0 y-H#&=`@?O<?Wzڿ"\m?= Z=?>&B)=}k/@>m/?|YSa?n㼽~?ce?K͎{g[?tx`'<9?]fkw-;)?g?S&?pؾQ +Խ6?7V=W@]>?=?>?SsZ.?HBN?羆վ澳SP]85:?,~|l?{L1-m ?PVC9r?v?]?$]R?1о3? ?l7Jd<$?)8?S\l?Vr?Q/?@D=tDXd?ZW?Mh/-?A(AカP_?1?"P޽P;r??=F?jKH [S@y?5|>4,W#L?+=?a*_y>vy\RjD@;@?M8?]?_?y@ܖ>9` =s?<ݶhՌ,>RujRD?#+ؿh?@Sm?EX@6js=4??*6?A?3?j?N[<ڠ~ Zs;?ij?GI-о1?Vk?t?f䜿m6Ip8|?o?e<*"e?F?~#@=i?I"6?? ?jLt(?5a=!+?Z?Tr:NnY~5٘kQ?Y +?G ?T5ܽGܾ?vcV`7?.Ƚ心yuM?5?{LZ3gF LH4o~h߼"$?KpV?\Td?c?'.P?d)?3 k_%IseϿ9aX-7?Q}풀3 ãSt*&7?H"<`BcdC1?LeڔIٽ 8#1(ͬ?K)տiJ0?xB?<0>=q?D?FiϽ~ ;r*?Vye[,Ͼ>美ي??:Ӓ>LT"w!?fN-= (kK?1ƽc?_`T?0>%?k:?BqR@?SN(?WmqȽt8?3?v4%?Gxo?,?)N?esFhpdM?u(?~ hx?lw?Q.v/?'?a5O*< ްfV?Q F?/?Mah?r?".w?e2B<􄀽;n?f?b?bl?/̲?U|澐?|'?^#3]oL?-0?Fs?L}?F&ѿGt=1?\祾! z侧)'?`8 ?2M?eM| Ҿ;`$qR<?Pl;q??bd4+u ]< ?A9?H;@Mw?bl˿@3S?h??hQT{?QGӿh9?6S?:ڿ{оCý8`? )|@1?$?<8?1= R/b?J}E??7zb޽R?\?O?.T ?n? &?5 -?&d=ʨ?LCR1?Gnp/?g|{@h?Vt?}2N?n/?(hI?DJx޿?[,\?/?lPk?7e<?O}?XBǞ@v?3=9$,hB?ކ?<8?Q#s߽׭l=ckο?4X=Ν0%G ??a'?jI@h?H,v|<>?QcN?y&|0Z?C~H?88è H ?v +6'=B?`V?@?7.M4?Wy?r?M=hre8=TB9V ?Nr?[/Ƚ=Z ="`?G2s=췽'hn=c e,=Ap<Xf?tJ= Yx?[?jTq?FKƿ ?E?r@W?.7;H?P0 ׾?j?_FfBWBo@VmV?1Qc?F?о`䕾??z_?:A~-2?Eپ?-?<<6?]d?A*$?<\?(6 +$j?A?>Q<^YL`Ng 0oG +?7 +ɾ +?xD =x俓ڽwZQ$?j@vdj8gCp a?f;o?[2GUf0[,sD?hP6|#(al-?f;+=>z>??9}PsӏU?_@h< ?4XM ?\vg?-n?+:?^)?70?|b?B%P=`i$8ʿ_?#V ?CY?]?F0=Ґؽ?YX?O<*~?UL ENrHz>{i?-g &T%6i0ktw?Nf{}@*ؿ1l:Լ0

p?0?Fp8S? ?Gg]qM8?( +? \G*?H +H|?3i?eDZ?R4?2V=ܽg?Rە+?5?^Xp +?j] + ?*u?9<.0 ;=T'df?"s?;2?+G?]+7Կ4?&R ޾g#x@?8]"??1bASC>tA0z?e{?.h :,=?VGK?[@.?gx?M}nuҿ?F7꽫<2;pteGU8?$+W?P!E2վ\P?f?9dw? q^=@:?*> o? f:?y?`YP@v?l^ս) =ؾX?XC?Znf-k?9 @G޿ֻa?^id?/~,|H'=,ӤϾpFk?h4<ѫp<.@@:?d}?CQ~ˠ*?Hm+=Q0?L?:>3uHȾh?=|aĽ?_ >K9t?K?Es?|T1}?eKaWf=z?|?Ո?b?J܂5~U*?;#?4տ?<#?9笿VAw ?(?edc-?i?"w`?22?@pPU?i??DQG?G9?!z?Z{J?-j99.ktN|y10> =<B#?Ep?@U3?Ux?ᒾꐽ"!!9nx?BC-V$?տ^)m h?%V?Sg?W v2c?c?З?3(@o7A.j\,&ā?p?{bWn!d7B?d}?a?9>m6"<%н +?nwx?3+@3pD=lؘH>ޖ۾q}?A n?eZRM:?N>hj??뷾Y ?D?%z> H#?;.T*?AP`?BY1yu?E/?C+>*;?_0 n.x?kɾ?Tc=~?br6=X!;?h6.?WQ5Td=lR*?W =Ȏ?:~?z;쐾f<?A !+/J??q罨3t?"}?ܹtip?)Z?Lk?لG?0mDHd?k&?m4?SJh╾ E +԰콮zh?Y?G?x|?T+?woi?Rҿ;0?O׸0???dI/ț$ ^?9!o?ڔ?b&?li?Cн/\?4#dv? x?7=˾-?ƽ^?Q(I-<M:<T?WTԿ(Lik4GUA?O7v} ??d6P?#?'F P?dv2G:65?\,;ֿ͞?Zl>(?9T?>=H +꿖vXq=vI?\!&?#??4ƿvcit@Sɽj?ln<<5F,r?y +#?;߆?/N^=@Cm?wӖ?ꤼX?,<)Q8yYpC<=8KRU?*پ#Ep̾Jɽb.?:ۿ!{1=!ľ76=,?AȦڰv?`f=]?J=X`?? B?CDq?'Ϳ=9B`z!֑?iM?Cʰ hh?=I M<,1&?BGn़g<h# ?8.i?aa(f?T?O;?JĿ5r?B l ?^?n?\yuY=J?qb<ԿE<Σ ?N*R=B+ܾD嗽 `>ÿs?A3?f2ڽ0,?V,?Z?n?1i-?*UH>)?;6#??;OJ H6@EL/~/*?P_n=V?<꼿U\#0?c?!$~* ?&q?J5?,A >M)d^uZ?X(?[F-uA?I.?mp??F;I?,mD]l?mb,쐾?S1?4?k"n }r?.?$?"}&;=>fT&u?vV+ +?sWO?j$;1x?R?z}>p<`?`J?*?Ns?"NhHcE缿~?׸i?C?P?Týgl:?8z,?G>=H㠾Zn?eH?mR?-<=[^Ŀx@?"?DAioq=.&Ck4nF?mQ9=s?8lq6?=)r!?Z$O4Bs?CF,?f*=:7(x?j&?)Z&_?V ?@Q[?WM?r?K-?jC ?D> > k٠?u4=.3Z?]C?P*?Xऽ?ܽ:T0d/UACsBb?4| )?]?p_%xy8<ߦX? +>V?EE +p?]<ȿݾU(?]?Or?yοuv;{;^v6:ypd?8ƼŇx?32;x?5SŌIt /@[U?B`?'`(ÿuq7^;>ƽuu?)e?_ <%xXz%a?NN>Sy?< 6?tnI}z8u2rѽ%ϾT]a?Fؕn;}?zuȾ"?[(|A`*EȾE@[o?/;?rpdҽ>?EE?{ܾWU ?Z*뿍m?J=3$?=!?4X?Gȥp???4k眽dnLG?BV?7T^t@^݆]Ec%Az ?.˦?H½K?=??K?`BA@pf?dB%?M/8XCÿhW?_F+?!U?QX?=侖G+?A|B?+?8?g\?؊E;f?Wbf?"q%{?D}L?FjxKj>?!,?Jٿ4d*?7?3:V?N6|?\?FڽtHо: '?=*8?ˏ?ic07?k¿ˬ??Z,=а=mz?: hB = ?4W?Q'h?cBlC:?P4?l/ը?!LEq<@?:z ?:f=R`?DL?TB?PF;L:?g?I||d?]?V.佭7޽s?(x=?9PI?;7 +W(?]״ ?+J?8bhdؽF0?W%=װ?ؽ6@D?*ZU?pK?Z +a?lfھBqM=P?7r?= ?hø?$=d@?Ft?Wj&?_?,RK[$?'BǾx?/hFAHD?hD?Q!?Euֿ_#?8=gso?HݛVBc?YG?2?Z-?\R?Vݾ~?n\w׾;@?9\?'U?>6?z?NN?PȾ0X?6hƩ?DD@pщApm?:=D2~Փ*?f2??n+?O=?[8+n?4 п VH?pA?V{ȿvƿEM @7Y?aڿ:ڽ+H=T싾+ҿV?.ڿƽ熴e?!!$98?bb?7?JO>q g(½niR>([??('9|?@+:Ě?]:8+?Lf?=z濘7?6.нT>y`{,Aq?o +?yw2?Lqվ5YѴ?<}#?)Խ.r%U?6ciཪv?ӝ?0Czry?CR?m辻?R?%O?> 4CZoC]]_ܾMq&}tY 1vc?qB }=3@P?-'cn?RT*?b?+/?8{h6q޽pR?-~ɄY?e\X`T?S8?=F?콹5%?TKs [㿓[8=Ӕj:{?J?:A@sT?yf?_F"?L?oz/?Q&t_[ᘿw(p ?Gֽ0T?Ft?T)'?4=;:C?SG ?0̖" ?T%?"J#Ŀ`!?b@x%s?PHZ,8zLh~?@?K ?!ؾ{ZV$?ڿ?`$b̾'?;uؿ'?9:?f Q3tP{N<;?L?%?\{ '?q]?"=?ؘ?CdAO 43_?;뾟?Z m(?(?n⿍T/?]?ƞ3?%` T?Z7??&to=<%bֽެpn1Ź? ?jοV?TfyspҌ?aG?8[_;h?ee:+U3NG?)߻WCB?:^Ew2H?( P?4]T?S6 1@>o'<9 ѽ?0zŭ?M!4,uc?@z?(麾WEbk@4?ؖ?S?4?I2R?&4.u?ݾY4࿍? A?Z`w?"Yzнn,ɿ]@;]$B?OC?DR?:2(Z0lP0CRv=+_?r?yCmV>ؿiTDD=h?[[B꿖 ?k(.?ܴ ?^]L<{ t_h?|QX?.'=Ab/'?XnW|Qw: U@?A=f:?*xep?NC`?-Ʋt7?Mx޽W"??V=?]g۽d?L?XK?<|X/% n?U?:C?tkoD-dc-?J~?ZNw*Ծ6Qg=>mk.W8pHؿb?:?3o?Z|cm0?Q2?Mؾy޽I>?g4-k?[S<RDq` *?^t: +`?*q:c[Mտ ; Qf XClg?E+d?E~CX?e)X?>'??]Jpy~0?U>eqk@?cD?;;?p>ڽn?'?A8Ƚk??5Nn?P>?|?ArEh:m?jX?8;b?1VM=T?R<^X@+SCnHUώ?+2 ?S +j?T8E?yJd)zZӌ?v[f>^>K@aPp!Y(=,K?|ڽ,6?#%J⿅g%?F?"<;ZuܾH?}1E=?Aؾ#'!?)OG?^w$pg?m.[>n~?7==v??ײ?,?G?qS=3QU p4AJ@+ A{@뿂SI?a}3?GA?C.Lb\ ?LĿ%)X|7\Ǿ&Sh?:b?>Ƌ,*?q?q?7;dVG?4B?c6lw-)??5rCD\0@^?tPc?Jj?U5?Ds>?X$0~r?.m?v6G?: ?#8<P`v?D?=Jq?edӽ;?z(4ྫྷν4p?1=I=?#@ܽ??I?F3Ok|J?_?[i\=XdrνŤ'~?zQ??q?K?c?9t +?W]U?8Ͽ?ܡF=V? ?:?e֎|W?ɵ?f ?6[?M,>X?K1p?tv?A[eNƾr*?M: <<򐼍c f?>=!?"?J>?_ ?[x?Z?k4?:?x:b` Sܾ)rܔ?@5>?ҔG?sj?eյտ{?8p>zx о- +Km((?T옾eHgMU>B ?D?H?Y3[?ydsYq??9sUB`f?I͟t?yQ>w?P@'ܽ?@?=a=7?I?2'? ~v?Z+"~;J_?rɷ?+aYfv=Ep2.?Fi?<]?(p9 X?- 1㙿fbן?ǽfz=N!qB;@1 ˼P?b?j󶾣hh6+?:wU=|#{輿@̔p;` bb?v=Rͤ?+<4 ?1հ?cGBUH/PO?B7jt??N)N?\˘W{]@K\&?.nb?;es?]\?FQe7{ʿ@9=D8Ma6m྽?bau?D?#gx?T\?M(??W>t1?о>?_nx}??,P?,C?Tox?-3O5Y?m࿍A/n>?C?&z?=>>42ynx?uNVK?UԾf6?T?'?]?Ps+8{(^X?5ARAP>Mi?<ـ?_8?:j:?ܫ]D6?b;n\?3?IhWH;?VD?l1b:(6Wgx?F?MJk?-4??z*[l{ЂgGF)?A?(1: m?`?T\?*b??GgQp?ZZ?cFl?$?>vھ'=vqsy3=?=>! );@M{4=(Ծ;IԿ6?Az%f?F=_nt?oݽ?D=-go= +?>8}?e;?X +?B Ȏ0 W=VA:>??T=b +}?5 @?TȿɽiпӊJ[?o=?=ͼP 0?1L?Ns>P敦?t@l-(CUC@?F=^x?F(!?uտW?NAϨ{p +l?6QؿV>Sq:=\˂rx? ?;-?EU?i17?E:x?(Ty?¾ `?K?n"%3?A۬??]#? B4nê~?!hl?q? k?P4=?hZbb?0?s a랾iyPCMnf?X4k@vᦽu ?E?*<?`+?&)?tNx?E歿yPu_?NdC$?]M>?M>T?FR?[{( ?7!ѽ7?>ľwڙ +?UK?H(Ľ#?7:ɉ?c,^U?X_@f&&޾aX?䃋,mBuYh?4?M +,NLN?'H?C{?YAݼп~HnR?d\嬻&dh?eҽc =Vi$?AzMa?Nl"`= +C\O"d?xB?Q?BŚφo lȇ`?_L?W]V|< ?)?Q?4?FEӾI}<ǧ!7z˾=Q?AFB\??B$pnƽ\v,ѾA8D=wa?Mp?ssLҿ?6e?QA4>D9C?>R .?`=ah?8lhZ?U] ?:4R}@?UE?E]?RnL?R~¿Ϳ #?\3?gn?H ?!t?D?,έz?7brzxz -pdCkw ?a(B=HRq?Q?< ?䚫?C?I0&\e>X?FP?R-=ygp𿓟+?>?S?R=}B??=! O?\Z?G~?>T?V?NF?a(?C^?]L z>(h?(HD?$-?i[U*<\R?l?!U?WL?280ܫ?sZM|.?3k?M[?@(*pMv>𩢾\>8?b(\04?84 ?ZHG^06?l>*Ύ?`+R=-=??Vr + ?3ý?I?Z?1@{/Ҿ;?g:W~T࿚ҽeO,?2?_Q?,ܿ?2ZZ࿛A:lW,4?Aa_e?Qجv@:'KA?f=>791o>r>}lX `~RoҾ=T?bwr?v˹?l}?U=jju?@;ȽȽƵpyBi=Ux?6p7=.=~ 杺$=ƽ FQ?T3`=7,пѹ2{@?D;Dw?DvE 佂DrS>0N?;cнB?IZQO?OA"?OFΘȾ6΀\V?bק]G?>*읿#?W,C\ξP7?WYͽ$T?`?"0u?1c̿J<?B=0ҿ!?S\?k9V?@a?>7822?0^1˽Ɗ?5vV?I~o?V:?0?=?94/_u8?PC?^b?޸9?DZ̝?d ??) ??'?&nj?Q;mUw9x?S?Gf?3(?8@GT۾q?IٮM20?R$!?!^?eE?:*p?C?\J@ ?.{¿L{Jp?̊ۘ6b D?R? +?_=迗w?[*p?Ki=>x?kŢ<Ȑjp?Kz?K6?_vnnԐk ?1j5x&_?/?9N}?bp,☿\?X꿅+~?1>+&?W?=?Z&P?a¾?ms?[-o?T8WUp; +>?Gr?9X?Mc'9T8$(v%?E_? + ?S.q?HලD?.q^)F~Z2?CL? Ђ?B?P?m$TLX?Gn?BWŁ Q=?BtJ=H?-b>= 3 bpξǫ(B O.?Z?Lʿ?O?gv+,??x?z96?O+$> ~11?F=v!?VWaǛ?QX?"pmL?P L1Untz?-1?6Xg? C[I樾D>?X:?4>쿝){+p??uϷ;=;vt? 8/k?¾Sѥ?K$?c[3ݼ^)'\xSѾs +V?GM"?-@0ؿ?jQ?`B?' ?=?K ?:?1?UJ?*?Tp0?EL0S??K[ c0$e;?$-d ?]?@]&?W =XT!ٿ⤿?g}?Ny9?wd?A>?o^>\?K$D/?.?B]ȽGA;!wj=P8#̽1?w*)-x ?q?PS8C?J:=vxo8@6c?Qt?<ν4$۾.?^4PN?l~x?G?Au7Zpo?S?0HH|?k/?9*j̾!A>Ǜ?=?j??{TJ?? Z:澁6>aX?*@?AaD?V?ZˆβEQ=EؾV?O]5?:.?S\5?7?ZB?&S?ff2J?{ب?*t)ͨ?0R?.o-ű?j?T?2KT@?n:O,a?8(N$$?k@qZ?r?>z͚ a?L?N2澎?Gm?Ps?E,?j_?C ̾]J?>< ?0?1?)?2p?His?N\hӾ3i?.O +1?^Bؾ;Jg̾Ҿ?E?D/h:߄q?B>SrVkٿ;r>뿛D?{P?,fܽ81i?Qof>*?=xȽ@D?tFƾ}+?p/?;$?alǀ?J ?>8\,:'e@?.<:t(r; Y?LS9=n?I9r pbH?Mp<*L>?RpоCLOq&>c!φE_h?4xݾY.q<?;{ῄ%<:?C?o?6bʉhetR,?Ѿ?опpؾAW<Ӣ "?ؓ?u9{?OƿH;?:ľ*?H> =M<?CVYh@?k?C=^0i?9۾?w?Tɢ??UNS<0ྪy@t6?I?cI?,k],?U??Aӿҥ?I?4cD?Z%4~?rnT=\Z?\oyRc[?H ?6#?;;X^?PQ?$?_8G??;Ľ?\r?,k?S?:E-?Ko`pm]?闁Zk^?8MоRDSp65??'`,Wľ1PN?K*??߿?SWL?Jvʿn;P@@?0=.!G?)<'7?4 v?* оŞ?)?j>彠޽2?^w?:I;?Q?TcĹ?G0?(g@?1e R?B B?m?d?Mڿ#2(iP)dCB,zNcQ?0n=pΠ?:~a?p.nH(?,yЖ¾RH~pb?8>,?[LV E?d_?Dy? A<~2?n98?eؽD5\H/2Zp?0齻o&7:?RI(?6z?Bbn?/z[d?'c?KI?6#pKAp?9O/ 9aPx0 ^?'<0?8Kū?O?Y?"2|{?Dhs]ӭj?tPpp?R(X?B?E-$Y?X=vrty?W靽D?( ?LU㿌xYTR׾Ux?=+侸z?m?#?mw430&?`@+;?-FW?㽖.?BX?b,ҹ?l?8.(u?hVv顿'H? g=ῖ:?= v nz?y! +?C2 ?f*^ #!}Nl?NZ%$D>?8?!?x,쾅ĮD?/p̼*ZwA\~7?kI?U[=6,?q#?(?E2*'#a?Yѿ|Q?h?ZwA@zBB?S'S?3$A%CLq=¿y?tw ;@=0C,`@=}m??#:񪚽5?= oJG2?K?2|Q*?@b?^]P0d?P='?U="?yLc?gؾ+df?瘿)h^[;?޶W~O?F\<TpJ,=W!Cc<~4c?/ +X?M?9???Y}4?>xs?)ƽ?;&?Q  !8о#b(?Rj?Wh/? `F̾g?7?i ʽh~?tgh{𿈽̾:4i$ElX1ۿrg 2!b?@?0?}?Nٞ$5v6?cV^?ADN +nW?F@?"H?N׽_}?gWӿue?|V{ؿY< +8r ?@q߽5)y!(e ;?lL?JWLԽ ʽאv?.<)=^$W^?N!?;?A";1-P?\J?2(?b~TcD?3(?>?vZ?Wq?1?Lv?Lj?E8?־HJXVƽזԾ^Q¿?A<]>7?>ZtP?\ +l?7\Wv?|@?!J?=m*?Oj5QOx l?`@WT?F1׾MXz z??󸿋[?T%?O g(?$ֿտzco ?4"|پI[?:Ž<-$pC?0P?S'$<X^? پ?s?Pń] T?F ?[x?N ?6 ?;?E?.t?>?W?N{?!&|ȝ&eCR?N\;?Z[?6U?C%?P?o?'Y%?r>N(V?Z]=b?9f?v2z!'pb㿄޻T?Lx?@A@Bŧ?D|M`M3_Ln@?EJڽsP?M>mϿ࿃aD?l ?;/㿃\۾ǾK.I=r? aOu?KF(?\<|z<p?UMP?M=?b=:?cO?0Li6?Dd*?Rl'>k6?%~<<??*?|w>Ky_?8:F?IЦ?nd?Rs?g?%?o?1k6H?Y~5[?_n?[|C|?f>`?I()@3뚼,(XP?-{?Bh<?Q=C6vziX@WBAB[zH?m4{|?tj#D?P?.>?XVB!B@fUaAş̿R2K?p?/ž +@)2?Ƹ?aȨ?KϿx^LÈ?6?LvgmLlf??>c.\Fƀ?Lr?`5̾&;ľms?[ٽqì?A85Nоgf?),s??h?tC@'?Cf?1? ?b,?9>?=!T?2D*?D&r?F7ⱾT9yI߾bp;[}?VVl>TU"?8嗾uF?Ev鮼6|W+h3J; @?O&?T?HrX9\>K?H!T`0?g^Zcp ; +l?Oyz3?G?84?X?MӾ8&&?'OK ?I[7?@v?3zi9 ?IBX2uV$?[-ph?G~?RXߤFl?̈_?۴Xz,.?6`?k$Fv?lnnYi=ڿ2H3>ޏt?4?erؿ=rؿ#]hxg?/?P$ܿ};?9?`N9R?`u??Q&j%_?)~?=Prl?L彈H?_^l?z!?<50۾YqF?R?t]?ܽ?&z?dtBzAgxAxR?sZ^?Ii<0X?X6O?i2?6I +>?B?V?,T?J?MznuxOJ=s{c?B?{l +?Qz?+=澩? $j:?L7$?߱3?Q?]=`@2'l?4'`2jz |R?Y;*#|{?!%jhW!?hq?TW? 2O?/k?QYq?ž!ڽp?ۘ?5ܾOt?8aRŽ$z>U???9X?lV?Q}?MdlL?ic ?i}?7|,CuAnZB>6L¾$?Fs?ocp?OVHx8=p?DA@C7BGN_Wp=?2P?hSj.tN?7sھ#e?\0?[/?Qdi['?@־-?oR?H#+;fq?7?dhH0N?P'>AA5Je?#L?Q?%y?j^?6}?Q?s?e ?C,N?ȴ1?4A3Bf +?Jr?;m?e/ؿ?Y.O@qx&-?c|1?8?K5?D-+*D"پ-?s"???!Z ?9K +Ar}?UfB'ſr?8_?,"??;?>"L?Z!ٽy`'? A&Acbb?c~IZ?׾lҎT[?.+`?D?J?.dr"l?,_'?@su%?g?O ?)ܽȿ?L17XfV?6lD_?"?BKwh?Fv?E5M?Ktv xK S wƢ??T??Ģ?4R~@=!ueо*tݾR?;JA?M,V|'? Ͼ` ξUlj>ԗ&?sY?D?<"?d4]v?ܴ?G,+0?"JE#?W``>6?_y8D*u-J R+?7k?R?=+@\B?dArj\@S}p׾N/ +?8d{ ?"^JVB*B +!@e?:?[O@$Hm?O?]1?H+=?Uʬn>[?%%u)j?Qd4d;&9 +~?nf9X+|E$?[At?+L_?H5~:1`d<5 ?/.?d-?ftb/B?> 5?{QP|\'ؒc6?K@?> ?p?Ma⫿f?P࿒HjX?@MTb|\xwZn?5~ a8??:?>5p3?sN}q`N?M=k? @ ?V#?|/~ ?Cv?`?O?XCAB +6Rj ?LX=ݶ&<"P|i׻րh*ͧ@MYh?;?o SAeB%@zss?U8?gƜx㓿| ?[?Kpg?tǁ?@=80p?LY"OM=3P?TT⾜5=?Pw?Gw^g|?\T>?KJU?&f?g??i;L@v."lܴ?4xV.?.3C s@Tv?O6PA*¾ ݢ?XJyP?\$?6?O*?5wzcj?x>ʋ#X?.澌0\?B?Nt?\ϡ?Pܿv,?,?(q?)["?0н?,v?.f~?ov?vӽx0>i?fQǿe1F@wnYCGA>j{?m?_ +<:z?,X/ +O?B?wZ؛G?cB?nBA?:jh?Jm? n?ZJ~?< >W=wD]ݿk?@@c>b?'ᚿwZ?|vP&??+dFfYVWϾ>D?wr??oFH[@= +"?Ҽ'4?`Lt?^p '?$O+;x*<(??6@05?:a?(xe$A?<\ƾm8?D?}?v?a\26?' ?O3QQ?HaS  "?%h{z?8R$DP"Q?X)i&a2}bW޾@?I?0žͫ5*pw?Cֿ?5ܧp8}?,@b[?];,?lݾA?[n`?9н ?TツX59"Q?H? I?L]?_bg:x?,S2!DaP?' ?_T?}oz:u6?D?P?>)l7l5?62N?M0?&A;\t?BP?2 ?I0ɾ(G?SC?GTWn?Pп0 +B?S!?&R ԤB?%?NS*?'ls?I@t?I?@%?ss$u?]?&?F?1y3/20?GU?!˾c5[jFӽ qf?m84?{?ؾ@>M?iH?b6?4WP;s`?Jb{?>.ms?+;2{A?`:F?Z\CW̬Rt&53s?E˼hE<(?%[ad\[w掽\N?թ,>&} ;C (࿇@^?>?g?H;`?E8?\gy?[K:uB?KYNA@C,@r? ɿV꽃Puq,uy ᾐ~t`S?8ҌHPdG?@3?M>=0=,/?.(v]^?RVU忏`-!`M?"%Hu?M.+?Iab[-??XN?%JP>Ji|M~RZ?(f2?a?(a?\JS?%潽5$mo?[)?J{?ąvn?g+?5?ST?% +!gd?Y?c?|E-o3?^?.!#&8? t?H?=`'X}i2?_O?!>_?^a??N(?M>w2?1d&@O`*?!?y?XH-d>??TʿNՊ?v񿌶Կ5ɼP?ݪ?c*B C{OAK?zZ?S*cɽ~?OU(uȽ?d??n?b?ָ߽?n&T?c%&?@)w?m?Og,#\=0?,b@?JtӾtCo?|?5(?PK=?T_̽?g?4n&j?IW)v'??>=NcJ@?rf?Oå{?4,?M㿜/?Ne?Ҕu?M?S:?!;L .־pL?Q +(?PV?<,F>3p7?;5y?3>,?4?\|վ1T?!6꽵x@(6C?;۸9щ?{=5?:ۿ>0WX? ?9?1p?Lc޾;Ę?3N&?+Խl?\Y?"?3A޼?,?OKɾ>H?|k+8?`>#?k?dkԽXC=AM|?w?[O@I;F@?jc90kD(AB͖+@|Z=[*=.? w0?0f>JYl?1Ѿh?o(??$=P?.K?i)C?@O2=JJu?U?Z ?A?k?!/TA{?Eh::/پoy<7ټ9H?tVvq=3H?E?S=D%2;w6?}fm@T?\=7@7A??qG2_BP?-A(!k40>cB1n x?'1?'-?=?DDA ?E?#K?+s&D?ҿ5i+ +?!f??6KQ?]?GH?GvB_?3?ľ&G^?Qct0?@ƾT?M?˝Th60ؿԽ?E?qS?Xh?d̿SS ??2鷾M7?S7}6ο!I#?vľ(wf?L?4 2??]` +8'r?^r{ +?ZzA?]B<*tC[xB~Aa(BW@;þ<0?WU.F7<?٥ȿ?ZS5=>S J?vP?9]w"#=?8+^k5歽_ޔ?B?&L>־IzD>|?bB,><?u:|-?O?s*E"y!?h~?af?GxоP^? +0?TkX= ?TL:n?<H:n?i%?a©=&ؿ5e?XvNȿm@;?C0=zZClp?_?N)>̎?3qɿ?6n rHk?(?ZQ^?wƾ+ "-6(TX?3C8z?R!=伂\?'K?sBH=ɢ35;PF98>@(TAGyB+@{?B :qBz?X?vo;@?U}ܘ?*UG?.=ʽ?GQ|a?zDzs?),j8pb?[V?]&a?4im徝!@8@@;+vHuICgK'?c͢?&9@=o]?dӽd?@?J?0 A?Wؾ4y&XE?:?3&<Ky?RMɬȾB7%?] ?Na{k89<8Z5?AH?R<?KC쾇޺?#xk??p6<\e ?QFb?牾WXJmP?[3??!?Vw?8$(Qq`޾’?bP?p<0>͂?QM?S@hGG?VվJ=8?F8>t=]\AAr@6?S)?p-ھ!5tY<;?,B?hjɓڢ!nB9?W?QZ?Fl?{\8=X?{?O ?HR>?1V?dɿA<X=`byw®?di>v-K?1˒?]jMIL?O?uO?!L?)P)ܿxK?tD?<,{2Ƚ?Eq?أM'Խ?b{?57 +?tsü&h??پ) ?0y +?S뗾!ݾ/ྊ]; +?<&e¼9?'9ѿ?SN?BS?K17j-?A?Wf?T?($?:?ξ`x?xD?_ߣ<?7ھ?6*.?e?d0%ϭ;?")"<\?V> +.m??+V?OBf?^ {ˍ?8Y??! 74A+ AK??&wfg1j?UHU+s}^֊?+80K??uּ?SyfE?O=Z? ?iN9zν=g?3 +A ~@-??>?5ƿ!7??#|?O(%n?ˍ ?{&膊,h?BY?a˽BP?̿˹<??WXD<?8|Ծ?/?:޾$ꪾLB=p=t?;?+D?LƉ?CO?e3Td*ٽn]?AɎV +8?.??zO?׌{?D7?3?v?@"p?5?l?>ެ:?2kE(n?: ??R6; v?V?gWr?&OA!E>?5?^>κ ׾W? Mhm +-6@]X?%y;?A??ۜ?`sf ?bؾ8WЎɾMď3_?T?1? AK?HqAPBI?b)<.8?J=3ȽhYٽ/7`t=߬8=&J?g4?4Ľ:zH8I3?e?Fu:^2;D^^@1!?eg?=U?^;K+^oӾvXP; ?[C>Dt.,?K;=`i]콇c?Co\?-x?;?%ԾI/s?Ot ?i}?Wz־Eo5:d4?g^vE_Ð>Ǿ,?c,?7ɾ"_9~o8?J\8ý?XG?ת(S*'?ԔA7@󯽥S p̾\ +?&,Iv?^]Y\r#?@R ?:k?8;y (?9^?1la)e\Z?$t?^E?Bv?_Ng?jfBE ۿe?=k"?a*n@D@??? +?)c ھyI!?[8?)^kӺ?,6?K+k>C?C?:V1?T.?`d?jTv&j(?HQ4r&?H?;h '?R.?\ȽZZ? e=?h޽ȭ??QiM +?qyg ʽފ>V ?B鿏U?sE*NGL?ok2< }{= 4?)diP֖?Ec?]%V> +9m?Ca`wn?́*|?qV? Q?u<7=pjMg(=?w?^?_M?L ?-hS?^X=;4?+t8Јwȿp׾1[T9?y!ohn?Q?Nl?;u?RȾ "p^Q0?U`>D(?clx~?k?t?W;ü> nH.pBB?N ;?/U -/D?`羠9~-?`?>+?L.[?TP@LGpRum0̾Cw?g=ٽLq&?+@EȽ!"z?b9 +ŋ,D?$%=?.?L?.f0?J_8@ Qfݾ`J@ xT?K3 +VfŚ>QԾL%D?@<޵?+?2u +?j[&?Ɀ,?10iX?2k?'q %0$h=4@?3 +>˽?>!fDHc?Daă?ᡨ5@?Hu+:^?L`BGھF?cDrqu?]4Z֕{Լ?@F?=&j?Ι?7. ƾXQag¼T?)Q?!P+2?T(v?`JJXdH7⿖ߛ;L`^[nQ@?&LkԵ)?NP۝?mWD7C<m?]:?=_9鲿W x?W?Kl`=U1꿅cR\@O¼sW?.x?Y^|s>+J+5Ծu<<}?=43h *?GN?%?O˿V&\?Xp<%?q=<3ؾ3@:eJԀ?H㤼ȺbU??x?&?.ˬ?92-W*W?I?d}⏀`< lV@T?@?u"!C󼮔/1<|}#+M: ?.?0]'4?2h@7@+4?Q;Ӣ`?5?6:?+݆?gu?ؾB +a俕@gub=]]X?! |$I?,c 8/F)?JdLQAzq\&}>(J?T˽R$0N*0@? ̿?: CNf0,|? ٿ?@?P?Ǿ@WȾHV?X0^z膾Z?E? i ?:ξ0#?"?2e?cb:i?.C?H z +ܾ +iOdd?-޿ +gx;L?B@_V@5|%l8?eᨼd=?Sվz??nx?5i?|pW);,|V?Xؽhhvt8?P!Pq?L +~&tP?EZ?R?UtY >e@?oߙ\kD?/& ѽ%?9$?ZYo҈OF d'?X?@`&?6@d)0ξ̾)?@l?\R?`Fl\|Zi8mJ `?Wf2?1Ŵ?Uw!N1"[.?9?˾!祿D +'(> *?/J?JX ś"/?OK?,S9*?-E?H4??;l?F? *!6?'?L=&dh?L;?JA*?M-^н[? ~%'I@>l=?9\﮾̖?/ᦽ>*^zE?6?UN?8=-S@:\$>fs'P Z?¶?vU?\Wd(z@o?;?{۽y=0 ?pY.?F/ ?P5?QW .v?:8?mվ' ?ejz?bV?Jv, [" +?{.;w??ɠ?0 +?6AlXyxPKR?蠿xq?6gK<d,GFҥې45?A604\r7?-P49$?FyKNR@+U:E?Iҽ$_?d? Hh ?"]ynr@(ھ?P?vB +L,ֿ{O?Ј +=+@?&cþ +v@,h)Zt`M?"p2?W8C{):?YFX7Ì?,w#aS2.bpV!?^Ⱦ5?L+Ș?<:?-S?CT~?7[|?g?AL?<s}?W(}?X'4?3)" ?(T|*Pְҿ辏@ᅤ?5Y˿ľ?G +K~=x`,hw/ls&^L"/?,=݆?N>H=0k?g:?6D?#?Lpl=4WT;;忒>?L1?v*K)Hnv?'fa=>tF{?Կam?Y0W{?_?@W?.%&hC+?S2^?X>XAb?@j.8?XGr&?)0?(;?OWO vg4Ljgei> ?@27?OAp?=ݭ{(d~u;?zMkHҿx^?7*Ơ?H?Aο{Հ?Xf?>?U ̽DX ?JsF?%ľ8Լö?U0ν[E&AGN?".?gҿr?-r ?faEK!?\BٽMн:RJm?$ }Ծ?z^ASB?3?a<@0?<x?/Hx-4l?Ga?pqbѵ?U{l?7]vپ ?)-?F?C?c+2D;澢L?#0?6OJ6*jS(P???Vu~v?7fX?E*-ct!^kxby?! +Sj?S?!AfþL(?>{̾?U>뭿cwɔAa$? +*?Z>y0y͊?V +=?ý6$Nw߾|Ծ¾Bm??dLpR!?^sT?@?RT=J8@?;ͽ1?"`n?eL n= >Tn??Df?9??ZP??a? k?;r?EW;?e2?6 P??Oc*T*?D)Ao2?:?f5?-aJw1l迤N|`I,xo/4?P2VB?7?_@,6?8N,?L<-嚾 b{ c?Enq?ef?7 ?/>ܱP?G ?J.?4>Ҏ?FX?G=5?F-u> ?NMx2?Id/?dZ?W?o>b潑 '?KJ?<T?Vm?|?ptyz@\?@'gt?&v) A?0C9e Ƶ.^r,?$#fN}?F0?I!@+ƿ?b8?-, ++?cl\ W?DtJ쾩J,9Yz/ܤD[?-c?E?;W?&Z?$?kCl\??gaX +,ף?8csJ0>p=5>9ʀ A=`phr??@'n?]P?Sx?Z<֎n?=3K?APm?c`-?+B?7?@??K{+ p>§.?$]=%T?o;W?`8?7"Կv >+?w?>W?Rj^?y?9פ@?=?E?կ@3?>|??=S?[ݿ,b?P?0sP5&鿘4R?+?(?Utbo?t⿖=kX?(R?)r?\?m)?U.0D?K>?6颾?*{?MC2ȹ?@ѽ??M@? &\E>Ծch?KGʿ{Rs?nf/YCD]&Hjۆ迚xxC-.?YԾyxȜL~W޿Ċ?ڏ?\un?c.2k? S^?Q?=.?`ae{?7ힿM?,N$0? vd? U?>?-R;྘h?ج???ED&wg?+^8?XĽI?>O"|Q?N0j?c?u~7gH?O=[;`7bX?2:>EɔP^8?Dsi?\`Ծ ?n?PƔ? x쿃ݾ©VpuO|?Ӎ\?)T?D(x ?F?[@T/PP?SC)LzDY?#>?# >-?t?(k:@?Q4?Pk?UJ?P?8?vhPھx?_-?Ո?Dн1m?/s?K:? %?нx+澰?bt1?5y?Z#],?=j?Q== ?7XbLʾ5ؽT?%7rO̽g?+hF?9ؽ,؜?*>C̾pjI?zNň?0?\JX򚾍b?QN@.Y?[,,$V?O?5mcq?+m?Pw?G@?T0'~;>_?8?)?/DLE~?c\xpw"錾BQ\nl羒k_Sƺ=bwp>R(P!Ͽ?N蛿2MƀJ¿xW RMt=T@I<?BϜ^t=|fǜ` ?Dnȿ?_Hh1"?7?k˙e]VR$?N,Vo> ?c?FoԿۗl}=?cҾ?I? 4$_<$??q?9?.kk"|?>Ι?L?o @_?:=m0?P%@?YmSRLDl>?Hq?J>6.?a%?H!?NTھ?:)?Vo?C"?BuǾ 6?%1νr?4?|?jȤ?V?lq⿛FN?܀?X BAKQ?J?;?ȸ?(?F?:޾0q?1ƘZ?~??2+?WU=gDŽ=7[qB=$?Z0??^? ^߲H#^&w̿Y)?)(n>^}?W'L>hc?UR?%н̾>?`Vþ.;2 (1?0z?9oվIm?66XGA?/:x?56??rw" ?;翐unG?IAi\W?RM?*՟?-?d &??;O?S`?1qǒ?1?RPhk?IZ<Ï?VjHPd?Pc??U,\t?Ayw~pd?fk@1T?X0WD˾z?aȧ?9b]M?1#?TdS%?J;c?2@?k=\Rl?H;{?,?Ǘ5@}kY;@[?R26 `>inT) ?鿘3oA?9?0?dJ&?EX?0%|TD*:ϥ?Z?u!?RBtD?29?idvO="39??濖4z.Y6?ဿf?]??W4۾4 =?R@? ῌa?R?5?}??zd?.s?9"N$L? ZcwY?fAGz<'062?(#"?&r?Of?d@?J߿⮿m?5+cB,TyԾz?뿜?Q?)m +?HT?;3tD$?q?5?n`?2 F@>?&?A?k??0#%迈nthő?"?=yP?\H?J?bz?D z?S ?MK?G?1t?琮?~D?H ?N?k̾@ a?T?4?^U"<࿍ +h{?(?I`L?.M,]HÔ?z?yq>V̿r\N?2̋@L>(? 8O?I?-依2~罌Ct78yC6-?HT22 v) ƿl8޿ )r@W?e!?p?<<P>ռ,ҿn?T?꿏<8佮d?=7?\OY?nHhZ15$Dɤ?Fp?:.xu +/Lߞ#PcɱLjbh*׽@T?WϽDjl[`?IqоY?u *?TW:GW?R?A!޽w8?H۽cu?:x ?=2N?JT=oTgg?p[Z?G ?`3?*;>?V+5dY4C:?ĿƽB p?F=͔";[t8[n?;Q?#7ܿ~oZ?@?_F?2D?$?te.ν覰E8?7M?=1?Ho⿌햾f.9?4l?'?XK?ܲٿ&uv޾/]^P?)u?B2?@*@5L?+ݾ徖,ol}0n?ۭf?ֿ}? &V?G?8žg v/?t?`F?I@ .?Z?"ྱ*vտRu.;x`?V -?\M!Z?z[?Y[A=tҾǞJӐƾhuEY?]N˵"@0+rȾ d7=tCh#|!=-?!.t`g?MDYW?uؾFzM.`uAfA?E&B?K,M?~?P _oGBDT? bQa޾A m?7?.l?]jP?`RY?xa?Ί?@B?Ffᾢ8.??*3g?tN⹽P(Y+?6 ?Lj?5FŘG8ES?G3?+?B(W)>?)R&0ʾZf?p?[b^ t쿥 ?I?z?NT??|R?;N?Q(<ft:%>$5VHp@?<о?Dl?>?N +?>0 L ۩nwfO}?^f(;㾑!?/z7!l?)p5龀,X d?J?Ih?QCc U9þs0x,v?;ˣ?N dU @ʽX?JJ?Y?S?X䰾RtCzΈ?FXלDft }<`CȽK?]k=lֿ<_?H)hS ?,꿒Qy?7s&?N1 CQІ 0?7$fP XjC +?*n?Wɽcsw+`?/v=`览/?K"@͇?⽸*?D߾G &T=d`?>CB?,位I?&[;P"?gpLe|?dE}?#czw 4wY +ould*x?_=oT,ܐ2?JJ?Fn?۪/,?!r?z?0vz?DA@--F[?V?AhU?4Nx?cu:̾N?lr@?O=-럾 ?-̿}VA?^I?)Y0`?;S$~?KψY?Fqޒ=߽?\?=?VR?9ӽ6(?*p,ZP?'/?ti?6e1DD; l=[~{>3f?(`R0bRyfJv?K}?QOT%?h?[i?vI?˿i󢽉g*`3;=2?-Iu?OF?Z?>_^ľ"?F&??f'?+*?nDr?J?eQk4>ܽ?0D?C6Ŏ~?֦ϾJ?ZSjƿ-}^Yn??ѿ\=7?k?}b?E0JV?u#?Y?G?JQ|? }>?'v,{f?׭?M{?L,R8v9vpy˼>ѽ?&<&,b?:V: =],?9z?Jk<@8"J?~d-y?KF6侎?n ⊾?@=z(P=?/y?XBB4Z?^;=_^?+?]>!H?ha?[K)?0 ?@Y=?I i< ?K*A|V?Z~p?Mdk5ܽB?9Y9??#j?]ā?\߾6VpWPʽ+c}XV?Ѷ俊 ?:??L\?]AUv@sC h?UԿQ?-iT=2O?W ?b@Apr?: +y?S?t?[?9?-?SG?^^!W|@:@'$jC2XB?\߾!b?#M[9ߍ;4@R8=?>iR`S:2f-uדUe?K?q@QF.g?@*J?!-! J:?+L9?zMa1Pe2???3@?+F#ֽ f ҽw#h M?_IB?S;?: Ȫn?B9?]>?]?a1?8⽣?@r?5?j3?Gx4R䎽@ؾV?%C%A?d= +潷 ??? ?ٖ佇:\?]+#?:;?dTH$yonՋ{??eX6?]~?;?p&?=aHNO?zh]־'?G5?^QB?? I@*ȫDB?*?>Ի6f?? ~4Q|?9?>Nʀ?r\ 6?(]?E_?qK?~ˬ?N*d?}?y_?^e2?C>u"McA?Mbjrܾ}V? 忄ܾP?a|:ƽh_ξ}vve??Ml/K"?X|JV?)s?'8K?X:q?*a?R?mkTz?]Scv?c½BGpQ2?4%e?eq?J-uu?C cAPj?`c &?a?U4?KsO0¬o@uH'M?N(?ݰ?Vd}ҽ?ܙFdegИ?=}=AK>?6i?h}?/]?ވ? +׿Ȓ?r?1i>XA=?Edռ3?s<85<@ =, ?X=^)?R6#=0a< )?5?@?4w?gdQte%j=?O;-/?]X?'}H?`h?]NXD?N@ھ'??mepqbv}Vt-=?C?x?%I>DwÒ@-@q2?HݾU*l?O/"O>BHt?LD?nsM`=?JtU*?2Wo?<?Pd?l?X>μ%?E7<2v@?8?:|U>+ ?7?/E?F0%U뿚!??"29οX?:Dܾh$!>=ƿA{YCL@*m?!Z?v?10#T1?ԚUNd*?Δ?XW ؽ??ڱ?\ƿ] ?"?(Ο?Y?Wf#1"kX?D]Tf?E侚?@8k!=B ?:8IzY(\G?Qm}Mܽ$?BV?޴2?R¿ D?c翃p|J?Fп ?7#(R ,KJMZ?Q,< UÐĿ?jW?2y?.Ŀ? ?U/&?kǿ]FS?MW.>J>?+'P2?U>=z Q?{ i?I`Dhŀ???Mt?I?9 +<*'06 dL0; ?M~?Tc<~8@ ⽈?^r<:byHzd?5@?hOQF+^p<`Op?|?A*?9GqD?M?>=t`?2-?gr?H?\?E?^oܿL?J? *?\DL~?%6?e#F>ɿ`j6?yF?N>νnhRR??Mr4 ?H?A0?)Y=zI?H}z)@,ڸB"A}"?0?# 0ghOl~$p??L5@+G?<Ť]0~vj9F ?<۬o\L@f?G?,?K#.s0?Ym?&?A#?4Vھ???"sο?HI(S p_>ʍ?Ǟy*ɾe?U?4!=?Q𬿎7ƾ~g?nV~\.㿄 W=1t;f@ȼ[-刿DK]d?8=Kڼ4p%ftgh!w q㥾@z5?<?x?5>G?%B;=@/?QFB?+D?fU?&1w?JJ5?<*?{t]?Z?2@g_)t4??&?(q_?qH# F?bP~?4?hf_}? 7N5\6|5?X=͢?/=0|ᾟľln۾U&Z?^V?Lֽ$ l z~.?GB3M6A?B侗jD?F:7 ?Bƙ?Uun0^t5?@%T?%,?l>u?((r?C ?>¾?a?M忆5!W޽(PӅIjP< +H?`B]?(-?\zH?@(j?4%?,&_8B?![t?^?U + ?7۾qZZ?8*?#>?`D&l?^efMF~w:?kQ?Q:W R"H>gMy{?Swq3pt%?cP<= h_p Mdn?(u<,ĨuЉ?a?O$?xHFf1轏+qfJsܽ&Ҩ?&?/,`4IZ?Z龐vȌX^?tP-nhlQ־fi?C0Ծ47 ? ? ?Z-2?<9࿖:=ƍD>,u=^??D(5̽ܙreӲ?IZ5Ӕ?-5? Y퍾ξĵW?;7?> +J?DN9 ?0CF?𛾉C"t?BT;J y??\1~?3&:4 ȿZ?U$?,U?Tl#Jq@?I& /?1TiO +? ?/jb@?#?ڋ>x0>A}=q0z|ɾM|tI?jSKe?+?*L??St?E=?=!b?I2?\(=tRCz?NGֽ@ڿwDx=ؾŽܽrc#/]_N> 1޾5BR?I7 V +?r??y$?:xj?t3?M8nh*7`S!?VLd ?9[?/ ?^aP?` ?dp H?r,)><= ^l1c꿕ymʾl83?//?4?4ܿJq(?gDRPs ?[Y +?6;?,K?Hǽ@y⽕? u=lqX?#%:?8ż@?< Է>0Gg?+M[\?2w "ֶ{?B=b?b.?l?y dFJ7YB?RIp=޺s?h;?sܞ@@%#T?h޿e??b?=:o{ҽ%n?S_" +?B(Y)̿\Z?YW8{:?N߾~)i=KxF<?ߟ? +<͝?OG&I$33?,b?:ݏ?O%?F]Ƚ迁e?0?S?N?D!?K?n?-G?LS6?NX:,a@*?4?$?ƽ??%|dϽP̾)߿}`~?Q?ԥSbF?FTw?Oʬ?KEJL`?2$?{?0?W'0?^YS@ѽ&"?$&~~?5Ľr??@V?.T?J?1p>Ih?Ps^Q?(K)?QʾWξQ۵?2?!(?F1ܿV@?G/R\bl?G?$6MHSֿ j,B{Uqݾ??M\'o%?Pg|OAd?]l?̾g??q.f?B?J +X?rc꾆Ľrv%45?ٽ?8wl?Z!$ 8&%ԯ0?++;?{5K=?c׽ ?Ћ辈%~?8a߾]tat0?:?g?Sc2?"}?ʾr4<5hCl,p?ѾF?`z Ya?迈Iᙽl?]?3u? bU ?.KU?.??J9=Fc8? ew>B?0F8l-(?4@.?@>|`žj0齪{وԾ ?k+U 1?5ξvp=l?>T?E(~?bh?Yh> p˙-+%f^2_ ?}(Yҳ<0?-?\Q ?WV?]z?y/? +k8)E@,?N?'H-m*>-4d?hߤ*RF?N?>`< ?E͎F,+P?*[Ǿ ?@!wܞl?dx|AB??B$?aqQ?Ʈ*O=gV5SvF1?E0{s(B?+?^ݗCFiJ ?UA(ľJ?L~nny?Eп?>Ȭľys\BU?0׫?꽆}>?J_>G>q:?-Nq~n?'^0h?:翁Bi վO޾þS޿? k?02r?1zyf?_FоW迖>=c*?D#hB.?!hBfE ?ۮ ?wW~,u=pxb0C +M?T?QBR>i|=Y ?,F?W^g7A?|1iYܾFa?꽠3\=S4cu<'m0b?c~޾r{bu远v?ڿ. ~?FоF%aȾlɝ?Lj ?yI@(b=L?Z9@Y^s$?>A,{܃;?9O7?=5`]?C"쾎?]\]5XG>mLAO3?B1Sõྜ'k8+w:?ؖF=.?LhI?NOGrIj޻`>?_ *~2?A`Y(+Ľv?μ8>?\`X?O?H 'f?Gz?6SV?<\ټ{M?b@?'&=N?W??-X*?S6Dཥ*8i>D)R-13&X>?-҇?;%?v lO?S?3;2G,T?2?Q-p?Gd?CXG)gH4v?%2x?kn?R?B?Na?PJ?ꭒ?d?%?]꿋bG=q`?0w,?3X?c,?p+ ?U=޾!h?e8?[?E?'nXDGɾ{L?~U? +ڴҿ!?n(qp@(3d?H=lhͿ]?`OFnG?eQ?>J +!?o??M;rX?EvZ?;Zu擾*H?Jd/?!x;E ?Dd\,!ڼŌнk|?_??):O>Ac<"o=⌚?Ok?D?H?I?zɾA}y?`tÿ?m'7Ee?Y$? W?h +e'^*1?cL?>ҿs%o?]Ѿ-?/]G?xാhIx??w.<A.ʣ?A?Į1?"ٿz?C , ?ڵ}?S?~F?H&=Å?8O?s]Zr?@MH?p;>%Ҽ\?+PVH7?8Y(?JmRa*F؉~?/p?Bb?0*?b? JGi|?;:@?z~?-1t`?N!?%a:8n9FP[?KG$?2k_?3k?+8h}8X/i?:?8ݠ>D&\?9'>H?Ԣ?Y!?̈́?H&?!?+!?i -E?6͹?F??I;?1 ĽJpV?K?h[ǽajzf6^L4?F??7Fʾ+0ɸ?2Z)D^ ?Z%t? @?7G?ϴ?bl?MEY\|$ ~?c?@Tƿ.?W ?fٿ\5?;B?mn#=.vT6?F?qg^?ThlҌ1M z-77?`켱8=(?HEu?,fw`?a+K?\S i[08?WF?>@/Z оa9?o]C?H"Fmd#?<?<)?r?Ok?ۏo?D?q0?EH?.ԾA?JĔ!d?{S7J?8C?]p?=s?j?ؾ??^ ?FSx>&?[?D"k ?,g?6d?-xɽ"HB?` p?3?L'?NM?Y?8V?Wۚ?AK?z-L ??ȿؾ\06?ndt@:㾘A콤2!hwFY_nX[?MD?<8@:xy<85><2³B?‚hR<H?&O ?h]3=I?[n־Q0?1C}L?d\z ?8t?Fп}:.H?9?bR DR6/f(2?a+?pq o?e?9 쪾8?cf?1M ?`]4?CPMY;'F4?:5??,/5R?,̿kO?If?(Akl?2?.B?53ž[-Z@?BDX +?;6?>|"x?Tbξ?$p@kYr??a?4X??\r?8UF? :4??O>q?c9/B>@q$==%',A|Oɔ9<ꭿv&@ AJ ?8_܄9?ahA>2~<&@<>`?(H ʿ?j\4ApiN~?sJ$8?9&TWj: +?vf~;a?IdU:=.@V70>$F'? Cx ?(=?9D0f?S"?{Kf1vȿX2> +?I_>qW?`fu Y?)Y?Llp5X?kE<sw"?0t?H=j?){c(|_?Q?Op?Aذ?Rw?q + ?C[BfE7Ҿ/辁A9n?*s_1`rx?9v @o[\Nrrƿ?9 ?;'M:u?zRhb>?0T?Tak?sBY*?/v% @/4?W?$ǽ&,0.8[+= ȿ]=tBK?1%BKMŸ?<%H@-NѤj`?.?0?u_xy|`?وBh怾ZK?I߾= yFQ?Z?0Q?FrO\i4)&N̾Gs?,8zH<7c?e ?);>? qLz̾H +ܾfh(?%?E]F?e?="C<@XE?+P?!` ?N_濇 Fߴx?16$?8濏D?$?{"?dY.?a%οT?~.ƿ?drp?H8)p?ϾJ4.?l8Q@־~bmZ?='?[YY,?1X3Hw3>\K\?8ܿ+zӾ μym=s|"m +J?.9h`|H?S?gD8J? ߾V?e߶ھ<?w ;?WB?|OED?Rkݾ85-˰?Y2?u@?8?KMοpͤ= ?"Ṩ<8]v?>޾6L?'P?@qv?ྕ>|?F7?yPX0k?kC?>=14?BHԾh#?f ?8O%?FO? ?2?Р1v?%˾`>-??Ⱦn'̾?IuD/*8?+}L,?a/B ?'>a\ժ?D.,ξVv#?)3?Bm{ƽ?C?lA?/$@1(=?-H).Y[ i%w^(?Fc7?Z)VC$sﰿ¢?G`?It?`}0?IN&Q+p?hȤEy4*~F?uf^ɾW̽r?F WX?RY?>3 +?iJ +R?X:3@G1I?c< +?sa/3Wl)7X'\ϝ׾往?:(8?"L@?*Ҿ:1΁?+&t_j?{h q[?F?Mr??\T?=~?)d޸?(D?YDf?ӟ?De: 1.?ྊ$0t> ?rľܼ??^?[Mþ7.=̾~?Q\?EP>.N'?GFL??N+K=2?x޿uM}?VS=9 l"?@y?Dʾ? ?nȾx+?SS?-?HJ!)u?j?,=ⴠ?5?\FĿj޾?1Ƚ?KT?P~D}&?AB\?JN?٪? hR?=?>V?;|俩%!m.?555|-t?;0? +>UhY?j ?žg?Նw͕{0d)gοvP?d"_lԫw?Ic   ?HBh?Yx<&` ?? =*F:?d/e?L?.a:*{l6?{ÿνF.p?Em?H^Ȭ5[?QVJ?)뽿?4%?El \~_1꾀<)&'?vl?]$?f?P־n?ּ?`翧?qzAv08z?2u?=(Aд* +o0J>md??KM'ހ?GrDQmþx?#p!t$OG?84?BM\#%]!h??K?M,HrvξTU5ſ?M??L?*J?f?!dH}\t ?0T6'/׾uB?R0?㈿v@?7@ĿY?C!t?euHQNxV?8mKR?/D?=?/0XZl?4?Q=|y?l?х?d4b?B':tg?K[0?+,N=?.?Re@ ? ^q?TÉ?fb?^9??H?F@z/6?P* ?3,mOܾ?>?aMV?5D??$Œ?Oc ?*N>k8|-?J-?*L?Lr?&{!?J5?7?ArqP?i tWҾ>N??Nlv=P?T|?[` +ou? ܾ_@ܾ!8?L\?'Z轗濕 +?OZPJ?K^\ D?;侄% +YT]`\? yh$?h?x?@ X::?ڌܾ!?6./l?AX,{Vq[?Ov>ٜ?FU"? ?̾-.?G^78R| 6ǖ?HƼJ8?9䀽2@t>? tMM`?Wϥ&?.8$-C?舽>\E?>I^?dੀ?L?2T[⿎>_?^ʿ~lI۽[(?}u P0KS_⿟{4ƽ|N@} ?9̿y?BYr"᜾a[s?y?GFN]H?Lf@ֿ4ٽuT?rGн°?@?Yt.?g?eń ?k?TqL?.z:*,?^{?X{Y?a6z6x?"?>?VDyCľT[e?^WjƤ?- +=Ӡ??GGleW? _P˳ l?<оيA?'2Dd +Z?%F<,?^&d?8<%4?!߽hcؽ>e^ +\OV$?G?SDL?MξlLx;?LR?G6U?8>FOܾ` =`CAcPa?;wUFP? "佱?tƽlre ?'?Sq +þ1?;*[)Ⱦ/J?o݈WB?[RW?R-])|m!T6wN'0Կ)===q?H6>(.5l, +?ZC׾xѽ֠ʩ?[aq?87v.ྂjP?/.?C<??ou:?1]- Z?`!B q̽࿙ +ۊ@ý^Ӝ@?AT?+V?N%?5V?Ji?N?Irz)yNV_ľ>?p~?VD?AjN@+*?J6ex }{?B-?Ҿ|^@350Gi\??[?/(?R?M?YN>?9wT?$ZEAd@,?REY˘P+?(uxe`?S͔ Fq??򿘪`Bn?<ڐ? ?E?1%>(h?濝+?^ÿGs?P/?O?5.ln?W  ?q? +X0xR<ͫw?$ɿdϽN?n??H4l?' ?1?V~?AJ>fT2mVH?y*(ռ .?DŲ?N7bOFN@;R,?/L-:"?@#d¼v?<"k +缿4.H?.º?#Z?T'Lnڿ?E?>!}p]k0|%6J`? +?O?Ͻ꽌I?C:?Acpf?yA?4Bb?Z7qV޾ҳ?;Y=F?UĐh?Q e?;?b*?ȾFT?@ s`.v?fW۾*6:|?뛛[?u]<^C¿ ̽S?E©;UN<>^??FDMp?V@?Cs P?;+ ?]Y辅:Z?ij&; ?TJwIT?E_?TS?,T%̽QM??Q&z<?v+}:?q(vؿy?mfoR?c}#|?>h=cھVQL?Y-?L ?B?\c??g1M?L"?L +Ohr.?Hs=?SDuy?Al0?Rf?g,)???Y쿯Ng?g>Jh ؽh4>[=qX?"qj@!D?=}]В?;&!ϾPr큠4, ?V=nC?L, UMڠތ Mz?\;,>hb?%-*?St#?+ƾZ澐|?KeT]?OM?nlܾgS%?=#_SX|?L?nzn?ǽ(N|>UR?u?J>?ƾ(E?j{+?D4:? d%az?'ؽ J?=m4m¾?4q?18L?.^4xoQ?XZgę?:?V1پV?PLz?`?>f ?Tb5d0wM1K=?%NAlyb?OY?Z6̿yQj?I0;6俢tyX%xJh|<2`?R=dq?l; ta6?l?:?=*?D?,T?F?Iҽ-7?-2?^<+B?=? $/?[r?^k`'?L?К5nB?^O_Ǿ\?E[2>#?]?PYcՊ?5 8?Q?i?!YAf@ 8.??v?諽p/?*̿{,]XԾ^L?Y1?B?t w?Ey?]Q?V06?@V?Zla?; u94~YH? +3.m$bJAC6k?֚vZLοt z?I?fڽ7tAпtl߿ @kr?E?*W?1kp4뾫/-H5o=ZPx?l<,sl?ZfӽDi p1ο?C!?N?f9?kQ?Zl;?/?q,!?p :J?%~b8?+ꁿp;{pr1?ߣ:b,._)>=zK8.< P?Y?/Ei?/u??܌p?Y\Y?½$ܽʀJ?q/r?(?j1:8|"/A?';? <?ZX?F1î~th+*D?\s?g?1+ +D?C?X?H?"=!=$ X ?|+?0J>R#i?<5?GsR ) ?B+⿋??Y~l䄽"?4s'+ҶճsNd?d?}?a?2=,?3qV,@Z??־sq?t`,~x9x3KH?Ɇ?4U?fӿ>ythm<@?bƾ ^AQͿe@2Ⱦuj{Ly?Zʼ?3C쾊> +ɽ璾2(?݋ACAN?J;)?U?Kn?2?]Fޞ`eb?O/Ͼx-?O̜3F GU]?+Y'Cw l"d?1P? +ѽ?\~Y]俟?޿?I%|N?E4^?d첾?J??ep?`޽CҴc^?J-QĽ_?aRWzؾ~3>d|m)d ?HӾ +]DQ?9s?B+G?if?Uؾ{n?2kt(D?|)N?>GNf{?Cor?MT8ݽ]?$?jl?X.?vzz?X!?R&F.&?P(?-,@ /w? +0?y@?Oܶ?V\"?3_8FN?G?Q_?&:?{F?ֿE?ƾʿsA$?,?);.-eR0?'?|x?S/Ѿ'X?h8{I?@?+:D.Ŀeq~ <ؾ*н*?iK(0l),:?TI?~?L{s`tsX +,Pս ˠ/9d'YxS[ +NA%?^bx! }̽ +wT?|?f9}uȿ`?UgEu.Ҿ<ѕ?V?J$辰)Ӵ&Ǒ?)*D?TR>r? gD@[ <<(Խ(?澷B>-?)t?] R/ i?@Au:0l?)Fn4x .z>?Q"q\??>;$4?+f?P@?8p51̾݇ۗDg?%(?CR~޾q[?3v#/") "?;##PJ@?/6H_u%?"F?Cǿ +F?Ctm??C5|\?9.q?;V +ux?gXt(?45F>=O^[M?&} +5r?,?Ҿ?~m?gdƾC]Z?i U?@2?LH(?_?2sR?qBTܰۗ#;,5v?T=+(?Gv"> f?+?Fl=2оgd.鼽Pv?=۔h?H*?:nY?K{/?O?v??hǿ?l@i7@rp=? =<?A?=H?U?Q??Wd?3>A?\l0??.C5#MܽNl'EJ?e?RNP:?B/@sO7-u]t¾ ^:?QY{W$]+?;f-u?F޾.bI?L?IھS>&?E ?9V?#-_?QYr|?g?P?W褼%?o?q` 4 ?^:?,9Gα} ?#_ ?<?/Y0?AS?߾b:?I?58?Q 4=?ƉJ\пc* ?!fd?P?Pf?Lӿ?'Qξ>u?,?@?HO +S26?.e>Ⱦ? 7)(rcʿZֿ ?H`Ő>?"l iem?O?/@5Fྌ ?3H?¡k?@У-RY?+`N,:g7R?H<3?8J<Ƚd=w? 8;!Ts}>%~y%ھ-j=qm?:"+>-?HF߼8ZץE;>?;bZ:;4JL?O+?H?BJy?A ?Ph7:?F׳:w$aPĘع(?d} <!?Z? ?wZ@?=il?r?R +ʾ{P߽?*&l ?mi?x*Xy^?;0{\A꿉?{技?3?8m>?Ii2g&>v?JN@0: i(L8xvI>Z2:=,?<?ֿ?L0?m7?fzX?Uh?m?`ʽSvw8?4䊽n +?% ?0!.?ÉEse?;-r?s5a?"?IO<0q?m6Dݸ?::H?AD~?4y4 Jk?0,f?7?]-$?gx`>>?G?W?R?=Q$?Y%?0 "WV? ?^Pb.z?Xߢ?H4?7쾣JսCnۿ꾋@oBn?9ؽV??־@?Y hD?r?C?6?|?2:.Q)M?]?'j6?-?DD9Py.L?er]}>idN?`?' p:>?gܾ͈[?Fr?#4?[?%'bR"(?d?t??l???-`st?c?&B9x+A2׿}{T?ο^|?|ER[?-}ܓ?[y? nPT\|?X6"?M䬾cވ?x$RnB8(DZvz?E 39@ ps3.?ZVWO;U?S lG?=?Mt6J??о$2Ek?f`F??m."?KD?CW?FFbّ֧ixž"ʾ)y3?S⿔?X?@Nl?>N?>|޽X?8'?®?NZ2?,_쿋Z?&f?G߽b4wWХ>̢?Qx޾|0rͳb :?2?4n_<>?E,ci?Nk?l@_6o?UaPz>5yq+뿋+?LI-?Zؿ,ý {̾:?HL??&>'/S*wO(T?$C.AN@#?;?c?"F=@2A?dǿ?W?Ev<?Ր?6eFuG^?J=7>,! z?.p$!놾-1"Ŀ??4ֽ*ED4:?p:Iի?%z :?z?9>zs?=gr?LX?L?Bg|H?˿J?CI?2޾?T&?/Q:оOe?I]sfqrp??Uz8?BYcVh^_= ?w5?8?Vs5t]TDgH?[(>?'IV&?]?Y;*`bGw?Hؾn"`9M-6)<*P(_#2?`Y>>a?C*?갼,`?CT|O?[Ծ/?\6s }?fJL(K>m?0?jj,?^Je5[-[?yh`9,U?3U??NZj?;վ^?)?NA?JצD?5L +?(d6?!{><?MM> +h}OR?_?<|?<V}4?G?</ؾx?B>?)[Yr?S HSkü 5?1.I?cn;䣾>?3?9i|i?JʾLo?7 +xv?=&?:а6h?Lr޿Jl?G?-Wھ.H?4X(ɾK_? ?a'?O7?(d?f^?2<*?0@@?=vP?ҽJ= ?I,?оBm<Զ?<֘5<&7P ?jTa?8=ķ@= ?CkA?q-A3?jqax?gxf?a~@?|V?zr?HQd0*hp< ߢ-?H#u9-?J?I=?5?VQh8ҾR?($*?Eߋǽ$%A C f?vB?Tfҿ@? &rf?:[?bE'?8^!T?,r=PXsv ox?O?"'0(|jX???"d??A?iTY5lɄB(BbCB8?C)߽B?Hn?g]ǾAt?h?Pȫ 7?G%ӽW"?R8"?%ھm1'ޒ=?*?9Y?؛>ֿv?c|nտ?%B?Ɯg]d9TL?=M?&叾d#ƾu-UI? 0?J;?>#??A+=[.?0?Ω?L?9sd͞?;w4d->?C0ץ?5G[w"p?.?A\:?NC?dp0nPCP)>K?D޿d??9z?xO:!lL?ە>jH g?!?'Ba0?7?~?RZ?Џn?j??$&?HE*6>xj*$UN?EMÿ&-bS<@?=6?6*?RW?HrQa6NM09:Y$v$>Wn> n*-?B?bV$0w?>?C-?ڿVw?ݗ?L?-?φ?70=Lоsɿ?Iȿƙ?S:?K3Ѿf]?P4?Őo )\8?8^|?YK?R6Ym:?iZ4־s>߾?3ɾ*?a~?P>uɼXr>A{l?Ar*?ׂ?N?b z?U7t>y?F)о5(?P^?AE?H @V?L3۾^+R?1?ּ(0?Ӿ09el|%Pǜםiwi=澄D+;7t"e Gfo +i=ξF?`>?# -8?G ؀ľW8y?T??Eybh?2?~?t5kB?q,?)??Aap?S?-?E~ +Qgh>t 4?dх?fモ;ɾ( k{d?1??G&,+ ࿀>f$?%2?L?jP ׻?3?}?Bq <@?=k?mk?^l5& ic$?p:!tf?km?A;b?`B=PNVٿ?[q,y4*5+{G?OZob,?K=,?H8rwƽf ԩ?{*?Z?aԙ;5$x?XU-YxMh7?'FֽrR?].?ſ8tf6Z>?2vsG>M?;?(?F?M"?D^+d߾lY?f,?K:S?%{OF??PL?gRz?78?ɾ>wx?F ?)Ux?'L?A? оpzH?aR2?QQ?M?6о?8(3?`?MA}?T@*{>?Bi?N3R"9F?19n?-?;/9A}?>H?O+ վ<XT?Q^2?AJ/a龷וh?+H?Rz?GL?3#?Q޽b?;?9 }?!/?Juz{8?cnM?KjrY?43ޗ??ɲ?4 ?Xe?,S\?mʠ?-(UE?TǸ?$)fV?jLmE6\k;aU?؞x{V^?Q/?cMk=5ބ!a?VFgujB?qJ:Y=3*Ċ>⯾dQ4?j|J@n#?jVB6LTyxä̯d;??i\??ѐ?}?W2?8o?QM?CҿQ?Od LuY?A7d>?hu|Jl ?CYw+{Bi]R>&T~ɒ?BA?B? (Z?%Nꚾ?k]?7PP2h>M ?Mj?8֖e󿞳vPZ~<?4+j?X?0mVvto?s? +(h?&i?~r=Z?=ZL??v?ԚP$bƲ??Hʿ{栾?hq?BU?(⾺0ܽ]??Tn?3ζ;6q?B~?(TL?%?R(3?4&࿕i{#H?C6?h?9ä?BG?&9??7/?Bn:4.\?L9l?6?F?ʿ? +N@l?| X^?\ vRB?S=꺿?bDj==j?81ٮH?#F %?a^8?nbA? e\%r ;#uƼF\L\0?K1iL}f(E!?S,J?Z ޾l?j*?.$x+??9Ve?V=;T?7 +~u?FvI?A*󾖁;?,9"'?H~{$?:b6?O;?SCʾ}Q?Eb_cʿm/?Ihd Ը7/&??Zǝsn .'ݰ?B'6D?[:?:A-K?;?T GZkvdkg?&?B&Ծp?8?,NwLB?i9k?hp;ijwΠےbSYc=>?C\?Y޽8?"?R˰?;h!e]ྥq?`P`ξ*v?/LfǾRO\F?ar?%꽨>?Uk?1ؾ%t?@ѽX^@?P?)"$y8?,m?Go?7M2l̕?QtXxҿ?19M?B= ?L)dB/T P??IVeܾ`8?KUnp6h?G?fI^Xm6?а?Ds?^p_H,`"`?5?Occ7?$ʖϿ\B%1KK0?-.?h?5f>xu?l=c pU<є=xsZbV?XU'"=B>M>B?G?:zkxuC)&ZD`лN՘Ѿ*R:-?u?R?X 3Vh?El?Uxott%H=r?Vz?{^/?J ?ERϽG@?Z"xgid\J;{]?a%x?ӿv?,?fs.Z?UF(mF?DY?O?@yP=[@ǹ?W.⿚;?/O?(ߖ}3?m'?Fhc)E?qf޾j@ ҽέ4?@TQ>?%?/s=?"2?<~?H +[€@s$6WH틽Z"?@*?}<++?N㼽T?/?؟ʾt [?萴?-Ѡ?![T??!p*?I5 #p?H꿈Hx?]?RKl|/!?&zA2}M"1?ϗoI쿿_2?X nK'?+־d?0ɜ?;$r3?5v?;Dm?:HE._ͦ +>g?Nཌ|?,]?):m\8+?@u??;Iz21|7?O\?,T4?7[@ ]ɾ}=-D?X?=$¼?LK8?f z>fp5t?+?oG+?y> ?d:k&>PٿV?h/?`W م +?_K-?$q?f%?l}^?6?&oQ@7p?., ?xbn <=QtؾV9?éy3-?<k&?2?KX޾?D?@?W??f nݯ?3?u`?e}?9 0|ZRsN?S(]*w4?1r<ӂ?L[!?jŽ3̾{?.ud?9,?W?#cͽN C>?gZb.?M?1<:DY\ H?3p?&?]U|?8r-B<1? ֮?L9g>#?BM+?\x?l?h ? 6=m$?]? Im=hb\WyO?FRHr?I?9y&XĽ{L?҃?Ok?ӣ'ͫ?#>^ʿ5:70='N=F?8K?7+o)?ccTQ4{j3@?vr8?i:$?[6ҿHl\(莽x?={ѽXwN?U}TɤM{?\F?-?V6$?g?/L?3>="F?-ϝ5]Ǿ?8v?k婿nu?{?>5R^?鼝?#z ?Qꢾ&h?/?GJ)K?7B=?#?Uv>?Md?.׽Y?jξRV ?8 Xi7>.U^`输{?D?.?{;3(?BA?TZý@uNǾ Z[?GY@(鿍h?42 ??2?a|?#e?[?Z?ڕ?߿)C?AӾ lj9\?`Y7¾A?Q?'u`?ɷ˻S?$U!K㾠[{ ?[:I?m?9h?3 7 þ:?@?(?h?T}` "?Lr]u?TSd?dʾgD?9HyR?`Q ?'辌m lyW?-Y?MXdk?B+?7侲|?հ;?^Os? GB4?5־)?.}D0?-K?? E`?H9:?0(ھ!6?452s%N?)QU?q?'lU?&OhȾ龆N־3?8׾H~?^?);־1??/{?Bܾ?1h?+>ײG܀?+Z?|?@ʾ2sj/@BfH2X&J(?ؼ?<6`P%5bFf?&'@?>]h?=XNϿ(?t7tE?GLUf̿gG?/.0?`aΒ?W6& +C6\?Wz +? Y?=H?BA?]?:?COB}?IN?ab?`. ɀ?[𽿐Vc:z?m$?5?Uо*|3:qkO?vb⾎H=8?>7?U6?;==j*N!?$:lc?\|v? ?V-R ?Z=Cļ ?Q/fsV?0o?`@?F~nM<~`?=qd%?eGϢP?Z~̿¿?Z?O=5⿖$?6 }2˿ ?=1N?#zA?mE _?ʾ&Bʿ?oazn?/?R?PM?K?K.a@ǘ?=?7#i?G_?6 ?a? sx?m?? k?Ds]?<?_?M5=?0:R?@G?'%?˽=$@0abK?R@(xa|?7? +?K0us&rG? &??^Hɾ|'ܾɤ?.$[J@ Nx࿇(aLS?.?,ET?bZ[=-?t?2+\ε?"Bl:B)?)@nݾ?^پlרX<5?2 x4?7x?(ڿs|?NԾk^\,?>־Þ ip?/?KP2[?C?d2=^P>=8?c;H?=g<(`xԼ8x-8"?k`Wn* Mj`-R^LBgT`E( Z?c2@5>^?Q?޴=y,pI]?i?Z?Ox8?B@'H?ˢSY^?WhΔrriz?)9???'v _ls0cS}x?_kpX??"4?2?&';Yڼ?QY ?&XV>ꯦ?1 +$߭hN?1?' +B?-?KW?Qῗ?^VJ\?D?m{??S>ʾ{?j?2ϖC1z&??=ʼEp?)p?+@AEBw?&$ZϾZDxC뻆2n>\?1P?`R:?*n`P<0?Kɽrx?i:9?K~?q?1;/?AȾ?HF p?(?GeN?eTп?6?с?M>\?GRҾ?b~,4?Amxz@&0u@TP>?8'VpV?>p?E&?>c>Pdƛ ?.v?J( TĽ@?9޾W'Ⱦ@<^b=9 ?g?>Հ=VTN:8?k>.?^g\M?d2nì?ZT?״T'ni/w4y?9Oٿ ?BV=I.Hz+7'?\D_CЬ? 4?z[ힾī9?az0k6=R8?>YbzO$!?Qzb(?L?d?ٮ<-B?Iɰ?Nz??Qf5gh?L[?"rpD?G?(? 9?JA? _ +?6?U?e ҾL[?$e?& ?_L??\i'dq,c?D>?P?+?@wb?IU?q[?5?7.?H#X?B۾'%ǽݿvR?/F? 3"Rh ?S1?B?5?B ywۊ3`(?>aְ?rgDz9?VfV?2Ʒ7wIܿ_cc]lDO(^>B?Sſu߂$`?q (<ɨ?Dt?n鿏(u?p?4uBL:?w?-?w徃dh[7?>z?\h?E{d)Yu?[X*,?5Tq?*6?{S ?F ]钽@@B@MB꾸&o?Ne?V{?-d۾-[Pa? i=P"P<<6vy " +?\3p?յ!? ?/??S?PKK?IGE4)?'޾s?A,?+R?\o?fZ?8+?JfMȼ6?5Ǿ\zIvEΌ?r?(Ծ:)I?Cf?`.U?0ǏNc?G|-?b$?$?EѨ$?R?PB?<`?0/'S?$>?- +1?*?&Wm@~/6ۏ?ǁ?:?Y7??=ǀ?UZ>?P>??Ie?u5qz?8n?̊?DO?Ykn?E"k,{s)9 k6?ffO?Eլmr1XI1={ؿ M?Rޯ?IB⿗qbҿÜF?C ?A|! +?JMKĽk(?Rb?(5Ev夿^?PB?/o?Jv#z?kCx?py?V\P\'=qjOn?T㲿?1;ž:C<0?<HX1??0?fY?ѠW? > ?k?:Ν~*Ѹ?;?@۾8#?23UP?|4?4?V?W}#8?*%/P>濃X*?!m" .?o^?K;?:1?\rxj>V(^?$FuM}o??r?g`Ԧ?{.?P@*;B+r(4?+?7ʦ@ $c?AN?;2k?^/l ?a0ʾDLn3?/WI?,?8{,)wP?&q(˓mz?E]f:D_&b j¾_?@?@ҽI??>ֽꞿ 6?hc4?O ?Wz?xtU?RѾ Bпf;?rڽ뚼k?`f?>忔>???(7?jaܾ1B)?@?B-?4P}?!?M޽j?U1?:Լҏ@:G[T.t6?[?O崾"?92>G?*#ȿ ?S?Q)?Bs>L-?S`?*@?U?*?A\>A=f=`?418?!4?{hOq忉k¾?S?g?,ؿѫϾLdN'p>B,g~4"?ɾտ*Mx=]1?"T egR?3?L.~?8*?gܿ{P?/;ỴP??LoU4bǾy]^LH9s?My0?42񽩄~?3? ;ǵX?墽?-yT>HD?,N"?[?W.??M.E?Ž:u(p-B24M??pC?B\H-º#"]f?R?dE<1?L?EǗ =?M?lW~|Nξ'?DT?;J?BA[W?־R8r?񂿏/<|?N^S@ҽ緎>ǐ^(ƾp4>_h[2?ʞ@L>߸?4⽞ Y?\*?1lο?L H?,Z罕p +k翓37o5?FC?O?3.>N:?O=?=D{?<ԾC݆?vʄ]V3mN?_)?5fžݾN\?dX0?66|}-."?X̛Aw?G6h?SzTd?VNz?8?FR?;Bdm,?r?OᅡGq~8V/tʾ?8p>:?T?X>?p;?-s*. ?@ ?>y? +?72Gf?:2zٔR+?EHW~9#r9>?Cc? #I??7?2:?tg~?"+Z?=($?0@۾ud!G?-'?=|Ti7&ݾvX?>~Ýӕܾvw%?/t?g\H;PDv/?2A?\Pº??Wa<.?>AX?q>?6ؿCXƦ|T?W_u3i kY?v? +0&Ht?I?+?7(-h?2ib?K쾕I?C92/АOzظ?'1&=p8섽(@!?zӾ*'?ROEuR?i[?CQ__ zB?AD4e?_ž,Tr?#C?&븾~?5Uw?8J-Կ48?ON]򿆃@?(|=$?3޾$V?3Ml"ܽ?nL?ؖ־??!V?EAwY?F"O?l)?HC?d,?B?(dL?Fy?!wL[?. YF}%? ?`?*H?,?\7?::n&¾p?v^?;޿.?(L?ef?M+=Dh6C??/:?8z:t?B ~?a"?,?:{?=) ?RuоǼq>=8?;?f<NtȀA?5<?+?Z)h?Tgdwg}$m?at9ަg2h?TL7h?E?-?0jb?[ d?a??R͒?M= ?fEHE6=t?9?·|?dz1O@pn=z?KeC ?XԾz9$?(׿H?+4`pL`?PX?>k(p޿i6?;lL?Y?}fj Eؾt?~d`0?\+/?JW7Bwʀ?,G#??[HqhB4??JȽxJR,?320 >? };?=, 7'Dq\hǾ?/ܿ)Ō>?c4?U ?N MDULgx :hv` %!\V3?#z??μ螸\^?lr|"?m?3r)@.?ep?ۮ?T?k*?(нhl>aۂ?BjH?:? ?ދ?z\En?<;?T;>??`?D俣 +?\l?1򊿏ᾌ (?d:?6~%8?''꿗j?-m?R;?F_Np$Tw6?CLٽi?HU?ARվƖbf?GLe??x?#F3&?A ?lڽҾ[&77Ƹ?,kξξt?I[򿓚?JMKZ+?M.? ?߉X}7~lryZ-վNسE˿c?idڴxR@VDfGpt ?t?h!G-?W@OϾPz?:k?*ј@,1@J?%,?H?-bG0?;p?[?, ( +?A? ?3]?f(>?*F?>O\R?e{wS?Rbҽ"4 (?Il?1?Y:?:j?^XF?5O +?^W?5:VPo9>h??_:7?>?4'?dc?ľtE?HВ?@G?q%οj?V?Z?"?!?Z-;0d&DA$?UJ? Կ49s?0\?H~?)y^;ق{v|Nq` ?*:؀*b?}1٢~?}ᮾ(?,ͪ~T0p\?O?6D?~꿕!?D5HL@@&2+迍&w*l?9?,z@?3:7l +?;憽@?>YLֽ!;?(m>Mtƻ?K>{?J.l(P`>i?4ξ'Bj2?*o?H^|\?ӻ?&t?j/Q>?^?ϻ?] LԽ[>ko~?%?FP5 ?$?FM4JCL? ~Zz׾Q?-'<[@??罬>??F z? n`a?GϿӾY?#4@?{ $0Ū^t?SpN?[LJ?=N?Tz?DA B?m֍?V?!?ʞ +< >"{?:O??@B{Y<.t^=˾=Z&s(?<\~(& o?x?X?Y??I#X@?e?f!?N?)?硱^{Ͽp?GB?4}?QB\^?.ގ?AK<q?:?[\͵?88F2(N???-MKBYfI?38[e@?#{?^-?3켿 ?h?4E;>W4?FpN%<{r?j斾*?΋?ZLUSH?&%lHօBj#X??o>?6I +?:>,x¿Љx?qwE?MͿ??3? ھ6ᴾܦ?`a῍|Du|\#=<?)gJ?/7! Jw=q?=+)?bӠ~ ?pLGx?e>۟O$)i) +<&`>ރ?\E ߿7"x?=TA?^Ҿ$=꽟p?.?jZ%)(rHD?qs>n?n?FX??aX?;FH?XHԾS =l? [*!Ml?`?ʊ.? 1d?Mܠ?C]?_B?SA?L~?ܴ?51'?G x>O?CbԾ?8m?ܖ>A??5N?Vֈ8Nց??~Uڿ we?e7?#9Z?.R-6?$S|?1D?CsFX?0aA?.?]?輶迚6 ,Mޯ0Ӕj|;?ZG!? +V?RӼD ?w +O?Q0־/K̾R 9tgҾ9z*$Q/?XF?W?6?a;?B̶=󤾽h8?h긾?9/@+>zBk .]?U?BK%q?+%?CJ]>ſB?=1?S/b;`!9?`v?YM?Bp@?]$xN}^kf#?O*/Q?QܿBӿ̿Ծwj?N3\?*&+??^2g&Pz?3=N?4?]A*1?4A-x>¿U?1(x?4B>;|?=SqOP?Tm:3?UzR +0?Vg1?ֿ>澦m r0;\(i @?;?p!?"?8h?:/?J̐V;ȀΣ?'B?hkZ?;ݿ!<(?jOB?4;?0sҶ?8Qs!?2py"D? m ˸ྊPd?(/޾' HsWLv;gO_(ƾaTMl?s@.v?+s?+@?L?V}dM ?;ߺ?@C.zG7?R{g?#XjԔ3,?61MI$|[~z0?/R[?Bf ̾Ȍ?WR?~?Xп"=?.Ͳ?%'33־/N^ZGRҐ??TO8Y?UjA?ls0sJ??<4jl \?:@YX*>?L+?6bO`?N_ˠ_: b?{Կc?RN;cM?<l?S !?5?B?L@h?Rv ?DW%?fn%"S_Ms?176.?':Sn?ߔ?%Wxȿ?2?j7OнMuʽiڽ6?$g?]>e?6D!GVל?R?wz`⾹ӀM=< P?H/?T,ʾ?|❾;6?PuGt½ n?O>ɠ?a(yH%JA?e?-=2?iuǽ^?o־\BA>^BgCLB3U?D?^&? o=Y_?]8X̾W ?h~YH?DN?Zj?KqPࢽ?y?9zȼ?-꿡m7a?P%]"D=k9V2,?@?`\򿶢F?kj]?%?EFXt=#D?3?7_t:7?)Xr?5_`bcdE6#?:?`?AF?g5tg?8F<ǃ?*X{l?:PUʽϪ4dƾ5L?9?_^r?hd?e?0B?L0?<>?C.>?p?v^>`O۾GYؾB4oH?az?+vXF.p?WD#n2_?ݤ?T?9?Dy_?;֌4?X?/1?Ss {;97Sqľ%UBʽ41%2 B3l?7^ڿz?k*?.T?h4?9 ~?/KV?*B?'R*.C%?˰?!_*"?P?"ҽcT? ~?8?1?E*?J>?NHz?m?c?꾰+RL?/0=Œ=J|X?֬G>W?9$>?K@/9|T>?3B?<~?T 92@0A6|BgM?蛽EAx?c?BY'?Ur ?Wx?OBQ?Ff?k"9?G&?\o?6=.Pn&S +.}ڒ?M9.s?V9?I?c]J߶u @ھbϺ?NPL \ J? Z?5)3?]?I+?yrOV"ڰTo?d ?=Q8?(!8?1?4?ۡ(?7SN˾<8?cj?'s>8?T ?L /B'pka?&n?A]j?ި@Qӿql8?! ?:8оGƿ?M7}Sb?G\%?ǥ?I$?$Sk?L{[B!HA?K4???ބ|vz??"?1rV? HBߒ?5>g{?F')@..)Z[ݾᎾ +ӛ>p?JSh?'?Wʾoѓ\?Q`?̾ Q¢?Iac-߃*[WI?O>?>DZ? +?$K?Z?Aó+龿?b?g{*$? ?G?H ?Cz?${%ԾT$"?&n|3?PF@n6R?4?U9?D,K>ڿʿ~C̽ rxQJ;?6?i?aZmI?eÔj켽)=!?UV?lx?S?v-=D~;tT@?ioѽ̈́ +0?YP]?Hi`?t(<4q?fjzG?n}?I0y?^?FJ^?3b-;?)ҧ?G4?H6?.o?&; 9XDM>IL?T?'WԾ?X&4?oC?T$Kxý? ?qbvg;a-^"?: +Dʽ= `.=O?ֶ@/`?lƾk?ϖ?565^z`ir?BlI(?m?W?Gf{?o<̾O@ 6|rh? C;V@1ssl??)Ig{:? ?$?TVU?>^?HZ(G?.꽝!c_?j?' ?3&?~bs&4b4I?Z,ӽ*޾X;ڣ4?n(>NJ?Q .t F?6wX?Z~C1#o?N4c?m0vb??Ad?2@6 0?$Y@G⿉xp?Rнyl>?XԿo l==@? Ħ?G<+PԾW0 N?Q>ľJJ,?.~tۼ?S?Fcֻ7ۀpi?AVI'=x&(!;&?B.?]:F,짿˾T0 SPоX?iKcG2yb罵;?]=^+\d?3??:۾R/;F?Mt>"?2DoP?x?R?d#.pR?P?.T~R?{a??8=3\ (?fxybRN$?H{9?4X?3ă+n?'T?O(-o?թwY^]?@n?<%>5?81^,Ⱦ^k?>?cip :B?>Jk?˃?0[?Qub97 S'uC@1|?\@:و?\+?t?BDup(feU)?9?C?Ŀ6'?iBᅳ]?Y&v_?<u?aZ侯qr?>ױ4?2?dξڽaIbKN?2?NAΨ?ox'I?/"9UL?A)%k?P!tMqQ2??lz?Z8,m?U?6au/4侒@L8ƾ?N;h?fل?,7ҼP?Hg*o?::>hOzLĮ~CоrN?A32=9T޽вOߙ9?־:;?T`3I̘x?m?Ɂ[?SG?JұT?9 ;aϽ?߼?o ?,ܾ7?p>nQ?1Կ2t?'EM?ViD?d?޿P_m?7<"?򾃴&i?E?HVZdz$P?co?b55rܾD?EimzxI[o?]վ"?̮? RM?==*D;"?D3­%=ꀽ:*JX?Du￟XIK?A˒?fT?e~. ȸ_6¿/L?9<`M@?aԾPjz?-??g?7o?;L?Ir%.T?Hq?'?kR?3Eݒd?$5??Ԯ˾8W?;zF)(?FrE?^ Tܾ쾇_Ҿdg?O1B>Z?h +mUy? ž(L?1ܾq߫K!2w< +@ϩn>գԾႾa(?L?2p?C k?B濕L?l4?0?9?*K?%??G6?3l^?B8?@Mŀ?L? l@U?60?3;?$??N?4 h+rJ?Sdi6?Al?S`꾌|Nf>??>t?K(r|L?8-]Sp?rT_H??#?&TI_lMU?ٗ?'2V?ބ޿ ?8*? Aa4?9Q<:qH㿃 +?HX?NTh|?i̷<'q6;q?A=Nl=?_>? ?=>H?inP?t@(?e?\?WV=g<;04<{Đ>?zʾT]? ?mA?d< =[z-X?kRo(?}z?ڸYg0?S,<2?b#AnBC?P3?Yn0?*?B)> ?}P?C^5?T֑?jR!?[?DSL ?U6Q(;oN?Zx?oLv"?+o?s̿?$=&p?A uD?Nc|?K:?G?T _/Jk2?Cs?FϾ*qȿ?2%x[d@-Bp V_?F•?`l?A?N @^NtC>?ͳ?7DмpR?+bɽȣx?2?Tqʽ?"љn_r?@۾Ӛ۫?=|?"(?>ge?L^H00QD1v$>"Z?>0&?D&].?p* +?J?nd{-TY<ޔ?eIe>?O˿?|p++`?l% ?em #=?6>w?R8_d@?pQV=?8Pu?g?Lb+dSp?-tq@? ?s?2LX?]lw?V!@?k]N97?^9?Bt?\tK.,?J뾅Z־Ƚ4 GyF?X[CԘB?@o??E=|s!x?/:?m޾ic^{h_T?Pb?*/?l?-r?Nv(?J4Ӌ?X8KH?]e? oD<ЍD!>Sc= ?R?h%?7`L?>J^\?=~?ß?y!1?~@ANaOoyۤ.#?O +]_@? e?Y8Q[XP?Luc?F龛fnwp?M?6.2~@H7?m. `tcV<\?^0j},?A lx {]? '?EڈRUdP4 ?I`? +?@h'\`=ǡ?E]K?Cؾx?G짾J8ݿt1?^!\졽^`?7RĿpت?HkC?,?NO?)MA?@uD?>r?P ,k2MB?30,?0ܿ5|?L_Ѿ\@lh|?#/ ?zQ?1p:-m#+?;:l>ؿnTI =B`2?GB̿վ:?j?"[8?D|,rÈc(?٦?Axc=LM +A?` :-?Y5<7?5<`?(=\`?X Rw,Yп_Q.?1?jX߾J/> +h?5AK?2Tn +~=?5I?E6LؽO,Tr?Mj?,> ?:@BJNA?I?*ҽ~?,Ł?U#?jfZu:$j?=%;lM<辠]?gy ^E>dT?4Tƪ @/ ?.?VcorX??Ewc6??P?.Rh `?5f ?Uپv?-াLk?b2;?}>Z?kx9?+F?Jv䨨<(?B,?:>a9/Ǿ$@$?=Z?YԿ?$?6<˫!Wϐ?!K?N;ޫgT=ܩ>P?p?Vڨ.oP5?%>?Y<?Cy*dF?B8?IB?}?ꩫ?Z??] MOά?uJ+P?̛?P4?VU:&??`ZĽN?l?+ KQ?Dd;2N??A9%^{TĽ2P?r?ZUоu@?8-?- GO$?W؇c9?x ?_+P?sT,C@?R "=`?I2l=[2&WȻ?*?T&?@ۿw-=?ܵ< ?ڿ%`BW\Ph<=y྅Z=?sV +q?m>?%@?H?:?g'?1C?$W?l?0`?JV.? ,D?BE6oCf՜C +A,?? +U?NϚ?Y??<-?(xk?`_c<|3̗ν"(Ⱦ%7\?%|H0J( ?1dT4 MW?dtO?0^B?[?(sr.۬s)o?2AH?쾉F?裮#?R?+?AU??.係Jz׽?;f?3jqxUh?tIҏ MH?:Ӿy?GiM@)j?&V>h".?<%?KU?- ?-Zܾ??H^D?//p.b@?4mվ9 ?4j?a(?l?-Yx:?/?1tb=?T?-?X@??Dx<o{L?N +?e?9QJ? 2(?Up==v?AP?xH +?ܾ?QǾlhI?fm`?T!?G?F|?63?A(?:?O<,k?.c?J}@F@?H3? }ꄾN.JZ,-?ZK7?:?i刿?MI?=B?7 @2:n M$$?M?=dD)^(ξ6< +.?P,?.|l$̽ҽk?59T>ve?;*L?<D;V?F?=?IZl?,?DyI&,:G`*`?3?Q^yɽ(?R\:k&?);?-.?JgQL??X?*0?̑h?K?4aR?1?-ҾòO?)T܎+W f +ؾ ʾX:4<? +?SN@?係nQu`?pP?\ +?.ڱ?K?1TXRtGF`2?T?3MތB2jl9j?'2+?Q?zp?cWv?Aſ4sǐ=sQ?GؽԾ]IO$? (!??߿k'?d~v?;Fv?!Ƚ??J۽?9h= 8?gtά?Pkt?M?>uO?6jg@?f"B?H?/̊?,%bp??2k?V?^;ԿX,/ڊ??L7.?KCh?+?Pv{WD͜?@־=<\H=; (>@?:0迅˾ѻwℽ!THJzXi=𫸾GJ,KVɿ ][?L.,˼x|L?,2deо\?=0c;uـ ?SY?I?ratz,-^?&?ME?9*gD?R,??E?X"!$Eʾówj.:ITHxw4??Iv#@5 ?Y?2=He}?N0r?]h +' +t5>zʻL?ɗ𿃏&?\?Pt/[";P?_Xg9?.BAƿxy=l0U@=j?4e?q[;?]?ZRD>?D\?]t?P +8?EH̨$?(k$?s&>;?J~0s? +?WP ?i >g=q&l?0b?@^?`?ZG>iz?qɾr?d?:|??W\ټ@*ފ?_ 08Su'e?*?Dأ?k?@I?+/?Xm?DrýD?BP?RFF?mZ1<>„9Y|mԽV?,.N rEBr@jDKVcB +@v?Jv-.?%<4?i?MzZb?E?aRվX@k)3K<'D?`?Tlfi +?twF wO`?'?4OhXf?SpL*??Z8(?FFX?SHe?T)n?:F +]ܬ= +Z?w?볬=?Tڭ????m?M0~?Ufx?tE?Vǭ59?9Ⱦimc iK?Ё52Q&?Cb?jR?at +㤿\n 4?fm?@f?J?C)n?:^n?Fo辖vpq>n?M\_ +?<"?1yݑH?9cfE|%=ʤ?%p^o8?2~I#@?FhGJzgI5?dD?)?,V?N?ٔT?򟿁N;\$?T ]?_d ?A]?\!?:.?1G?gFra(>? +y?F?0+q?I?;SnԾOKп}?; iԾ%A(&w?=HLkV?XRA `Ծe?*??i޾₩?T?7?M1x? >?bž| ?SؾTֽiS?fz?(߻[aAH@C+AϪ?VKT8x4߿*?[L? ?q?zBA'>X@?MB޾ 44?qjξv?;j|齭uF?`m=Fc\4.Հ?^?&??5W?`?I6?UX?P?DR=s?N"?"vȾnѾS}wFg?tӾ ?e?/?B;\?8)Ҿ=pJ>6?D^?et?$f<%~C?p?J5+"?܎tY9LD?b`L?CТy?9LWx?@o?g?%Ol?F 7 W,lgJ5Jk?L3 E6/1?1᤿?7,¾ 7r3?ek\t?;,?W"뿘\tB$'?Ჿ?Vl~k<?ds>!;u`g侒܎?g8n\?;?X `q?Gk??0\v?,A?]<5Z2弾!??Dx?R#B9?D?̒ξb?#>M4kg$?ؾD?.q.@'$A!k=X?:HUVd6ZIj?YD?p ?IK| 6=zꍾY?t%teA2ZJ|?k>_`?L{;\kXV?SwU?Vֿq>?QYT?Xؽ6ܿ?ZALR6xnF?2?ٜ?06?T =ۢa?Af?m:뽳2u?"!`I|gj@)cs?@Tv7TS[P<?>ML?5[ ܿ d?x?Z~ ?nV?ms???+ij~V3OV??YT@(\kԾa A?I[?b?a3G?J?@TTv,M6FP`:DpUsf?dB~?U 8~kt?j輾DY?RiؾCL,x>?4?DR `?L?D0?_@rj?\?L=# >?)?T?Q1þt PlнϞ@/-Av?*6? +\{??-?N?ݶƿp~ Ѿ-x?0?3T?BG ?HXTENSION= 'TABLE ' / Ascii table extension BITPIX = 8 / 8-bits per 'pixels' NAXIS = 2 / Simple 2-D matrix NAXIS1 = 796 / Number of characters per row NAXIS2 = 4 / The number of rows PCOUNT = 0 / No 'random' parameters GCOUNT = 1 / Only one group TFIELDS = 49 / Number of fields per row EXTNAME = 'u5780205r_cvt.c0h.tab' / Name of table TTYPE1 = 'CRVAL1 ' / TBCOL1 = 1 / TFORM1 = 'D25.17 ' / TUNIT1 = ' ' / TDISP1 = 'G25.16 ' / %25.16g TTYPE2 = 'CRVAL2 ' / TBCOL2 = 27 / TFORM2 = 'D25.17 ' / TUNIT2 = ' ' / TDISP2 = 'G25.16 ' / %25.16g TTYPE3 = 'CRPIX1 ' / TBCOL3 = 53 / TFORM3 = 'E15.7 ' / TUNIT3 = ' ' / TDISP3 = 'G15.7 ' / %15.7g TTYPE4 = 'CRPIX2 ' / TBCOL4 = 69 / TFORM4 = 'E15.7 ' / TUNIT4 = ' ' / TDISP4 = 'G15.7 ' / %15.7g TTYPE5 = 'CD1_1 ' / TBCOL5 = 85 / TFORM5 = 'E15.7 ' / TUNIT5 = ' ' / TDISP5 = 'G15.7 ' / %15.7g TTYPE6 = 'CD1_2 ' / TBCOL6 = 101 / TFORM6 = 'E15.7 ' / TUNIT6 = ' ' / TDISP6 = 'G15.7 ' / %15.7g TTYPE7 = 'CD2_1 ' / TBCOL7 = 117 / TFORM7 = 'E15.7 ' / TUNIT7 = ' ' / TDISP7 = 'G15.7 ' / %15.7g TTYPE8 = 'CD2_2 ' / TBCOL8 = 133 / TFORM8 = 'E15.7 ' / TUNIT8 = ' ' / TDISP8 = 'G15.7 ' / %15.7g TTYPE9 = 'DATAMIN ' / TBCOL9 = 149 / TFORM9 = 'E15.7 ' / TUNIT9 = ' ' / TDISP9 = 'G15.7 ' / %15.7g TTYPE10 = 'DATAMAX ' / TBCOL10 = 165 / TFORM10 = 'E15.7 ' / TUNIT10 = ' ' / TDISP10 = 'G15.7 ' / %15.7g TTYPE11 = 'MIR_REVR' / TBCOL11 = 181 / TFORM11 = 'A1 ' / TUNIT11 = 'LOGICAL-' / TDISP11 = 'L1 ' / %1b TTYPE12 = 'ORIENTAT' / TBCOL12 = 183 / TFORM12 = 'E15.7 ' / TUNIT12 = ' ' / TDISP12 = 'G15.7 ' / %15.7g TTYPE13 = 'FILLCNT ' / TBCOL13 = 199 / TFORM13 = 'I12 ' / TUNIT13 = ' ' / TDISP13 = 'I11 ' / %11d TTYPE14 = 'ERRCNT ' / TBCOL14 = 212 / TFORM14 = 'I12 ' / TUNIT14 = ' ' / TDISP14 = 'I11 ' / %11d TTYPE15 = 'FPKTTIME' / TBCOL15 = 225 / TFORM15 = 'D25.17 ' / TUNIT15 = ' ' / TDISP15 = 'G25.16 ' / %25.16g TTYPE16 = 'LPKTTIME' / TBCOL16 = 251 / TFORM16 = 'D25.17 ' / TUNIT16 = ' ' / TDISP16 = 'G25.16 ' / %25.16g TTYPE17 = 'CTYPE1 ' / TBCOL17 = 277 / TFORM17 = 'A8 ' / TUNIT17 = 'CHARACTER*8' / TDISP17 = 'A8 ' / %-8s TTYPE18 = 'CTYPE2 ' / TBCOL18 = 286 / TFORM18 = 'A8 ' / TUNIT18 = 'CHARACTER*8' / TDISP18 = 'A8 ' / %-8s TTYPE19 = 'DETECTOR' / TBCOL19 = 295 / TFORM19 = 'I12 ' / TUNIT19 = ' ' / TDISP19 = 'I11 ' / %11d TTYPE20 = 'DEZERO ' / TBCOL20 = 308 / TFORM20 = 'E15.7 ' / TUNIT20 = ' ' / TDISP20 = 'G15.7 ' / %15.7g TTYPE21 = 'BIASEVEN' / TBCOL21 = 324 / TFORM21 = 'E15.7 ' / TUNIT21 = ' ' / TDISP21 = 'G15.7 ' / %15.7g TTYPE22 = 'BIASODD ' / TBCOL22 = 340 / TFORM22 = 'E15.7 ' / TUNIT22 = ' ' / TDISP22 = 'G15.7 ' / %15.7g TTYPE23 = 'GOODMIN ' / TBCOL23 = 356 / TFORM23 = 'E15.7 ' / TUNIT23 = ' ' / TDISP23 = 'G15.7 ' / %15.7g TTYPE24 = 'GOODMAX ' / TBCOL24 = 372 / TFORM24 = 'E15.7 ' / TUNIT24 = ' ' / TDISP24 = 'G15.7 ' / %15.7g TTYPE25 = 'DATAMEAN' / TBCOL25 = 388 / TFORM25 = 'E15.7 ' / TUNIT25 = ' ' / TDISP25 = 'G15.7 ' / %15.7g TTYPE26 = 'GPIXELS ' / TBCOL26 = 404 / TFORM26 = 'I12 ' / TUNIT26 = ' ' / TDISP26 = 'I11 ' / %11d TTYPE27 = 'SOFTERRS' / TBCOL27 = 417 / TFORM27 = 'I12 ' / TUNIT27 = ' ' / TDISP27 = 'I11 ' / %11d TTYPE28 = 'CALIBDEF' / TBCOL28 = 430 / TFORM28 = 'I12 ' / TUNIT28 = ' ' / TDISP28 = 'I11 ' / %11d TTYPE29 = 'STATICD ' / TBCOL29 = 443 / TFORM29 = 'I12 ' / TUNIT29 = ' ' / TDISP29 = 'I11 ' / %11d TTYPE30 = 'ATODSAT ' / TBCOL30 = 456 / TFORM30 = 'I12 ' / TUNIT30 = ' ' / TDISP30 = 'I11 ' / %11d TTYPE31 = 'DATALOST' / TBCOL31 = 469 / TFORM31 = 'I12 ' / TUNIT31 = ' ' / TDISP31 = 'I11 ' / %11d TTYPE32 = 'BADPIXEL' / TBCOL32 = 482 / TFORM32 = 'I12 ' / TUNIT32 = ' ' / TDISP32 = 'I11 ' / %11d TTYPE33 = 'OVERLAP ' / TBCOL33 = 495 / TFORM33 = 'I12 ' / TUNIT33 = ' ' / TDISP33 = 'I11 ' / %11d TTYPE34 = 'PHOTMODE' / TBCOL34 = 508 / TFORM34 = 'A48 ' / TUNIT34 = 'CHARACTER*48' / TDISP34 = 'A48 ' / %-48s TTYPE35 = 'PHOTFLAM' / TBCOL35 = 557 / TFORM35 = 'E15.7 ' / TUNIT35 = ' ' / TDISP35 = 'G15.7 ' / %15.7g TTYPE36 = 'PHOTZPT ' / TBCOL36 = 573 / TFORM36 = 'E15.7 ' / TUNIT36 = ' ' / TDISP36 = 'G15.7 ' / %15.7g TTYPE37 = 'PHOTPLAM' / TBCOL37 = 589 / TFORM37 = 'E15.7 ' / TUNIT37 = ' ' / TDISP37 = 'G15.7 ' / %15.7g TTYPE38 = 'PHOTBW ' / TBCOL38 = 605 / TFORM38 = 'E15.7 ' / TUNIT38 = ' ' / TDISP38 = 'G15.7 ' / %15.7g TTYPE39 = 'MEDIAN ' / TBCOL39 = 621 / TFORM39 = 'E15.7 ' / TUNIT39 = ' ' / TDISP39 = 'G15.7 ' / %15.7g TTYPE40 = 'MEDSHADO' / TBCOL40 = 637 / TFORM40 = 'E15.7 ' / TUNIT40 = ' ' / TDISP40 = 'G15.7 ' / %15.7g TTYPE41 = 'HISTWIDE' / TBCOL41 = 653 / TFORM41 = 'E15.7 ' / TUNIT41 = ' ' / TDISP41 = 'G15.7 ' / %15.7g TTYPE42 = 'SKEWNESS' / TBCOL42 = 669 / TFORM42 = 'E15.7 ' / TUNIT42 = ' ' / TDISP42 = 'G15.7 ' / %15.7g TTYPE43 = 'MEANC10 ' / TBCOL43 = 685 / TFORM43 = 'E15.7 ' / TUNIT43 = ' ' / TDISP43 = 'G15.7 ' / %15.7g TTYPE44 = 'MEANC25 ' / TBCOL44 = 701 / TFORM44 = 'E15.7 ' / TUNIT44 = ' ' / TDISP44 = 'G15.7 ' / %15.7g TTYPE45 = 'MEANC50 ' / TBCOL45 = 717 / TFORM45 = 'E15.7 ' / TUNIT45 = ' ' / TDISP45 = 'G15.7 ' / %15.7g TTYPE46 = 'MEANC100' / TBCOL46 = 733 / TFORM46 = 'E15.7 ' / TUNIT46 = ' ' / TDISP46 = 'G15.7 ' / %15.7g TTYPE47 = 'MEANC200' / TBCOL47 = 749 / TFORM47 = 'E15.7 ' / TUNIT47 = ' ' / TDISP47 = 'G15.7 ' / %15.7g TTYPE48 = 'MEANC300' / TBCOL48 = 765 / TFORM48 = 'E15.7 ' / TUNIT48 = ' ' / TDISP48 = 'G15.7 ' / %15.7g TTYPE49 = 'BACKGRND' / TBCOL49 = 781 / TFORM49 = 'E15.7 ' / TUNIT49 = ' ' / TDISP49 = 'G15.7 ' / %15.7g CRVAL1 = 'right ascension of reference pixel (deg)' / CRVAL2 = 'declination of reference pixel (deg)' / CRPIX1 = 'x-coordinate of reference pixel' / CRPIX2 = 'y-coordinate of reference pixel' / CD1_1 = 'partial of the right ascension w.r.t. x' / CD1_2 = 'partial of the right ascension w.r.t. y' / CD2_1 = 'partial of the declination w.r.t. x' / CD2_2 = 'partial of the declination w.r.t. y' / DATAMIN = 'minimum value of the data' / DATAMAX = 'maximum value of the data' / MIR_REVR= 'is the image mirror reversed?' / ORIENTAT= 'orientation of the image (deg)' / FILLCNT = 'number of segments containing fill' / ERRCNT = 'number of segments containing errors' / FPKTTIME= 'time of the first packet (Modified Julian Date)' / LPKTTIME= 'time of the last packet (Modified Julian Date)' / CTYPE1 = 'first coordinate type' / CTYPE2 = 'second coordinate type' / DETECTOR= 'CCD detector: PC 1, WFC 2-4' / DEZERO = 'mean bias level from EED extended register' / BIASEVEN= 'bias level for even-numbered columns' / BIASODD = 'bias level for odd-numbered columns' / GOODMIN = 'minimum value of the "good" pixels' / GOODMAX = 'maximum value of the "good" pixels' / DATAMEAN= 'mean value of the "good" pixels' / GPIXELS = 'number of "good" pixels (DQF = 0)' / SOFTERRS= 'number of "soft error" pixels (DQF = 1)' / CALIBDEF= 'number of "calibration defect" pixels (DQF = 2)' / STATICD = 'number of "static defect" pixels (DQF = 4)' / ATODSAT = 'number of "AtoD saturated" pixels (DQF = 8)' / DATALOST= 'number of "data lost" pixels (DQF = 16)' / BADPIXEL= 'number of "generic bad" pixels (DQF = 32)' / OVERLAP = 'number of "image overlap" pixels (DQF = 64)' / PHOTMODE= 'Photometry mode' / PHOTFLAM= 'Inverse Sensitivity' / PHOTZPT = 'Zero point' / PHOTPLAM= 'Pivot wavelength' / PHOTBW = 'RMS bandwidth of the filter' / MEDIAN = 'middle data value when good qual pixels sorted' / MEDSHADO= 'median pixel value in shadow of pyramid edge' / HISTWIDE= 'width of the histogram' / SKEWNESS= 'skewness of the histogram' / MEANC10 = 'mean of a 10x10 region at center of chip' / MEANC25 = 'mean of a 25x25 region at center of chip' / MEANC50 = 'mean of a 50x50 region at center of chip' / MEANC100= 'mean of a 100x100 region at center of chip' / MEANC200= 'mean of a 200x200 region at center of chip' / MEANC300= 'mean of a 300x300 region at center of chip' / BACKGRND= 'estimated background level' / END 1.8263118863080002E2 3.9396336734110001E1 4.200000E2 4.245000E2 -1.067040E-6 -1.259580E-5 -1.260160E-5 1.066550E-6 -7.319537E1 3.777701E3 T -8.516000E1 0 0 5.1229798573999989E4 5.1229798742000003E4 RA---TAN DEC--TAN 1 3.166452E2 3.166715E2 3.166189E2 -5.064006E0 2.552170E3 4.182382E-1 632387 0 1466 0 16 0 0 0 WFPC2,1,A2D7,LRF#4877.0,,CAL 3.447460E-16 -2.110000E1 4.884258E3 2.020996E1 -1.756510E-1 -1.216810E-1 1.033711E0 -1.983727E0 1.295800E-1 3.129676E-1 4.577668E-1 3.916293E-1 3.115222E-1 3.295493E-1 -3.676353E-1 1.8262552336340000E2 3.9412143138150002E1 4.235000E2 4.140000E2 -2.756050E-5 2.082210E-6 2.080210E-6 2.758710E-5 -1.995751E1 3.740623E3 T 4.316380E0 0 0 5.1229798742000003E4 5.1229798910000017E4 RA---TAN DEC--TAN 2 3.540573E2 3.540761E2 3.540386E2 -3.379329E0 3.720573E3 6.385469E-1 631340 0 2072 0 25 0 0 0 WFPC2,2,A2D7,LRF#4877.0,,CAL 3.382652E-16 -2.110000E1 4.884261E3 2.020992E1 -1.896807E-1 -1.899146E-1 1.053666E0 -1.947547E0 2.564496E-1 1.057321E-1 9.952926E-1 8.409855E-1 6.534808E-1 5.836062E-1 2.101429E-1 1.8265237923050001E2 3.9410944281389994E1 4.360000E2 4.245000E2 2.239130E-6 2.754260E-5 2.756840E-5 -2.237040E-6 -5.853249E1 3.282136E3 T 9.464340E1 0 0 5.1229798910000017E4 5.1229799077999995E4 RA---TAN DEC--TAN 3 3.066676E2 3.066541E2 3.066810E2 -3.713645E0 3.282136E3 5.217843E-1 633259 0 1551 0 7 0 0 0 WFPC2,3,A2D7,LRF#4877.0,,CAL 3.372288E-16 -2.110000E1 4.884255E3 2.021006E1 1.109185E-2 6.184989E-2 1.003236E0 2.821703E1 1.669304E0 3.472891E-1 3.272150E-1 6.145074E-1 7.027547E-1 5.681439E-1 4.761558E-1 1.8265002235500000E2 3.9389460441680004E1 4.230000E2 4.210000E2 2.753580E-5 -2.509310E-6 -2.506890E-6 -2.756240E-5 -7.241166E1 3.420240E3 T -1.747980E2 0 0 5.1229799078999995E4 5.1229799245999991E4 RA---TAN DEC--TAN 4 3.117072E2 3.117648E2 3.116496E2 -3.289304E0 3.420240E3 7.084697E-1 628289 0 1816 0 57 0 0 0 WFPC2,4,A2D7,LRF#4877.0,,CAL 3.464660E-16 -2.110000E1 4.884256E3 2.020999E1 -6.813275E-2 -3.253493E-2 9.846212E-1 -4.591252E0 1.359666E-1 4.015671E-2 1.129934E-1 1.897491E0 9.687142E-1 1.053770E0 3.466465E-1 \ No newline at end of file diff --git a/tests/FITS/pixel_loader.cpp b/tests/FITS/pixel_loader.cpp new file mode 100644 index 00000000..314bfa80 --- /dev/null +++ b/tests/FITS/pixel_loader.cpp @@ -0,0 +1,334 @@ +/* $Id: flipx.c,v 1.10 2006/02/17 10:26:58 yjung Exp $ + * + * This file is part of the ESO QFITS Library + * Copyright (C) 2001-2004 European Southern Observatory + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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 for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * $Author: yjung $ + * $Date: 2006/02/17 10:26:58 $ + * $Revision: 1.10 $ + * $Name: qfits-6_2_0 $ + */ + +/*----------------------------------------------------------------------------- + Includes + -----------------------------------------------------------------------------*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define NUMPAGES 10000 +#define NUMTHREADS 1 +#define BUFFERSIZE 100 + +#include "umap.h" +#include "umaptest.h" + +extern "C" +{ +#include "qfits.h" +} + +umt_optstruct_t options; +/*----------------------------------------------------------------------------- + Private functions + -----------------------------------------------------------------------------*/ + +/* + * Swap pixels between position p1 and p2, regardless of the pixel + * type and endian-ness of the local host. + */ + +static void swap_pix(char * buf,char * buf2, int p1, int p2, int psize) +{ + int i ; + char c ; + //uint16_t *a=&buf[p1]; + //uint16_t *b=&buf[p2]; + + //printf("%u %u\n",*a,*b); + //if ((la)&&(la!=*a)) printf("Here!"); + //la=*a; + //lb=*b; + //printf(""); + for (i=0 ; ifd,p->base_addr); + + //uint64_t* array = (uint64_t*) p->base_addr; // feed it the mmaped region + //uint64_t array_length = num_pages * 512; // in number of 8-byte integers. + //uint64_t experiment_count = 100000; // Size of experiment, number of accesses + //uint64_t batch_size = 1000; // Set a batch size MUST BE MULTIPLE OF experiment_count + + if ( ! options.usemmap ) + { + fprintf(stdout, "Using UserfaultHandler Buffer\n"); + p->pagesize = pagesize; + p->bufsize = options.bufsize; + p->faultnum = 0; + p->uffd = uffd_init(p->base_addr, pagesize, options.numpages); + + pthread_create(&uffd_thread, NULL, uffd_handler, p); + sleep(1); + } + else + { + fprintf(stdout, "Using vanilla mmap()\n"); + } + + + char * sval ; + int dstart; + int dstart2; + int lx, ly ; + int bpp ; + int i, j ; + char * buf ; + char * fbuf ; + char * buf2; + char * fbuf2; + int psize; + struct stat fileinfo ; + struct stat fileinfo2; + int fd ; + int fdnew; + + printf("processing %s\n",filename); + + if (stat(filename, &fileinfo)!=0) { + return -1 ; + } + if (fileinfo.st_size<1) { + printf("cannot stat file\n"); + return -1 ; + } + + /* Retrieve image attributes */ + if (qfits_is_fits(filename)!=1) { + printf("not a FITS file\n"); + return -1 ; + } + + sval = qfits_query_hdr(filename, "NAXIS1"); + if (sval==NULL) { + printf("cannot read NAXIS1\n"); + return -1 ; + } + lx = atoi(sval); + sval = qfits_query_hdr(filename, "NAXIS2"); + if (sval==NULL) { + printf("cannot read NAXIS2\n"); + return -1 ; + } + ly = atoi(sval); + sval = qfits_query_hdr(filename, "BITPIX"); + if (sval==NULL) { + printf("cannot read BITPIX\n"); + return -1 ; + } + bpp = atoi(sval); + + psize = bpp/8 ; + printf("psize: %d uint32: %d\n",psize,sizeof(uint32_t)); + if (psize<0) psize=-psize ; + + /* Retrieve start of first data section */ + if (qfits_get_datinfo(filename, 0, &dstart, NULL)!=0) { + printf("reading header information\n"); + return -1 ; + } + + printf("psize:%d\n",psize); + //Map the input file in read/write mode (input file is modified) + /* if ((fd=open(filename, O_RDWR))==-1) { */ + /* perror("open"); */ + /* printf("reading file\n"); */ + /* return -1 ; */ + /* } */ + /* fbuf = (char*)mmap(0, */ + /* fileinfo.st_size, */ + /* PROT_READ | PROT_WRITE, */ + /* MAP_SHARED, */ + /* fd , */ + /* 0); */ + /* if (fbuf==(char*)-1) { */ + /* perror("mmap"); */ + /* printf("mapping file\n"); */ + /* return -1 ; */ + /* } */ + + options.fn = filename; + //fprintf(stdout, "USEFILE enabled %s\n", options.fn); + p->fd = open(options.fn, O_RDWR, S_IRUSR|S_IWUSR);// | O_DIRECT); + if (p->fd == -1) { + perror("file open"); + exit(1); + } + + // if ((fdnew=open("new.fits", O_RDWR))==-1) + // { + // perror("open"); + // printf("reading file\n"); + // return -1 ; + // } + + // if (stat("new.fits", &fileinfo2)!=0) { + // return -1 ; + // } + // fbuf2 = (char*)mmap(0, + // fileinfo2.st_size, + // PROT_READ | PROT_WRITE, + // MAP_SHARED, + // fdnew, + // 0); + // if (fbuf2==(char*)-1) { + // perror("mmap"); + // printf("mapping file\n"); + // return -1 ; + // } + + // buf2=fbuf2+dstart2; + buf2=NULL; + pthread_create(&uffd_thread, NULL, uffd_handler, p); + + sleep(1); + + fbuf=(char *)p->base_addr; + buf = fbuf + dstart ; + //printf("%p\n"); + + /* Double loop */ + printf("lx ly:%d %d\n",lx,ly); + /* for (i=0;i0) + { + fprintf(stderr, "%s: %d error(s) occurred\n", argv[0], err); + return -1 ; + } + return 0 ; +} diff --git a/tests/FITS/setup.sh b/tests/FITS/setup.sh new file mode 100755 index 00000000..b57dc93a --- /dev/null +++ b/tests/FITS/setup.sh @@ -0,0 +1,3 @@ +File=./WFPC2ASSNu5780205bx.fits +env LD_LIBRARY_PATH=/home/liu61/qfits/lib ~/install/bin/FITS -f $File -p 10 +#export LD_LIBRARY_PATH From 763651a0bb34e4e93300d9deb7060b7dee003c80 Mon Sep 17 00:00:00 2001 From: "Maya B. Gokhale" Date: Fri, 30 Jun 2017 13:16:34 -0700 Subject: [PATCH 03/32] modified the simple test to use new protocol to stop the handler. --- tests/umaptest/test.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/umaptest/test.c b/tests/umaptest/test.c index 49988d81..e55eb1cb 100644 --- a/tests/umaptest/test.c +++ b/tests/umaptest/test.c @@ -124,7 +124,7 @@ int main(int argc, char **argv) // start the thread that will handle userfaultfd events - stop_uffd_handler = 0; + //stop_uffd_handler = 0; params_t *p = malloc(sizeof(params_t)); p->uffd = uffd_init(region, pagesize, num_pages); @@ -207,7 +207,7 @@ int main(int argc, char **argv) /* //cur += pagesize; */ /* } */ //------------------------------------------------------------------- - stop_uffd_handler = 1; + stop_umap_handler(); pthread_join(uffd_thread, NULL); //fprintf(stdout, "mode %llu\n", (unsigned long long)uffdio_register.mode); fprintf(stdout,"total number of fault:%d, value is %d\n",p->faultnum,value); From cf2619f64d24449a51b447fee8614a258b07e1db Mon Sep 17 00:00:00 2001 From: Marty McFadden Date: Mon, 3 Jul 2017 08:40:08 -0700 Subject: [PATCH 04/32] Updated license information for 3rd party tests --- README.md | 7 +++++-- thirdparty_licenses.md | 6 ++++++ 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 thirdparty_licenses.md diff --git a/README.md b/README.md index 0488c193..cf21dcb4 100644 --- a/README.md +++ b/README.md @@ -30,9 +30,12 @@ make install The interface is currently a work in progress (see [umap.h](src/umap.h)). -## Contact/Legal +## License -The license is [LGPL](/LICENSE). +- The license is [LGPL](/LICENSE). +- [thirdparty_licenses.md](/thirdparty_licenses.md) + +## Contact Primary contact/Lead developer diff --git a/thirdparty_licenses.md b/thirdparty_licenses.md new file mode 100644 index 00000000..a19a4e3a --- /dev/null +++ b/thirdparty_licenses.md @@ -0,0 +1,6 @@ +# Third Party Licenses +==================== + +## C and C++ Tests +- *qfits*: ftp://ftp.eso.org/pub/qfits/ (GPU License) + From 19db8bb2b5cbce60c48f2dfdf1c72689862964c8 Mon Sep 17 00:00:00 2001 From: Marty McFadden Date: Mon, 3 Jul 2017 08:41:37 -0700 Subject: [PATCH 05/32] Typo --- thirdparty_licenses.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thirdparty_licenses.md b/thirdparty_licenses.md index a19a4e3a..0503939c 100644 --- a/thirdparty_licenses.md +++ b/thirdparty_licenses.md @@ -2,5 +2,5 @@ ==================== ## C and C++ Tests -- *qfits*: ftp://ftp.eso.org/pub/qfits/ (GPU License) +- *qfits*: ftp://ftp.eso.org/pub/qfits/ (GPL License) From 75397b0e6e05b7066a10a00a59e5b3344cbec313 Mon Sep 17 00:00:00 2001 From: xiszishu Date: Mon, 3 Jul 2017 15:18:38 -0700 Subject: [PATCH 06/32] debuged and tested with original version to make sure it works properly --- tests/FITS/pixel_loader.cpp | 51 ++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/tests/FITS/pixel_loader.cpp b/tests/FITS/pixel_loader.cpp index 314bfa80..b9a96965 100644 --- a/tests/FITS/pixel_loader.cpp +++ b/tests/FITS/pixel_loader.cpp @@ -41,7 +41,6 @@ #include #include - #define NUMPAGES 10000 #define NUMTHREADS 1 #define BUFFERSIZE 100 @@ -98,7 +97,7 @@ static void copypix(char * buf,char * buf2, int p1, int psize) else { a2=(uint32_t *)buf; - printf("%u\n",*a2); + printf("%lu\n",*a2); } //uint16_t *b=&buf2[p1]; @@ -131,9 +130,20 @@ static int fits_flip(const char * filename) int64_t arraysize; int value=0; params_t *p = (params_t *) malloc(sizeof(params_t)); - pagesize = get_pagesize(); + struct stat fileinfo ; - umt_openandmap(options, totalbytes, p->fd,p->base_addr); + if (stat(filename, &fileinfo)!=0) { + return -1 ; + } + if (fileinfo.st_size<1) { + printf("cannot stat file\n"); + return -1 ; + } + pagesize = get_pagesize(); + + //totalbytes = options.numpages*pagesize; + //printf("size:%d\n",fileinfo.st_size); + umt_openandmap(options, fileinfo.st_size, p->fd,p->base_addr); //uint64_t* array = (uint64_t*) p->base_addr; // feed it the mmaped region //uint64_t array_length = num_pages * 512; // in number of 8-byte integers. @@ -168,21 +178,12 @@ static int fits_flip(const char * filename) char * buf2; char * fbuf2; int psize; - struct stat fileinfo ; struct stat fileinfo2; int fd ; int fdnew; printf("processing %s\n",filename); - if (stat(filename, &fileinfo)!=0) { - return -1 ; - } - if (fileinfo.st_size<1) { - printf("cannot stat file\n"); - return -1 ; - } - /* Retrieve image attributes */ if (qfits_is_fits(filename)!=1) { printf("not a FITS file\n"); @@ -209,7 +210,7 @@ static int fits_flip(const char * filename) bpp = atoi(sval); psize = bpp/8 ; - printf("psize: %d uint32: %d\n",psize,sizeof(uint32_t)); + //printf("psize: %d uint32: %d\n",psize,sizeof(uint32_t)); if (psize<0) psize=-psize ; /* Retrieve start of first data section */ @@ -219,6 +220,7 @@ static int fits_flip(const char * filename) } printf("psize:%d\n",psize); + printf("dstart:%d\n",dstart); //Map the input file in read/write mode (input file is modified) /* if ((fd=open(filename, O_RDWR))==-1) { */ /* perror("open"); */ @@ -237,14 +239,15 @@ static int fits_flip(const char * filename) /* return -1 ; */ /* } */ - options.fn = filename; + //options.fn = filename; //fprintf(stdout, "USEFILE enabled %s\n", options.fn); - p->fd = open(options.fn, O_RDWR, S_IRUSR|S_IWUSR);// | O_DIRECT); - if (p->fd == -1) { - perror("file open"); - exit(1); - } + // p->fd = open(options.fn, O_RDWR, S_IRUSR|S_IWUSR);// | O_DIRECT); + // if (p->fd == -1) { + // perror("file open"); + // exit(1); + // } + //printf("file opened!\n"); // if ((fdnew=open("new.fits", O_RDWR))==-1) // { // perror("open"); @@ -269,7 +272,7 @@ static int fits_flip(const char * filename) // buf2=fbuf2+dstart2; buf2=NULL; - pthread_create(&uffd_thread, NULL, uffd_handler, p); + //pthread_create(&uffd_thread, NULL, uffd_handler, p); sleep(1); @@ -278,7 +281,7 @@ static int fits_flip(const char * filename) //printf("%p\n"); /* Double loop */ - printf("lx ly:%d %d\n",lx,ly); + //printf("lx ly:%d %d\n",lx,ly); /* for (i=0;ibase_addr, fileinfo.st_size); } // if (munmap(fbuf2, fileinfo2.st_size)!=0) { From 865690d37504a1be8c3eaf9ee584e895f2228576 Mon Sep 17 00:00:00 2001 From: Marty McFadden Date: Mon, 10 Jul 2017 12:23:13 -0700 Subject: [PATCH 07/32] 1. Now exporting umap() as an mmap(2)-like API 2. umap() implementation using C++11 threads 3. umapsort() now using GNU multi-threaded sort 4. Moved uffd_test to tests sub-directory and converted to cmake 5. All tests updated to use new umap API. --- README.md | 8 +- include/umap.h | 49 ++ src/CMakeLists.txt | 4 +- src/umap.cpp | 475 ++++++++++-------- src/umap.h | 91 ---- tests/CMakeLists.txt | 7 +- tests/libumaptest/CMakeLists.txt | 10 +- tests/libumaptest/mmap.cpp | 62 ++- tests/libumaptest/options.cpp | 31 +- tests/libumaptest/umaptest.h | 12 +- tests/median/median.cpp | 39 +- tests/median/median_cube.cpp | 46 +- tests/readload/readload.cpp | 36 +- tests/readload/wastemem.sh | 23 + {uffd_test => tests/uffd_test}/uffd_test2.cpp | 75 +-- tests/umapsort/umapsort.cpp | 45 +- tests/umaptest/CMakeLists.txt | 1 + tests/umaptest/test.c | 107 +--- uffd_test/Makefile | 37 -- 19 files changed, 489 insertions(+), 669 deletions(-) create mode 100644 include/umap.h delete mode 100644 src/umap.h create mode 100644 tests/readload/wastemem.sh rename {uffd_test => tests/uffd_test}/uffd_test2.cpp (68%) delete mode 100755 uffd_test/Makefile diff --git a/README.md b/README.md index cf21dcb4..2ab59d7e 100644 --- a/README.md +++ b/README.md @@ -26,9 +26,15 @@ cmake -DCMAKE_INSTALL_PREFIX = .. make install ``` +The default for cmake is to build a Debug version of the software. If you would like to build an optimized (-O3) +version, simply run +```bash +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX = .. +``` + ## umap() Interface -The interface is currently a work in progress (see [umap.h](src/umap.h)). +The interface is currently a work in progress (see [umap.h](include/umap.h)). ## License diff --git a/include/umap.h b/include/umap.h new file mode 100644 index 00000000..b59f88b4 --- /dev/null +++ b/include/umap.h @@ -0,0 +1,49 @@ +/* + * This file is part of UMAP. For copyright information see the COPYRIGHT file in the top level directory, or at + * https://github.com/LLNL/umap/blob/master/COPYRIGHT This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License (as published by the Free Software Foundation) + * version 2.1 dated February 1999. 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 terms + * and conditions of the GNU Lesser General Public License for more details. You should have received a copy of the + * GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef _UMAP_H_ +#define _UMAP_H_ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * umap() is a wrapper around mmap(2) and userfaultfd(2) to allow for creating a mapping of pages managed in user-space. + */ +void* umap( void* addr, /* See mmap(2) */ + size_t length, /* See mmap(2) */ + int prot, /* See mmap(2) */ + int flags, /* See below, see mmap(2) for general notes */ + int fd, /* See mmap(2) */ + off_t offset /* See mmap(2) */ + ); +int uunmap( void* addr, /* See mmap(2) */ + size_t length /* See mmap(2) */ + ); +int umap_cfg_get_bufsize( void ); +void umap_cfg_set_bufsize( int page_bufsize ); +#ifdef __cplusplus +} +#endif + +/* + * flags + */ +#define UMAP_PRIVATE MAP_PRIVATE // Note - UMAP_SHARED not currently supported +#define UMAP_FIXED MAP_FIXED // See mmap(2) - This flag is currently then only flag supported. + +/* + * Return codes + */ +#define UMAP_FAILED (void *)-1 +#endif // _UMAP_H_ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b3cb0976..144c7ec1 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -6,14 +6,14 @@ set_target_properties(libumap_static PROPERTIES OUTPUT_NAME libumap) set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") -include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ) +include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../include ) file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/include) add_custom_command ( TARGET libumap POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/umap.h ${CMAKE_BINARY_DIR}/include/umap.h + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/../include/umap.h ${CMAKE_BINARY_DIR}/include/umap.h ) install(TARGETS libumap libumap_static diff --git a/src/umap.cpp b/src/umap.cpp index f4e8d5c8..c46218f1 100644 --- a/src/umap.cpp +++ b/src/umap.cpp @@ -1,135 +1,237 @@ /* -This file is part of UMAP. For copyright information see the COPYRIGHT -file in the top level directory, or at -https://github.com/LLNL/umap/blob/master/COPYRIGHT -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU Lesser General Public License (as published by the Free -Software Foundation) version 2.1 dated February 1999. 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 terms and conditions of the GNU Lesser General Public License -for more details. You should have received a copy of the GNU Lesser General -Public License along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -// handler of userfaultfd - -#include -#include + * This file is part of UMAP. For copyright information see the COPYRIGHT file in the top level directory, or at + * https://github.com/LLNL/umap/blob/master/COPYRIGHT This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License (as published by the Free Software Foundation) + * version 2.1 dated February 1999. 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 terms + * and conditions of the GNU Lesser General Public License for more details. You should have received a copy of the + * GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif // _GNU_SOURCE + +#include +#include +#include +#include +#include #include #include #include -#include -#include -#include +#include // open/close +#include // sysconf() +#include // syscall() +#include // mmap() +#include // poll() #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "umap.h" - -// data structures related to page buffer -static volatile int stop_uffd_handler = 0; -static char* tmppagebuf; -static pagebuffer_t* pagebuffer; -static int startix=0; - -#ifdef ENABLE_FAULT_TRACE_BUFFER -static page_activity_trace_t* trace_buf; -static int trace_bufsize = 1000; -static int trace_idx = 0; -static int trace_seq = 1; -#endif // ENABLE_FAULT_TRACE_BUFFER - -// end data structures related to page buffer - -int uffd_init(void* region, long pagesize, long num_pages) +#include +#include // sched_getcpu() +#include "umap.h" // API to library + +using namespace std; + +const int UMAP_VERSION_MAJOR = 0; +const int UMAP_VERSION_MINOR = 0; +const int UMAP_VERSION_PATCH = 1; +const int UMAP_DEFAULT_PBSIZE = 16; +static int umap_page_bufsize = UMAP_DEFAULT_PBSIZE; + +class umap_page; +class _umap { + public: + _umap(void* _mmap_addr, size_t _mmap_length, int _mmap_fd); + + inline void stop_faultlistener( void ) noexcept { + time_to_stop = true; + listener->join(); + } + + inline int get_page_index(void* _p) { + auto it = page_index.find(_p); + return (it == page_index.end()) ? -1 : it->second; + } + + inline void add_page_index(int idx, void* page) { + page_index[page] = idx; + } + + void delete_page_index(void* page) { + int num_erased; + num_erased = page_index.erase(page); + assert(num_erased == 1); + } + + void enable_wp_on_pages_and_wake(uint64_t, int64_t); + void disable_wp_on_pages(uint64_t, int64_t); + void* uffd_handler(void); + int uffd_finalize(void); + + private: + void* segment_address; + size_t segment_length; + int backingfile_fd; + int page_buffer_size; + bool time_to_stop; + uint64_t fault_count; + int userfault_fd; + int next_page_alloc_index; + long page_size; + thread *listener; + vector pages_in_memory; + char* tmppagebuf; + + map page_index; + + void evict_page(umap_page& page); + void remove_page_index(void* _p) { page_index.erase(_p); } +}; + +class umap_page { + public: + umap_page(): page{nullptr}, dirty{false} {}; + bool page_is_dirty() { return dirty; } + void mark_page_dirty() { dirty = true; } + void mark_page_clean() { dirty = false; } + void* get_page(void) { return page; } + void set_page(void* _p) { page = _p; } + private: + void* page; + bool dirty; +}; + +static map active_umaps; + +void* umap(void* addr, size_t length, int prot, int flags, int fd, off_t offset) { - stop_uffd_handler = 0; - // open the userfault fd - int uffd = syscall(__NR_userfaultfd, O_CLOEXEC | O_NONBLOCK); - if (uffd < 0) { + if (!(flags & UMAP_PRIVATE) || flags & ~(UMAP_PRIVATE|UMAP_FIXED)) { + cerr << "umap: Invalid flags: " << hex << flags << endl; + return UMAP_FAILED; + } + + flags |= (MAP_ANONYMOUS | MAP_NORESERVE); + + void* region = mmap(addr, length, prot, flags, -1, offset); + if (region == MAP_FAILED) { + perror("mmap failed: "); + return UMAP_FAILED; + } + + try { + _umap *p_umap = new _umap{region, length, fd}; + active_umaps[region] = p_umap; + } + catch(...) { + return UMAP_FAILED; + } + + return region; +} + +int uunmap(void* addr, size_t length) +{ + auto it = active_umaps.find(addr); + + if (it != active_umaps.end()) { + it->second->uffd_finalize(); + delete it->second; + active_umaps.erase(it); + } + return 0; +} + +int umap_cfg_get_bufsize( void ) +{ + return umap_page_bufsize; +} + +void umap_cfg_set_bufsize( int page_bufsize ) +{ + umap_page_bufsize = page_bufsize; +} + +_umap::_umap( void* _mmap_addr, size_t _mmap_length, int _mmap_fd) + : segment_address{_mmap_addr}, segment_length{_mmap_length}, + backingfile_fd{_mmap_fd}, + time_to_stop{false}, fault_count{0}, next_page_alloc_index{0} +{ + page_buffer_size = umap_page_bufsize; + if ((page_size = sysconf(_SC_PAGESIZE)) == -1) { + perror("sysconf(_SC_PAGESIZE)"); + throw -1; + } + + if ((userfault_fd = syscall(__NR_userfaultfd, O_CLOEXEC | O_NONBLOCK)) < 0) { perror("userfaultfd syscall not available in this kernel"); - exit(1); + throw -1; } - // enable for api version and check features - struct uffdio_api uffdio_api; - uffdio_api.api = UFFD_API; - uffdio_api.features = 0; - if (ioctl(uffd, UFFDIO_API, &uffdio_api) == -1) { - perror("ioctl/uffdio_api"); - exit(1); + struct uffdio_api uffdio_api = { // enable for api version and check features + .api = UFFD_API, + .features = 0 + }; + + if (ioctl(userfault_fd, UFFDIO_API, &uffdio_api) == -1) { + perror("ioctl(UFFDIO_API)"); + throw -1; } if (uffdio_api.api != UFFD_API) { - fprintf(stderr, "unsupported userfaultfd api\n"); - exit(1); + cerr << __FUNCTION__ << ": unsupported userfaultfd api\n"; + throw -1; } - fprintf(stdout, "Feature bitmap %llx\n", uffdio_api.features); - struct uffdio_register uffdio_register; - // register the pages in the region for missing callbacks - uffdio_register.range.start = (uint64_t)region; - uffdio_register.range.len = pagesize * num_pages; - uffdio_register.mode = UFFDIO_REGISTER_MODE_MISSING | - UFFDIO_REGISTER_MODE_WP; - fprintf(stdout, "uffdio region=%p - %p\n", - region, - (void*)(uffdio_register.range.start+uffdio_register.range.len)); - - if (ioctl(uffd, UFFDIO_REGISTER, &uffdio_register) == -1) { + struct uffdio_register uffdio_register = { + .range = { + .start = (uint64_t)segment_address, + .len = segment_length + }, + .mode = UFFDIO_REGISTER_MODE_MISSING | UFFDIO_REGISTER_MODE_WP + }; + + if (ioctl(userfault_fd, UFFDIO_REGISTER, &uffdio_register) == -1) { perror("ioctl/uffdio_register"); - exit(1); + close(userfault_fd); + throw -1; } - enable_wp_on_pages_and_wake(uffd, (uint64_t)region, pagesize, num_pages); + enable_wp_on_pages_and_wake((uint64_t)segment_address, segment_length / page_size); - if ((uffdio_register.ioctls & UFFD_API_RANGE_IOCTLS) != - UFFD_API_RANGE_IOCTLS) { - fprintf(stderr, "unexpected userfaultfd ioctl set\n"); - exit(1); + if ((uffdio_register.ioctls & UFFD_API_RANGE_IOCTLS) != UFFD_API_RANGE_IOCTLS) { + cerr << "unexpected userfaultfd ioctl set\n"; + close(userfault_fd); + throw -1; } - fprintf(stdout, "mode %llu\n", (unsigned long long)uffdio_register.mode); - return uffd; -} - -void *uffd_handler(void *arg) -{ - params_t *p = (params_t *) arg; - long pagesize = p->pagesize; + posix_memalign((void**)&tmppagebuf, (size_t)512, page_size); + if (tmppagebuf == nullptr) { + cerr << "Unable to allocate 512 bytes for temporary buffer\n"; + close(userfault_fd); + throw -1; + } - p->faultnum=0; - posix_memalign((void**)&tmppagebuf, (size_t)512, pagesize); + umap_page ump; + pages_in_memory.resize(page_buffer_size, ump); - pagebuffer = (pagebuffer_t*)calloc(p->bufsize, sizeof(pagebuffer_t)); -#ifdef ENABLE_FAULT_TRACE_BUFFER - trace_buf = (page_activity_trace_t *)calloc(trace_bufsize, sizeof(*trace_buf)); -#endif // ENABLE_FAULT_TRACE_BUFFER + listener = new thread{&_umap::uffd_handler, this}; // Start our userfaultfd listener +} +void* _umap::uffd_handler(void) +{ + //cout << __FUNCTION__ << " on CPU " << sched_getcpu() << " Started\n"; for (;;) { struct uffd_msg msg; struct pollfd pollfd[1]; - pollfd[0].fd = p->uffd; + pollfd[0].fd = userfault_fd; pollfd[0].events = POLLIN; // wait for a userfaultfd event to occur int pollres = poll(pollfd, 1, 2000); - if (stop_uffd_handler) { - fprintf(stdout, "%s: Stop seen, exit\n", __FUNCTION__); + if (time_to_stop) return NULL; - } switch (pollres) { case -1: @@ -140,19 +242,19 @@ void *uffd_handler(void *arg) case 1: break; default: - fprintf(stderr, "unexpected poll result\n"); + cerr << __FUNCTION__ << " unexpected uffdio poll result\n"; exit(1); } if (pollfd[0].revents & POLLERR) { - fprintf(stderr, "pollerr\n"); + cerr << __FUNCTION__ << " POLLERR\n"; exit(1); } if (!pollfd[0].revents & POLLIN) continue; - int readres = read(p->uffd, &msg, sizeof(msg)); + int readres = read(userfault_fd, &msg, sizeof(msg)); if (readres == -1) { if (errno == EAGAIN) continue; @@ -161,64 +263,41 @@ void *uffd_handler(void *arg) } if (readres != sizeof(msg)) { - fprintf(stderr, "invalid msg size\n"); + cerr << __FUNCTION__ << "invalid msg size\n"; exit(1); } if (msg.event != UFFD_EVENT_PAGEFAULT) { - printf("Unexpected event %x\n", msg.event); + cerr << __FUNCTION__ << " Unexpected event " << hex << msg.event << endl; continue; } // // At this point, we know we have had a page fault. Let's handle it. // -#define PAGE_BEGIN(a) (void*)((uint64_t)a & ~(pagesize-1)); +#define PAGE_BEGIN(a) (void*)((uint64_t)a & ~(page_size-1)); - p->faultnum = p->faultnum + 1;; + fault_count++; void* fault_addr = (void*)msg.arg.pagefault.address; void* page_begin = PAGE_BEGIN(fault_addr); -#ifdef ENABLE_FAULT_TRACE_BUFFER - if (msg.arg.pagefault.flags & UFFD_PAGEFAULT_FLAG_WP) { - TRACE(page_begin, ft_wp, et_NA); - } - else if (msg.arg.pagefault.flags & UFFD_PAGEFAULT_FLAG_WRITE) { - TRACE(page_begin, ft_write, et_NA); - } - else { - TRACE(page_begin, ft_read, et_NA); - } -#endif // ENABLE_FAULT_TRACE_BUFFER - // // Check to see if the faulting page is already in memory. This can // happen if more than one thread causes a fault for the same page. // - // TODO(MJM) - Implement better container to get rid of linear - // search. - // - bool page_in_memory = false; - int bufidx; - for (bufidx = 0; bufidx < p->bufsize; bufidx++) { - if (pagebuffer[bufidx].page == page_begin) { - page_in_memory = true; - break; - } - } + int bufidx = get_page_index(page_begin); - if (page_in_memory) { - if (msg.arg.pagefault.flags & - (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) { - pagebuffer[bufidx].dirty = true; - disable_wp_on_pages(p->uffd, (uint64_t)page_begin, pagesize, 1); + if (bufidx >= 0) { + if (msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) { + pages_in_memory[bufidx].mark_page_dirty(); + disable_wp_on_pages((uint64_t)page_begin, 1); } struct uffdio_range wake; wake.start = (uint64_t)page_begin; - wake.len = pagesize; + wake.len = page_size; - if (ioctl(p->uffd, UFFDIO_WAKE, &wake) == -1) { + if (ioctl(userfault_fd, UFFDIO_WAKE, &wake) == -1) { perror("ioctl(UFFDIO_WAKE)"); exit(1); } @@ -228,58 +307,59 @@ void *uffd_handler(void *arg) // // Page not in memory, read it in and evict someone // - ssize_t pread_ret = pread(p->fd, tmppagebuf, pagesize, - (off_t)((uint64_t)page_begin - (uint64_t)p->base_addr)); + ssize_t pread_ret = pread(backingfile_fd, tmppagebuf, page_size, + (off_t)((uint64_t)page_begin - (uint64_t)segment_address)); if (pread_ret == -1) { perror("pread failed"); exit(1); } - if (pagebuffer[startix].page) - evict_page(p, &pagebuffer[startix]); + if (pages_in_memory[next_page_alloc_index].get_page()) { + delete_page_index(pages_in_memory[next_page_alloc_index].get_page()); + evict_page(pages_in_memory[next_page_alloc_index]); + } - pagebuffer[startix].page = page_begin; + pages_in_memory[next_page_alloc_index].set_page(page_begin); + add_page_index(next_page_alloc_index, page_begin); - if (msg.arg.pagefault.flags & - (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) { - disable_wp_on_pages(p->uffd, (uint64_t)page_begin, pagesize, 1); - pagebuffer[startix].dirty = true; + if (msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) { + disable_wp_on_pages((uint64_t)page_begin, 1); + pages_in_memory[next_page_alloc_index].mark_page_dirty(); } else { - pagebuffer[startix].dirty = false; + pages_in_memory[next_page_alloc_index].mark_page_clean(); } - startix = (startix +1) % p->bufsize; + + next_page_alloc_index = (next_page_alloc_index +1) % page_buffer_size; struct uffdio_copy copy; copy.src = (uint64_t)tmppagebuf; copy.dst = (uint64_t)page_begin; - copy.len = pagesize; - if (msg.arg.pagefault.flags & - (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) { + copy.len = page_size; + + if (msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) { copy.mode = 0; - if (ioctl(p->uffd, UFFDIO_COPY, ©) == -1) { + if (ioctl(userfault_fd, UFFDIO_COPY, ©) == -1) { perror("ioctl(UFFDIO_COPY wake)"); exit(1); } } else { copy.mode = UFFDIO_COPY_MODE_DONTWAKE; - if (ioctl(p->uffd, UFFDIO_COPY, ©) == -1) { + if (ioctl(userfault_fd, UFFDIO_COPY, ©) == -1) { perror("ioctl(UFFDIO_COPY nowake)"); exit(1); } - - enable_wp_on_pages_and_wake(p->uffd, (uint64_t)page_begin, - pagesize, 1); + enable_wp_on_pages_and_wake((uint64_t)page_begin, 1); } } return NULL; } -void evict_page(params_t* p, pagebuffer_t* pb) +void _umap::evict_page(umap_page& pb) { - if (pb->dirty) { + if (pb.page_is_dirty()) { // Prevent further writes. No need to do this if not dirty because // WP is already on. // @@ -291,31 +371,25 @@ void evict_page(params_t* p, pagebuffer_t* pb) // and WP exceptions for this page have been handled prior to evicting // the page. // - enable_wp_on_pages_and_wake(p->uffd,(uint64_t)pb->page,p->pagesize,1); + enable_wp_on_pages_and_wake((uint64_t)pb.get_page(), 1); ssize_t rval; - TRACE(pb->page, ft_NA, et_dirty); - - - rval = pwrite(p->fd, (void*)(pb->page), p->pagesize, - (off_t)((uint64_t)pb->page - (uint64_t)p->base_addr)); + rval = pwrite(backingfile_fd, (void*)(pb.get_page()), page_size, + (off_t)((uint64_t)pb.get_page() - (uint64_t)segment_address)); if (rval == -1) { perror("pwrite failed"); assert(0); } } - else { - TRACE(pb->page, ft_NA, et_clean); - } - if (madvise((void*)(pb->page), p->pagesize, MADV_DONTNEED) == -1) { + if (madvise((void*)(pb.get_page()), page_size, MADV_DONTNEED) == -1) { perror("madvise"); assert(0); } - pb->page = 0ull; + pb.set_page(nullptr); } // @@ -328,15 +402,14 @@ void evict_page(params_t* p, pagebuffer_t* pb) // UFFDIO_WRITEPROTECT_MODE_WP. UFFDIO_WRITEPROTECT_MODE_DONTWAKE is only // allowed when disabling WP. // -void enable_wp_on_pages_and_wake(int uffd, uint64_t start, int64_t size, int64_t pages) +void _umap::enable_wp_on_pages_and_wake(uint64_t start, int64_t num_pages) { struct uffdio_writeprotect wp; wp.range.start = start; - wp.range.len = size * pages; - + wp.range.len = num_pages * page_size; wp.mode = UFFDIO_WRITEPROTECT_MODE_WP; - if (ioctl(uffd, UFFDIO_WRITEPROTECT, &wp) == -1) { + if (ioctl(userfault_fd, UFFDIO_WRITEPROTECT, &wp) == -1) { perror("ioctl(UFFDIO_WRITEPROTECT Enable)"); exit(1); } @@ -346,65 +419,49 @@ void enable_wp_on_pages_and_wake(int uffd, uint64_t start, int64_t size, int64_t // We intentionally do not wake up faulting thread when disabling WP. This // is to handle the write-fault case when the page needs to be copied in. // -void disable_wp_on_pages(int uffd, uint64_t start, int64_t size, int64_t pages) +void _umap::disable_wp_on_pages(uint64_t start, int64_t num_pages) { struct uffdio_writeprotect wp; wp.range.start = start; - wp.range.len = size * pages; + wp.range.len = page_size * num_pages; wp.mode = UFFDIO_WRITEPROTECT_MODE_DONTWAKE; - if (ioctl(uffd, UFFDIO_WRITEPROTECT, &wp) == -1) { + if (ioctl(userfault_fd, UFFDIO_WRITEPROTECT, &wp) == -1) { perror("ioctl(UFFDIO_WRITEPROTECT Disable)"); exit(1); } } -int uffd_finalize(void *arg, long num_pages) +int _umap::uffd_finalize() { - params_t *p = (params_t *) arg; - - // first write out all modified pages + for (auto it : pages_in_memory) { + if (it.get_page()) { + delete_page_index(it.get_page()); + evict_page(it); + } + } - int tmpix; - for (tmpix=0; tmpix < p->bufsize; tmpix++) - if (pagebuffer[tmpix].page) - evict_page(p, &pagebuffer[tmpix]); + stop_faultlistener(); struct uffdio_register uffdio_register; - uffdio_register.range.start = (uint64_t)p->base_addr; - uffdio_register.range.len = p->pagesize * num_pages; + uffdio_register.range.start = (uint64_t)segment_address; + uffdio_register.range.len = segment_length; - if (ioctl(p->uffd, UFFDIO_UNREGISTER, &uffdio_register.range)) { - fprintf(stderr, "ioctl unregister failure\n"); + if (ioctl(userfault_fd, UFFDIO_UNREGISTER, &uffdio_register.range)) { + perror("UFFDIO_UNREGISTER"); return 1; } return 0; } -long get_pagesize(void) -{ - long ret = sysconf(_SC_PAGESIZE); - if (ret == -1) { - perror("sysconf/pagesize"); - exit(1); - } - assert(ret > 0); - return ret; -} - -void stop_umap_handler() +void __attribute ((constructor)) init_umap_lib( void ) { - stop_uffd_handler = 1; } -#ifdef ENABLE_FAULT_TRACE_BUFFER -void pa_trace(uint64_t page, enum fault_types ftype, enum evict_types etype) +void __attribute ((destructor)) fine_umap_lib( void ) { - trace_buf[trace_idx].trace_seq = trace_seq++; - trace_buf[trace_idx].page = (void*)page; - trace_buf[trace_idx].ftype = ftype; - trace_buf[trace_idx].etype = etype; - - trace_idx = (trace_idx +1) % trace_bufsize; + for (auto it : active_umaps) { + it.second->uffd_finalize(); + delete it.second; + } } -#endif // ENABLE_FAULT_TRACE_BUFFER diff --git a/src/umap.h b/src/umap.h deleted file mode 100644 index 3966d053..00000000 --- a/src/umap.h +++ /dev/null @@ -1,91 +0,0 @@ -/* -This file is part of UMAP. For copyright information see the COPYRIGHT -file in the top level directory, or at -https://github.com/LLNL/umap/blob/master/COPYRIGHT -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU Lesser General Public License (as published by the Free -Software Foundation) version 2.1 dated February 1999. 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 terms and conditions of the GNU Lesser General Public License -for more details. You should have received a copy of the GNU Lesser General -Public License along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ -#ifndef UFFD_HANDLER_H -#define UFFD_HANDLER_H - -#include -#include -#include -#include - -const int UMAP_VERSION_MAJOR = 0; -const int UMAP_VERSION_MINOR = 0; -const int UMAP_VERSION_PATCH = 1; - -// Uncomment the following line to enable tracing (to circular buffer in mem) -#define ENABLE_FAULT_TRACE_BUFFER 1 - -#ifdef ENABLE_FAULT_TRACE_BUFFER -#define TRACE(_pb_, _ft_, _et_) pa_trace((uint64_t)_pb_, _ft_, _et_) -#else -#define TRACE(_pb_, _ft_, _et_) ; -#endif // ENABLE_FAULT_TRACE_BUFFER - -typedef struct params { - int uffd; - void* base_addr; - long pagesize; - int bufsize; - int faultnum; - int fd; -} params_t; - -typedef struct pagebuffer { - void* page; - bool dirty; -} pagebuffer_t; - -enum fault_types { - ft_NA=-1, - ft_read=0, - ft_write=1, - ft_wp=2 -}; - -enum evict_types { - et_NA=-1, - et_none=0, - et_clean=1, - et_dirty=2 -}; - -typedef struct { - int trace_seq; - void* page; - enum fault_types ftype; - enum evict_types etype; -} page_activity_trace_t; - -#ifdef __cplusplus -extern "C" { -#endif - void stop_umap_handler(void); - long get_pagesize(void); - int uffd_init(void*, long, long); - void *uffd_handler(void*); - int uffd_finalize(void*, long); -#ifdef __cplusplus -} -#endif - -#ifdef ENABLE_FAULT_TRACE_BUFFER -void pa_trace(uint64_t, enum fault_types, enum evict_types); -#endif // ENABLE_FAULT_TRACE_BUFFER - -void enable_wp_on_pages_and_wake(int, uint64_t, int64_t, int64_t); -void disable_wp_on_pages(int, uint64_t, int64_t, int64_t); -void evict_page(params_t*, pagebuffer_t *); - -#endif // UFFD_HANDLER_H diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 1d480049..836fe2c6 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,7 +1,6 @@ add_subdirectory(libumaptest) - -add_subdirectory(umaptest) add_subdirectory(umapsort) -add_subdirectory(readload) - +add_subdirectory(umaptest) add_subdirectory(median) +add_subdirectory(readload) +add_subdirectory(uffd_test) diff --git a/tests/libumaptest/CMakeLists.txt b/tests/libumaptest/CMakeLists.txt index 1b19c70d..0c80f3c0 100644 --- a/tests/libumaptest/CMakeLists.txt +++ b/tests/libumaptest/CMakeLists.txt @@ -1,12 +1,16 @@ project(umap_testlibraries) -add_library(libumaptest SHARED options.cpp mmap.cpp) -add_library(libumaptest_static STATIC options.cpp mmap.cpp) +add_library(libumaptest SHARED mmap.cpp options.cpp) +add_library(libumaptest_static STATIC mmap.cpp options.cpp) + +target_link_libraries(libumaptest libumap) +target_link_libraries(libumaptest_static libumap_static) + set_target_properties(libumaptest_static PROPERTIES OUTPUT_NAME libumaptest) set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") -include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ) +include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_BINARY_DIR}/include ) file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/include) diff --git a/tests/libumaptest/mmap.cpp b/tests/libumaptest/mmap.cpp index 1e865eac..ccdecd4a 100644 --- a/tests/libumaptest/mmap.cpp +++ b/tests/libumaptest/mmap.cpp @@ -21,35 +21,33 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include #include +#include "umap.h" #include "umaptest.h" using namespace std; -void umt_openandmap( - const umt_optstruct_t& testops, - uint64_t numbytes, - int &fd, - void*& region) +int umt_openandmap(const umt_optstruct_t* testops, uint64_t numbytes, void** region) { + int fd; int open_options = O_RDWR; - if (testops.iodirect) + if (testops->iodirect) open_options |= O_DIRECT; - if ( !testops.noinit ) + if ( !testops->noinit ) open_options |= O_CREAT; #ifdef O_LARGEFILE open_options |= O_LARGEFILE; #endif - fd = open(testops.fn, open_options, S_IRUSR|S_IWUSR); + fd = open(testops->fn, open_options, S_IRUSR|S_IWUSR); if(fd == -1) { perror("open"); exit(-1); } - if (testops.noinit) { + if (testops->noinit) { // If we are not initializing file, make sure that it is big enough struct stat sbuf; @@ -59,7 +57,7 @@ void umt_openandmap( } if ((uint64_t)sbuf.st_size < numbytes) { - cerr << testops.fn + cerr << testops->fn << " file is not large enough. " << sbuf.st_size << " < size requested " << numbytes << endl; exit(-1); @@ -72,24 +70,44 @@ void umt_openandmap( } int prot = PROT_READ|PROT_WRITE; - int flags; - int my_fd; - if ( !testops.usemmap ) { - flags = MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE; - my_fd = -1; + if ( testops->usemmap ) { + int flags = MAP_SHARED; + + *region = mmap(NULL, numbytes, prot, flags, fd, 0); + if (*region == MAP_FAILED) { + perror("mmap"); + exit(-1); + } } else { - my_fd = fd; - flags = MAP_SHARED; + int flags = UMAP_PRIVATE; + + *region = umap(NULL, numbytes, prot, flags, fd, 0); + if (*region == UMAP_FAILED) { + perror("umap"); + exit(-1); + } } - // allocate a memory region to be managed by userfaultfd - region = mmap(NULL, numbytes, prot, flags, my_fd, 0); + return fd; +} - if (region == MAP_FAILED) { - perror("mmap"); - exit(-1); +void umt_closeandunmap(const umt_optstruct_t* testops, uint64_t numbytes, void* region, int fd) +{ + if ( testops->usemmap ) { + if (munmap(region, numbytes) < 0) { + perror("munmap"); + exit(-1); + } + } + else { + if (uunmap(region, numbytes) < 0) { + perror("uunmap"); + exit(-1); + } } + + close(fd); } diff --git a/tests/libumaptest/options.cpp b/tests/libumaptest/options.cpp index 34a6621a..82834094 100644 --- a/tests/libumaptest/options.cpp +++ b/tests/libumaptest/options.cpp @@ -41,22 +41,22 @@ static void usage(char* pname) exit(1); } -void umt_getoptions(umt_optstruct_t& testops, int argc, char *argv[]) +void umt_getoptions(umt_optstruct_t* testops, int argc, char *argv[]) { int c; char *pname = argv[0]; - testops = (umt_optstruct_t) { .initonly = 0, .noinit = 0, .iodirect = 0, + *testops = (umt_optstruct_t) { .initonly = 0, .noinit = 0, .iodirect = 0, .usemmap = 0, .numpages = NUMPAGES, .numthreads = NUMTHREADS, .bufsize = BUFFERSIZE, .fn = FILENAME}; while (1) { int option_index = 0; static struct option long_options[] = { - {"initonly", no_argument, &testops.initonly, 1 }, - {"noinit", no_argument, &testops.noinit, 1 }, - {"directio", no_argument, &testops.iodirect, 1 }, - {"usemmap", no_argument, &testops.usemmap, 1 }, + {"initonly", no_argument, &testops->initonly, 1 }, + {"noinit", no_argument, &testops->noinit, 1 }, + {"directio", no_argument, &testops->iodirect, 1 }, + {"usemmap", no_argument, &testops->usemmap, 1 }, {"help", no_argument, NULL, 0 }, {0, 0, 0, 0 } }; @@ -74,19 +74,19 @@ void umt_getoptions(umt_optstruct_t& testops, int argc, char *argv[]) break; case 'p': - if ((testops.numpages = strtoull(optarg, nullptr, 0)) > 0) + if ((testops->numpages = strtoull(optarg, nullptr, 0)) > 0) break; goto R0; case 't': - if ((testops.numthreads = strtoull(optarg, nullptr, 0)) > 0) + if ((testops->numthreads = strtoull(optarg, nullptr, 0)) > 0) break; else goto R0; case 'b': - if ((testops.bufsize = strtoull(optarg, nullptr, 0)) > 0) + if ((testops->bufsize = strtoull(optarg, nullptr, 0)) > 0) break; else goto R0; case 'f': - testops.fn = optarg; + testops->fn = optarg; break; default: R0: @@ -102,3 +102,14 @@ void umt_getoptions(umt_optstruct_t& testops, int argc, char *argv[]) usage(pname); } } + +long umt_getpagesize(void) +{ + long page_size = sysconf(_SC_PAGESIZE); + if (page_size == -1) { + perror("sysconf/page_size"); + exit(1); + } + return page_size; +} + diff --git a/tests/libumaptest/umaptest.h b/tests/libumaptest/umaptest.h index 6363a092..2c7a4533 100644 --- a/tests/libumaptest/umaptest.h +++ b/tests/libumaptest/umaptest.h @@ -14,7 +14,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _UMAPTEST_H #define _UMAPTEST_H -#include +#include typedef struct { int initonly; @@ -28,8 +28,14 @@ typedef struct { char const* fn; } umt_optstruct_t; +#ifdef __cplusplus extern "C" { - void umt_getoptions(umt_optstruct_t&, int, char *argv[]); - void umt_openandmap(const umt_optstruct_t&, uint64_t, int&, void*&); +#endif + void umt_getoptions(umt_optstruct_t*, int, char *argv[]); + int umt_openandmap(const umt_optstruct_t*, uint64_t, void**); + void umt_closeandunmap(const umt_optstruct_t*, uint64_t, void*, int); + long umt_getpagesize(void); +#ifdef __cplusplus } +#endif #endif // _UMAPTEST_H diff --git a/tests/median/median.cpp b/tests/median/median.cpp index dd73b28c..9f268032 100644 --- a/tests/median/median.cpp +++ b/tests/median/median.cpp @@ -106,40 +106,23 @@ int main(int argc, char **argv) umt_optstruct_t options; long pagesize; int64_t totalbytes; - pthread_t uffd_thread; int64_t arraysize; uint64_t median; - // parameter block to uffd - params_t *p = (params_t *) malloc(sizeof(params_t)); + void* base_addr; + int fd; - pagesize = get_pagesize(); + pagesize = umt_getpagesize(); - umt_getoptions(options, argc, argv); + umt_getoptions(&options, argc, argv); totalbytes = options.numpages*pagesize; - umt_openandmap(options, totalbytes, p->fd,p->base_addr); - - if ( ! options.usemmap ) - { - fprintf(stdout, "Using UserfaultHandler Buffer\n"); - p->pagesize = pagesize; - p->bufsize = options.bufsize; - p->faultnum = 0; - p->uffd = uffd_init(p->base_addr, pagesize, options.numpages); - - pthread_create(&uffd_thread, NULL, uffd_handler, p); - sleep(1); - } - else - { - fprintf(stdout, "Using vanilla mmap()\n"); - } + fd = umt_openandmap(&options, totalbytes, &base_addr); - fprintf(stdout, "%d pages, %d threads\n", options.numpages, options.numthreads); + fprintf(stdout, "%lu pages, %lu threads\n", options.numpages, options.numthreads); omp_set_num_threads(options.numthreads); - uint64_t *arr = (uint64_t *) p->base_addr; + uint64_t *arr = (uint64_t *) base_addr; arraysize = totalbytes/sizeof(int64_t); fprintf(stdout,"Array size: %lld\n",arraysize); @@ -152,13 +135,7 @@ int main(int argc, char **argv) median=torben(arr,arraysize); fprintf(stdout, "Median is %llu, Find median took %f us\n",median,(double)(getns() - start)/1000000.0); - if ( ! options.usemmap ) - { - stop_umap_handler(); - pthread_join(uffd_thread, NULL); - uffd_finalize(p, options.numpages); - } - + umt_closeandunmap(&options, totalbytes, base_addr, fd); return 0; } diff --git a/tests/median/median_cube.cpp b/tests/median/median_cube.cpp index bfb071bd..488fd9e2 100644 --- a/tests/median/median_cube.cpp +++ b/tests/median/median_cube.cpp @@ -38,9 +38,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include "umap.h" #include "umaptest.h" -//volatile int stop_uffd_handler; - - #define NUMPAGES 10000000 #define NUMTHREADS 2 #define BUFFERSIZE 16 @@ -128,7 +125,7 @@ void displaycube(uint64_t *cube,int a,int b,int c) for (i=0;ifd,p->base_addr); - - if ( ! options.usemmap ) - { - fprintf(stdout, "Using UserfaultHandler Buffer\n"); - p->pagesize = pagesize; - p->bufsize = options.bufsize; - p->faultnum = 0; - p->uffd = uffd_init(p->base_addr, pagesize, options.numpages); - - pthread_create(&uffd_thread, NULL, uffd_handler, p); - sleep(1); - } - else - { - fprintf(stdout, "Using vanilla mmap()\n"); - } - fprintf(stdout, "%d pages, %d threads\n", options.numpages, options.numthreads); + fd = umt_openandmap(&options, totalbytes, &base_addr); + + fprintf(stdout, "%lu pages, %lu threads\n", options.numpages, options.numthreads); omp_set_num_threads(options.numthreads); - uint64_t *arr = (uint64_t *) p->base_addr; + uint64_t *arr = (uint64_t *) base_addr; arraysize = totalbytes/sizeof(int64_t); - fprintf(stdout,"Array size: %lld\n",arraysize); + fprintf(stdout, "Array size: %ld\n", arraysize); uint64_t start = getns(); size_a=10; @@ -183,7 +163,6 @@ int main(int argc, char **argv) // init data initdata(arr, size_a*size_b*size_c); cube=arr; - displaycube(cube,size_a,size_b,size_c); fprintf(stdout, "Init took %f us\n", (double)(getns() - start)/1000000.0); @@ -200,12 +179,7 @@ int main(int argc, char **argv) } free(cube_median); - if ( ! options.usemmap ) - { - stop_umap_handler(); - pthread_join(uffd_thread, NULL); - uffd_finalize(p, options.numpages); - } + umt_closeandunmap(&options, totalbytes, base_addr, fd); return 0; } diff --git a/tests/readload/readload.cpp b/tests/readload/readload.cpp index 6f9bf8ab..3735198f 100644 --- a/tests/readload/readload.cpp +++ b/tests/readload/readload.cpp @@ -48,11 +48,12 @@ static inline uint64_t getns(void) void runtest(uint64_t *region, int64_t rlen) { + static const uint64_t test_iterations = 1000000; #pragma omp parallel { std::mt19937 gen(omp_get_thread_num()); std::uniform_int_distribution rnd_int(0, rlen-1); - while (1) { + for (uint64_t i = 0; i < test_iterations; ++i) { uint64_t index = rnd_int(gen); if (region[index] != index) { fprintf(stderr, "%lu != %lu\n", index, region[index]); @@ -75,36 +76,22 @@ int main(int argc, char **argv) umt_optstruct_t options; long pagesize; int64_t totalbytes; - pthread_t uffd_thread; uint64_t arraysize; - params_t *p = (params_t *) malloc(sizeof(params_t)); + void* base_addr; + int fd; - pagesize = get_pagesize(); + pagesize = umt_getpagesize(); - umt_getoptions(options, argc, argv); + umt_getoptions(&options, argc, argv); totalbytes = options.numpages*pagesize; - umt_openandmap(options, totalbytes, p->fd, p->base_addr); + fd = umt_openandmap(&options, totalbytes, &base_addr); - if ( ! options.usemmap ) { - fprintf(stdout, "Using UserfaultHandler Buffer\n"); - p->pagesize = pagesize; - p->bufsize = options.bufsize; - p->faultnum = 0; - p->uffd = uffd_init(p->base_addr, pagesize, options.numpages); - - pthread_create(&uffd_thread, NULL, uffd_handler, p); - sleep(1); - } - else { - fprintf(stdout, "Using vanilla mmap()\n"); - } - fprintf(stdout, "%lu pages, %lu threads\n", options.numpages, options.numthreads); omp_set_num_threads(options.numthreads); - uint64_t *arr = (uint64_t *) p->base_addr; + uint64_t *arr = (uint64_t *) base_addr; arraysize = totalbytes/sizeof(int64_t); uint64_t start = getns(); @@ -119,12 +106,7 @@ int main(int argc, char **argv) runtest(arr, arraysize); fprintf(stdout, "Sort took %f us\n", (double)(getns() - start)/1000000.0); } - - if ( ! options.usemmap ) { - stop_umap_handler(); - pthread_join(uffd_thread, NULL); - uffd_finalize(p, options.numpages); - } + umt_closeandunmap(&options, totalbytes, base_addr, fd); return 0; } diff --git a/tests/readload/wastemem.sh b/tests/readload/wastemem.sh new file mode 100644 index 00000000..99402b19 --- /dev/null +++ b/tests/readload/wastemem.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +if [ ! -d /mnt/tmpfs ]; then + sudo mkdir -p /mnt/tmpfs + sudo chmod go+rwx /mnt/tmpfs + sudo mount -t tmpfs -o size=$((510*1024*1024*1024)) tmpfs /mnt/tmpfs +fi + +WASTE=480 + +echo "Flushing Memory Cache" +sudo sync +echo 3 | sudo tee /proc/sys/vm/drop_caches + +echo "Disabling swap" +sudo sync +sudo swapoff -a + +if [ ! -f /mnt/tmpfs/3_${WASTE}GB ]; then + echo dd if=/dev/zero of=/mnt/tmpfs/3_${WASTE}GB bs=4096 count=$((${WASTE}*256*1024)) + dd if=/dev/zero of=/mnt/tmpfs/3_${WASTE}GB bs=4096 count=$((${WASTE}*256*1024)) +fi +exit diff --git a/uffd_test/uffd_test2.cpp b/tests/uffd_test/uffd_test2.cpp similarity index 68% rename from uffd_test/uffd_test2.cpp rename to tests/uffd_test/uffd_test2.cpp index 61361d80..2c14a653 100644 --- a/uffd_test/uffd_test2.cpp +++ b/tests/uffd_test/uffd_test2.cpp @@ -33,7 +33,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include - #define NUMPAGES 10000 #define NUMTHREADS 1 #define BUFFERSIZE 100 @@ -42,11 +41,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #endif -extern "C"{ -#include "../uffd_handler/uffd_handler.h" - -volatile int stop_uffd_handler; -} +#include "umap.h" +#include "umaptest.h" static inline uint64_t getns(void) { @@ -56,43 +52,25 @@ static inline uint64_t getns(void) return (((uint64_t)ts.tv_sec) * 1000000000ULL) + ts.tv_nsec; } -typedef struct { - int numpages; - int numthreads; - int bufsize; - char *fn; -} optstruct_t; - -optstruct_t options; - int main(int argc, char **argv) { - long num_pages; - int uffd; + umt_optstruct_t options; long pagesize; int64_t totalbytes; - pthread_t uffd_thread; - int64_t arraysize; - void *base_mmap_array; + void *base_addr; int value=0; - pagesize = get_pagesize(); + int fd; - options.numpages = NUMPAGES; - options.numthreads = NUMTHREADS; - options.bufsize= BUFFERSIZE; - options.fn = NULL; - num_pages= options.numpages; + pagesize = umt_getpagesize(); - base_mmap_array = mmap(NULL, options.numpages*pagesize, PROT_READ|PROT_WRITE, - MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0); - if (base_mmap_array == MAP_FAILED) - { - perror("mmap"); - exit(1); - } + umt_getoptions(&options, argc, argv); + + totalbytes = options.numpages*pagesize; + + fd = umt_openandmap(&options, totalbytes, &base_addr); - uint64_t* array = (uint64_t*) base_mmap_array; // feed it the mmaped region - uint64_t array_length = num_pages * 512; // in number of 8-byte integers. + uint64_t* array = (uint64_t*) base_addr; // feed it the mmaped region + uint64_t array_length = totalbytes/sizeof(int64_t); // in number of 8-byte integers. uint64_t experiment_count = 100000; // Size of experiment, number of accesses uint64_t batch_size = 1000; // Set a batch size MUST BE MULTIPLE OF experiment_count std::vector vec_random_indices; @@ -112,28 +90,8 @@ int main(int argc, char **argv) assert(latencies); memset(latencies,0,sizeof(uint64_t)*num_batches); - //getoptions(&options, argc, argv); - - //totalbytes = options.numpages*pagesize; - //openandmap(options.fn, totalbytes, p->fd, p->base_addr); - - // start the thread that will handle userfaultfd events - - stop_uffd_handler = 0; - - params_t *p = (params_t *)malloc(sizeof(params_t)); - p->base_addr = (void *)array; - p->pagesize = pagesize; - p->bufsize = options.bufsize; - p->faultnum = 0; - p->uffd = uffd_init(p->base_addr, pagesize, num_pages); - //fprintf(stdout, "%d pages, %d threads\n", options.numpages, options.numthreads); - pthread_create(&uffd_thread, NULL, uffd_handler, p); - - sleep(1); - omp_set_num_threads(options.numthreads); // Fetch indices in batches @@ -160,12 +118,8 @@ int main(int argc, char **argv) // CALC LATENCY & IOPS } - printf("\n"); - stop_uffd_handler = 1; - pthread_join(uffd_thread, NULL); - //fprintf(stdout, "mode %llu\n", (unsigned long long)uffdio_register.mode); - uffd_finalize(p, options.numpages); + umt_closeandunmap(&options, totalbytes, base_addr, fd); for (long i=0;i #include // optind #include - -#ifdef _OPENMP -#include -#endif +#include +#include #ifdef _OPENMP #include @@ -99,41 +97,22 @@ int main(int argc, char **argv) umt_optstruct_t options; long pagesize; int64_t totalbytes; - pthread_t uffd_thread; uint64_t arraysize; - // parameter block to uffd - params_t *p = (params_t *) malloc(sizeof(params_t)); + void* base_addr; + int fd; - pagesize = get_pagesize(); + pagesize = umt_getpagesize(); - umt_getoptions(options, argc, argv); + umt_getoptions(&options, argc, argv); totalbytes = options.numpages*pagesize; - umt_openandmap(options, totalbytes, p->fd, p->base_addr); + fd = umt_openandmap(&options, totalbytes, &base_addr); - if ( ! options.usemmap ) { - fprintf(stdout, "Using UserfaultHandler Buffer\n"); - - // start the thread that will handle userfaultfd events - p->pagesize = pagesize; - - p->bufsize = options.bufsize; - - p->faultnum = 0; - p->uffd = uffd_init(p->base_addr, pagesize, options.numpages); - - pthread_create(&uffd_thread, NULL, uffd_handler, p); - sleep(1); - } - else { - fprintf(stdout, "Using vanilla mmap()\n"); - } - fprintf(stdout, "%lu pages, %lu threads\n", options.numpages, options.numthreads); omp_set_num_threads(options.numthreads); - uint64_t *arr = (uint64_t *) p->base_addr; + uint64_t *arr = (uint64_t *) base_addr; arraysize = totalbytes/sizeof(int64_t); uint64_t start = getns(); @@ -145,7 +124,7 @@ int main(int argc, char **argv) if ( !options.initonly ) { start = getns(); - std::sort(arr, &arr[arraysize]); + __gnu_parallel::sort(arr, &arr[arraysize]); fprintf(stdout, "Sort took %f us\n", (double)(getns() - start)/1000000.0); start = getns(); @@ -153,11 +132,7 @@ int main(int argc, char **argv) fprintf(stdout, "Validate took %f us\n", (double)(getns() - start)/1000000.0); } - if ( ! options.usemmap ) { - stop_umap_handler(); - pthread_join(uffd_thread, NULL); - uffd_finalize(p, options.numpages); - } + umt_closeandunmap(&options, totalbytes, base_addr, fd); return 0; } diff --git a/tests/umaptest/CMakeLists.txt b/tests/umaptest/CMakeLists.txt index d7d22c45..b4066f3a 100644 --- a/tests/umaptest/CMakeLists.txt +++ b/tests/umaptest/CMakeLists.txt @@ -8,6 +8,7 @@ if(OPENMP_FOUND) add_executable(umaptest test.c) target_link_libraries(umaptest libumap_static) + target_link_libraries(umaptest libumaptest_static) include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_BINARY_DIR}/include ) diff --git a/tests/umaptest/test.c b/tests/umaptest/test.c index e55eb1cb..afea4033 100644 --- a/tests/umaptest/test.c +++ b/tests/umaptest/test.c @@ -36,8 +36,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #endif #include "umap.h" - -volatile int stop_uffd_handler; +#include "umaptest.h" static inline uint64_t getns(void) { @@ -47,106 +46,25 @@ static inline uint64_t getns(void) return (((uint64_t)ts.tv_sec) * 1000000000ULL) + ts.tv_nsec; } -typedef struct { - int numpages; - int numthreads; - int bufsize; - char *fn; -} optstruct_t; - -optstruct_t options; - -void getoptions(optstruct_t *options, int argc, char *argv[]) { - - int c; - - while ((c = getopt(argc, argv, "p:t:f:b:")) != -1) { - - switch(c) { - case 'p': - options->numpages = atoi(optarg); - if (options->numpages > 0) - break; - else goto R0; - case 't': - options->numthreads = atoi(optarg); - if (options->numthreads > 0) - break; - else goto R0; - case 'b': - options->bufsize = atoi(optarg); - if (options->bufsize > 0) - break; - else goto R0; - case 'f': - options->fn = optarg; - break; - R0: - default: - fprintf(stdout, "Usage: %s ", argv[0]); - fprintf(stdout, " -p [number of pages], default: %d ", NUMPAGES); - fprintf(stdout, " -t [number of threads], default: %d ", NUMTHREADS); - fprintf(stdout, " -b [page buffer size], default: %d ", BUFFERSIZE); - - fprintf(stdout, " -f [file name], name of existing file to read pages from, default no -f\n"); - exit(1); - } - } -} - int main(int argc, char **argv) { long pagesize; long num_pages; void *region; - pthread_t uffd_thread; - - pagesize = get_pagesize(); + umt_optstruct_t options; + int fd; - options.numpages = NUMPAGES; - options.numthreads = NUMTHREADS; - options.bufsize = BUFFERSIZE; - options.fn = NULL; + pagesize = umt_getpagesize(); - getoptions(&options, argc, argv); + umt_getoptions(&options, argc, argv); num_pages = options.numpages; omp_set_num_threads(options.numthreads); - // allocate a memory region to be managed by userfaultfd - region = mmap(NULL, pagesize * num_pages, PROT_READ|PROT_WRITE, - MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0); - //MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); - if (region == MAP_FAILED) { - perror("mmap"); - exit(1); - } - - // start the thread that will handle userfaultfd events - - //stop_uffd_handler = 0; - - params_t *p = malloc(sizeof(params_t)); - p->uffd = uffd_init(region, pagesize, num_pages); - p->pagesize = pagesize; - p->bufsize = options.bufsize; - p->faultnum = 0; - p->base_addr = region; - fprintf(stdout, "%ld pages, %d threads\n", num_pages, options.numthreads); - if (!options.fn) - options.fn = "/tmp/abc.0"; + fd = umt_openandmap(&options, options.numpages*pagesize, ®ion); + + fprintf(stdout, "%ld pages, %lu threads\n", num_pages, options.numthreads); fprintf(stdout, "USEFILE enabled %s\n", options.fn); - // TODO (mjm) - Why doesn't O_DIRECT work?!? - //p->fd = open(options.fn, O_RDWR|O_DIRECT, S_IRUSR|S_IWUSR);// | O_DIRECT); - p->fd = open(options.fn, O_RDWR, S_IRUSR|S_IWUSR);// | O_DIRECT); - if (p->fd == -1) { - perror("file open"); - exit(1); - } - - pthread_create(&uffd_thread, NULL, uffd_handler, p); - //printf("total number of fault:%d\n",faultnum); - sleep(1); // storage for the latencies for each page int num_batches = 10; @@ -207,19 +125,14 @@ int main(int argc, char **argv) /* //cur += pagesize; */ /* } */ //------------------------------------------------------------------- - stop_umap_handler(); - pthread_join(uffd_thread, NULL); - //fprintf(stdout, "mode %llu\n", (unsigned long long)uffdio_register.mode); - fprintf(stdout,"total number of fault:%d, value is %d\n",p->faultnum,value); - - uffd_finalize(p, num_pages); + + umt_closeandunmap(&options, options.numpages*pagesize, region, fd); for (long i = 0; i < num_batches; i++) { fprintf(stdout, "%llu\n", (unsigned long long)latencies[i]); } free(latencies); - munmap(region, pagesize * num_pages); return 0; } diff --git a/uffd_test/Makefile b/uffd_test/Makefile deleted file mode 100755 index 8261cdba..00000000 --- a/uffd_test/Makefile +++ /dev/null @@ -1,37 +0,0 @@ -CXX=g++ -CC=gcc - -TARGET=uffd_test2 - -DEFS=-D_GNU_SOURCE - -ifdef D - SEP := , - DEFS += $(patsubst %,-D%,$(subst $(SEP), ,$(D))) -endif - -CXXFLAGS= $(DEFS) -std=c++11 -g -lpthread -fopenmp # -O3 - -LDFLAGS=-lpthread -fopenmp - -OS := $(shell uname) -ifneq ($(OS), Darwin) -LDFLAGS+= -lrt -endif - -UFFDLOC = ../uffd_handler -UFFDLD= -lrt -lssl -lcrypto -CFLAGS=-std=gnu99 $(DEFS) -g -lpthread # -O3 -HEADERS=$(UFFDLOC)/uffd_handler.h -TARGETOBJ=$(TARGET).o uffd_handler.o - -all: $(TARGET) - -$(TARGET): $(TARGETOBJ) - $(LINK.cpp) $(TARGETOBJ) $(DEFS) $(LDFLAGS) $(UFFDLD) -o $@ -uffd_handler.o: $(HEADERS) - $(CC) $(UFFDLOC)/uffd_handler.c $(CFLAGS) $(DEFS) -c -o $@ -$(TARGET).o: $(TARGET).cpp - $(CXX) $< $(CXXFLAGS) -c -o $@ -clean: - rm -f $(TARGET) $(TARGET).o uffd_handler.o From 4cceed852e4a06aef91b831123b7fca0bb8c4ee2 Mon Sep 17 00:00:00 2001 From: Marty McFadden Date: Mon, 24 Jul 2017 11:54:54 -0700 Subject: [PATCH 08/32] + umap() full read/write support added by adding SIGBUS error handling to user fault handler. + logging added to umap() by setting UMAP_LOGGING environment variable + churn test added to focus set of reader and writer threads on particular umapped pages. --- CMakeLists.txt | 2 +- src/CMakeLists.txt | 4 +- src/lfile | 4554 +++++++++++++++++++++++++++++++++ src/umap.cpp | 357 ++- src/umaplog.cpp | 37 + src/umaplog.h | 30 + tests/CMakeLists.txt | 1 + tests/churn/.gitignore | 1 + tests/churn/CMakeLists.txt | 22 + tests/churn/churn.cpp | 247 ++ tests/churn/options.cpp | 142 + tests/churn/options.h | 28 + tests/libumaptest/mmap.cpp | 17 +- tests/libumaptest/options.cpp | 37 +- tests/umapsort/umapsort.cpp | 15 +- 15 files changed, 5322 insertions(+), 172 deletions(-) create mode 100644 src/lfile create mode 100644 src/umaplog.cpp create mode 100644 src/umaplog.h create mode 100644 tests/churn/.gitignore create mode 100644 tests/churn/CMakeLists.txt create mode 100644 tests/churn/churn.cpp create mode 100644 tests/churn/options.cpp create mode 100644 tests/churn/options.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 2de79216..52bc9160 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,7 @@ if (NOT CMAKE_BUILD_TYPE) endif() set (FLAGS_ALL "-Wall") -set (FLAGS_DEBUG_ALL "-g -O0") +set (FLAGS_DEBUG_ALL "-g -O0 -DDEBUG") set (FLAGS_RELEASE_ALL "-O3") set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99 ${FLAGS_ALL}") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 144c7ec1..24a34261 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,7 +1,7 @@ project(umap_libraries) -add_library(libumap SHARED umap.cpp) -add_library(libumap_static STATIC umap.cpp) +add_library(libumap SHARED umap.cpp umaplog.cpp) +add_library(libumap_static STATIC umap.cpp umaplog.cpp) set_target_properties(libumap_static PROPERTIES OUTPUT_NAME libumap) set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") diff --git a/src/lfile b/src/lfile new file mode 100644 index 00000000..6ad7a1b9 --- /dev/null +++ b/src/lfile @@ -0,0 +1,4554 @@ ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2f000) +Churn Test: + 2 Pages in page buffer + 1 Read Load (focus) pages from 0x7f2e29b2b000 - 0x7f2e29b2bfff + 1 Write Load (focus) pages from 0x7f2e29b2c000 - 0x7f2e29b2cfff + 2 Churn pages from 0x7f2e29b2d000 - 0x7f2e29b2efff + 1 Churn threads + 32 Load Reader threads + 1 Load Writer threads + /mnt/intel/marty.0 Backing file + 600 seconds for test duration. + +... +... +... + +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039863808 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3039873536 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039873536 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3039885312 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039885312 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3039891456 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039891456 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3039901184 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039901184 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3039910912 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039910912 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3039922688 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039922688 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3039934976 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039934976 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3039943680 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039943680 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3039953408 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039953408 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3039962624 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039962624 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3039973376 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039973376 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3039982592 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039982592 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3039991808 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039991808 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040004096 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040004096 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040013312 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040013312 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040025088 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040025088 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040034304 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040034304 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040045056 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040045056 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040054784 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040054784 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040698880 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040698880 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040709120 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040709120 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040721408 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040721408 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040736256 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040736256 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040750592 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040750592 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040761344 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040761344 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040770560 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040770560 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040783872 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040783872 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040793088 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040793088 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040830464 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040830464 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040843776 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040843776 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040868864 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040868864 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040897024 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040897024 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040919552 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040919552 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040929280 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040929280 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040939520 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040939520 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040954368 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040954368 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040964096 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040964096 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040974848 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040974848 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040980992 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040980992 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040986112 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040986112 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3040991744 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040991744 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041001984 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041001984 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041020416 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041020416 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041029632 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041029632 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041036288 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041036288 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041047552 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041047552 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041054720 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041054720 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041067008 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041067008 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041080832 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041080832 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041091072 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041091072 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041101824 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041101824 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041111552 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041111552 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041120256 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041120256 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041129984 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041129984 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041160704 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041160704 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041174528 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041174528 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041183232 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041183232 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041192960 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041192960 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041204224 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041204224 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041211392 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041211392 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041230336 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041230336 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041253888 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041253888 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041267200 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041267200 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041281024 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041281024 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041299456 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041299456 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041314816 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041314816 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041328128 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041328128 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041338368 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041338368 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041348608 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041348608 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041359872 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041359872 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041372672 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041372672 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041389568 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041389568 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041401856 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041401856 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041414144 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041414144 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041421312 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041421312 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041437696 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041437696 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041468416 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041468416 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041481216 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041481216 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041501696 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041501696 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041529344 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041529344 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041553408 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041553408 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041583104 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041583104 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041602560 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041602560 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041614848 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041614848 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041627136 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041627136 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041637376 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041637376 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041647104 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041647104 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041658880 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041658880 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041670656 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041670656 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041681920 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041681920 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041692160 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041692160 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041704448 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041704448 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041713152 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041713152 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041725952 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041725952 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041739264 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041739264 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041751552 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041751552 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041760768 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041760768 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041772544 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041772544 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041793024 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041793024 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041804288 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041804288 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041815552 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041815552 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041827840 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041827840 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041840640 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041840640 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041858560 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041858560 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041870848 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041870848 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041883648 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041883648 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041895936 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041895936 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041912832 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041912832 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041920000 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041920000 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041929216 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041929216 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041939968 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041939968 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041970176 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041970176 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041982976 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041982976 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3041995776 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041995776 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042007040 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042007040 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042026496 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042026496 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042034176 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042034176 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042046464 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042046464 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042057728 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042057728 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042071552 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042071552 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042083840 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042083840 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042097152 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042097152 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042109440 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042109440 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042122240 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042122240 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042133504 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042133504 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042146304 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042146304 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042159616 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042159616 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042169344 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042169344 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042180096 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042180096 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042189824 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042189824 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042201088 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042201088 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042210304 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042210304 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042221056 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042221056 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042229760 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042229760 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042242048 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042242048 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042253312 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042253312 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042262016 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042262016 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042275840 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042275840 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042281472 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042281472 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042291200 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042291200 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042301440 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042301440 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042310656 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042310656 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042320384 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042320384 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042330112 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042330112 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042342912 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042342912 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042355712 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042355712 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042364416 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042364416 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042376704 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042376704 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042405376 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042405376 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042415104 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042415104 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042423296 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042423296 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042435584 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042435584 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042445312 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042445312 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042589184 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042589184 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042610176 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042610176 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042618368 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042618368 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042628608 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042628608 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042639360 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042639360 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042650112 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042650112 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042663936 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042663936 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042674176 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042674176 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042681856 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042681856 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042700288 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042700288 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042707456 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042707456 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042722304 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042722304 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042736128 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042736128 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042745856 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042745856 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042757120 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042757120 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042770432 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042770432 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042782720 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042782720 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042795520 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042795520 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042808320 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042808320 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042818560 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042818560 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042828800 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042828800 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042839552 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042839552 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042852352 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042852352 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042864128 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042864128 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042880512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042880512 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042890752 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042890752 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042900992 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042900992 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042910720 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042910720 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042922496 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042922496 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042935808 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042935808 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042954240 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042954240 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042965504 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042965504 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042976256 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042976256 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3042994688 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042994688 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043004928 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043004928 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043010048 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043010048 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043025920 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043025920 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043036160 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043036160 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043048960 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043048960 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043059712 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043059712 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043068928 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043068928 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043081216 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043081216 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043092992 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043092992 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043101696 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043101696 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043113472 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043113472 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043123712 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043123712 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043133952 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043133952 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043143680 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043143680 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043152896 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043152896 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043165696 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043165696 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043178496 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043178496 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043190784 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043190784 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043197440 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043197440 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043209728 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043209728 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043219968 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043219968 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043228160 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043228160 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043240448 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043240448 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043251200 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043251200 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043265536 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043265536 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043278336 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043278336 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043288064 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043288064 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043863552 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043863552 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043872768 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043872768 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043885056 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043885056 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043898880 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043898880 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043908096 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043908096 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043917824 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043917824 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043928064 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043928064 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043940864 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043940864 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043950080 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043950080 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043966464 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043966464 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043978752 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043978752 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043987968 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043987968 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3043998208 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043998208 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044008448 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044008448 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044016128 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044016128 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044026368 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044026368 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044037632 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044037632 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044047872 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044047872 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044058112 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044058112 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044070912 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044070912 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044084736 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044084736 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044104704 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044104704 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044116992 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044116992 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044128768 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044128768 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044146688 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044146688 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044158464 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044158464 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044171776 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044171776 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044183552 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044183552 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044200448 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044200448 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044209664 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044209664 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044221440 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044221440 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044234240 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044234240 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044244992 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044244992 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044256256 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044256256 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044272128 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044272128 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044282880 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044282880 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044305408 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044305408 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044328448 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044328448 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044336640 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044336640 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044343808 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044343808 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044356096 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044356096 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044371968 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044371968 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044377600 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044377600 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044381184 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044381184 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044394496 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044394496 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044408320 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044408320 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044412416 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044412416 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044422144 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044422144 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044434944 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044434944 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044446720 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044446720 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044480000 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044480000 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044498944 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044498944 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044505600 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044505600 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044521984 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044521984 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044547584 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044547584 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044570624 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044570624 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044588544 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044588544 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044602880 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044602880 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044628992 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044628992 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044661760 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044661760 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044680704 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044680704 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044701184 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044701184 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044707840 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044707840 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044731392 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044731392 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044749312 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044749312 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044777984 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044777984 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044787712 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044787712 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044803584 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044803584 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044820480 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044820480 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044843520 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044843520 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044863488 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044863488 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044870144 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044870144 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044874240 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044874240 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044882944 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044882944 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044887040 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044887040 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044896768 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044896768 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044904448 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044904448 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044913664 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044913664 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044927488 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044927488 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044940288 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044940288 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044950528 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044950528 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044965888 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044965888 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044978688 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044978688 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044990976 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044990976 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3044998656 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044998656 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045002240 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045002240 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045012992 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045012992 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045021184 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045021184 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045026816 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045026816 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045038080 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045038080 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045047296 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045047296 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045058560 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045058560 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045067776 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045067776 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045075968 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045075968 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045086720 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045086720 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045110272 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045110272 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045120512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045120512 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045136384 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045136384 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045157376 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045157376 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045176832 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045176832 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045187584 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045187584 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045202432 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045202432 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045209088 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045209088 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045217280 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045217280 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045229568 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045229568 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045241344 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045241344 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045251584 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045251584 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045266944 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045266944 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045276160 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045276160 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045294080 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045294080 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045319168 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045319168 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045343232 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045343232 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045353472 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045353472 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045369344 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045369344 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045378560 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045378560 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045405696 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045405696 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045432832 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045432832 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045451776 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045451776 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045465088 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045465088 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045484032 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045484032 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045505024 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045505024 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045526016 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045526016 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045547520 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045547520 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045569536 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045569536 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045589504 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045589504 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045612544 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045612544 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045627904 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045627904 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045652480 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045652480 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045671424 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045671424 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045685760 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045685760 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045687296 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045687296 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045697536 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045697536 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045702144 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045702144 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045714944 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045714944 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045727744 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045727744 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045734400 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045734400 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045756928 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045756928 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045770752 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045770752 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045775872 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045775872 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045788160 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045788160 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045797376 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045797376 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045807616 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045807616 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045815808 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045815808 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045827584 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045827584 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045839360 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045839360 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045848576 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045848576 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045854720 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045854720 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045874176 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045874176 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045876224 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045876224 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045885440 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045885440 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045903360 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 ++WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) +EVICT(CLEAN) @(0x7f2e29b2e000)=512 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 ++WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) +EVICT(CLEAN) @(0x7f2e29b2b000)=0 +PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045903360 +-WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(CLEAN) @(0x7f2e29b2d000)=0 +PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 ++WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) +4638765198933581824 ++WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) +EVICT(DIRTY) @(0x7f2e29b2c000)=3045903872 +EVICT(CLEAN) @(0x7f2e29b2e000)=512 diff --git a/src/umap.cpp b/src/umap.cpp index c46218f1..24acbb51 100644 --- a/src/umap.cpp +++ b/src/umap.cpp @@ -1,13 +1,4 @@ -/* - * This file is part of UMAP. For copyright information see the COPYRIGHT file in the top level directory, or at - * https://github.com/LLNL/umap/blob/master/COPYRIGHT This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License (as published by the Free Software Foundation) - * version 2.1 dated February 1999. 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 terms - * and conditions of the GNU Lesser General Public License for more details. You should have received a copy of the - * GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ +/* This file is part of UMAP. For copyright information see the COPYRIGHT file in the top level directory, or at https://github.com/LLNL/umap/blob/master/COPYRIGHT This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License (as published by the Free Software Foundation) version 2.1 dated February 1999. 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 terms and conditions of the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif // _GNU_SOURCE @@ -16,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -28,7 +20,9 @@ #include #include #include // sched_getcpu() +#include #include "umap.h" // API to library +#include "umaplog.h" // umap_log() using namespace std; @@ -37,15 +31,16 @@ const int UMAP_VERSION_MINOR = 0; const int UMAP_VERSION_PATCH = 1; const int UMAP_DEFAULT_PBSIZE = 16; static int umap_page_bufsize = UMAP_DEFAULT_PBSIZE; +static long page_size; class umap_page; class _umap { public: _umap(void* _mmap_addr, size_t _mmap_length, int _mmap_fd); + void uffd_finalize(void); - inline void stop_faultlistener( void ) noexcept { - time_to_stop = true; - listener->join(); + bool is_in_umap(const void* page_begin) { + return page_begin >= segment_address && page_begin < (void*)((uint64_t)segment_address + segment_length); } inline int get_page_index(void* _p) { @@ -53,21 +48,10 @@ class _umap { return (it == page_index.end()) ? -1 : it->second; } - inline void add_page_index(int idx, void* page) { - page_index[page] = idx; - } - - void delete_page_index(void* page) { - int num_erased; - num_erased = page_index.erase(page); - assert(num_erased == 1); + static inline void* UMAP_PAGE_BEGIN(const void* a) { + return (void*)((uint64_t)a & ~(page_size-1)); } - void enable_wp_on_pages_and_wake(uint64_t, int64_t); - void disable_wp_on_pages(uint64_t, int64_t); - void* uffd_handler(void); - int uffd_finalize(void); - private: void* segment_address; size_t segment_length; @@ -77,7 +61,6 @@ class _umap { uint64_t fault_count; int userfault_fd; int next_page_alloc_index; - long page_size; thread *listener; vector pages_in_memory; char* tmppagebuf; @@ -86,6 +69,25 @@ class _umap { void evict_page(umap_page& page); void remove_page_index(void* _p) { page_index.erase(_p); } + void uffd_handler(void); + void pagefault_event(const struct uffd_msg& msg); + inline void stop_faultlistener( void ) noexcept { + time_to_stop = true; + listener->join(); + } + + inline void add_page_index(int idx, void* page) { + page_index[page] = idx; + } + + void delete_page_index(void* page) { + int num_erased; + num_erased = page_index.erase(page); + assert(num_erased == 1); + } + + void enable_wp_on_pages_and_wake(uint64_t, int64_t); + void disable_wp_on_pages(uint64_t, int64_t); }; class umap_page { @@ -118,14 +120,18 @@ void* umap(void* addr, size_t length, int prot, int flags, int fd, off_t offset) return UMAP_FAILED; } + _umap *p_umap; try { - _umap *p_umap = new _umap{region, length, fd}; - active_umaps[region] = p_umap; - } - catch(...) { + p_umap = new _umap{region, length, fd}; + } catch(const std::exception& e) { + cerr << __FUNCTION__ << " Failed to launch _umap: " << e.what() << endl; + return UMAP_FAILED; + } catch(...) { + cerr << "umap failed to instantiate _umap object\n"; return UMAP_FAILED; } + active_umaps[region] = p_umap; return region; } @@ -157,20 +163,12 @@ _umap::_umap( void* _mmap_addr, size_t _mmap_length, int _mmap_fd) time_to_stop{false}, fault_count{0}, next_page_alloc_index{0} { page_buffer_size = umap_page_bufsize; - if ((page_size = sysconf(_SC_PAGESIZE)) == -1) { - perror("sysconf(_SC_PAGESIZE)"); - throw -1; - } - if ((userfault_fd = syscall(__NR_userfaultfd, O_CLOEXEC | O_NONBLOCK)) < 0) { perror("userfaultfd syscall not available in this kernel"); throw -1; } - struct uffdio_api uffdio_api = { // enable for api version and check features - .api = UFFD_API, - .features = 0 - }; + struct uffdio_api uffdio_api = { .api = UFFD_API, .features = 0 }; if (ioctl(userfault_fd, UFFDIO_API, &uffdio_api) == -1) { perror("ioctl(UFFDIO_API)"); @@ -183,10 +181,7 @@ _umap::_umap( void* _mmap_addr, size_t _mmap_length, int _mmap_fd) } struct uffdio_register uffdio_register = { - .range = { - .start = (uint64_t)segment_address, - .len = segment_length - }, + .range = { .start = (uint64_t)segment_address, .len = segment_length }, .mode = UFFDIO_REGISTER_MODE_MISSING | UFFDIO_REGISTER_MODE_WP }; @@ -217,7 +212,7 @@ _umap::_umap( void* _mmap_addr, size_t _mmap_length, int _mmap_fd) listener = new thread{&_umap::uffd_handler, this}; // Start our userfaultfd listener } -void* _umap::uffd_handler(void) +void _umap::uffd_handler(void) { //cout << __FUNCTION__ << " on CPU " << sched_getcpu() << " Started\n"; for (;;) { @@ -231,7 +226,7 @@ void* _umap::uffd_handler(void) int pollres = poll(pollfd, 1, 2000); if (time_to_stop) - return NULL; + return; switch (pollres) { case -1: @@ -272,119 +267,162 @@ void* _umap::uffd_handler(void) continue; } - // - // At this point, we know we have had a page fault. Let's handle it. - // -#define PAGE_BEGIN(a) (void*)((uint64_t)a & ~(page_size-1)); - - fault_count++; - void* fault_addr = (void*)msg.arg.pagefault.address; - void* page_begin = PAGE_BEGIN(fault_addr); - - // - // Check to see if the faulting page is already in memory. This can - // happen if more than one thread causes a fault for the same page. - // - int bufidx = get_page_index(page_begin); + pagefault_event(msg); // At this point, we know we have had a page fault. Let's handle it. + } +} - if (bufidx >= 0) { - if (msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) { +void _umap::pagefault_event(const struct uffd_msg& msg) +{ + fault_count++; + void* fault_addr = (void*)msg.arg.pagefault.address; + void* page_begin = UMAP_PAGE_BEGIN(fault_addr); + + // + // Check to see if the faulting page is already in memory. This can + // happen if more than one thread causes a fault for the same page. + // + int bufidx = get_page_index(page_begin); + if (bufidx >= 0) { + if (msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) { +#ifdef DEBUG + if ((msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) == (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) + umaplog("PF(WP+WRITE) (In Memory Already) @(%p)=%lu %s\n", page_begin, *(uint64_t*)page_begin, pages_in_memory[bufidx].page_is_dirty() ? "Already Dirty" : "Clean"); + else if (msg.arg.pagefault.flags & UFFD_PAGEFAULT_FLAG_WP) + umaplog("PF(WP) (In Memory Already) @(%p)=%lu %s\n", page_begin, *(uint64_t*)page_begin, pages_in_memory[bufidx].page_is_dirty() ? "Already Dirty" : "Clean"); + else if (msg.arg.pagefault.flags & UFFD_PAGEFAULT_FLAG_WRITE) + umaplog("PF(WRITE) (In Memory Already) @(%p)=%lu %s\n", page_begin, *(uint64_t*)page_begin, pages_in_memory[bufidx].page_is_dirty() ? "Already Dirty" : "Clean"); +#endif // DEBUG + + // + // Check to see if this page is already marked as dirty which means that + // some other thread got a WP/WRITE PF ahead of us so we don't need to do + // this again. + // + if ( !pages_in_memory[bufidx].page_is_dirty() ) { pages_in_memory[bufidx].mark_page_dirty(); disable_wp_on_pages((uint64_t)page_begin, 1); } + } +#ifdef DEBUG + else { + umaplog("PF(READ) (In Memory Already) @(%p)=%lu\n", page_begin, *(uint64_t*)page_begin); + } +#endif // DEBUG - struct uffdio_range wake; - wake.start = (uint64_t)page_begin; - wake.len = page_size; + struct uffdio_range wake; + wake.start = (uint64_t)page_begin; + wake.len = page_size; - if (ioctl(userfault_fd, UFFDIO_WAKE, &wake) == -1) { - perror("ioctl(UFFDIO_WAKE)"); - exit(1); - } - continue; + if (ioctl(userfault_fd, UFFDIO_WAKE, &wake) == -1) { + perror("ioctl(UFFDIO_WAKE)"); + exit(1); } + return; + } - // - // Page not in memory, read it in and evict someone - // - ssize_t pread_ret = pread(backingfile_fd, tmppagebuf, page_size, - (off_t)((uint64_t)page_begin - (uint64_t)segment_address)); + // + // Page not in memory, read it in and (potentially) evict someone + // + if (pread(backingfile_fd, tmppagebuf, page_size, (off_t)((uint64_t)page_begin - (uint64_t)segment_address)) == -1) { + perror("pread failed"); + exit(1); + } + + if (pages_in_memory[next_page_alloc_index].get_page()) { + delete_page_index(pages_in_memory[next_page_alloc_index].get_page()); + evict_page(pages_in_memory[next_page_alloc_index]); + } + pages_in_memory[next_page_alloc_index].set_page(page_begin); + add_page_index(next_page_alloc_index, page_begin); + + struct uffdio_copy copy; + copy.src = (uint64_t)tmppagebuf; + copy.dst = (uint64_t)page_begin; + copy.len = page_size; + + if (msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) { + pages_in_memory[next_page_alloc_index].mark_page_dirty(); - if (pread_ret == -1) { - perror("pread failed"); + copy.mode = UFFDIO_COPY_MODE_DONTWAKE; + if (ioctl(userfault_fd, UFFDIO_COPY, ©) == -1) { + perror("ioctl(UFFDIO_COPY nowake)"); exit(1); } - if (pages_in_memory[next_page_alloc_index].get_page()) { - delete_page_index(pages_in_memory[next_page_alloc_index].get_page()); - evict_page(pages_in_memory[next_page_alloc_index]); - } +#ifdef DEBUG + if ((msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) == (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) + umaplog("PF(WP+WRITE) (UFFDIO_COPY) @(%p)=%lu\n", page_begin, *(uint64_t*)page_begin); + else if (msg.arg.pagefault.flags & UFFD_PAGEFAULT_FLAG_WP) + umaplog("PF(WP) (UFFDIO_COPY) @(%p)=%lu\n", page_begin, *(uint64_t*)page_begin); + else if (msg.arg.pagefault.flags & UFFD_PAGEFAULT_FLAG_WRITE) + umaplog("PF(WRITE) (UFFDIO_COPY) @(%p)=%lu\n", page_begin, *(uint64_t*)page_begin); +#endif // DEBUG - pages_in_memory[next_page_alloc_index].set_page(page_begin); - add_page_index(next_page_alloc_index, page_begin); + disable_wp_on_pages((uint64_t)page_begin, 1); - if (msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) { - disable_wp_on_pages((uint64_t)page_begin, 1); - pages_in_memory[next_page_alloc_index].mark_page_dirty(); + struct uffdio_range wake; + wake.start = (uint64_t)page_begin; + wake.len = page_size; + + if (ioctl(userfault_fd, UFFDIO_WAKE, &wake) == -1) { + perror("ioctl(UFFDIO_WAKE)"); + exit(1); } - else { - pages_in_memory[next_page_alloc_index].mark_page_clean(); + } + else { + pages_in_memory[next_page_alloc_index].mark_page_clean(); + + copy.mode = UFFDIO_COPY_MODE_DONTWAKE; + if (ioctl(userfault_fd, UFFDIO_COPY, ©) == -1) { + perror("ioctl(UFFDIO_COPY nowake)"); + exit(1); } - next_page_alloc_index = (next_page_alloc_index +1) % page_buffer_size; + umaplog("PF(READ) (UFFDIO_COPY) @(%p)=%lu\n", page_begin, *(uint64_t*)page_begin); - struct uffdio_copy copy; - copy.src = (uint64_t)tmppagebuf; - copy.dst = (uint64_t)page_begin; - copy.len = page_size; + enable_wp_on_pages_and_wake((uint64_t)page_begin, 1); - if (msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) { - copy.mode = 0; - if (ioctl(userfault_fd, UFFDIO_COPY, ©) == -1) { - perror("ioctl(UFFDIO_COPY wake)"); - exit(1); - } - } - else { - copy.mode = UFFDIO_COPY_MODE_DONTWAKE; - if (ioctl(userfault_fd, UFFDIO_COPY, ©) == -1) { - perror("ioctl(UFFDIO_COPY nowake)"); - exit(1); - } - enable_wp_on_pages_and_wake((uint64_t)page_begin, 1); + struct uffdio_range wake; + wake.start = (uint64_t)page_begin; + wake.len = page_size; + + if (ioctl(userfault_fd, UFFDIO_WAKE, &wake) == -1) { + perror("ioctl(UFFDIO_WAKE)"); + exit(1); } } - return NULL; + next_page_alloc_index = (next_page_alloc_index +1) % page_buffer_size; } void _umap::evict_page(umap_page& pb) { + uint64_t* page = (uint64_t*)pb.get_page(); + if (pb.page_is_dirty()) { - // Prevent further writes. No need to do this if not dirty because - // WP is already on. + // Prevent further writes. No need to do this if not dirty because WP is already on. // - // Preventing further writes is problematic because the kernel - // module will wake up any threads that might be waiting for a fault + // Preventing further writes is problematic because the kernel module will wake up any threads that might be waiting for a fault // to be handled in this page. // - // It is possible to work around this by making sure that all faults - // and WP exceptions for this page have been handled prior to evicting - // the page. + // It is possible to work around this by making sure that all faults and WP exceptions for this page have been handled prior to + // evicting the page. // - enable_wp_on_pages_and_wake((uint64_t)pb.get_page(), 1); + enable_wp_on_pages_and_wake((uint64_t)page, 1); - ssize_t rval; + umaplog("EVICT(DIRTY) @(%p)=%lu\n", page, *page); - rval = pwrite(backingfile_fd, (void*)(pb.get_page()), page_size, - (off_t)((uint64_t)pb.get_page() - (uint64_t)segment_address)); - - if (rval == -1) { + if (pwrite(backingfile_fd, (void*)page, page_size, (off_t)((uint64_t)page - (uint64_t)segment_address)) == -1) { perror("pwrite failed"); assert(0); } } +#ifdef DEBUG + else { + umaplog("EVICT(CLEAN) @(%p)=%lu\n", page, *page); + } +#endif // DEBUG - if (madvise((void*)(pb.get_page()), page_size, MADV_DONTNEED) == -1) { + if (madvise((void*)page, page_size, MADV_DONTNEED) == -1) { perror("madvise"); assert(0); } @@ -393,13 +431,10 @@ void _umap::evict_page(umap_page& pb) } // -// Enabling WP always wakes up any sleeping thread that may have been faulted -// in the specified range. +// Enabling WP always wakes up any sleeping thread that may have been faulted in the specified range. // -// For reasons I don't understand, the kernel module interface for -// UFFDIO_WRITEPROTECT does not allow for the caller to submit -// UFFDIO_WRITEPROTECT_MODE_DONTWAKE when enabling WP with -// UFFDIO_WRITEPROTECT_MODE_WP. UFFDIO_WRITEPROTECT_MODE_DONTWAKE is only +// For reasons which are unknown, the kernel module interface for UFFDIO_WRITEPROTECT does not allow for the caller to submit +// UFFDIO_WRITEPROTECT_MODE_DONTWAKE when enabling WP with UFFDIO_WRITEPROTECT_MODE_WP. UFFDIO_WRITEPROTECT_MODE_DONTWAKE is only // allowed when disabling WP. // void _umap::enable_wp_on_pages_and_wake(uint64_t start, int64_t num_pages) @@ -409,6 +444,8 @@ void _umap::enable_wp_on_pages_and_wake(uint64_t start, int64_t num_pages) wp.range.len = num_pages * page_size; wp.mode = UFFDIO_WRITEPROTECT_MODE_WP; + umaplog("+WRITEPROTECT (%p -- %p)\n", (void*)start, (void*)(start+(num_pages*page_size))); + if (ioctl(userfault_fd, UFFDIO_WRITEPROTECT, &wp) == -1) { perror("ioctl(UFFDIO_WRITEPROTECT Enable)"); exit(1); @@ -416,8 +453,7 @@ void _umap::enable_wp_on_pages_and_wake(uint64_t start, int64_t num_pages) } // -// We intentionally do not wake up faulting thread when disabling WP. This -// is to handle the write-fault case when the page needs to be copied in. +// We intentionally do not wake up faulting thread when disabling WP. This is to handle the write-fault case when the page needs to be copied in. // void _umap::disable_wp_on_pages(uint64_t start, int64_t num_pages) { @@ -426,13 +462,15 @@ void _umap::disable_wp_on_pages(uint64_t start, int64_t num_pages) wp.range.len = page_size * num_pages; wp.mode = UFFDIO_WRITEPROTECT_MODE_DONTWAKE; + umaplog("-WRITEPROTECT (%p -- %p)\n", (void*)start, (void*)(start+(num_pages*page_size))); + if (ioctl(userfault_fd, UFFDIO_WRITEPROTECT, &wp) == -1) { perror("ioctl(UFFDIO_WRITEPROTECT Disable)"); exit(1); } } -int _umap::uffd_finalize() +void _umap::uffd_finalize() { for (auto it : pages_in_memory) { if (it.get_page()) { @@ -449,17 +487,70 @@ int _umap::uffd_finalize() if (ioctl(userfault_fd, UFFDIO_UNREGISTER, &uffdio_register.range)) { perror("UFFDIO_UNREGISTER"); - return 1; + exit(1); } - return 0; +} + +static struct sigaction saved_sa; +static uint64_t num_bus_errs = 0; + +void sighandler(int signum, siginfo_t *info, void* buf) +{ + if (signum != SIGBUS) { + cerr << "Unexpected signal: " << signum << " received\n"; + exit(1); + } + + void* page_begin = _umap::UMAP_PAGE_BEGIN(info->si_addr); + + for (auto it : active_umaps) { + if (it.second->is_in_umap(page_begin)) { + num_bus_errs++; +#ifdef DEBUG + if (it.second->get_page_index(page_begin) >= 0) + umaplog("SIGBUS %p (page=%p) ALREADY IN UMAP PAGE BUFFER!\n", info->si_addr, page_begin); + else + umaplog("SIGBUS %p (page=%p) Not currently in umap page buffer\n", info->si_addr, page_begin); +#endif // DEBUG + return; + } + } + umaplog("SIGBUS %p (page=%p) ADDRESS OUTSIDE OF UMAP RANGE\n", info->si_addr, page_begin); } void __attribute ((constructor)) init_umap_lib( void ) { + struct sigaction act; + + umaplog_init(); + + if ((page_size = sysconf(_SC_PAGESIZE)) == -1) { + perror("sysconf(_SC_PAGESIZE)"); + throw -1; + } + + act.sa_handler = NULL; + act.sa_sigaction = sighandler; + if (sigemptyset(&act.sa_mask) == -1) { + perror("sigemptyset: "); + exit(1); + } + + act.sa_flags = SA_NODEFER | SA_SIGINFO; + + if (sigaction(SIGBUS, &act, &saved_sa) == -1) { + perror("sigaction: "); + exit(1); + } } void __attribute ((destructor)) fine_umap_lib( void ) { + if (sigaction(SIGBUS, &saved_sa, NULL) == -1) { + perror("sigaction restore: "); + exit(1); + } + for (auto it : active_umaps) { it.second->uffd_finalize(); delete it.second; diff --git a/src/umaplog.cpp b/src/umaplog.cpp new file mode 100644 index 00000000..d582fe29 --- /dev/null +++ b/src/umaplog.cpp @@ -0,0 +1,37 @@ +/* This file is part of UMAP. For copyright information see the COPYRIGHT file in the top level directory, or at https://github.com/LLNL/umap/blob/master/COPYRIGHT This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License (as published by the Free Software Foundation) version 2.1 dated February 1999. 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 terms and conditions of the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#ifdef DEBUG +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif // _GNU_SOURCE + +#include +#include +#include +#include +#include "umaplog.h" // umap_log() + +using namespace std; + +static std::mutex mtx; +bool umap_logging = true; + +void umaplog_lock(void) +{ + mtx.lock(); +} + +void umaplog_unlock(void) +{ + mtx.unlock(); +} + +void __umaplog_init(void) +{ + char *log = getenv("UMAP_LOGGING"); + if (log && atoi(log)) + umap_logging = true; + else + umap_logging = false; +} + +#endif // DEBUG diff --git a/src/umaplog.h b/src/umaplog.h new file mode 100644 index 00000000..743433b9 --- /dev/null +++ b/src/umaplog.h @@ -0,0 +1,30 @@ +/* This file is part of UMAP. For copyright information see the COPYRIGHT file in the top level directory, or at https://github.com/LLNL/umap/blob/master/COPYRIGHT This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License (as published by the Free Software Foundation) version 2.1 dated February 1999. 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 terms and conditions of the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#ifndef _UMAPLOG_H_ +#define _UMAPLOG_H_ +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif // _GNU_SOURCE + +#ifdef DEBUG +// Usage: This logging facility is available in Debug builds of the library. It is enabled by setting the UMAP_LOGGING to a value (if unset, it will be disabled. +#include + +extern void __umaplog_init(void); +extern void umaplog_lock(void); +extern void umaplog_unlock(void); +extern bool umap_logging; + +#define umaplog(format, ...)\ + do {\ + if (umap_logging) {\ + umaplog_lock();\ + fprintf(stderr, "[%s:%u] - " format, __FUNCTION__, __LINE__, ## __VA_ARGS__);\ + umaplog_unlock();\ + }\ + } while (0) +#define umaplog_init __umaplog_init +#else +#define umaplog(format, ...) +#define umaplog_init() +#endif +#endif diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 836fe2c6..08773b1d 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -4,3 +4,4 @@ add_subdirectory(umaptest) add_subdirectory(median) add_subdirectory(readload) add_subdirectory(uffd_test) +add_subdirectory(churn) diff --git a/tests/churn/.gitignore b/tests/churn/.gitignore new file mode 100644 index 00000000..d3d01b9c --- /dev/null +++ b/tests/churn/.gitignore @@ -0,0 +1 @@ +umapsort diff --git a/tests/churn/CMakeLists.txt b/tests/churn/CMakeLists.txt new file mode 100644 index 00000000..ddd6e9c6 --- /dev/null +++ b/tests/churn/CMakeLists.txt @@ -0,0 +1,22 @@ +project(churn) + +FIND_PACKAGE( OpenMP REQUIRED ) +if(OPENMP_FOUND) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") + add_executable(churn churn.cpp options.cpp) + + target_link_libraries(churn libumap_static) + target_link_libraries(churn libumaptest_static) + + include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_BINARY_DIR}/include ) + + install(TARGETS churn + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib/static + RUNTIME DESTINATION bin ) +else() + message("Skpping umapsort, OpenMP required") +endif() + diff --git a/tests/churn/churn.cpp b/tests/churn/churn.cpp new file mode 100644 index 00000000..9de63034 --- /dev/null +++ b/tests/churn/churn.cpp @@ -0,0 +1,247 @@ +/* This file is part of UMAP. For copyright information see the COPYRIGHT file in the top level directory, or at https://github.com/LLNL/umap/blob/master/COPYRIGHT This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License (as published by the Free Software Foundation) version 2.1 dated February 1999. 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 terms and conditions of the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +/* + The idea is that we have a single "Load Page" and a set + of N "Churn Pages" as follows: + + +==================================================+ + | | + | One Read Load Page | + | | + +--------------------------------------------------+ + | | + | One Write{/Read} Load Page | + | | + +--------------------------------------------------+ + | | + | Churn Page #1 | + | | + +--------------------------------------------------+ + | | + | Churn Page #... | + | | + +--------------------------------------------------+ + | | + | Churn Page #N | + | | + +==================================================+ + + We then have a smaller page_buffer_size that these pages will be faulted into and madvised out of via umap(). + + The LoadPage will have a set of num_load_reader and num_load_writer threads focussed exclusively on making reads and writes to locations constrained to the Load Page. + + The the Churn Pages will have num_churn_reader threads performing random byte read accesses across all of the Churn Pages effectively causing the Load Page to be paged in and out of the smaller Page_Buffer. +*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // sched_getcpu() +#include + +#include "umap.h" +#include "options.h" +#include "umaptest.h" + +uint64_t g_count = 0; +using namespace std; +using namespace chrono; + +class pageiotest { +public: + pageiotest(int _ac, char** _av): time_to_stop{false}, pagesize{umt_getpagesize()} { + getoptions(options, _ac, _av); + + umt_options.iodirect = options.iodirect; + umt_options.usemmap = options.usemmap; + umt_options.noinit = 0; + umt_options.fn = options.fn; + + fd = umt_openandmap(&umt_options, (options.num_churn_pages+2*options.num_load_pages)*pagesize, &base_addr); + + read_load_pages = base_addr; + write_load_pages = (void*)((uint64_t)base_addr + (options.num_load_pages*pagesize)); + churn_pages = (void*)((uint64_t)base_addr + ((options.num_load_pages*2)*pagesize)); + + if ( ! options.noinit ) + init(); + + cout << "Churn Test:\n\t" + << options.page_buffer_size << " Pages in page buffer\n\t" + << options.num_load_pages << " Read Load (focus) pages from " << hex << read_load_pages << " - " << (void*)((char*)read_load_pages+((options.num_load_pages*pagesize)-1)) << dec << "\n\t" + << options.num_load_pages << " Write Load (focus) pages from " << hex << write_load_pages << " - " << (void*)((char*)write_load_pages+((options.num_load_pages*pagesize)-1)) << dec << "\n\t" + << options.num_churn_pages << " Churn pages from " << hex << churn_pages << " - " << (void*)((char*)churn_pages+((options.num_churn_pages*pagesize)-1)) << dec << "\n\t" + << options.num_churn_threads << " Churn threads\n\t" + << options.num_load_reader_threads << " Load Reader threads\n\t" + << options.num_load_writer_threads << " Load Writer threads\n\t" + << options.fn << " Backing file\n\t" + << options.testduration << " seconds for test duration.\n\n"; + } + + ~pageiotest( void ) { + umt_closeandunmap(&umt_options, (options.num_churn_pages+2*options.num_load_pages)*pagesize, base_addr, fd); + } + + void start( void ) { + if (options.initonly) + return; + + for (uint64_t p = 0; p < options.num_load_pages; ++p) { + for (uint64_t t = 0; t < options.num_load_reader_threads; ++t) + load_readers.push_back(new thread{&pageiotest::load_read, this, p, t}); + + for (uint64_t t = 0; t < options.num_load_writer_threads && t < 1; ++t) + load_writers.push_back(new thread{&pageiotest::load_write, this, p}); + } + + for (uint64_t t = 0; t < options.num_churn_threads; ++t) + churn_readers.push_back(new thread{&pageiotest::churn, this, t}); + } + + void run( void ) { + if (options.initonly) + return; + + this_thread::sleep_for(seconds(options.testduration)); + } + + void stop( void ) { + time_to_stop = true; + for (auto i : load_readers) + i->join(); + for (auto i : load_writers) + i->join(); + for (auto i : churn_readers) + i->join(); + } + +private: + bool time_to_stop; + umt_optstruct_t umt_options; + options_t options; + + long pagesize; + void* base_addr; + + void* read_load_pages; + void* write_load_pages; + vector load_readers; + vector load_writers; + + void* churn_pages; + vector churn_readers; + + int fd; + + void init() { + cout << "Initializing\n"; + { + uint64_t* p = (uint64_t*)churn_pages; + for (uint64_t i = 0; i < options.num_churn_pages*(pagesize/sizeof(*p)); ++i) + p[i] = i; + } + + { + for (uint64_t pageno = 0; pageno < options.num_load_pages; ++pageno) { + uint64_t* p = (uint64_t*)((uint64_t)read_load_pages+(pagesize*pageno)); + for (uint64_t i = 0; i < options.num_load_pages*(pagesize/sizeof(*p)); ++i) + p[i] = i; + + p = (uint64_t*)((uint64_t)write_load_pages+(pagesize*pageno)); + for (uint64_t i = 0; i < options.num_load_pages*(pagesize/sizeof(*p)); ++i) + p[i] = i; + } + } + cout << "Initialization Complete\n"; + } + + mutex lock; + + uint64_t churn( int tnum ) { + uint64_t cnt = 0; + uint64_t idx; + uint64_t* p = (uint64_t*)churn_pages; + mt19937 gen(tnum); + uniform_int_distribution rnd_int(0, ((options.num_churn_pages*(pagesize/sizeof(*p)))-1)); + + while ( !time_to_stop ) { + idx = rnd_int(gen); + if (p[idx] != idx) { + lock.lock(); + cerr << hex << "churn() " << p[idx] << " != " << idx << " at address " << &p[idx] << endl; + lock.unlock(); + break; + } + } + return cnt; + } + + void load_read(uint64_t pageno, int tnum) { + uint64_t* p = (uint64_t*)((uint64_t)read_load_pages+(pagesize*pageno)); + tnum = tnum + tnum * pageno; + mt19937 gen(tnum); + uniform_int_distribution rnd_int(0, ((pagesize/sizeof(*p))-1)); + + while ( !time_to_stop ) { + uint64_t idx = rnd_int(gen); + + if (p[idx] != idx) { + lock.lock(); + cerr << "load_read *(uint64_t*)" << &p[idx] << "=" << p[idx] << " != " << idx << endl; + lock.unlock(); + break; + } + } + } + + void load_write(uint64_t pageno) { + uint64_t cnt = 0; + uint64_t* p = (uint64_t*)((uint64_t)write_load_pages+(pagesize*pageno)); + const int num_entries = pagesize/sizeof(*p); + + omp_set_num_threads(options.num_load_writer_threads); + + while ( !time_to_stop ) { + uint64_t cnt_base = cnt; + +#pragma omp parallel for + for (int i = 0; i < num_entries; ++i) { + g_count += p[i]; // Read first + p[i] = cnt_base + i; + } + +#pragma omp parallel for + for (int i = 0; i < num_entries; ++i) { + if (p[i] != (cnt_base + i)) { +#pragma omp critical + { + lock.lock(); + cerr << "load_write *(uint64_t*)" << &p[i] << "=" << p[i] << " != " << (cnt_base+i) << ": (" << cnt_base << "+" << i << "=" << (cnt_base+i) << ") - " << p[i] << " = " << ((cnt_base+i)-p[i]) << endl; + if (i != 0) + cerr << "load_write *(uint64_t*)" << &p[0] << "=" << p[0] << " , " << (cnt_base+0) << ": (" << cnt_base << "+" << 0 << "=" << (cnt_base+0) << ") - " << p[0] << " = " << ((cnt_base+0)-p[0]) << endl; + lock.unlock(); + } + exit(1); + } + } + + cnt += pagesize/sizeof(*p); + } + } +}; + +int main(int argc, char **argv) +{ + pageiotest test{argc, argv}; + test.start(); + test.run(); + test.stop(); + cout << g_count << endl; + + return 0; +} diff --git a/tests/churn/options.cpp b/tests/churn/options.cpp new file mode 100644 index 00000000..13af1032 --- /dev/null +++ b/tests/churn/options.cpp @@ -0,0 +1,142 @@ +/* This file is part of UMAP. For copyright information see the COPYRIGHT file in the top level directory, or at https://github.com/LLNL/umap/blob/master/COPYRIGHT This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License (as published by the Free Software Foundation) version 2.1 dated February 1999. 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 terms and conditions of the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif // _GNU_SOURCE + +#include // cout/cerr +#include // getopt() +#include // duh... +#include "options.h" +#include "umap.h" + +static char const* FILENAME = "/tmp/abc"; +static const uint64_t NUMCHURNPAGES = 99; +static const uint64_t NUMLOADPAGES = 1; +static const uint64_t NUMCHURNTHREADS = 48; +static const uint64_t NUMLOADREADERS = 48; +static const uint64_t NUMLOADWRITERS = 48; +static const uint64_t TESTDURATION = 60; + +using namespace std; + +static void usage(char* pname) +{ + cerr + << "Usage: " << pname << " [Options...]\n\n" + << " --help - This message\n" + << " --initonly - Initialize only\n" + << " --noinit - No Initialization\n" + << " --directio - Use O_DIRECT for file IO\n" + << " --usemmap - Use mmap instead of umap\n" + << " -p # of pages in page buffer - default: " << umap_cfg_get_bufsize() << " Pages\n" + << " -c # of churn pages - default: " << NUMCHURNPAGES << " Pages\n" + << " -l # of load pages - default: " << NUMLOADPAGES << " Pages\n" + << " -t # of churn threads - default: " << NUMCHURNTHREADS << endl + << " -r # of load reader threads - default: " << NUMLOADREADERS << endl + << " -w # of load writer threads - default: " << NUMLOADWRITERS << endl + << " -f [backing file name] - default: " << FILENAME << endl + << " -d # seconds to run test - default: " << TESTDURATION << " seconds\n"; + exit(1); +} + +void getoptions(options_t& testops, int& argc, char **argv) +{ + int c; + char *pname = argv[0]; + + testops.iodirect=0; + testops.usemmap=0; + testops.noinit=0; + testops.initonly=0; + testops.num_churn_pages=NUMCHURNPAGES; + testops.num_churn_threads=NUMCHURNTHREADS; + testops.num_load_pages=NUMLOADPAGES; + testops.num_load_reader_threads=NUMLOADREADERS; + testops.num_load_writer_threads=NUMLOADWRITERS; + testops.fn=FILENAME; + testops.testduration=TESTDURATION; + testops.page_buffer_size = umap_cfg_get_bufsize(); + + while (1) { + int option_index = 0; + static struct option long_options[] = { + {"directio", no_argument, &testops.iodirect, 1 }, + {"usemmap", no_argument, &testops.usemmap, 1 }, + {"initonly", no_argument, &testops.initonly, 1 }, + {"noinit", no_argument, &testops.noinit, 1 }, + {"help", no_argument, NULL, 0 }, + {0, 0, 0, 0 } + }; + + c = getopt_long(argc, argv, "p:c:l:t:r:w:f:d:", long_options, &option_index); + if (c == -1) + break; + + switch(c) { + case 0: + if (long_options[option_index].flag != 0) + break; + + usage(pname); + break; + + case 'p': + if ((testops.page_buffer_size = strtoull(optarg, nullptr, 0)) > 0) + break; + goto R0; + case 'c': + if ((testops.num_churn_pages = strtoull(optarg, nullptr, 0)) > 0) + break; + goto R0; + case 'l': + if ((testops.num_load_pages = strtoull(optarg, nullptr, 0)) > 0) + break; + goto R0; + + case 'd': + if ((testops.testduration = strtoull(optarg, nullptr, 0)) > 0) + break; + goto R0; + case 'f': + testops.fn = optarg; + break; + case 'w': + if ((testops.num_load_writer_threads = strtoull(optarg, nullptr, 0)) >= 0) + break; + goto R0; + case 'r': + if ((testops.num_load_reader_threads = strtoull(optarg, nullptr, 0)) >= 0) + break; + goto R0; + case 't': + if ((testops.num_churn_threads = strtoull(optarg, nullptr, 0)) >= 0) + break; + goto R0; + + default: + R0: + usage(pname); + } + } + + if (optind < argc) { + cerr << "Unknown Arguments: "; + while (optind < argc) + cerr << "\"" << argv[optind++] << "\" "; + cerr << endl; + usage(pname); + } + + umap_cfg_set_bufsize(testops.page_buffer_size); +} + +long umt_getpagesize(void) +{ + long page_size = sysconf(_SC_PAGESIZE); + if (page_size == -1) { + perror("sysconf/page_size"); + exit(1); + } + return page_size; +} + diff --git a/tests/churn/options.h b/tests/churn/options.h new file mode 100644 index 00000000..a88bd31f --- /dev/null +++ b/tests/churn/options.h @@ -0,0 +1,28 @@ +/* This file is part of UMAP. For copyright information see the COPYRIGHT file in the top level directory, or at https://github.com/LLNL/umap/blob/master/COPYRIGHT This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License (as published by the Free Software Foundation) version 2.1 dated February 1999. 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 terms and conditions of the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#ifndef _OPTIONS_H +#define _OPTIONS_H +#include + +typedef struct { + int iodirect; + int usemmap; + int initonly; + int noinit; + + uint64_t page_buffer_size; // # of pages that page buffer can hold + + uint64_t num_churn_pages; + uint64_t num_load_pages; + + uint64_t num_churn_threads; + + uint64_t num_load_reader_threads; + uint64_t num_load_writer_threads; + + char const* fn; // Backing file name + + uint64_t testduration; // Duration (in seconds) to run test +} options_t; + +void getoptions(options_t&, int&, char **argv); +#endif // _OPTIONS_H diff --git a/tests/libumaptest/mmap.cpp b/tests/libumaptest/mmap.cpp index ccdecd4a..45fd1aef 100644 --- a/tests/libumaptest/mmap.cpp +++ b/tests/libumaptest/mmap.cpp @@ -64,9 +64,20 @@ int umt_openandmap(const umt_optstruct_t* testops, uint64_t numbytes, void** reg } } - if(posix_fallocate(fd,0, numbytes) != 0) { - perror("posix_fallocate"); - exit(-1); + try { + int x; + if((x = posix_fallocate(fd,0, numbytes) != 0)) { + perror("??posix_fallocate"); + + cerr << "posix_fallocate(" << fd << ", 0, " << numbytes << ") returned " << x << endl; + exit(-1); + } + } catch(const std::exception& e) { + cerr << "posix_fallocate: " << e.what() << endl; + exit(-1); + } catch(...) { + cerr << "posix_fallocate failed to instantiate _umap object\n"; + exit(-1); } int prot = PROT_READ|PROT_WRITE; diff --git a/tests/libumaptest/options.cpp b/tests/libumaptest/options.cpp index 82834094..3aa60e45 100644 --- a/tests/libumaptest/options.cpp +++ b/tests/libumaptest/options.cpp @@ -1,21 +1,13 @@ -/* -This file is part of UMAP. For copyright information see the COPYRIGHT -file in the top level directory, or at -https://github.com/LLNL/umap/blob/master/COPYRIGHT -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU Lesser General Public License (as published by the Free -Software Foundation) version 2.1 dated February 1999. 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 terms and conditions of the GNU Lesser General Public License -for more details. You should have received a copy of the GNU Lesser General -Public License along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ +/* This file is part of UMAP. For copyright information see the COPYRIGHT file in the top level directory, or at https://github.com/LLNL/umap/blob/master/COPYRIGHT This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License (as published by the Free Software Foundation) version 2.1 dated February 1999. 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 terms and conditions of the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif // _GNU_SOURCE + #include // cout/cerr #include // getopt() #include // duh... #include "umaptest.h" +#include "umap.h" char const* FILENAME = "/tmp/abc"; const uint64_t NUMPAGES = 10000000; @@ -36,7 +28,7 @@ static void usage(char* pname) << " --usemmap - Use mmap instead of umap\n" << " -p # of pages - default: " << NUMPAGES << endl << " -t # of threads - default: " << NUMTHREADS << endl - << " -b page buffer size - default: " << BUFFERSIZE << endl + << " -b page buffer size - default: " << umap_cfg_get_bufsize() << " Pages\n" << " -f [file name] - backing file name. Must exist and be correct size for noinit\n"; exit(1); } @@ -46,10 +38,15 @@ void umt_getoptions(umt_optstruct_t* testops, int argc, char *argv[]) int c; char *pname = argv[0]; - *testops = (umt_optstruct_t) { .initonly = 0, .noinit = 0, .iodirect = 0, - .usemmap = 0, .numpages = NUMPAGES, - .numthreads = NUMTHREADS, - .bufsize = BUFFERSIZE, .fn = FILENAME}; + testops->initonly = 0; + testops->noinit = 0; + testops->iodirect = 0; + testops->usemmap = 0; + testops->numpages = NUMPAGES; + testops->numthreads = NUMTHREADS; + testops->bufsize = umap_cfg_get_bufsize(); + testops->fn = FILENAME; + while (1) { int option_index = 0; static struct option long_options[] = { @@ -101,6 +98,8 @@ void umt_getoptions(umt_optstruct_t* testops, int argc, char *argv[]) cerr << endl; usage(pname); } + + umap_cfg_set_bufsize(testops->bufsize); } long umt_getpagesize(void) diff --git a/tests/umapsort/umapsort.cpp b/tests/umapsort/umapsort.cpp index 9fbf6366..c7e64eb5 100644 --- a/tests/umapsort/umapsort.cpp +++ b/tests/umapsort/umapsort.cpp @@ -1,17 +1,4 @@ -/* -This file is part of UMAP. For copyright information see the COPYRIGHT -file in the top level directory, or at -https://github.com/LLNL/umap/blob/master/COPYRIGHT -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU Lesser General Public License (as published by the Free -Software Foundation) version 2.1 dated February 1999. 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 terms and conditions of the GNU Lesser General Public License -for more details. You should have received a copy of the GNU Lesser General -Public License along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ +/* This file is part of UMAP. For copyright information see the COPYRIGHT file in the top level directory, or at https://github.com/LLNL/umap/blob/master/COPYRIGHT This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License (as published by the Free Software Foundation) version 2.1 dated February 1999. 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 terms and conditions of the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ // uffd sort benchmark #include From 9760a92106e1e808881ae9ef584019b56ad3216a Mon Sep 17 00:00:00 2001 From: Marty McFadden Date: Mon, 24 Jul 2017 12:40:32 -0700 Subject: [PATCH 09/32] Restored CMakeList.txt file for uffd_test program (a .gitignore caused it to be missed during its original checking). Removed .gitignore files since they were not (yet) ignoring anything useful. --- .gitignore | 3 --- src/umap.cpp | 1 - tests/churn/.gitignore | 1 - tests/readload/.gitignore | 1 - tests/uffd_test/CMakeLists.txt | 23 +++++++++++++++++++++++ tests/umapsort/.gitignore | 1 - 6 files changed, 23 insertions(+), 7 deletions(-) delete mode 100644 .gitignore delete mode 100644 tests/churn/.gitignore delete mode 100644 tests/readload/.gitignore create mode 100644 tests/uffd_test/CMakeLists.txt delete mode 100644 tests/umapsort/.gitignore diff --git a/.gitignore b/.gitignore deleted file mode 100644 index f6c9362e..00000000 --- a/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -*.o -uffd_sort -uffd_test diff --git a/src/umap.cpp b/src/umap.cpp index 24acbb51..bde71005 100644 --- a/src/umap.cpp +++ b/src/umap.cpp @@ -7,7 +7,6 @@ #include #include #include -#include #include #include #include diff --git a/tests/churn/.gitignore b/tests/churn/.gitignore deleted file mode 100644 index d3d01b9c..00000000 --- a/tests/churn/.gitignore +++ /dev/null @@ -1 +0,0 @@ -umapsort diff --git a/tests/readload/.gitignore b/tests/readload/.gitignore deleted file mode 100644 index d3d01b9c..00000000 --- a/tests/readload/.gitignore +++ /dev/null @@ -1 +0,0 @@ -umapsort diff --git a/tests/uffd_test/CMakeLists.txt b/tests/uffd_test/CMakeLists.txt new file mode 100644 index 00000000..a3d7e928 --- /dev/null +++ b/tests/uffd_test/CMakeLists.txt @@ -0,0 +1,23 @@ +project(uffd_test) + +FIND_PACKAGE( OpenMP REQUIRED ) +if(OPENMP_FOUND) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") + add_executable(uffd_test uffd_test2.cpp) + + target_link_libraries(uffd_test libumap_static) + target_link_libraries(uffd_test libumaptest_static) + + include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_BINARY_DIR}/include ) + + install(TARGETS uffd_test + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib/static + RUNTIME DESTINATION bin ) +else() + message("Skpping uffd_test, OpenMP required") +endif() + + diff --git a/tests/umapsort/.gitignore b/tests/umapsort/.gitignore deleted file mode 100644 index d3d01b9c..00000000 --- a/tests/umapsort/.gitignore +++ /dev/null @@ -1 +0,0 @@ -umapsort From 2e06ee479268c330007d62487d94f72746113124 Mon Sep 17 00:00:00 2001 From: Marty McFadden Date: Tue, 25 Jul 2017 14:42:56 -0700 Subject: [PATCH 10/32] Bugfix/wp - Added workaround for WriteProtect (#9) * Checkpoint - Will collapse later. * Added instrumentation to uffd handler to determine whether writes could occurr when handling a read page fault even if WP is set. * Added simple test to show read/write WP problem. * Implemented workaround to correctly mark a page as dirty if it is changed before we have a chance to enable Write Protect. --- CMakeLists.txt | 2 +- src/umap.cpp | 41 +++++++++++------ src/umaplog.h | 14 ++++-- tests/CMakeLists.txt | 1 + tests/churn/CMakeLists.txt | 2 +- tests/churn/churn.cpp | 20 +++++++- tests/rwseq/CMakeLists.txt | 22 +++++++++ tests/rwseq/options.cpp | 81 ++++++++++++++++++++++++++++++++ tests/rwseq/options.h | 12 +++++ tests/rwseq/rwseq.cpp | 94 ++++++++++++++++++++++++++++++++++++++ 10 files changed, 268 insertions(+), 21 deletions(-) create mode 100644 tests/rwseq/CMakeLists.txt create mode 100644 tests/rwseq/options.cpp create mode 100644 tests/rwseq/options.h create mode 100644 tests/rwseq/rwseq.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 52bc9160..dbd5f949 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.5.2) +cmake_minimum_required (VERSION 3.5.1) project(umap VERSION 0.0.1) if (NOT CMAKE_BUILD_TYPE) diff --git a/src/umap.cpp b/src/umap.cpp index bde71005..d54e2b47 100644 --- a/src/umap.cpp +++ b/src/umap.cpp @@ -20,6 +20,7 @@ #include #include // sched_getcpu() #include +#include #include "umap.h" // API to library #include "umaplog.h" // umap_log() @@ -285,11 +286,11 @@ void _umap::pagefault_event(const struct uffd_msg& msg) if (msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) { #ifdef DEBUG if ((msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) == (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) - umaplog("PF(WP+WRITE) (In Memory Already) @(%p)=%lu %s\n", page_begin, *(uint64_t*)page_begin, pages_in_memory[bufidx].page_is_dirty() ? "Already Dirty" : "Clean"); + umapdbg("PF(WP+WRITE) (In Memory Already) @(%p)=%lu %s\n", page_begin, *(uint64_t*)page_begin, pages_in_memory[bufidx].page_is_dirty() ? "Already Dirty" : "Clean"); else if (msg.arg.pagefault.flags & UFFD_PAGEFAULT_FLAG_WP) - umaplog("PF(WP) (In Memory Already) @(%p)=%lu %s\n", page_begin, *(uint64_t*)page_begin, pages_in_memory[bufidx].page_is_dirty() ? "Already Dirty" : "Clean"); + umapdbg("PF(WP) (In Memory Already) @(%p)=%lu %s\n", page_begin, *(uint64_t*)page_begin, pages_in_memory[bufidx].page_is_dirty() ? "Already Dirty" : "Clean"); else if (msg.arg.pagefault.flags & UFFD_PAGEFAULT_FLAG_WRITE) - umaplog("PF(WRITE) (In Memory Already) @(%p)=%lu %s\n", page_begin, *(uint64_t*)page_begin, pages_in_memory[bufidx].page_is_dirty() ? "Already Dirty" : "Clean"); + umapdbg("PF(WRITE) (In Memory Already) @(%p)=%lu %s\n", page_begin, *(uint64_t*)page_begin, pages_in_memory[bufidx].page_is_dirty() ? "Already Dirty" : "Clean"); #endif // DEBUG // @@ -304,7 +305,7 @@ void _umap::pagefault_event(const struct uffd_msg& msg) } #ifdef DEBUG else { - umaplog("PF(READ) (In Memory Already) @(%p)=%lu\n", page_begin, *(uint64_t*)page_begin); + umapdbg("PF(READ) (In Memory Already) @(%p)=%lu\n", page_begin, *(uint64_t*)page_begin); } #endif // DEBUG @@ -350,11 +351,11 @@ void _umap::pagefault_event(const struct uffd_msg& msg) #ifdef DEBUG if ((msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) == (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) - umaplog("PF(WP+WRITE) (UFFDIO_COPY) @(%p)=%lu\n", page_begin, *(uint64_t*)page_begin); + umapdbg("PF(WP+WRITE) (UFFDIO_COPY) @(%p)=%lu\n", page_begin, *(uint64_t*)page_begin); else if (msg.arg.pagefault.flags & UFFD_PAGEFAULT_FLAG_WP) - umaplog("PF(WP) (UFFDIO_COPY) @(%p)=%lu\n", page_begin, *(uint64_t*)page_begin); + umapdbg("PF(WP) (UFFDIO_COPY) @(%p)=%lu\n", page_begin, *(uint64_t*)page_begin); else if (msg.arg.pagefault.flags & UFFD_PAGEFAULT_FLAG_WRITE) - umaplog("PF(WRITE) (UFFDIO_COPY) @(%p)=%lu\n", page_begin, *(uint64_t*)page_begin); + umapdbg("PF(WRITE) (UFFDIO_COPY) @(%p)=%lu\n", page_begin, *(uint64_t*)page_begin); #endif // DEBUG disable_wp_on_pages((uint64_t)page_begin, 1); @@ -377,10 +378,20 @@ void _umap::pagefault_event(const struct uffd_msg& msg) exit(1); } - umaplog("PF(READ) (UFFDIO_COPY) @(%p)=%lu\n", page_begin, *(uint64_t*)page_begin); + umapdbg("PF(READ) (UFFDIO_COPY) @(%p)=%lu\n", page_begin, *(uint64_t*)page_begin); enable_wp_on_pages_and_wake((uint64_t)page_begin, 1); + // + // There is a very small window between UFFDIO_COPY_MODE and enable_wp_on_pages_and_wake where + // a write may occur before we re-enable WP (the UFFDIO_COPY appears to clear any previously + // set WP settings. + // + if (memcmp(tmppagebuf, page_begin, page_size)) { + pages_in_memory[next_page_alloc_index].mark_page_dirty(); + umapdbg("PF(READ) %p changed after UFFDIO_COPY\n", page_begin); + } + struct uffdio_range wake; wake.start = (uint64_t)page_begin; wake.len = page_size; @@ -408,7 +419,7 @@ void _umap::evict_page(umap_page& pb) // enable_wp_on_pages_and_wake((uint64_t)page, 1); - umaplog("EVICT(DIRTY) @(%p)=%lu\n", page, *page); + umapdbg("EVICT(DIRTY) @(%p)=%lu\n", page, *page); if (pwrite(backingfile_fd, (void*)page, page_size, (off_t)((uint64_t)page - (uint64_t)segment_address)) == -1) { perror("pwrite failed"); @@ -417,7 +428,7 @@ void _umap::evict_page(umap_page& pb) } #ifdef DEBUG else { - umaplog("EVICT(CLEAN) @(%p)=%lu\n", page, *page); + umapdbg("EVICT(CLEAN) @(%p)=%lu\n", page, *page); } #endif // DEBUG @@ -443,7 +454,7 @@ void _umap::enable_wp_on_pages_and_wake(uint64_t start, int64_t num_pages) wp.range.len = num_pages * page_size; wp.mode = UFFDIO_WRITEPROTECT_MODE_WP; - umaplog("+WRITEPROTECT (%p -- %p)\n", (void*)start, (void*)(start+(num_pages*page_size))); + umapdbg("+WRITEPROTECT (%p -- %p)\n", (void*)start, (void*)(start+(num_pages*page_size))); if (ioctl(userfault_fd, UFFDIO_WRITEPROTECT, &wp) == -1) { perror("ioctl(UFFDIO_WRITEPROTECT Enable)"); @@ -461,7 +472,7 @@ void _umap::disable_wp_on_pages(uint64_t start, int64_t num_pages) wp.range.len = page_size * num_pages; wp.mode = UFFDIO_WRITEPROTECT_MODE_DONTWAKE; - umaplog("-WRITEPROTECT (%p -- %p)\n", (void*)start, (void*)(start+(num_pages*page_size))); + umapdbg("-WRITEPROTECT (%p -- %p)\n", (void*)start, (void*)(start+(num_pages*page_size))); if (ioctl(userfault_fd, UFFDIO_WRITEPROTECT, &wp) == -1) { perror("ioctl(UFFDIO_WRITEPROTECT Disable)"); @@ -507,14 +518,14 @@ void sighandler(int signum, siginfo_t *info, void* buf) num_bus_errs++; #ifdef DEBUG if (it.second->get_page_index(page_begin) >= 0) - umaplog("SIGBUS %p (page=%p) ALREADY IN UMAP PAGE BUFFER!\n", info->si_addr, page_begin); + umapdbg("SIGBUS %p (page=%p) ALREADY IN UMAP PAGE BUFFER!\n", info->si_addr, page_begin); else - umaplog("SIGBUS %p (page=%p) Not currently in umap page buffer\n", info->si_addr, page_begin); + umapdbg("SIGBUS %p (page=%p) Not currently in umap page buffer\n", info->si_addr, page_begin); #endif // DEBUG return; } } - umaplog("SIGBUS %p (page=%p) ADDRESS OUTSIDE OF UMAP RANGE\n", info->si_addr, page_begin); + umapdbg("SIGBUS %p (page=%p) ADDRESS OUTSIDE OF UMAP RANGE\n", info->si_addr, page_begin); } void __attribute ((constructor)) init_umap_lib( void ) diff --git a/src/umaplog.h b/src/umaplog.h index 743433b9..e610ea5b 100644 --- a/src/umaplog.h +++ b/src/umaplog.h @@ -14,17 +14,25 @@ extern void umaplog_lock(void); extern void umaplog_unlock(void); extern bool umap_logging; -#define umaplog(format, ...)\ +#define umapdbg(format, ...)\ do {\ if (umap_logging) {\ umaplog_lock();\ - fprintf(stderr, "[%s:%u] - " format, __FUNCTION__, __LINE__, ## __VA_ARGS__);\ + fprintf(stdout, format, ## __VA_ARGS__);\ umaplog_unlock();\ }\ } while (0) + +#define umaperr(format, ...)\ + do {\ + umaplog_lock();\ + fprintf(stderr, format, ## __VA_ARGS__);\ + umaplog_unlock();\ + } while (0) #define umaplog_init __umaplog_init #else -#define umaplog(format, ...) +#define umaperr(format, ...) +#define umapdbg(format, ...) #define umaplog_init() #endif #endif diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 08773b1d..8374ab14 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -5,3 +5,4 @@ add_subdirectory(median) add_subdirectory(readload) add_subdirectory(uffd_test) add_subdirectory(churn) +add_subdirectory(rwseq) diff --git a/tests/churn/CMakeLists.txt b/tests/churn/CMakeLists.txt index ddd6e9c6..1ab1abad 100644 --- a/tests/churn/CMakeLists.txt +++ b/tests/churn/CMakeLists.txt @@ -17,6 +17,6 @@ if(OPENMP_FOUND) ARCHIVE DESTINATION lib/static RUNTIME DESTINATION bin ) else() - message("Skpping umapsort, OpenMP required") + message("Skpping churn, OpenMP required") endif() diff --git a/tests/churn/churn.cpp b/tests/churn/churn.cpp index 9de63034..b9cce67f 100644 --- a/tests/churn/churn.cpp +++ b/tests/churn/churn.cpp @@ -92,6 +92,9 @@ class pageiotest { return; for (uint64_t p = 0; p < options.num_load_pages; ++p) { + for (uint64_t t = 0; t < options.num_load_reader_threads; ++t) + load_readers.push_back(new thread{&pageiotest::load_read2, this, p, t}); + for (uint64_t t = 0; t < options.num_load_reader_threads; ++t) load_readers.push_back(new thread{&pageiotest::load_read, this, p, t}); @@ -112,6 +115,8 @@ class pageiotest { void stop( void ) { time_to_stop = true; + for (auto i : load_readers2) + i->join(); for (auto i : load_readers) i->join(); for (auto i : load_writers) @@ -131,6 +136,7 @@ class pageiotest { void* read_load_pages; void* write_load_pages; vector load_readers; + vector load_readers2; vector load_writers; void* churn_pages; @@ -199,6 +205,19 @@ class pageiotest { } } + // Have a reader going nuts on the write page for fun. No data validation since the writer is changing it from underneath us. + void load_read2(uint64_t pageno, int tnum) { + uint64_t* p = (uint64_t*)((uint64_t)write_load_pages+(pagesize*pageno)); + tnum = tnum + tnum * pageno; + mt19937 gen(tnum); + uniform_int_distribution rnd_int(0, ((pagesize/sizeof(*p))-1)); + + while ( !time_to_stop ) { + uint64_t idx = rnd_int(gen); + g_count += p[idx]; + } + } + void load_write(uint64_t pageno) { uint64_t cnt = 0; uint64_t* p = (uint64_t*)((uint64_t)write_load_pages+(pagesize*pageno)); @@ -211,7 +230,6 @@ class pageiotest { #pragma omp parallel for for (int i = 0; i < num_entries; ++i) { - g_count += p[i]; // Read first p[i] = cnt_base + i; } diff --git a/tests/rwseq/CMakeLists.txt b/tests/rwseq/CMakeLists.txt new file mode 100644 index 00000000..abf6d0b8 --- /dev/null +++ b/tests/rwseq/CMakeLists.txt @@ -0,0 +1,22 @@ +project(rwseq) + +FIND_PACKAGE( OpenMP REQUIRED ) +if(OPENMP_FOUND) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") + add_executable(rwseq rwseq.cpp options.cpp) + + target_link_libraries(rwseq libumap_static) + target_link_libraries(rwseq libumaptest_static) + + include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_BINARY_DIR}/include ) + + install(TARGETS rwseq + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib/static + RUNTIME DESTINATION bin ) +else() + message("Skpping rwseq, OpenMP required") +endif() + diff --git a/tests/rwseq/options.cpp b/tests/rwseq/options.cpp new file mode 100644 index 00000000..256143c2 --- /dev/null +++ b/tests/rwseq/options.cpp @@ -0,0 +1,81 @@ +/* This file is part of UMAP. For copyright information see the COPYRIGHT file in the top level directory, or at https://github.com/LLNL/umap/blob/master/COPYRIGHT This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License (as published by the Free Software Foundation) version 2.1 dated February 1999. 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 terms and conditions of the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif // _GNU_SOURCE + +#include // cout/cerr +#include // getopt() +#include // duh... +#include "options.h" +#include "umap.h" + +static char const* FILENAME = "/tmp/abc"; + +using namespace std; + +static void usage(char* pname) +{ + cerr + << "Usage: " << pname << " [Options...]\n\n" + << " --noread - Only perform write, not read\n" + << " --help - This message\n" + << " -f [backing file name] - default: " << FILENAME << endl; + exit(1); +} + +void getoptions(options_t& testops, int& argc, char **argv) +{ + int c; + char *pname = argv[0]; + + testops.fn=FILENAME; + testops.noread = 0; + + while (1) { + int option_index = 0; + static struct option long_options[] = { + {"noread", no_argument, &testops.noread, 1 }, + {"help", no_argument, NULL, 0 }, + {0, 0, 0, 0 } + }; + + c = getopt_long(argc, argv, "f:", long_options, &option_index); + if (c == -1) + break; + + switch(c) { + case 0: + if (long_options[option_index].flag != 0) + break; + + usage(pname); + break; + + case 'f': + testops.fn = optarg; + break; + + default: + usage(pname); + } + } + + if (optind < argc) { + cerr << "Unknown Arguments: "; + while (optind < argc) + cerr << "\"" << argv[optind++] << "\" "; + cerr << endl; + usage(pname); + } +} + +long umt_getpagesize(void) +{ + long page_size = sysconf(_SC_PAGESIZE); + if (page_size == -1) { + perror("sysconf/page_size"); + exit(1); + } + return page_size; +} + diff --git a/tests/rwseq/options.h b/tests/rwseq/options.h new file mode 100644 index 00000000..ae3e7631 --- /dev/null +++ b/tests/rwseq/options.h @@ -0,0 +1,12 @@ +/* This file is part of UMAP. For copyright information see the COPYRIGHT file in the top level directory, or at https://github.com/LLNL/umap/blob/master/COPYRIGHT This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License (as published by the Free Software Foundation) version 2.1 dated February 1999. 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 terms and conditions of the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#ifndef _OPTIONS_H +#define _OPTIONS_H +#include + +typedef struct { + char const* fn; // Backing file name + int noread; +} options_t; + +void getoptions(options_t&, int&, char **argv); +#endif // _OPTIONS_H diff --git a/tests/rwseq/rwseq.cpp b/tests/rwseq/rwseq.cpp new file mode 100644 index 00000000..b3f17391 --- /dev/null +++ b/tests/rwseq/rwseq.cpp @@ -0,0 +1,94 @@ +/* This file is part of UMAP. For copyright information see the COPYRIGHT file in the top level directory, or at https://github.com/LLNL/umap/blob/master/COPYRIGHT This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License (as published by the Free Software Foundation) version 2.1 dated February 1999. 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 terms and conditions of the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include +//#include +//#include +//#include +#include +//#include +//#include +//#include +//#include // sched_getcpu() +#include +#include + +#include "umap.h" +#include "options.h" +#include "umaptest.h" + +uint64_t g_count = 0; +using namespace std; + +class pageiotest { +public: + pageiotest(int _ac, char** _av): pagesize{umt_getpagesize()} { + getoptions(options, _ac, _av); + + umt_options.iodirect = 1; + umt_options.usemmap = 0; + umt_options.noinit = 0; + umt_options.fn = options.fn; + + fd = umt_openandmap(&umt_options, pagesize, &base_addr); + } + + ~pageiotest( void ) { + umt_closeandunmap(&umt_options, pagesize, base_addr, fd); + } + + void start( void ) { + reader = new thread{&pageiotest::read, this}; + writer = new thread{&pageiotest::write, this}; + } + + void stop( void ) { + reader->join(); + writer->join(); + } + +private: + thread *reader; + thread *writer; + thread *monitor; + + umt_optstruct_t umt_options; + options_t options; + long pagesize; + void* base_addr; + int fd; + + void read( void ) { + if (options.noread) { + cout << "Skipping read, only writes will occur\n"; + return; + } + + uint64_t* p = (uint64_t*)base_addr; + + cout << "Reading from: " << p << endl; + g_count = *p; // Won't return from this until AFTER umap handler, umap hanlder will sleep for 5 seconds + cout << "Read of " << p << " returned " << g_count << endl; + } + + void write( void ) { + uint64_t* p = (uint64_t*)base_addr; + + sleep(1); + cout << "Writing 12345678 to: " << p << endl; + *p = 12345678; + sleep(2); + cout << "Writing 87654321 to: " << p << endl; + *p = 87654321; + sleep(10); + cout << "Writing 1010101010 to: " << p << endl; + *p = 1010101010; + } +}; + +int main(int argc, char **argv) +{ + pageiotest test{argc, argv}; + test.start(); + test.stop(); + + return 0; +} From 59a7d2934c2d55c1731d22db3c2ee4b459e31958 Mon Sep 17 00:00:00 2001 From: Marty McFadden Date: Mon, 7 Aug 2017 11:24:06 -0700 Subject: [PATCH 11/32] Added a script to waste memory. --- tests/tools/waste_memory | 74 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100755 tests/tools/waste_memory diff --git a/tests/tools/waste_memory b/tests/tools/waste_memory new file mode 100755 index 00000000..9330d9fc --- /dev/null +++ b/tests/tools/waste_memory @@ -0,0 +1,74 @@ +#!/bin/bash +function usage { + echo "Usage:" + echo "$0 Size - Size is the number of GB to waste." + exit 1 +} + +function setuptmpfs { + if [ ! -d /mnt/tmpfs ]; then + sudo mkdir -p /mnt/tmpfs + fi + + # Unmount / Reset of already mounted + fs=`stat -f -c '%T' /mnt/tmpfs` + + if [ "$fs" = "tmpfs" ]; then + echo "Resetting tmpfs" + sudo umount /mnt/tmpfs + fi + + fs=`stat -f -c '%T' /mnt/tmpfs` + if [ "$fs" != "tmpfs" ]; then + if [ ! -d /mnt/tmpfs ]; then + sudo mkdir -p /mnt/tmpfs + fi + sudo chmod go+rwx /mnt/tmpfs + sudo mount -t tmpfs -o size=600g tmpfs /mnt/tmpfs + fs=`stat -f -c '%T' /mnt/tmpfs` + echo "/mnt/tmpfs mounted as: $fs" + else + echo "Unable to reset /mnt/tmpfs, exiting" + exit 1 + fi +} + +function drop_page_cache { + echo "Dropping page cache" + sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches' +} + +function disable_swap { + echo "Disabling swap" + sudo swapoff -a +} + +function turn_off_readahead { + fs=`mount | grep intel | cut -d " " -f 1` + sudo blockdev --setra 0 $fs + ra=`sudo blockdev --getra $fs` + echo "Read ahead set to $ra for $fs" +} + +function waste_memory { + echo "Wasting $waste GB of memory" + + #echo numactl -i 1 dd if=/dev/zero of=/mnt/tmpfs/${waste}GB bs=4096 count=$((${waste}*256*1024)) + #numactl -i 1 dd if=/dev/zero of=/mnt/tmpfs/${waste}GB bs=4096 count=$((${waste}*256*1024)) + echo dd if=/dev/zero of=/mnt/tmpfs/${waste}GB bs=4096 count=$((${waste}*256*1024)) + dd if=/dev/zero of=/mnt/tmpfs/${waste}GB bs=4096 count=$((${waste}*256*1024)) +} + +if [ $# -ne 1 ]; then + echo "Bad argument count: $#" + usage +fi + +waste=$1 + +setuptmpfs +drop_page_cache +disable_swap +turn_off_readahead +drop_page_cache +waste_memory From 01d94638d8fa21f74060b6da5bf768fdaaf01795 Mon Sep 17 00:00:00 2001 From: xiszishu Date: Tue, 8 Aug 2017 10:35:40 -0700 Subject: [PATCH 12/32] merge multi-file/FITS files support to develop branch (#10) Merge fits files support to the develop branch. Code deduplication comes next. In order to support multi-file(fits file) in umap, created alternative of some C functions: 1.In umap.cpp: umap ++umap_fits uffd_handler ++uffd_fits_handler overloaded c++ constructor:_umap 2.In libumaptest: umt_openandmap ++umt_openandmap_fits umt_closeandunmap ++umt_closeandunmap_fits Add "-n" in options to support inputting number of files --- include/umap.h | 9 + src/umap.cpp | 251 +++++++++++++++++++++++++ tests/FITS/CMakeLists.txt | 20 +- tests/FITS/multi_private.cpp | 325 +++++++++++++++++++++++++++++++++ tests/FITS/multiple.cpp | 307 +++++++++++++++++++++++++++++++ tests/FITS/simple_loader.cpp | 332 ++++++++++++++++++++++++++++++++++ tests/libumaptest/mmap.cpp | 192 ++++++++++++++++++++ tests/libumaptest/options.cpp | 9 +- tests/libumaptest/umaptest.h | 5 + tests/median/CMakeLists.txt | 2 +- tests/median/median.cpp | 6 +- tests/median/median_cube.cpp | 4 +- 12 files changed, 1450 insertions(+), 12 deletions(-) create mode 100644 tests/FITS/multi_private.cpp create mode 100644 tests/FITS/multiple.cpp create mode 100644 tests/FITS/simple_loader.cpp diff --git a/include/umap.h b/include/umap.h index b59f88b4..533c960b 100644 --- a/include/umap.h +++ b/include/umap.h @@ -27,6 +27,15 @@ void* umap( void* addr, /* See mmap(2) */ int fd, /* See mmap(2) */ off_t offset /* See mmap(2) */ ); +void* umap_fits( void* addr, /* See mmap(2) */ + size_t length, /* See mmap(2) */ + int prot, /* See mmap(2) */ + int flags, /* See below, see mmap(2) for general notes */ + int fd_num, /* See mmap(2) */ + int* fd_list, + off_t offset, /* See mmap(2) */ + off_t frame + ); int uunmap( void* addr, /* See mmap(2) */ size_t length /* See mmap(2) */ ); diff --git a/src/umap.cpp b/src/umap.cpp index d54e2b47..3589d3aa 100644 --- a/src/umap.cpp +++ b/src/umap.cpp @@ -37,6 +37,8 @@ class umap_page; class _umap { public: _umap(void* _mmap_addr, size_t _mmap_length, int _mmap_fd); + _umap(void* _mmap_addr, size_t _mmap_length, int _mmap_fd, int* fd_list, off_t data_offset ,off_t frame); + void uffd_finalize(void); bool is_in_umap(const void* page_begin) { @@ -65,11 +67,18 @@ class _umap { vector pages_in_memory; char* tmppagebuf; +//--------for multi-file fits support--------- + int number_file; + int* fd_list; + off_t fits_offset; + off_t frame_size; + map page_index; void evict_page(umap_page& page); void remove_page_index(void* _p) { page_index.erase(_p); } void uffd_handler(void); + void uffd_fits_handler(void); void pagefault_event(const struct uffd_msg& msg); inline void stop_faultlistener( void ) noexcept { time_to_stop = true; @@ -134,6 +143,37 @@ void* umap(void* addr, size_t length, int prot, int flags, int fd, off_t offset) active_umaps[region] = p_umap; return region; } +//--------------------------for multi-file support---------------------- +void* umap_fits(void* addr, size_t length, int prot, int flags, int fd_num,int* fd_list,off_t offset, off_t frame) +{ + if (!(flags & UMAP_PRIVATE) || flags & ~(UMAP_PRIVATE|UMAP_FIXED)) { + cerr << "umap: Invalid flags: " << hex << flags << endl; + return UMAP_FAILED; + } + + flags |= (MAP_ANONYMOUS | MAP_NORESERVE); + + void* region = mmap(addr, length, prot, flags, -1, 0); + if (region == MAP_FAILED) { + perror("mmap failed: "); + return UMAP_FAILED; + } + + _umap *p_umap; + try { + p_umap = new _umap{region, length, fd_num,fd_list,offset,frame}; + active_umaps[region] = p_umap; + } catch(const std::exception& e) { + cerr << __FUNCTION__ << " Failed to launch _umap: " << e.what() << endl; + return UMAP_FAILED; + } catch(...) { + cerr << "umap failed to instantiate _umap object\n"; + return UMAP_FAILED; + } + + active_umaps[region] = p_umap; + return region; +} int uunmap(void* addr, size_t length) { @@ -211,6 +251,66 @@ _umap::_umap( void* _mmap_addr, size_t _mmap_length, int _mmap_fd) listener = new thread{&_umap::uffd_handler, this}; // Start our userfaultfd listener } +//--------------------------for multi-file support---------------------- +_umap::_umap(void* _mmap_addr, size_t _mmap_length, int _mmap_fd,int* file_list, off_t data_offset, off_t frame) + : segment_address{_mmap_addr}, segment_length{_mmap_length}, + backingfile_fd{-1},number_file{_mmap_fd},fits_offset{data_offset},fd_list{file_list},frame_size{frame}, + time_to_stop{false}, fault_count{0}, next_page_alloc_index{0} +{ + page_buffer_size = umap_page_bufsize; + // if ((page_size = sysconf(_SC_PAGESIZE)) == -1) { + // perror("sysconf(_SC_PAGESIZE)"); + // throw -1; + // } + + if ((userfault_fd = syscall(__NR_userfaultfd, O_CLOEXEC | O_NONBLOCK)) < 0) { + perror("userfaultfd syscall not available in this kernel"); + throw -1; + } + + struct uffdio_api uffdio_api = { .api = UFFD_API, .features = 0}; + + if (ioctl(userfault_fd, UFFDIO_API, &uffdio_api) == -1) { + perror("ioctl(UFFDIO_API)"); + throw -1; + } + + if (uffdio_api.api != UFFD_API) { + cerr << __FUNCTION__ << ": unsupported userfaultfd api\n"; + throw -1; + } + + struct uffdio_register uffdio_register = { + .range = {.start = (uint64_t)segment_address, .len = segment_length}, + .mode = UFFDIO_REGISTER_MODE_MISSING | UFFDIO_REGISTER_MODE_WP + }; + + if (ioctl(userfault_fd, UFFDIO_REGISTER, &uffdio_register) == -1) { + perror("ioctl/uffdio_register"); + close(userfault_fd); + throw -1; + } + + enable_wp_on_pages_and_wake((uint64_t)segment_address, segment_length / page_size); + + if ((uffdio_register.ioctls & UFFD_API_RANGE_IOCTLS) != UFFD_API_RANGE_IOCTLS) { + cerr << "unexpected userfaultfd ioctl set\n"; + close(userfault_fd); + throw -1; + } + + posix_memalign((void**)&tmppagebuf, (size_t)512, page_size); + if (tmppagebuf == nullptr) { + cerr << "Unable to allocate 512 bytes for temporary buffer\n"; + close(userfault_fd); + throw -1; + } + + umap_page ump; + pages_in_memory.resize(page_buffer_size, ump); + + listener = new thread{&_umap::uffd_fits_handler, this}; // Start our userfaultfd listener +} void _umap::uffd_handler(void) { @@ -403,6 +503,157 @@ void _umap::pagefault_event(const struct uffd_msg& msg) } next_page_alloc_index = (next_page_alloc_index +1) % page_buffer_size; } +//-----------------------for multi-file support-------------------- +void _umap::uffd_fits_handler(void) +{ + //struct stat fileinfo; + //fstat(fd_list[0],&fileinfo); + //cout << __FUNCTION__ << " on CPU " << sched_getcpu() << " Started\n"; + for (;;) { + struct uffd_msg msg; + + struct pollfd pollfd[1]; + pollfd[0].fd = userfault_fd; + pollfd[0].events = POLLIN; + + // wait for a userfaultfd event to occur + int pollres = poll(pollfd, 1, 2000); + + if (time_to_stop) + return; + + switch (pollres) { + case -1: + perror("poll/userfaultfd"); + continue; + case 0: + continue; + case 1: + break; + default: + cerr << __FUNCTION__ << " unexpected uffdio poll result\n"; + exit(1); + } + + if (pollfd[0].revents & POLLERR) { + cerr << __FUNCTION__ << " POLLERR\n"; + exit(1); + } + + if (!pollfd[0].revents & POLLIN) + continue; + + int readres = read(userfault_fd, &msg, sizeof(msg)); + if (readres == -1) { + if (errno == EAGAIN) + continue; + perror("read/userfaultfd"); + exit(1); + } + + if (readres != sizeof(msg)) { + cerr << __FUNCTION__ << "invalid msg size\n"; + exit(1); + } + + if (msg.event != UFFD_EVENT_PAGEFAULT) { + cerr << __FUNCTION__ << " Unexpected event " << hex << msg.event << endl; + continue; + } + + // + // At this point, we know we have had a page fault. Let's handle it. + // +#define PAGE_BEGIN(a) (void*)((uint64_t)a & ~(page_size-1)); + + fault_count++; + void* fault_addr = (void*)msg.arg.pagefault.address; + void* page_begin = PAGE_BEGIN(fault_addr); + + // + // Check to see if the faulting page is already in memory. This can + // happen if more than one thread causes a fault for the same page. + // + int bufidx = get_page_index(page_begin); + + if (bufidx >= 0) { + if (msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) { + pages_in_memory[bufidx].mark_page_dirty(); + disable_wp_on_pages((uint64_t)page_begin, 1); + } + + struct uffdio_range wake; + wake.start = (uint64_t)page_begin; + wake.len = page_size; + + if (ioctl(userfault_fd, UFFDIO_WAKE, &wake) == -1) { + perror("ioctl(UFFDIO_WAKE)"); + exit(1); + } + continue; + } + + // + // Page not in memory, read it in and evict someone + // + int file_id=0; + off_t offset=(uint64_t)page_begin - (uint64_t)segment_address; + //find the file id and offset number + while (offset>=frame_size) + { + file_id++; + offset-=frame_size; + } + + ssize_t pread_ret = pread(fd_list[file_id], tmppagebuf, page_size, + offset+fits_offset); + + if (pread_ret == -1) { + perror("pread failed"); + exit(1); + } + + if (pages_in_memory[next_page_alloc_index].get_page()) { + delete_page_index(pages_in_memory[next_page_alloc_index].get_page()); + evict_page(pages_in_memory[next_page_alloc_index]); + } + + pages_in_memory[next_page_alloc_index].set_page(page_begin); + add_page_index(next_page_alloc_index, page_begin); + + if (msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) { + disable_wp_on_pages((uint64_t)page_begin, 1); + pages_in_memory[next_page_alloc_index].mark_page_dirty(); + } + else { + pages_in_memory[next_page_alloc_index].mark_page_clean(); + } + + next_page_alloc_index = (next_page_alloc_index +1) % page_buffer_size; + + struct uffdio_copy copy; + copy.src = (uint64_t)tmppagebuf; + copy.dst = (uint64_t)page_begin; + copy.len = page_size; + + if (msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) { + copy.mode = 0; + if (ioctl(userfault_fd, UFFDIO_COPY, ©) == -1) { + perror("ioctl(UFFDIO_COPY wake)"); + exit(1); + } + } + else { + copy.mode = UFFDIO_COPY_MODE_DONTWAKE; + if (ioctl(userfault_fd, UFFDIO_COPY, ©) == -1) { + perror("ioctl(UFFDIO_COPY nowake)"); + exit(1); + } + enable_wp_on_pages_and_wake((uint64_t)page_begin, 1); + } + } + next_page_alloc_index = (next_page_alloc_index +1) % page_buffer_size; +} void _umap::evict_page(umap_page& pb) { diff --git a/tests/FITS/CMakeLists.txt b/tests/FITS/CMakeLists.txt index 7c29dd63..dff4dac5 100644 --- a/tests/FITS/CMakeLists.txt +++ b/tests/FITS/CMakeLists.txt @@ -11,18 +11,28 @@ if(OPENMP_FOUND) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") - add_executable(FITS pixel_loader.cpp) + add_executable(multiple multiple.cpp) + add_executable(simple simple_loader.cpp) + add_executable(private multi_private.cpp) + + target_link_libraries(multiple libumap_static) + target_link_libraries(multiple libumaptest_static) + target_link_libraries(multiple qfits) - target_link_libraries(FITS libumap_static) - target_link_libraries(FITS libumaptest_static) - target_link_libraries(FITS qfits) + target_link_libraries(simple libumaptest_static) + target_link_libraries(simple qfits) + + target_link_libraries(private libumap_static) + target_link_libraries(private libumaptest_static) + target_link_libraries(private qfits) include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_BINARY_DIR}/include ) - install(TARGETS FITS + install(TARGETS multiple simple private LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/static RUNTIME DESTINATION bin ) + else() message("Skpping median, OpenMP required") endif() diff --git a/tests/FITS/multi_private.cpp b/tests/FITS/multi_private.cpp new file mode 100644 index 00000000..69e02fcc --- /dev/null +++ b/tests/FITS/multi_private.cpp @@ -0,0 +1,325 @@ +/* $Id: flipx.c,v 1.10 2006/02/17 10:26:58 yjung Exp $ + * + * This file is part of the ESO QFITS Library + * Copyright (C) 2001-2004 European Southern Observatory + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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 for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * $Author: yjung $ + * $Date: 2006/02/17 10:26:58 $ + * $Revision: 1.10 $ + * $Name: qfits-6_2_0 $ + */ + +/*----------------------------------------------------------------------------- + Includes + -----------------------------------------------------------------------------*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define NUMPAGES 10000 +#define NUMTHREADS 1 +#define BUFFERSIZE 100 + +#include "umap.h" +#include "umaptest.h" + +#ifdef _OPENMP +#include +#endif + +extern "C" +{ +#include "qfits.h" +} + +umt_optstruct_t options; + +struct patch +{ + int sx,sy,ex,ey; +}; // boundries for each patches + +static inline double gets(void) +{ + return omp_get_wtime(); +} + +static void copypix(char * buf,char * buf2, int p1, int psize) +{ + uint16_t a1,b1; + uint32_t a2,b2; + if (psize==2) + { + a1=*(uint16_t *)(buf+p1); + //b1=*(uint16_t *)(buf2+p1); + printf("%u\n",a1); + //if (a1!=b1) printf("%u %u\n",a1,b1); + } + else + { + a2=*(uint32_t *)(buf+p1); + //b2=*(uint32_t *)(buf2+p1); + printf("%lu\n",a2); + //if (a2!=b2) printf("%lu %lu\n",a2,b2); + } +} +void swapbyte(float *a,float *b) +{ + char *a1=(char *)a; + char *b1=(char *)b; + b1[0]=a1[3]; + b1[3]=a1[0]; + b1[1]=a1[2]; + b1[2]=a1[1]; +} +bool fequal(double a, double b) +{ + if (fabs(a-b)<(1e-6)) return 1; + else return 0; +} +double torben(float **m, int n,int pos) +{ + int i,j, less, greater, equal; + double min, max, guess, maxltguess, mingtguess; + float num; + + swapbyte(m[0]+pos,&num); + min = max = num; + //fprintf(stdout,"m:%6.5lf\n",num); + + for (i=1 ; imax) max=num; + //fprintf(stdout,"m:%6.5lf\n",num); + } + //fprintf(stdout,"Max:%6.5lf\nMin:%6.5lf\n",max,min); + + while (1) { + guess = (min+max)/2; + less = 0; greater = 0; equal = 0; + maxltguess = min ; + mingtguess = max ; + for (j=0; jmaxltguess) maxltguess = m_swaped; + } else { + greater++; + //printf("%6.5lf, %6.5lf\n",m_swaped,mingtguess); + if (m_swapedgreater) max = maxltguess ; + else min = mingtguess; + } + //fprintf(stdout,"guess: %6.5lf less:%d greater:%d equal:%d all:%d\n",guess,less,greater,equal,(n+1)/2); + int half=(n+1)/2; + if (less>=half) min=maxltguess; + else min=mingtguess; + if (n&1) return min; + if (greater >= half) max = mingtguess; + else if (greater+equal >= half) max = guess; + else max = maxltguess; + return (min+max)/2; +} +void displaycube(double *cube,int a,int b,int c) +{ + int i,j,k; + for (k=0;k>nlist; + list=(struct patch *)calloc(nlist+1,sizeof(struct patch)); + list[0].sx=0; + list[0].sy=0; + list[0].ex=lx; + list[0].ey=ly;//boundry of the image + i=0; + while (i>list[i].sx>>list[i].ex>>list[i].sy>>list[i].ey; + } + input.close(); + } + + double start = gets(); + median_calc(nlist,list,cube_median,cube); + fprintf(stdout, "Median Calculation %f s\n", (double)(gets() - start)); + //displaycube(cube_median,ly,lx,1); + umt_closeandunmap_fits2(&options, totalbytes, base_addr, fd_list); + free(cube_median); + free(list); + return 0 ; +} + +/*----------------------------------------------------------------------------- + Main + -----------------------------------------------------------------------------*/ +int main(int argc, char * argv[]) +{ + int err ; + umt_getoptions(&options, argc, argv); + err=0; + test_openfiles(options.fn); + //err += fits(); + if (err>0) + { + fprintf(stderr, "%s: %d error(s) occurred\n", argv[0], err); + return -1 ; + } + return 0 ; +} diff --git a/tests/FITS/multiple.cpp b/tests/FITS/multiple.cpp new file mode 100644 index 00000000..c4d44ea6 --- /dev/null +++ b/tests/FITS/multiple.cpp @@ -0,0 +1,307 @@ +/* $Id: flipx.c,v 1.10 2006/02/17 10:26:58 yjung Exp $ + * + * This file is part of the ESO QFITS Library + * Copyright (C) 2001-2004 European Southern Observatory + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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 for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * $Author: yjung $ + * $Date: 2006/02/17 10:26:58 $ + * $Revision: 1.10 $ + * $Name: qfits-6_2_0 $ + */ + +/*----------------------------------------------------------------------------- + Includes + -----------------------------------------------------------------------------*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define NUMPAGES 10000 +#define NUMTHREADS 1 +#define BUFFERSIZE 100 + +#include "umap.h" +#include "umaptest.h" + +#ifdef _OPENMP +#include +#endif + +extern "C" +{ +#include "qfits.h" +} + +umt_optstruct_t options; + +struct patch +{ + uint64_t sx,sy,ex,ey; +}; // boundries for each patches + +static inline double gets(void) +{ + return omp_get_wtime(); +} + +void swapbyte(float *a,float *b) +{ + char *a1=(char *)a; + char *b1=(char *)b; + b1[0]=a1[3]; + b1[3]=a1[0]; + b1[1]=a1[2]; + b1[2]=a1[1]; +} +bool fequal(double a, double b) +{ + if (fabs(a-b)<(1e-6)) return 1; + else return 0; +} +double torben(float *m, int n,uint64_t step) +{ + int i, less, greater, equal; + double min, max, guess, maxltguess, mingtguess; + float num; + uint64_t j,maxj=n*step; + + swapbyte(m,&num); + min = max = num; + j=(uint64_t)step; + //fprintf(stdout,"m:%6.5lf\n",num); + + for (i=1 ; imax) max=num; + j+=step; + //printf("j:%llu\n",j); + //fprintf(stdout,"m:%6.5lf\n",num); + } + //fprintf(stdout,"Max:%6.5lf\nMin:%6.5lf\n",max,min); + + while (1) { + guess = (min+max)/2; + less = 0; greater = 0; equal = 0; + maxltguess = min ; + mingtguess = max ; + for (j=0; jmaxltguess) maxltguess = m_swaped; + } else { + greater++; + //printf("%6.5lf, %6.5lf\n",m_swaped,mingtguess); + if (m_swapedgreater) max = maxltguess ; + else min = mingtguess; + } + //fprintf(stdout,"guess: %6.5lf less:%d greater:%d equal:%d all:%d\n",guess,less,greater,equal,(n+1)/2); + int half=(n+1)/2; + if (less>=half) min=maxltguess; + else min=mingtguess; + if (n&1) return min; + if (greater >= half) max = mingtguess; + else if (greater+equal >= half) max = guess; + else max = maxltguess; + return (min+max)/2; +} +void displaycube(double *cube,int a,int b,int c) +{ + int i,j,k; + for (k=0;k>nlist; + list=(struct patch *)calloc(nlist+1,sizeof(struct patch)); + list[0].sx=0; + list[0].sy=0; + list[0].ex=lx; + list[0].ey=ly;//boundry of the image + i=0; + while (!input.eof()) + { + i++; + input>>list[i].sx>>list[i].ex>>list[i].sy>>list[i].ey; + } + input.close(); + } + + double start = gets(); + median_calc(nlist,list,cube_median,cube); + fprintf(stdout, "Median Calculation %f s\n", (double)(gets() - start)); + //displaycube(cube_median,ly,lx,1); + free(cube_median); + free(list); + umt_closeandunmap_fits(&options, totalbytes, base_addr, fd_list); + return 0 ; +} + +/*----------------------------------------------------------------------------- + Main + -----------------------------------------------------------------------------*/ +int main(int argc, char * argv[]) +{ + int err ; + umt_getoptions(&options, argc, argv); + err=0; + test_openfiles(options.fn); + //err += fits(); + if (err>0) + { + fprintf(stderr, "%s: %d error(s) occurred\n", argv[0], err); + return -1 ; + } + return 0 ; +} diff --git a/tests/FITS/simple_loader.cpp b/tests/FITS/simple_loader.cpp new file mode 100644 index 00000000..8283a169 --- /dev/null +++ b/tests/FITS/simple_loader.cpp @@ -0,0 +1,332 @@ +/* $Id: flipx.c,v 1.10 2006/02/17 10:26:58 yjung Exp $ + * + * This file is part of the ESO QFITS Library + * Copyright (C) 2001-2004 European Southern Observatory + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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 for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * $Author: yjung $ + * $Date: 2006/02/17 10:26:58 $ + * $Revision: 1.10 $ + * $Name: qfits-6_2_0 $ + */ + +/*----------------------------------------------------------------------------- + Includes + -----------------------------------------------------------------------------*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _OPENMP +#include +#endif + +#include "umaptest.h" + +extern "C" +{ +#include "qfits.h" +} + +umt_optstruct_t options; +struct patch +{ + uint64_t sx,sy,ex,ey; +}; // boundries for each patches + + +static inline double gets(void) +{ + return omp_get_wtime(); +} + +bool fequal(double a, double b) +{ + if (fabs(a-b)<(1e-6)) return 1; + else return 0; +} +void swapbyte(float *a,float *b) +{ + char *a1=(char *)a; + char *b1=(char *)b; + b1[0]=a1[3]; + b1[3]=a1[0]; + b1[1]=a1[2]; + b1[2]=a1[1]; +} +double torben(float **m, int n,int pos) +{ + int i,j, less, greater, equal; + double min, max, guess, maxltguess, mingtguess; + float num; + + swapbyte(m[0]+pos,&num); + min = max = num; + //fprintf(stdout,"m:%6.5lf\n",num); + + for (i=1 ; imax) max=num; + //fprintf(stdout,"m:%6.5lf\n",num); + } + //fprintf(stdout,"Max:%6.5lf\nMin:%6.5lf\n",max,min); + + while (1) { + guess = (min+max)/2; + less = 0; greater = 0; equal = 0; + maxltguess = min ; + mingtguess = max ; + for (j=0; jmaxltguess) maxltguess = m_swaped; + } else { + greater++; + //printf("%6.5lf, %6.5lf\n",m_swaped,mingtguess); + if (m_swapedgreater) max = maxltguess ; + else min = mingtguess; + } + //fprintf(stdout,"guess: %6.5lf less:%d greater:%d equal:%d all:%d\n",guess,less,greater,equal,(n+1)/2); + int half=(n+1)/2; + if (less>=half) min=maxltguess; + else min=mingtguess; + if (n&1) return min; + if (greater >= half) max = mingtguess; + else if (greater+equal >= half) max = guess; + else max = maxltguess; + return (min+max)/2; +} +void displaycube(double *cube,int a,int b,int c) +{ + int i,j,k; + for (k=0;k>nlist; + list=(struct patch *)calloc(nlist+1,sizeof(struct patch)); + list[0].sx=0; + list[0].sy=0; + list[0].ex=lx; + list[0].ey=ly;//boundry of the image + i=0; + while (!input.eof()) + { + i++; + input>>list[i].sx>>list[i].ex>>list[i].sy>>list[i].ey; + } + input.close(); + } + + double *cube_median=(double *)malloc(sizeof(double)*lx*ly); + double start = gets(); + median_calc(nlist,list,cube_median,d); + fprintf(stdout, "Median Calculation %f s\n", (double)(gets() - start)); + //displaycube(cube_median,lx,ly,1); + free(cube_median); + free(list); + for (i=0;i0) + { + fprintf(stderr, "%s: %d error(s) occurred\n", argv[0], err); + return -1 ; + } + return 0 ; +} diff --git a/tests/libumaptest/mmap.cpp b/tests/libumaptest/mmap.cpp index 45fd1aef..4a925bc4 100644 --- a/tests/libumaptest/mmap.cpp +++ b/tests/libumaptest/mmap.cpp @@ -21,6 +21,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include #include +#include #include "umap.h" #include "umaptest.h" @@ -122,3 +123,194 @@ void umt_closeandunmap(const umt_optstruct_t* testops, uint64_t numbytes, void* close(fd); } +//-------support multi-file ---------------- +int* umt_openandmap_fits(const umt_optstruct_t* testops, uint64_t numbytes, void** region,off_t offset,off_t frame) +{ + int* fdlist; + char* filename; + char num[5]; + int open_options = O_RDWR; + + if (testops->iodirect) + open_options |= O_DIRECT; + + if ( !testops->noinit ) + open_options |= O_CREAT; + +#ifdef O_LARGEFILE + open_options |= O_LARGEFILE; +#endif + + if (testops->fnum==-1) + { + perror("number of files not in input"); + exit(-1); + } + fdlist=(int *)calloc(testops->fnum,sizeof(int)); + filename=(char *)std::malloc(sizeof(char)*100); + + for (int i=0;ifnum;i++) + { + strcpy(filename,testops->fn); + sprintf(num,"%d",i+1); + strcat(filename,num); + strcat(filename,".fits"); + + fdlist[i] = open(filename, open_options, S_IRUSR|S_IWUSR); + printf("processing %s, %d\n",filename,fdlist[i]); + + if(fdlist[i] == -1) + { + perror("open"); + exit(-1); + } + } + + if (testops->noinit) { + // If we are not initializing file, make sure that it is big enough + struct stat sbuf; + uint64_t totalsize=0; + for (int i=0;ifnum;i++){ + if (fstat(fdlist[i], &sbuf) == -1){ + perror("fstat"); + exit(-1); + } + //printf("size:%d\n",sbuf.st_size); + totalsize+=(uint64_t)sbuf.st_size; + } + + if (totalsize < numbytes) { + cerr << testops->fn + << " file is not large enough. " << sbuf.st_size + << " < size requested " << numbytes << endl; + exit(-1); + } + } + + int prot = PROT_READ|PROT_WRITE; + int flags = UMAP_PRIVATE; + + *region = umap_fits(NULL, numbytes, prot, flags, testops->fnum, fdlist, offset, frame); + if (*region == UMAP_FAILED) { + perror("umap"); + exit(-1); + } + + return fdlist; +} + +void umt_closeandunmap_fits(const umt_optstruct_t* testops, uint64_t numbytes, void* region,int* fd) +{ + if ( testops->usemmap ) { + if (munmap(region, numbytes) < 0) { + perror("munmap"); + exit(-1); + } + } + else { + if (uunmap(region, numbytes) < 0) { + perror("uunmap"); + exit(-1); + } + } + for (int i=0;ifnum;i++) + close(fd[i]); + free(fd); +} + +//-------support fits file (private)------------ +int* umt_openandmap_fits2(const umt_optstruct_t* testops, uint64_t numbytes, void** region,off_t offset,off_t frame) +{ + int* fdlist; + char* filename; + char num[5]; + int open_options = O_RDWR; + + if (testops->iodirect) + open_options |= O_DIRECT; + + if ( !testops->noinit ) + open_options |= O_CREAT; + +#ifdef O_LARGEFILE + open_options |= O_LARGEFILE; +#endif + + if (testops->fnum==-1) + { + perror("number of files not in input"); + exit(-1); + } + fdlist=(int *)calloc(testops->fnum,sizeof(int)); + filename=(char *)std::malloc(sizeof(char)*100); + + for (int i=0;ifnum;i++) + { + strcpy(filename,testops->fn); + sprintf(num,"%d",i+1); + strcat(filename,num); + strcat(filename,".fits"); + + fdlist[i] = open(filename, open_options, S_IRUSR|S_IWUSR); + printf("processing %s, %d\n",filename,fdlist[i]); + + if(fdlist[i] == -1) + { + perror("open"); + exit(-1); + } + } + + if (testops->noinit) { + // If we are not initializing file, make sure that it is big enough + struct stat sbuf; + for (int i=0;ifnum;i++){ + if (fstat(fdlist[i], &sbuf) == -1){ + perror("fstat"); + exit(-1); + } + //printf("size:%d\n",sbuf.st_size); + if ((uint64_t)sbuf.st_size < numbytes) { + cerr << testops->fn + << " file is not large enough. " << sbuf.st_size + << " < size requested " << numbytes << endl; + exit(-1); + } + } + } + + int prot = PROT_READ|PROT_WRITE; + int flags = UMAP_PRIVATE; + + for (int i=0;ifnum;i++) + { + region[i] = umap(NULL, numbytes, prot, flags, fdlist[i], 0); + if (region[i] == UMAP_FAILED) + { + perror("umap"); + exit(-1); + } + } + + return fdlist; +} + +void umt_closeandunmap_fits2(const umt_optstruct_t* testops, uint64_t numbytes, void** region,int* fd) +{ + if ( testops->usemmap ) { + if (munmap(region, numbytes) < 0) { + perror("munmap"); + exit(-1); + } + } + else { + for (int i=0;ifnum;i++) + if (uunmap(region[i], numbytes) < 0) { + perror("uunmap"); + exit(-1); + } + } + for (int i=0;ifnum;i++) + close(fd[i]); + free(fd); +} diff --git a/tests/libumaptest/options.cpp b/tests/libumaptest/options.cpp index 3aa60e45..9b01a5fc 100644 --- a/tests/libumaptest/options.cpp +++ b/tests/libumaptest/options.cpp @@ -13,6 +13,7 @@ char const* FILENAME = "/tmp/abc"; const uint64_t NUMPAGES = 10000000; const uint64_t NUMTHREADS = 2; const uint64_t BUFFERSIZE = 16; +const int SINGLEFILE = -1; using namespace std; @@ -29,6 +30,7 @@ static void usage(char* pname) << " -p # of pages - default: " << NUMPAGES << endl << " -t # of threads - default: " << NUMTHREADS << endl << " -b page buffer size - default: " << umap_cfg_get_bufsize() << " Pages\n" + << " -n number of files - default: " << -1 << endl << " -f [file name] - backing file name. Must exist and be correct size for noinit\n"; exit(1); } @@ -46,6 +48,7 @@ void umt_getoptions(umt_optstruct_t* testops, int argc, char *argv[]) testops->numthreads = NUMTHREADS; testops->bufsize = umap_cfg_get_bufsize(); testops->fn = FILENAME; + testops->fnum = SINGLEFILE; while (1) { int option_index = 0; @@ -58,7 +61,7 @@ void umt_getoptions(umt_optstruct_t* testops, int argc, char *argv[]) {0, 0, 0, 0 } }; - c = getopt_long(argc, argv, "p:t:f:b:", long_options, &option_index); + c = getopt_long(argc, argv, "p:t:f:b:n:", long_options, &option_index); if (c == -1) break; @@ -82,6 +85,10 @@ void umt_getoptions(umt_optstruct_t* testops, int argc, char *argv[]) if ((testops->bufsize = strtoull(optarg, nullptr, 0)) > 0) break; else goto R0; + case 'n': + if ((testops->fnum = strtoull(optarg, nullptr, 0)) > 0) + break; + else goto R0; case 'f': testops->fn = optarg; break; diff --git a/tests/libumaptest/umaptest.h b/tests/libumaptest/umaptest.h index 2c7a4533..01fb0036 100644 --- a/tests/libumaptest/umaptest.h +++ b/tests/libumaptest/umaptest.h @@ -26,6 +26,7 @@ typedef struct { uint64_t numthreads; uint64_t bufsize; char const* fn; + int fnum; } umt_optstruct_t; #ifdef __cplusplus @@ -35,6 +36,10 @@ extern "C" { int umt_openandmap(const umt_optstruct_t*, uint64_t, void**); void umt_closeandunmap(const umt_optstruct_t*, uint64_t, void*, int); long umt_getpagesize(void); + int* umt_openandmap_fits(const umt_optstruct_t*, uint64_t, void**,off_t,off_t); + void umt_closeandunmap_fits(const umt_optstruct_t*, uint64_t, void*,int*); + int* umt_openandmap_fits2(const umt_optstruct_t*, uint64_t, void**,off_t,off_t); + void umt_closeandunmap_fits2(const umt_optstruct_t*, uint64_t, void**,int*); #ifdef __cplusplus } #endif diff --git a/tests/median/CMakeLists.txt b/tests/median/CMakeLists.txt index 70e5a65b..1a956153 100644 --- a/tests/median/CMakeLists.txt +++ b/tests/median/CMakeLists.txt @@ -16,7 +16,7 @@ if(OPENMP_FOUND) include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_BINARY_DIR}/include ) - install(TARGETS median + install(TARGETS median median_cube LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/static RUNTIME DESTINATION bin ) diff --git a/tests/median/median.cpp b/tests/median/median.cpp index 9f268032..1f4105e7 100644 --- a/tests/median/median.cpp +++ b/tests/median/median.cpp @@ -72,7 +72,7 @@ uint64_t torben(uint64_t *m, int n) for (i=1 ; imax) max=m[i]; - if (m[i]>n) fprintf(stdout,"m:%llu\n",m[i]); + //if (m[i]>n) fprintf(stdout,"m:%llu\n",m[i]); } //fprintf(stdout,"Max:%llu\nMin:%llu\n",max,min); @@ -124,7 +124,7 @@ int main(int argc, char **argv) uint64_t *arr = (uint64_t *) base_addr; arraysize = totalbytes/sizeof(int64_t); - fprintf(stdout,"Array size: %lld\n",arraysize); + fprintf(stdout,"Array size: %ld\n",arraysize); uint64_t start = getns(); // init data @@ -133,7 +133,7 @@ int main(int argc, char **argv) start = getns(); median=torben(arr,arraysize); - fprintf(stdout, "Median is %llu, Find median took %f us\n",median,(double)(getns() - start)/1000000.0); + fprintf(stdout, "Median is %lu, Find median took %f us\n",median,(double)(getns() - start)/1000000.0); umt_closeandunmap(&options, totalbytes, base_addr, fd); return 0; diff --git a/tests/median/median_cube.cpp b/tests/median/median_cube.cpp index 488fd9e2..3202036e 100644 --- a/tests/median/median_cube.cpp +++ b/tests/median/median_cube.cpp @@ -169,12 +169,12 @@ int main(int argc, char **argv) start = getns(); getall_median(); //median=torben(arr,arraysize); - fprintf(stdout, "Median is %llu, Find median took %f us\n",median,(double)(getns() - start)/1000000.0); + fprintf(stdout, "Median is %lu, Find median took %f us\n",median,(double)(getns() - start)/1000000.0); int i,j; for (i=0;i Date: Thu, 17 Aug 2017 16:01:50 -0700 Subject: [PATCH 13/32] add quicksort to umapsort and remove mmapsort (#12) --- tests/umapsort/mmapsort.cpp | 309 ------------------------------------ tests/umapsort/umapsort.cpp | 2 +- 2 files changed, 1 insertion(+), 310 deletions(-) delete mode 100644 tests/umapsort/mmapsort.cpp diff --git a/tests/umapsort/mmapsort.cpp b/tests/umapsort/mmapsort.cpp deleted file mode 100644 index ef0ef434..00000000 --- a/tests/umapsort/mmapsort.cpp +++ /dev/null @@ -1,309 +0,0 @@ -/* -This file is part of UMAP. For copyright information see the COPYRIGHT -file in the top level directory, or at -https://github.com/LLNL/umap/blob/master/COPYRIGHT -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU Lesser General Public License (as published by the Free -Software Foundation) version 2.1 dated February 1999. 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 terms and conditions of the GNU Lesser General Public License -for more details. You should have received a copy of the GNU Lesser General -Public License along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ -/* - * Copyright (c) 2013, Lawrence Livermore National Security, LLC. - * Produced at the Lawrence Livermore National Laboratory. - * Written by Roger Pearce . - * LLNL-CODE-624712. - * All rights reserved. - * - * This file is part of LRIOT, Version 1.0. - * For details, see https://computation.llnl.gov/casc/dcca-pub/dcca/Downloads.html - * - * Please also read this link – Additional BSD Notice. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * • Redistributions of source code must retain the above copyright notice, this - * list of conditions and the disclaimer below. - * - * • Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the disclaimer (as noted below) in the - * documentation and/or other materials provided with the distribution. - * - * • Neither the name of the LLNS/LLNL nor the names of its contributors may be - * used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, - * THE U.S. DEPARTMENT OF ENERGY OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * Additional BSD Notice - * - * 1. This notice is required to be provided under our contract with the - * U.S. Department of Energy (DOE). This work was produced at Lawrence Livermore - * National Laboratory under Contract No. DE-AC52-07NA27344 with the DOE. - * - * 2. Neither the United States Government nor Lawrence Livermore National - * Security, LLC nor any of their employees, makes any warranty, express or - * implied, or assumes any liability or responsibility for the accuracy, - * completeness, or usefulness of any information, apparatus, product, or - * process disclosed, or represents that its use would not infringe - * privately-owned rights. - * - * 3. Also, reference herein to any specific commercial products, process, or - * services by trade name, trademark, manufacturer or otherwise does not - * necessarily constitute or imply its endorsement, recommendation, or favoring - * by the United States Government or Lawrence Livermore National Security, - * LLC. The views and opinions of authors expressed herein do not necessarily - * state or reflect those of the United States Government or Lawrence Livermore - * National Security, LLC, and shall not be used for advertising or product - * endorsement purposes. - * - */ - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef _OPENMP -#include -#endif - -#ifdef UFFD -extern "C" { -#include "../uffd_handler/uffd_handler.h" - -volatile int stop_uffd_handler; -} -#endif - -double get_wtime(); - -void create_files (const char* base_fname, int fnum, uint64_t file_size, bool do_fallocate); -void init_data (const char* base_fname, int fnum, uint64_t file_size); -void sort_data (const char* base_fname, int fnum, uint64_t file_size); -void validate_data(const char* base_fname, int fnum, uint64_t file_size); - - -int main(int argc, char** argv) { - - // for uffd - int uffd; - pthread_t uffd_thread; - - if(argc != 4) { - std::cerr << "Usage: " << argv[0] << " " < rnd_int; - for(int i=0; i Date: Fri, 18 Aug 2017 13:07:05 -0700 Subject: [PATCH 14/32] Fixed build warnings. --- src/umap.cpp | 7 +++---- tests/median/median_cube.cpp | 5 +++-- tests/uffd_test/uffd_test2.cpp | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/umap.cpp b/src/umap.cpp index 3589d3aa..4e811a9e 100644 --- a/src/umap.cpp +++ b/src/umap.cpp @@ -199,8 +199,7 @@ void umap_cfg_set_bufsize( int page_bufsize ) _umap::_umap( void* _mmap_addr, size_t _mmap_length, int _mmap_fd) : segment_address{_mmap_addr}, segment_length{_mmap_length}, - backingfile_fd{_mmap_fd}, - time_to_stop{false}, fault_count{0}, next_page_alloc_index{0} + backingfile_fd{_mmap_fd}, time_to_stop{false}, fault_count{0}, next_page_alloc_index{0} { page_buffer_size = umap_page_bufsize; if ((userfault_fd = syscall(__NR_userfaultfd, O_CLOEXEC | O_NONBLOCK)) < 0) { @@ -254,8 +253,8 @@ _umap::_umap( void* _mmap_addr, size_t _mmap_length, int _mmap_fd) //--------------------------for multi-file support---------------------- _umap::_umap(void* _mmap_addr, size_t _mmap_length, int _mmap_fd,int* file_list, off_t data_offset, off_t frame) : segment_address{_mmap_addr}, segment_length{_mmap_length}, - backingfile_fd{-1},number_file{_mmap_fd},fits_offset{data_offset},fd_list{file_list},frame_size{frame}, - time_to_stop{false}, fault_count{0}, next_page_alloc_index{0} + backingfile_fd{_mmap_fd}, time_to_stop{false}, fault_count{0}, next_page_alloc_index{0}, + number_file{_mmap_fd}, fd_list{file_list}, fits_offset{data_offset} { page_buffer_size = umap_page_bufsize; // if ((page_size = sysconf(_SC_PAGESIZE)) == -1) { diff --git a/tests/median/median_cube.cpp b/tests/median/median_cube.cpp index 3202036e..bc115eb0 100644 --- a/tests/median/median_cube.cpp +++ b/tests/median/median_cube.cpp @@ -137,7 +137,7 @@ int main(int argc, char **argv) long pagesize; int64_t totalbytes; int64_t arraysize; - uint64_t median; + //uint64_t median; void* base_addr; int fd; @@ -169,7 +169,8 @@ int main(int argc, char **argv) start = getns(); getall_median(); //median=torben(arr,arraysize); - fprintf(stdout, "Median is %lu, Find median took %f us\n",median,(double)(getns() - start)/1000000.0); + //fprintf(stdout, "Median is %lu, Find median took %f us\n",median,(double)(getns() - start)/1000000.0); + fprintf(stdout, "Find median took %f us\n",(double)(getns() - start)/1000000.0); int i,j; for (i=0;i Date: Wed, 23 Aug 2017 11:37:18 -0700 Subject: [PATCH 15/32] code deduplication and add new struct (#13) Removed code duplication of handlers for maps with one file and maps with multiple files. We are now back to a single handler that can deal with 1 (or more) backing files. --- include/umap.h | 23 +-- src/umap.cpp | 275 +++-------------------------------- tests/FITS/multi_private.cpp | 71 ++++----- tests/FITS/multiple.cpp | 67 +++++---- tests/FITS/simple_loader.cpp | 37 +++-- tests/libumaptest/mmap.cpp | 54 +++---- tests/libumaptest/umaptest.h | 8 +- tests/median/median.cpp | 2 +- tests/median/median_cube.cpp | 1 - tests/umapsort/umapsort.cpp | 5 +- 10 files changed, 155 insertions(+), 388 deletions(-) diff --git a/include/umap.h b/include/umap.h index 533c960b..59e25f86 100644 --- a/include/umap.h +++ b/include/umap.h @@ -13,6 +13,13 @@ #include #include +typedef +struct umap_backing_file { + int fd; + off_t data_size; + off_t data_offset; /* Offset of data portion in file */ +}umap_backing_file; + #ifdef __cplusplus extern "C" { #endif @@ -27,18 +34,16 @@ void* umap( void* addr, /* See mmap(2) */ int fd, /* See mmap(2) */ off_t offset /* See mmap(2) */ ); -void* umap_fits( void* addr, /* See mmap(2) */ - size_t length, /* See mmap(2) */ - int prot, /* See mmap(2) */ - int flags, /* See below, see mmap(2) for general notes */ - int fd_num, /* See mmap(2) */ - int* fd_list, - off_t offset, /* See mmap(2) */ - off_t frame - ); int uunmap( void* addr, /* See mmap(2) */ size_t length /* See mmap(2) */ ); +void* umap_mf(void* addr, + size_t length, + int prot, + int flags, + int num_backing_file, + umap_backing_file* backing_files + ); int umap_cfg_get_bufsize( void ); void umap_cfg_set_bufsize( int page_bufsize ); #ifdef __cplusplus diff --git a/src/umap.cpp b/src/umap.cpp index 4e811a9e..513af520 100644 --- a/src/umap.cpp +++ b/src/umap.cpp @@ -36,9 +36,7 @@ static long page_size; class umap_page; class _umap { public: - _umap(void* _mmap_addr, size_t _mmap_length, int _mmap_fd); - _umap(void* _mmap_addr, size_t _mmap_length, int _mmap_fd, int* fd_list, off_t data_offset ,off_t frame); - + _umap(void* _mmap_addr, size_t _mmap_length, int num_backing_file, umap_backing_file* backing_files); void uffd_finalize(void); bool is_in_umap(const void* page_begin) { @@ -58,6 +56,7 @@ class _umap { void* segment_address; size_t segment_length; int backingfile_fd; + vector bk_files; int page_buffer_size; bool time_to_stop; uint64_t fault_count; @@ -67,18 +66,11 @@ class _umap { vector pages_in_memory; char* tmppagebuf; -//--------for multi-file fits support--------- - int number_file; - int* fd_list; - off_t fits_offset; - off_t frame_size; - map page_index; void evict_page(umap_page& page); void remove_page_index(void* _p) { page_index.erase(_p); } void uffd_handler(void); - void uffd_fits_handler(void); void pagefault_event(const struct uffd_msg& msg); inline void stop_faultlistener( void ) noexcept { time_to_stop = true; @@ -116,35 +108,13 @@ static map active_umaps; void* umap(void* addr, size_t length, int prot, int flags, int fd, off_t offset) { - if (!(flags & UMAP_PRIVATE) || flags & ~(UMAP_PRIVATE|UMAP_FIXED)) { - cerr << "umap: Invalid flags: " << hex << flags << endl; - return UMAP_FAILED; - } - - flags |= (MAP_ANONYMOUS | MAP_NORESERVE); - - void* region = mmap(addr, length, prot, flags, -1, offset); - if (region == MAP_FAILED) { - perror("mmap failed: "); - return UMAP_FAILED; - } - - _umap *p_umap; - try { - p_umap = new _umap{region, length, fd}; - } catch(const std::exception& e) { - cerr << __FUNCTION__ << " Failed to launch _umap: " << e.what() << endl; - return UMAP_FAILED; - } catch(...) { - cerr << "umap failed to instantiate _umap object\n"; - return UMAP_FAILED; - } - - active_umaps[region] = p_umap; - return region; + struct stat file; + fstat(fd,&file); + struct umap_backing_file file1={.fd = fd, .data_size = file.st_size, .data_offset = offset}; + return umap_mf(addr, length, prot, flags, 1, &file1); } //--------------------------for multi-file support---------------------- -void* umap_fits(void* addr, size_t length, int prot, int flags, int fd_num,int* fd_list,off_t offset, off_t frame) +void* umap_mf(void* addr, size_t length, int prot, int flags, int num_backing_file, umap_backing_file* backing_files) { if (!(flags & UMAP_PRIVATE) || flags & ~(UMAP_PRIVATE|UMAP_FIXED)) { cerr << "umap: Invalid flags: " << hex << flags << endl; @@ -154,6 +124,7 @@ void* umap_fits(void* addr, size_t length, int prot, int flags, int fd_num,int* flags |= (MAP_ANONYMOUS | MAP_NORESERVE); void* region = mmap(addr, length, prot, flags, -1, 0); + if (region == MAP_FAILED) { perror("mmap failed: "); return UMAP_FAILED; @@ -161,8 +132,7 @@ void* umap_fits(void* addr, size_t length, int prot, int flags, int fd_num,int* _umap *p_umap; try { - p_umap = new _umap{region, length, fd_num,fd_list,offset,frame}; - active_umaps[region] = p_umap; + p_umap = new _umap{region, length, num_backing_file, backing_files}; } catch(const std::exception& e) { cerr << __FUNCTION__ << " Failed to launch _umap: " << e.what() << endl; return UMAP_FAILED; @@ -197,70 +167,14 @@ void umap_cfg_set_bufsize( int page_bufsize ) umap_page_bufsize = page_bufsize; } -_umap::_umap( void* _mmap_addr, size_t _mmap_length, int _mmap_fd) - : segment_address{_mmap_addr}, segment_length{_mmap_length}, - backingfile_fd{_mmap_fd}, time_to_stop{false}, fault_count{0}, next_page_alloc_index{0} -{ - page_buffer_size = umap_page_bufsize; - if ((userfault_fd = syscall(__NR_userfaultfd, O_CLOEXEC | O_NONBLOCK)) < 0) { - perror("userfaultfd syscall not available in this kernel"); - throw -1; - } - - struct uffdio_api uffdio_api = { .api = UFFD_API, .features = 0 }; - - if (ioctl(userfault_fd, UFFDIO_API, &uffdio_api) == -1) { - perror("ioctl(UFFDIO_API)"); - throw -1; - } - - if (uffdio_api.api != UFFD_API) { - cerr << __FUNCTION__ << ": unsupported userfaultfd api\n"; - throw -1; - } - - struct uffdio_register uffdio_register = { - .range = { .start = (uint64_t)segment_address, .len = segment_length }, - .mode = UFFDIO_REGISTER_MODE_MISSING | UFFDIO_REGISTER_MODE_WP - }; - - if (ioctl(userfault_fd, UFFDIO_REGISTER, &uffdio_register) == -1) { - perror("ioctl/uffdio_register"); - close(userfault_fd); - throw -1; - } - - enable_wp_on_pages_and_wake((uint64_t)segment_address, segment_length / page_size); - - if ((uffdio_register.ioctls & UFFD_API_RANGE_IOCTLS) != UFFD_API_RANGE_IOCTLS) { - cerr << "unexpected userfaultfd ioctl set\n"; - close(userfault_fd); - throw -1; - } - - posix_memalign((void**)&tmppagebuf, (size_t)512, page_size); - if (tmppagebuf == nullptr) { - cerr << "Unable to allocate 512 bytes for temporary buffer\n"; - close(userfault_fd); - throw -1; - } - - umap_page ump; - pages_in_memory.resize(page_buffer_size, ump); - - listener = new thread{&_umap::uffd_handler, this}; // Start our userfaultfd listener -} //--------------------------for multi-file support---------------------- -_umap::_umap(void* _mmap_addr, size_t _mmap_length, int _mmap_fd,int* file_list, off_t data_offset, off_t frame) +_umap::_umap(void* _mmap_addr, size_t _mmap_length,int num_backing_file,umap_backing_file* backing_files) : segment_address{_mmap_addr}, segment_length{_mmap_length}, - backingfile_fd{_mmap_fd}, time_to_stop{false}, fault_count{0}, next_page_alloc_index{0}, - number_file{_mmap_fd}, fd_list{file_list}, fits_offset{data_offset} + time_to_stop{false}, fault_count{0}, next_page_alloc_index{0} { + for (int i=0;i= 0) { - if (msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) { - pages_in_memory[bufidx].mark_page_dirty(); - disable_wp_on_pages((uint64_t)page_begin, 1); - } - - struct uffdio_range wake; - wake.start = (uint64_t)page_begin; - wake.len = page_size; - - if (ioctl(userfault_fd, UFFDIO_WAKE, &wake) == -1) { - perror("ioctl(UFFDIO_WAKE)"); - exit(1); - } - continue; - } - - // - // Page not in memory, read it in and evict someone - // - int file_id=0; - off_t offset=(uint64_t)page_begin - (uint64_t)segment_address; - //find the file id and offset number - while (offset>=frame_size) - { - file_id++; - offset-=frame_size; - } - - ssize_t pread_ret = pread(fd_list[file_id], tmppagebuf, page_size, - offset+fits_offset); - - if (pread_ret == -1) { - perror("pread failed"); - exit(1); - } - - if (pages_in_memory[next_page_alloc_index].get_page()) { - delete_page_index(pages_in_memory[next_page_alloc_index].get_page()); - evict_page(pages_in_memory[next_page_alloc_index]); - } - - pages_in_memory[next_page_alloc_index].set_page(page_begin); - add_page_index(next_page_alloc_index, page_begin); - - if (msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) { - disable_wp_on_pages((uint64_t)page_begin, 1); - pages_in_memory[next_page_alloc_index].mark_page_dirty(); - } - else { - pages_in_memory[next_page_alloc_index].mark_page_clean(); - } - - next_page_alloc_index = (next_page_alloc_index +1) % page_buffer_size; - - struct uffdio_copy copy; - copy.src = (uint64_t)tmppagebuf; - copy.dst = (uint64_t)page_begin; - copy.len = page_size; - - if (msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) { - copy.mode = 0; - if (ioctl(userfault_fd, UFFDIO_COPY, ©) == -1) { - perror("ioctl(UFFDIO_COPY wake)"); - exit(1); - } - } - else { - copy.mode = UFFDIO_COPY_MODE_DONTWAKE; - if (ioctl(userfault_fd, UFFDIO_COPY, ©) == -1) { - perror("ioctl(UFFDIO_COPY nowake)"); - exit(1); - } - enable_wp_on_pages_and_wake((uint64_t)page_begin, 1); - } - } - next_page_alloc_index = (next_page_alloc_index +1) % page_buffer_size; -} void _umap::evict_page(umap_page& pb) { diff --git a/tests/FITS/multi_private.cpp b/tests/FITS/multi_private.cpp index 69e02fcc..9206224c 100644 --- a/tests/FITS/multi_private.cpp +++ b/tests/FITS/multi_private.cpp @@ -72,26 +72,6 @@ static inline double gets(void) { return omp_get_wtime(); } - -static void copypix(char * buf,char * buf2, int p1, int psize) -{ - uint16_t a1,b1; - uint32_t a2,b2; - if (psize==2) - { - a1=*(uint16_t *)(buf+p1); - //b1=*(uint16_t *)(buf2+p1); - printf("%u\n",a1); - //if (a1!=b1) printf("%u %u\n",a1,b1); - } - else - { - a2=*(uint32_t *)(buf+p1); - //b2=*(uint32_t *)(buf2+p1); - printf("%lu\n",a2); - //if (a2!=b2) printf("%lu %lu\n",a2,b2); - } -} void swapbyte(float *a,float *b) { char *a1=(char *)a; @@ -162,22 +142,24 @@ double torben(float **m, int n,int pos) if (greater >= half) max = mingtguess; else if (greater+equal >= half) max = guess; else max = maxltguess; - return (min+max)/2; + return (min+max)/(double)2; } -void displaycube(double *cube,int a,int b,int c) +void displaycube(double *cube,struct patch *list,int n) { - int i,j,k; - for (k=0;kmaxltguess) maxltguess = m_swaped; - } else { + } else if (m_swaped>guess) + { greater++; //printf("%6.5lf, %6.5lf\n",m_swaped,mingtguess); if (m_swapedgreater) max = maxltguess ; @@ -147,22 +143,24 @@ double torben(float *m, int n,uint64_t step) if (greater >= half) max = mingtguess; else if (greater+equal >= half) max = guess; else max = maxltguess; - return (min+max)/2; + return (min+max)/(double)2; } -void displaycube(double *cube,int a,int b,int c) +void displaycube(double *cube,struct patch *list,int n) { - int i,j,k; - for (k=0;k= half) max = mingtguess; else if (greater+equal >= half) max = guess; else max = maxltguess; - return (min+max)/2; + return (min+max)/(double)2; } -void displaycube(double *cube,int a,int b,int c) +void displaycube(double *cube,struct patch *list,int n) { - int i,j,k; - for (k=0;kiodirect) open_options |= O_DIRECT; @@ -146,7 +146,7 @@ int* umt_openandmap_fits(const umt_optstruct_t* testops, uint64_t numbytes, void perror("number of files not in input"); exit(-1); } - fdlist=(int *)calloc(testops->fnum,sizeof(int)); + fits_files=(umap_backing_file *)calloc(testops->fnum,sizeof(umap_backing_file)); filename=(char *)std::malloc(sizeof(char)*100); for (int i=0;ifnum;i++) @@ -156,14 +156,16 @@ int* umt_openandmap_fits(const umt_optstruct_t* testops, uint64_t numbytes, void strcat(filename,num); strcat(filename,".fits"); - fdlist[i] = open(filename, open_options, S_IRUSR|S_IWUSR); - printf("processing %s, %d\n",filename,fdlist[i]); + fits_files[i].fd = open(filename, open_options, S_IRUSR|S_IWUSR); + //printf("processing %s, %d\n",filename,fdlist[i]); - if(fdlist[i] == -1) + if(fits_files[i].fd == -1) { perror("open"); exit(-1); } + fits_files[i].data_size=data_size; + fits_files[i].data_offset=offset; } if (testops->noinit) { @@ -171,7 +173,7 @@ int* umt_openandmap_fits(const umt_optstruct_t* testops, uint64_t numbytes, void struct stat sbuf; uint64_t totalsize=0; for (int i=0;ifnum;i++){ - if (fstat(fdlist[i], &sbuf) == -1){ + if (fstat(fits_files[i].fd, &sbuf) == -1){ perror("fstat"); exit(-1); } @@ -190,16 +192,16 @@ int* umt_openandmap_fits(const umt_optstruct_t* testops, uint64_t numbytes, void int prot = PROT_READ|PROT_WRITE; int flags = UMAP_PRIVATE; - *region = umap_fits(NULL, numbytes, prot, flags, testops->fnum, fdlist, offset, frame); + *region = umap_mf(NULL, numbytes, prot, flags, testops->fnum, fits_files); if (*region == UMAP_FAILED) { perror("umap"); exit(-1); } - return fdlist; + return (void *)fits_files; } -void umt_closeandunmap_fits(const umt_optstruct_t* testops, uint64_t numbytes, void* region,int* fd) +void umt_closeandunmap_fits(const umt_optstruct_t* testops, uint64_t numbytes, void* region,void* p) { if ( testops->usemmap ) { if (munmap(region, numbytes) < 0) { @@ -213,15 +215,16 @@ void umt_closeandunmap_fits(const umt_optstruct_t* testops, uint64_t numbytes, v exit(-1); } } + umap_backing_file *fits_files=(umap_backing_file *)p; for (int i=0;ifnum;i++) - close(fd[i]); - free(fd); + close(fits_files[i].fd); + free(fits_files); } //-------support fits file (private)------------ -int* umt_openandmap_fits2(const umt_optstruct_t* testops, uint64_t numbytes, void** region,off_t offset,off_t frame) +void* umt_openandmap_fits2(const umt_optstruct_t* testops, uint64_t numbytes, void** region,off_t offset,off_t data_size) { - int* fdlist; + umap_backing_file* fits_files; char* filename; char num[5]; int open_options = O_RDWR; @@ -241,7 +244,7 @@ int* umt_openandmap_fits2(const umt_optstruct_t* testops, uint64_t numbytes, voi perror("number of files not in input"); exit(-1); } - fdlist=(int *)calloc(testops->fnum,sizeof(int)); + fits_files=(umap_backing_file *)calloc(testops->fnum,sizeof(umap_backing_file)); filename=(char *)std::malloc(sizeof(char)*100); for (int i=0;ifnum;i++) @@ -251,10 +254,10 @@ int* umt_openandmap_fits2(const umt_optstruct_t* testops, uint64_t numbytes, voi strcat(filename,num); strcat(filename,".fits"); - fdlist[i] = open(filename, open_options, S_IRUSR|S_IWUSR); - printf("processing %s, %d\n",filename,fdlist[i]); + fits_files[i].fd = open(filename, open_options, S_IRUSR|S_IWUSR); + //printf("processing %s, %d\n",filename,fdlist[i]); - if(fdlist[i] == -1) + if(fits_files[i].fd == -1) { perror("open"); exit(-1); @@ -265,7 +268,7 @@ int* umt_openandmap_fits2(const umt_optstruct_t* testops, uint64_t numbytes, voi // If we are not initializing file, make sure that it is big enough struct stat sbuf; for (int i=0;ifnum;i++){ - if (fstat(fdlist[i], &sbuf) == -1){ + if (fstat(fits_files[i].fd, &sbuf) == -1){ perror("fstat"); exit(-1); } @@ -284,7 +287,7 @@ int* umt_openandmap_fits2(const umt_optstruct_t* testops, uint64_t numbytes, voi for (int i=0;ifnum;i++) { - region[i] = umap(NULL, numbytes, prot, flags, fdlist[i], 0); + region[i] = umap(NULL, numbytes, prot, flags, fits_files[i].fd, 0); if (region[i] == UMAP_FAILED) { perror("umap"); @@ -292,10 +295,10 @@ int* umt_openandmap_fits2(const umt_optstruct_t* testops, uint64_t numbytes, voi } } - return fdlist; + return (void *)fits_files; } -void umt_closeandunmap_fits2(const umt_optstruct_t* testops, uint64_t numbytes, void** region,int* fd) +void umt_closeandunmap_fits2(const umt_optstruct_t* testops, uint64_t numbytes, void** region,void* p) { if ( testops->usemmap ) { if (munmap(region, numbytes) < 0) { @@ -310,7 +313,8 @@ void umt_closeandunmap_fits2(const umt_optstruct_t* testops, uint64_t numbytes, exit(-1); } } + umap_backing_file *fits_files=(umap_backing_file *)p; for (int i=0;ifnum;i++) - close(fd[i]); - free(fd); + close(fits_files[i].fd); + free(fits_files); } diff --git a/tests/libumaptest/umaptest.h b/tests/libumaptest/umaptest.h index 01fb0036..4e1d24e6 100644 --- a/tests/libumaptest/umaptest.h +++ b/tests/libumaptest/umaptest.h @@ -36,10 +36,10 @@ extern "C" { int umt_openandmap(const umt_optstruct_t*, uint64_t, void**); void umt_closeandunmap(const umt_optstruct_t*, uint64_t, void*, int); long umt_getpagesize(void); - int* umt_openandmap_fits(const umt_optstruct_t*, uint64_t, void**,off_t,off_t); - void umt_closeandunmap_fits(const umt_optstruct_t*, uint64_t, void*,int*); - int* umt_openandmap_fits2(const umt_optstruct_t*, uint64_t, void**,off_t,off_t); - void umt_closeandunmap_fits2(const umt_optstruct_t*, uint64_t, void**,int*); + void* umt_openandmap_fits(const umt_optstruct_t*, uint64_t, void**,off_t,off_t); + void umt_closeandunmap_fits(const umt_optstruct_t*, uint64_t, void*,void*); + void* umt_openandmap_fits2(const umt_optstruct_t*, uint64_t, void**,off_t,off_t); + void umt_closeandunmap_fits2(const umt_optstruct_t*, uint64_t, void**,void*); #ifdef __cplusplus } #endif diff --git a/tests/median/median.cpp b/tests/median/median.cpp index 1f4105e7..47c78002 100644 --- a/tests/median/median.cpp +++ b/tests/median/median.cpp @@ -57,7 +57,7 @@ void initdata(uint64_t *region, int64_t rlen) { std::mt19937 gen(rd()); std::uniform_int_distribution rnd_int; #pragma omp parallel for - for(int i=0; i< rlen; ++i) { + for(int64_t i=0; i< rlen; ++i) { region[i] = (uint64_t) (rlen - i);// rnd_int(gen); //region[i] = rnd_int(gen)>>1;//divide all values by 2 because of overflow in torben //printf("%llu\n", (long long)region[i]); diff --git a/tests/median/median_cube.cpp b/tests/median/median_cube.cpp index bc115eb0..ca60b615 100644 --- a/tests/median/median_cube.cpp +++ b/tests/median/median_cube.cpp @@ -169,7 +169,6 @@ int main(int argc, char **argv) start = getns(); getall_median(); //median=torben(arr,arraysize); - //fprintf(stdout, "Median is %lu, Find median took %f us\n",median,(double)(getns() - start)/1000000.0); fprintf(stdout, "Find median took %f us\n",(double)(getns() - start)/1000000.0); int i,j; for (i=0;i rnd_int; #pragma omp parallel for - for(int i=0; i< rlen; ++i) { + for(int64_t i=0; i< rlen; ++i) { region[i] = (uint64_t) (rlen - i);// rnd_int(gen); //region[i] = rnd_int(gen); } @@ -109,7 +109,8 @@ int main(int argc, char **argv) fprintf(stdout, "Init took %f us\n", (double)(getns() - start)/1000000.0); } - if ( !options.initonly ) { + if ( !options.initonly ) + { start = getns(); __gnu_parallel::sort(arr, &arr[arraysize],__gnu_parallel::quicksort_tag()); fprintf(stdout, "Sort took %f us\n", (double)(getns() - start)/1000000.0); From 52bc6c63da9e47b2a76c57e640bfcd5dcee82715 Mon Sep 17 00:00:00 2001 From: xiszishu Date: Thu, 24 Aug 2017 09:12:59 -0700 Subject: [PATCH 16/32] Cleanup and update FITS folder (#14) Cleared unused testing fits files. Added tests scripts. Updated test codes, fixed omp bugs. --- tests/FITS/UITfuv2582gc.fits | 108 -- tests/FITS/WFPC2u5780205r_c0fx.fits | 1814 --------------------------- tests/FITS/multi_private.cpp | 9 +- tests/FITS/multi_private.sh | 5 + tests/FITS/multiple.cpp | 30 +- tests/FITS/multiple.sh | 7 + tests/FITS/pixel_loader.cpp | 337 ----- tests/FITS/setup.sh | 3 - tests/FITS/simple.sh | 6 + tests/FITS/simple_loader.cpp | 12 +- 10 files changed, 31 insertions(+), 2300 deletions(-) delete mode 100644 tests/FITS/UITfuv2582gc.fits delete mode 100644 tests/FITS/WFPC2u5780205r_c0fx.fits create mode 100755 tests/FITS/multi_private.sh create mode 100755 tests/FITS/multiple.sh delete mode 100644 tests/FITS/pixel_loader.cpp delete mode 100755 tests/FITS/setup.sh create mode 100755 tests/FITS/simple.sh diff --git a/tests/FITS/UITfuv2582gc.fits b/tests/FITS/UITfuv2582gc.fits deleted file mode 100644 index 2c83929d..00000000 --- a/tests/FITS/UITfuv2582gc.fits +++ /dev/null @@ -1,108 +0,0 @@ -SIMPLE = T / FLIGHT22 05Apr96 RSH BITPIX = 16 / SIGNED 16-BIT INTEGERS NAXIS = 2 / 2-DIMENSIONAL IMAGES NAXIS1 = 512 / SAMPLES PER LINE NAXIS2 = 512 / LINES PER IMAGE EXTEND = T / FILE MAY HAVE EXTENSIONS DATATYPE= 'INTEGER*2' / SAME INFORMATION AS BITPIX TELESCOP= 'UIT ' / TELECOPE USED INSTRUME= 'INTENSIFIED-FILM' / DETECTOR USED OBJECT = 'NGC4151 ' / TARGET NAME OBJECT2 = '_ ' / ALTERNATIVE TARGET NAME CATEGORY= 'FLIGHT ' / TARGET CATEGORY JOTFID = '8116-14 ' / ASTRO MISSION TARGET ID IMAGE = 'FUV2582 ' / IMAGE NUMBER ORIGIN = 'UIT/GSFC' / WHERE TAPE WRITTEN ASTRO = 2 / ASTRO MISSION NUMBER FRAMENO = 'b0582 ' / ANNOTATED FRAME NUMBER CATHODE = 'CSI ' / IMAGE TUBE PHOTOCATHODE FILTER = 'B1 ' / CAMERA/FILTER IDENTIFIER PDSDATIM= '06-JUL-1995 07:20' / MICRODENSITOMETRY DATE & TIME PDSID = 21 / MICRODENSITOMETER IDENT PDSAPERT= 20 / MICROD. APERTURE, MICRONS PDSSTEP = 10 / MICROD. STEP SIZE, MICRONS PIXELSIZ= 8.0000000E+01 / CURRENT PIXEL SIZE, MICRONS EQUINOX = 2.0000000E+03 / EQUINOX OF BEST COORDINATES NOMRA = 182.0044 / 1950 I.P.S. R.A., DEGREES NOMDEC = 39.6839 / 1950 I.P.S. DEC., DEGREES NOMROLL = 323.9500 / I.P.S. ROLL ANGLE NOMSCALE= 5.6832500E+01 / NOMINAL PLATE SCL (ARCSEC/MM) CALIBCON= 5.00000E-16 / PREFLIGHT LAB CALIB FOR CAMERA FEXPTIME= '8355 ' / EXPOSURE TIME, APPLICABLE FRM DATE-OBS= '13/03/95' / DATE OF OBSERVATION (GMT) TIME-OBS= 6.2728000E+00 / TIME OF OBS (HOURS GMT) BSCALE = 2.0587209E-16 / CALIBRATION CONST BUNIT = 'ERGS/CM**2/S/ANGSTRM' BZERO = 0.00000 / ADDITIVE CONST FOR CALIB. PATCHFIL= 'PATCH2 ' / FILE WITH PATCH INFORMATION FADJPROG= 'UITBAK ' / FOG ADJUSTMENT PROGRAM FADJVER = '2.1 ' / FOG ADJUSTMENT PROGRAM VERSION FADJDTIM= 'Jul 22,1996 12:53:24' FOGLL = 2.8988638E+02 / LOWER LEFT CORNER FOG FOGLLERR= 3.9720482E+01 / LOWER LEFT CORNER FOG ERROR FOGLR = 2.8807239E+02 / LOWER RIGHT CORNER FOG FOGLRERR= 3.9098114E+01 / LOWER RIGHT CORNER FOG ERROR FOGUL = 2.9494131E+02 / UPPER LEFT CORNER FOG FOGULERR= 4.0041096E+01 / UPPER LEFT CORNER FOG ERROR FOGUR = 2.8711835E+02 / UPPER RIGHT CORNER FOG FOGURERR= 3.8879002E+01 / UPPER RIGHT CORNER FOG ERROR EXPTIME = 8.3199997E+01 / EXPOSURE TIME, SECONDS FEXPNOTE= 'Fb40 ' / EXPOSURE TIME ANNOTATION EXPTMSRC= 'PREVFRAME' / SOURCE OF EXPTIME VALUE CRPIX1 = 2.5650000E+02 / REF. PIXEL, X, CENTER ORIGIN CRPIX2 = 2.5650000E+02 / REF. PIXEL, Y, CENTER ORIGIN CRVAL1 = 1.8265300E+02 / R. A., DEGREES, OF REF. PIXEL CRVAL2 = 3.9375320E+01 / DEC., DEGREES, OF REF. PIXEL CTYPE1 = 'RA---TAN' / COORDINATE TYPE CTYPE2 = 'DEC--TAN' / COORDINATE TYPE UNDISTRT= T / HAS THE IMAGE BEEN UNDISTORTED? CD1_1 = -1.2629445E-03 / SDAS-COMPATIBLE: DL/DX CD2_1 = 0.0000000E+00 / DM/DX CD1_2 = 0.0000000E+00 / DL/DY CD2_2 = 1.2629445E-03 / DM/DY BDRSTREM= 'FLIGHT22' / DATA REDUCTION STREAM IDENT PREDECES= 4275 / ENTRY OF PREVIOUS STEP LOGENTRY= 4281 / ENTRY IN BDR LOG HDCURVID= 'CALIB5 ' / CHARACTERISTIC CURVE IDENT FFID = 'FUV1V032' / FLAT FIELD IDENTIFIER FFSCALE = 253.769 / FLAT FIELD SCALE FACTOR CAMSCALE= 1.72E-16 / BASIC CAMERA CALIB. CONSTANT FILTFAC = 1.0 / AREA UNDER FILTER CURVE CALIBVER= '20-MAR-1996 LANDSMAN, USING ASTRO2 DATA' SHRINK = 2 / BOX-AVERAGE FACTOR ON INPUT BDRDATIM= 'Jul 22,1996 13:13:19' BDRIPRG = 'BDRON4 ' / CHAR. CURVE/FLAT-FIELD PROGRAM BDRIVER = '2.0 ' / CHAR. CURVE/FLAT-FIELD PROG VERS TIMEFAC = 1.5560098E+00 / T^0.1 PICSCAL0= 2.0673078E-18 / CAMSCALE*FILTFAC/EXPTIME PICSCALE= 3.2167511E-18 / CAMSCALE*FILTFAC*TIMEFAC/EXPTIME RADECSYS= 'FK5 ' / WORLD COORDINATE FRAME A_NMATCH= 4 / NUM OF ASTROM STDS MATCHED AX_RESID= 3.0000001E-01 / RMS ASTROM RESIDUALS (PIXELS): AY_RESID= 3.0000001E-01 / <0 MEANS DEFAULT SOLUTION HISTORY Jul 22,1996 13:13:21 ASTROM FROM BDR STREAM FLIGHT21 HISTORY Jul 22,1996 13:13:21 ASTROMETRY WAS THEN DONE BY UITCA2 HISTORY Jul 22,1996 13:13:21 VERSION 2.5 HISTORY Jul 22,1996 13:13:21 AT DATE AND TIME Jul 18,1995 17:41:19 VARCURVE= 'CALIB5 ' / VARIANCE FUNCTION IDENT PHT1PROG= 'UITPH1 ' / POINT SOURCE PHOTOMETRY PROGRAM PHT1VER = '4.4 ' / UITPH1 VERSION PHT1DTIM= 'Jul 22,1996 13:21:36' FWHM = 5.0000000E+00 / FWHM OF DETECTION FILTER IMIN = 30 / MINIMUM SIGNAL FOR DPFIND IMAX = 20000 / MAXIMUM SIGNAL FOR DPFIND APR = 3 / NUMBER OF PHOTOMETRY APERTURES APR1 = 3.0000000E+00 / RADIUS OF 1ST APERTURE APR2 = 2.0000000E+00 / RADIUS OF 2ND APERTURE APR3 = 7.0000000E+00 / RADIUS OF 3RD APERTURE SKYIN = 1.5000000E+01 / INNER RADIUS OF SKY ANNULUS SKYOUT = 2.5000000E+01 / OUTER RADIUS OF SKY ANNULUS BADLO = -1.0000000E+02 / LOWEST GOOD PIXEL VALUE BADHI = 2.0000000E+04 / HIGHEST GOOD PIXEL VALUE RCRIT = 9.9000000E+02 / RADIUS OF IMAGE CIRCLE USED SKWFAC = 2.0000000E-01 / PARAMETER FOR TRIMMING SKY LIMSKW = 15 / VALUE <= WHICH SKWFAC APPLIES MEALIM = -9.9990002E+02 / VALUE <= WHICH MEAN SKY USED SV_NAX1 = 2048 / X DIMENSION OF ORIGINAL IMAGE SV_NAX2 = 2048 / Y DIMENSION OF ORIGINAL IMAGE ASTRPROG= 'UITCA2 ' / ASTROMETRY PROGRAM NAME ASTRVER = '2.5 ' / ASTROMETRY PROGRAM VERSION ASTRDTIM= 'Jul 22,1996 14:16:55' HISTORY Jul 22,1996 14:16:55 ASTROMETRY. COPIED FROM IMAGE FUV2583 NHEDATIM= 'Jul 22,1996 16:05:36' NHEDPRG = 'NEWHED ' / HEADER ATTACHMENT PROGRAM NHEDVER = '3.1 ' / HEADER ATTACH. PROG. VERSION GEOMPROG= 'UITGE2 ' / ROTATION/RESAMPLING PROGRAM GEOMVER = '3.1 ' / GEOM PROGRAM VERSION GEOMDTIM= 'Jul 22,1996 16:11:19' SV001001= 6.9340203E-05 / ORIGINAL CD00M00N: DL/DX SV001002= -3.1189100E-04 / DL/DY SV002001= -3.0647300E-04 / DM/DX SV002002= -6.6140099E-05 / DM/DY SVPIX1 = 1.0245000E+03 / ORIGINAL REFERENCE PIXEL X SVPIX2 = 1.0245000E+03 / ORIGINAL REFERENCE PIXEL Y SVVAL1 = 1.8265289E+02 / ORIGINAL R.A. OF REF. PIXEL SVVAL2 = 3.9375599E+01 / ORIGINAL DEC. OF REF. PIXEL SVCTYPE1= 'RA--UIT2' / COORDINATE TYPE SVCTYPE2= 'DEC-UIT2' / COORDINATE TYPE BXAVDTIM= 'Jul 22,1996 16:19:19' BXAVPROG= 'UITBXA ' / ROTATION/RESAMPLING PROGRAM BXAVVER = '2.4 ' / RESAMPLING PROGRAM VERSION BXAVFAC = 4 / BOX-AVERAGE FACTOR FOR SMALL VER END  W-#At \=^WPO[iecjkly "4  -!_*wpy=KCGEJRQJSea`epoq}y`  + -SVeYc}|JfF9:==@HKEDSTR_f]eqnon}yu    - &/RgnCF4035<78=DADGCBQST\cd\inghz}vswkno* !W$3X6'(*&.124<69:A?BKJJNQPSec^hmhfszsjopm f> - '= %&#)*++.31967>?@CNKGKSVP\\bdmlmlo^{{dzdS.)1 #~Y< - -  ~"""$%()*25533;6=?BEHLLMYRSV]^cnnjq\Ol`a%7P=01fI5 -R -##&$)+--102176:=ACFMOJNUTQccdj_SliN]FbfcnQF6p]@/ -  +3C!#%),)+/-..577>BDCKIHKTWQ_HP]ZId=sr|rd`DWH{gF.  - -v#'',,/+0+/4648?BAEGCHEDGSI\~ Nalkys_eFC7.$~V- - -M "&((-)).--/265:=;>77>EGrml{m|zzrWP`nPM;='*v< - &C %(',.)+.-3302/304?] X}kl|}]wbRUD:<* H  -w !%&*%*))&+.*&2R>qx|vofYoaYy^@@/a( I$!&%$%%#-I,qx|go{rhqk]RJZlD_u1 -   - -   %<!*C.JYe\hoi]zocj]isrRX; - -   e,VG>ZLQ>VH]YYXXCXhiZP;  - - -  -  ;u*=07(8=EI5:EL?BZG'; - - "*%$ " - -  Ys,(+-$51/77v9   - -   -&/7/363) - - -F[q* %o.    #,5@H><=0.1') (ARg -Y$ - -  - !6DFF4EGJ/33.%% - 0:O]so> - - - -    ?TI?CB:5,43.'*#%" -  !0;KWF4 - -  - - *39AE<@<05.0/+(&(&    %3<>E@<;0..)-(%  ".8?@?:7.,-)&" .>B@?60)(&## "!!&!  -   .6(*+)++% " !!!  -! #%'",(%#!  - #   -  -  -    - - -(-!  ./) -92)!+/(#.;7/( - - 9DA>62/'(& *C76/  (FQRMJICCHI[;!BA;6# 'MZ_STVXUTf~47`' >B@;( - -Qcfe_^\[bo8K.":MDB1 - ,WgdkgbdeerNmC<".LJD4 jlgkklno|2 L W%)QIJ?)intqv4 x?f'&GPLI,pv|D1? 2 A-'@WNK3 -09#$14!H - h-$6VOP3 02K,LH'   / h8%/OSR;H16QN<6KBS!H(  C%'LUUC'2LMQHH@"9/19L1/-0P'(GVTD* -LSKmLHP;`4&<<<8&( -Bu.%<\ZS- -b@ufQS2;V9.OD13`3$2TYT9$o:6eXC I]`zV8v/C:9: B++Q^Z?) xWZ%o cI:aH>)VF.#V,'K]TD.  lz_:P_VPYCBA7C>'eq2'?YXM2#:z}qDQN@=(.:)8aX[:$6FLNcJ/Z_,@K5 -B*.X[_?%Kh{ufDO;/+?3M+-VZ]F(!{sXFG\3 Eb,'H]aL,poN4BFfYK/C# a&!9a[Q1 T^j{ml{T_6*1Z]X/ - _LNS898&U_V0 -~mXZye>, C#P^T8 urD.`9YY#";UT7c[CIH3$ #4TI70*8miKU5<!U8&z |/,LE0rMnhIPa4(/0$:(:#C@. {WOoL]7iPHw@023O;20%u\IViEjWGJGHk*hZh/25*QZP~jt\DQTKEE(Wg$$00( -r0,MN?3 daXh)4;%/1* @;3`U*=K6(B-A02),* ?A&X.=R0;A(?B03" <#-& '$ ;?Pt-?0JL</H##5G* S,dN)0>cq!\D -a' IoRQ -/xUT_c>8=vlXfRvwquC$S"sT8 )  -ej-u9 aulrg  ~]O[elee{ " dJ?GHIgseU  " +(5?>dvymtt[uc ) - -/)1YtuObzzVoqsh' - - !D9Cj_Gsjbwh4n;seJy'    C2[PHWSaz7CO-uf5h!  -  NNS.O,\K!`   $0/EA8L   "8w} y4 -  -^ /~0 -C3,<%,! -'I3  - '\=#EjB& -   -*qF:P0+%<bA3)  b7RYW4K93&WnL8*+"  - ;DEN!& -,vVF81'$     <2&#$(!3 ]G:60.'! IB<"JnbF=561,,$!-9.% - ";*Ci aN@974-*%"! "".GRJL?+  ''pPC;4/.*'&%!#+:Wy`N:.  -6pRM>;71,-%('$.@gwcQ=+ YJ@=871,+(((.Gpn^LA6# -;932-,*-+.Gyup[VPJ=!2-+-)-4Isja_^B'+),7MqnibJ(  -6Rxul`D%|xmW5 xkN7 }oO( oO) $     -  - '&#"=\=# %n- %T( - &62#      -      !(! #!#$% $!#-$   '+&2. - %!$." (/93 ' -42635-%) -  -&481'$$ +# 05( *+"!%&# )2!(+.--**# - -!)&! - !+* "!#"$ -$/$   - -'&    - "     -     !& -$)''' - !,(  (-#" %/. &,!.54#   -$0&  !-520,   - +/ !%!$($  \ No newline at end of file diff --git a/tests/FITS/WFPC2u5780205r_c0fx.fits b/tests/FITS/WFPC2u5780205r_c0fx.fits deleted file mode 100644 index cbe0da74..00000000 --- a/tests/FITS/WFPC2u5780205r_c0fx.fits +++ /dev/null @@ -1,1814 +0,0 @@ -SIMPLE = T / file does conform to FITS standard BITPIX = -32 / number of bits per data pixel NAXIS = 3 / number of data axes NAXIS1 = 200 / length of data axis 1 NAXIS2 = 200 / length of data axis 2 NAXIS3 = 4 / length of data axis 3 EXTEND = T / FITS dataset may contain extensions COMMENT FITS (Flexible Image Transport System) format is defined in 'AstronomyCOMMENT and Astrophysics', volume 376, page 359; bibcode: 2001A&A...376..359H BSCALE = 1.0E0 / REAL = TAPE*BSCALE + BZERO BZERO = 0.0E0 / OPSIZE = 2112 / PSIZE of original image ORIGIN = 'STScI-STSDAS' / Fitsio version 21-Feb-1996 FITSDATE= '2004-01-09' / Date FITS file was created FILENAME= 'u5780205r_cvt.c0h' / Original filename ALLG-MAX= 3.777701E3 / Data max in all groups ALLG-MIN= -7.319537E1 / Data min in all groups ODATTYPE= 'FLOATING' / Original datatype: Single precision real SDASMGNU= 4 / Number of groups in original image CRVAL1 = 182.6311886308 CRVAL2 = 39.39633673411 CRPIX1 = 420. CRPIX2 = 424.5 CD1_1 = -1.067040E-6 CD1_2 = -1.259580E-5 CD2_1 = -1.260160E-5 CD2_2 = 1.066550E-6 DATAMIN = -7.319537E1 / DATA MIN DATAMAX = 3.777701E3 / DATA MAX MIR_REVR= T ORIENTAT= -85.16 FILLCNT = 0 ERRCNT = 0 FPKTTIME= 51229.798574 LPKTTIME= 51229.798742 CTYPE1 = 'RA---TAN' CTYPE2 = 'DEC--TAN' DETECTOR= 1 DEZERO = 316.6452 BIASEVEN= 316.6715 BIASODD = 316.6189 GOODMIN = -5.064006 GOODMAX = 2552.17 DATAMEAN= 0.4182382 GPIXELS = 632387 SOFTERRS= 0 CALIBDEF= 1466 STATICD = 0 ATODSAT = 16 DATALOST= 0 BADPIXEL= 0 OVERLAP = 0 PHOTMODE= 'WFPC2,1,A2D7,LRF#4877.0,,CAL' PHOTFLAM= 3.447460E-16 PHOTZPT = -21.1 PHOTPLAM= 4884.258 PHOTBW = 20.20996 MEDIAN = -0.175651 MEDSHADO= -0.121681 HISTWIDE= 1.033711 SKEWNESS= -1.983727 MEANC10 = 0.12958 MEANC25 = 0.3129676 MEANC50 = 0.4577668 MEANC100= 0.3916293 MEANC200= 0.3115222 MEANC300= 0.3295493 BACKGRND= -0.3676353 ORIGIN = 'NOAO-IRAF FITS Image Kernel December 2001' / FITS file originator DATE = '2004-01-09T03:26:36' IRAF-TLM= '03:26:36 (09/01/2004)' FILETYPE= 'SCI ' / type of data found in data file TELESCOP= 'HST' / telescope used to acquire data INSTRUME= 'WFPC2 ' / identifier for instrument used to acquire data EQUINOX = 2000.0 / equinox of celestial coord. system / WFPC-II DATA DESCRIPTOR KEYWORDS ROOTNAME= 'u5780205r' / rootname of the observation set PROCTIME= 5.301314019676E+04 / Pipeline processing time (MJD) OPUS_VER= 'OPUS 14.5a ' / OPUS software system version number CAL_VER = ' ' / CALWP2 code version / SCIENCE INSTRUMENT CONFIGURATION MODE = 'FULL' / instr. mode: FULL (full res.), AREA (area int.)SERIALS = 'OFF' / serial clocks: ON, OFF / IMAGE TYPE CHARACTERISTICS IMAGETYP= 'EXT ' / DARK/BIAS/IFLAT/UFLAT/VFLAT/KSPOT/EXT/ECAL CDBSFILE= 'NO ' / GENERIC/BIAS/DARK/PREF/FLAT/MASK/ATOD/NO PKTFMT = 96 / packet format code / FILTER CONFIGURATION FILTNAM1= 'FR533P15' / first filter name FILTNAM2= ' ' / second filter name FILTER1 = 69 / first filter number (0-48) FILTER2 = 0 / second filter number (0-48) FILTROT = 15.0 / partial filter rotation angle (degrees) LRFWAVE = 4877.000000 / linear ramp filter wavelength / INSTRUMENT STATUS USED IN DATA PROCESSING UCH1CJTM= -88.2569 / TEC cold junction #1 temperature (Celsius) UCH2CJTM= -88.6697 / TEC cold junction #2 temperature (Celsius) UCH3CJTM= -88.3028 / TEC cold junction #3 temperature (Celsius) UCH4CJTM= -88.7671 / TEC cold junction #4 temperature (Celsius) UBAY3TMP= 13.2302 / bay 3 A1 temperature (deg C) KSPOTS = 'OFF' / Status of Kelsall spot lamps: ON, OFF SHUTTER = 'A' / Shutter in place at beginning of the exposure ATODGAIN= 7.0 / Analog to Digital Gain (Electrons/DN) / RSDP CONTROL KEYWORDS MASKCORR= 'COMPLETE' / Do mask correction: PERFORM, OMIT, COMPLETE ATODCORR= 'COMPLETE' / Do A-to-D correction: PERFORM, OMIT, COMPLETE BLEVCORR= 'COMPLETE' / Do bias level correction BIASCORR= 'COMPLETE' / Do bias correction: PERFORM, OMIT, COMPLETE DARKCORR= 'COMPLETE' / Do dark correction: PERFORM, OMIT, COMPLETE FLATCORR= 'SKIPPED ' / Do flat field correction SHADCORR= 'OMIT ' / Do shaded shutter correction DOSATMAP= 'OMIT ' / Output saturated pixel map DOPHOTOM= 'COMPLETE' / Fill photometry keywords DOHISTOS= 'OMIT ' / Make histograms: PERFORM, OMIT, COMPLETE OUTDTYPE= 'REAL ' / Output image datatype: REAL, LONG, SHORT / CALIBRATION REFERENCE FILES MASKFILE= 'uref$f8213081u.r0h ' / name of the input DQF of known bad pixels ATODFILE= 'uref$dbu1405iu.r1h' / name of the A-to-D conversion file BLEVFILE= 'ucal$u5780205r.x0h ' / Engineering file with extended register daBLEVDFIL= 'ucal$u5780205r.q1h ' / Engineering file DQF BIASFILE= 'uref$j9a1612mu.r2h' / name of the bias frame reference file BIASDFIL= 'uref$j9a1612mu.b2h' / name of the bias frame reference DQF DARKFILE= 'uref$j2g1549cu.r3h' / name of the dark reference file DARKDFIL= 'uref$j2g1549cu.b3h' / name of the dark reference DQF FLATFILE= 'uref$f4i1559cu.r4h' / name of the flat field reference file FLATDFIL= 'uref$f4i1559cu.b4h' / name of the flat field reference DQF SHADFILE= 'uref$e371355eu.r5h' / name of the reference file for shutter shaPHOTTAB = 'u5780205r_c3t.fits' / name of the photometry calibration table GRAPHTAB= 'mtab$n9i1408hm_tmg.fits' / the HST graph table COMPTAB = 'mtab$nc809508m_tmc.fits' / the HST components table / DEFAULT KEYWORDS SET BY STSCI SATURATE= 4095 / Data value at which saturation occurs USCALE = 1.0 / Scale factor for output image UZERO = 0.0 / Zero point for output image / READOUT DURATION INFORMATION READTIME= 464 / Length of time for CCD readout in clock ticks / PLANETARY SCIENCE KEYWORDS PA_V3 = 49.936909 / position angle of V3-axis of HST (deg) RA_SUN = 3.337194516616E+02 / right ascension of the sun (deg) DEC_SUN = -1.086675160382E+01 / declination of the sun (deg) EQNX_SUN= 2000.0 / equinox of the sun MTFLAG = F / moving target flag; T if it is a moving target EQRADTRG= 0.000000 / equatorial radius of target (km) FLATNTRG= 0.000000 / flattening of target NPDECTRG= 0.000000 / north pole declination of target (deg) NPRATRG = 0.000000 / north pole right ascension of target (deg) ROTRTTRG= 0.000000 / rotation rate of target LONGPMER= 0.000000 / longitude of prime meridian (deg) EPLONGPM= 0.000000 / epoch of longitude of prime meridian (sec) SURFLATD= 0.000000 / surface feature latitude (deg) SURFLONG= 0.000000 / surface feature longitude (deg) SURFALTD= 0.000000 / surface feature altitude (km) / PODPS FILL VALUES PODPSFF = 0 / 0=(no podps fill); 1=(podps fill present) STDCFFF = 0 / 0=(no st dcf fill); 1=(st dcf fill present) STDCFFP = '0x5569' / st dcf fill pattern (hex) RSDPFILL= -100 / bad data fill value for calibrated images / EXPOSURE TIME AND RELATED INFORMATION UEXPODUR= 300 / commanded duration of exposure (sec) NSHUTA17= 1 / Number of AP17 shutter B closes DARKTIME= 3.000000000000E+02 / Dark time (seconds) UEXPOTIM= 16880 / Major frame pulse time preceding exposure startPSTRTIME= '1999.051:19:08:37 ' / predicted obs. start time (yyyy.ddd:hh:mm:ss) PSTPTIME= '1999.051:19:16:37 ' / predicted obs. stop time (yyyy.ddd:hh:mm:ss) / EXPOSURE INFORMATION SUNANGLE= 141.618347 / angle between sun and V1 axis MOONANGL= 126.698997 / angle between moon and V1 axis SUN_ALT = -31.523479 / altitude of the sun above Earth's limb FGSLOCK = 'FINE ' / commanded FGS lock (FINE,COARSE,GYROS,UNKNOWN) DATE-OBS= '1999-02-20' / UT date of start of observation (yyyy-mm-dd) TIME-OBS= '19:03:13' / UT time of start of observation (hh:mm:ss) EXPSTART= 5.122979390428E+04 / exposure start time (Modified Julian Date) EXPEND = 5.122979737650E+04 / exposure end time (Modified Julian Date) EXPTIME = 3.000000000000E+02 / exposure duration (seconds)--calculated EXPFLAG = 'NORMAL ' / Exposure interruption indicator / TARGET & PROPOSAL ID TARGNAME= 'NGC4151 ' / proposer's target name RA_TARG = 1.826355000000E+02 / right ascension of the target (deg) (J2000) DEC_TARG= 3.940576666667E+01 / declination of the target (deg) (J2000) ECL_LONG= 164.096619 / ecliptic longitude of the target (deg) (J2000) ECL_LAT = 36.623709 / ecliptic latitude of the target (deg) (J2000) GAL_LONG= 155.079532 / galactic longitude of the target (deg) (J2000) GAL_LAT = 75.062679 / galactic latitude of the target (deg) (J2000) PROPOSID= 8019 / PEP proposal identifier PEP_EXPO= '02-030 ' / PEP exposure identifier including sequence LINENUM = '02.030 ' / PEP proposal line number SEQLINE = ' ' / PEP line number of defined sequence SEQNAME = ' ' / PEP define/use sequence name HISTORY MASKFILE=uref$f8213081u.r0h MASKCORR=COMPLETED HISTORY PEDIGREE=INFLIGHT 01/01/1994 - 15/05/1995 HISTORY DESCRIP=STATIC MASK - INCLUDES CHARGE TRANSFER TRAPS HISTORY BIASFILE=uref$j9a1612mu.r2h BIASCORR=COMPLETED HISTORY PEDIGREE=INFLIGHT 29/08/98 - 21/08/99 HISTORY DESCRIP=not significantly different from j6e16008u. HISTORY DARKFILE=uref$j2g1549cu.r3h DARKCORR=COMPLETED HISTORY PEDIGREE=INFLIGHT 16/02/1999 - 16/02/1999 HISTORY DESCRIP=Pipeline dark: 120 frame superdark with hotpixels from HISTORY 16/02/99 HISTORY FLATFILE=uref$f4i1559cu.r4h FLATCORR=SKIPPED HISTORY PEDIGREE=DUMMY 18/04/1995 HISTORY DESCRIP=All pixels set to value of 1. Not flat-fielded. HISTORY PC1: bias jump level ~0.100 DN. HISTORY The following throughput tables were used: HISTORY crotacomp$hst_ota_007_syn.fits, crwfpc2comp$wfpc2_optics_006_syn.fits,HISTORY crwfpc2comp$wfpc2_lrf_004_syn.fits[wave#], HISTORY crwfpc2comp$wfpc2_dqepc1_005_syn.fits, HISTORY crwfpc2comp$wfpc2_a2d7pc1_004_syn.fits, HISTORY crwfpc2comp$wfpc2_flatpc1_003_syn.fits HISTORY The following throughput tables were used: HISTORY crotacomp$hst_ota_007_syn.fits, crwfpc2comp$wfpc2_optics_006_syn.fits,HISTORY crwfpc2comp$wfpc2_lrf_004_syn.fits[wave#], HISTORY crwfpc2comp$wfpc2_dqewfc2_005_syn.fits, HISTORY crwfpc2comp$wfpc2_a2d7wf2_004_syn.fits, HISTORY crwfpc2comp$wfpc2_flatwf2_003_syn.fits HISTORY The following throughput tables were used: HISTORY crotacomp$hst_ota_007_syn.fits, crwfpc2comp$wfpc2_optics_006_syn.fits,HISTORY crwfpc2comp$wfpc2_lrf_004_syn.fits[wave#], HISTORY crwfpc2comp$wfpc2_dqewfc3_005_syn.fits, HISTORY crwfpc2comp$wfpc2_a2d7wf3_004_syn.fits, HISTORY crwfpc2comp$wfpc2_flatwf3_003_syn.fits HISTORY The following throughput tables were used: HISTORY crotacomp$hst_ota_007_syn.fits, crwfpc2comp$wfpc2_optics_006_syn.fits,HISTORY crwfpc2comp$wfpc2_lrf_004_syn.fits[wave#], HISTORY crwfpc2comp$wfpc2_dqewfc4_005_syn.fits, HISTORY crwfpc2comp$wfpc2_a2d7wf4_004_syn.fits, HISTORY crwfpc2comp$wfpc2_flatwf4_003_syn.fits CTYPE3 = 'GROUP_NUMBER' / Extra dimension axis name CD3_3 = 1 / CD3_1 = 0 / CD1_3 = 0 / CD2_3 = 0 / CD3_2 = 0 / END ū?jÛ?]WO??[ٮ?` ɑn]?Oa?y࿊?WH?Yc?L?C>?XPH?rsĿjt#K!y?1wA -?[?-$n?G>?@Z>Lme.ܿ?TX%Jf2?qz?R>F ~:ri?8^h?"3?Ⱦ)%?H~|?QD?5s;Rؾk?ۂF?Ao#fW>9YѼ?LÌat龖cT]@\%R'ſ̹?N?SJbu?,?[B8?4Aj3D?X?3G2?6??O:վD!w?4m3t?8dM5znk:?:/?ZH?V?0Va琿t?rc~?u?^ֺ_F?rq3J?Ƅ ->-P?eJ@:<6;)D?iHa="?\?-#\Q؈V־p_Twj??m6kZݎ?2?Rlȿ7"mƾd[ž&ۉ?WXƿ?E?Ig^?Hs?18?C0?YE|ʾn̾|WUf?Xs?J4?jf?|7?FfKU>?P߼V?b9?ܶ?KuUI:? ?Y_(+?L[?Y~?`?3Q@fֽu/@f?[@0?Vi[?"?BE8?:Ѭz'~ ??K?Pj?@[ܾ/Z?!Zy=.?e?@Z?B4?4b&?:?Y迋GƾemYQhU9ӤMz;?COӾ?6 -~iʾz=?Js?OG?v??N޾wۿ?Ήȟ ǿO?IVHƾRwP?C?vG b?S0۹@i?=>ɿ؋v?8 ?"?15?S^?+}M|OU?' -7?:{?0s?q?.`:D?E}?2 -t?D @?BK?Gܾ.?5!?C1Dc=?Xp`?5r~>!H .?#|5?NUg|?Bjn!?dLD3 KBxV?Lϗ?k$R!F?.>?<̉ -?(oV;z?\|+wK?6غa?-)mlmE?7l?^]\?-?`հonEq4x?Enྣ7j?cU?2+o?;?5v?0eszw?0WU?""??>Yڼ'?IE0?3? -?`^C$?Zq4锾)T,?I#6@co?L?dp?I }?`_@ۿܯ?}?F?6Olc?;W?V?5G%{?,|?g[ʇھai@9 dYQx ? -?/X?3-Y 44־eV6?Blv?/Z\l?2-2&???V}LYe>?Vx_c?+;zoY?,`X(?Bn̾g^?u,^-B_?=? -`PO?o?XqϾR?Dᖽj]?wz?Z8P>?m BV޿qa%/?rD?iʾc?@a??h?ى]>x?Q@U?_?Ń?4`xe?CE?7?q5\+PG?+=ؽ>J?BL°8o`N8ҽ{?PN -@?#⾎pῑ@,L?M~޾Hp5h.?Wr?5$u|j?6Wl:+?P??1)?Kat?mھ^\b?= -KP1 ;鿈 -?6뿘j]n1TɟsuD?=QlY?S!,[< 0?W"4oS?61?GS?d (?R?K$?Er?^?84?L󳿓ba,?:\?AB_ە?BXھt?8 ݥ?Ct.h?i+?LkĈ?N辜m ?;?=?7c<>?{s=g3Br1xl?@?9ۂ?7^*?JM~:?'?-X??3-?~DV?6e?E?;bBB?,\f:?@ؾm1?*L>]F7Yʾ| fE?2Hk7 nAlH&aſe@El`T??LVԿ?KT'G,??^:0h-<񿭉bB;ο?ZBVK.?!\Mþ'Ծ۶/?Vs O ??BοpQ?4Ta?ns?JGӽsR2$?8c\ab?7?=?7_?6zd???<?j ~{ ?B\?Fu{:?rgM1:rz?MLf?U\?RZI+YV<{Y]X-q*;ݠ?O B?+s6?C3ʿʹ~#Vx?8Z?=P7?1or?r*@2?Lm?##ҽ hT?=:*?b0 -?g-?3e?X5뿅=:?;FX?)yN?R?:zD??Go_?70ݚ3#?H[ @?"c?V?1:??2?"O?RQp=Q -?Dվ -?_a?[?`RX8~_nWĿ꾙#ھ"R?5 -AtJ[%?<?-n 澋?C1?0J{I߼|?Ċ?zKmpd?p俕邾OGhǾJe?BȽȍ?G>{?apп% -A?Xۿv?]@?8E&?RA?5:{?PVIY?_?S%I/rx]vM?Fo=M޿swH?G?Sr?6m|?>WYy??>?3 -?>!?C6&8 -Mg,|_??E>?aľֿx⾐<6_?DQK׿d!5e?B?:l׿mоB?f5?d^j?Һ1QC?C䛿kVվs]?E޾&?jpj6???b\? ?Tuz{ؾ3%?/n?:6?9d?E>?ؽ?I:f?x n?kհ?n?W(??Y?5RIqa+?=?⓿? ?<?M A1+eƾrY??'e'?D8,?a?t_?6K?^%p?:S|C\S] Ľ?Fhe<ϼV7 f?EeA}?@HEHb˰g_?N?%A齬 ?PH?H ?Nǎ?5?Eg?Kн?D?p-x>fS?Sz 4 yP9B)?LI?H)^k@?T^,?+(i6?+mN???X?/?ٓ8a@?A?T!;x ?ةie?fԃ]?Cۋl|?]f&?=QX>44俐4#F%>?-w?Gw?O2*?P?U?H>?J?4p὾*1()W`??FP?HT?8>p"݇{?G2 ̾wZz$!?/;?=e.15|mZX??)q (?5?\|Բ<$ſ潜7P?a*?|+?H@U'Ay?=E|GZ,\<0?R?Gƾ/c?E2/?J2 1?9Pjv46#SR2뭚XcCi?>=ʺV? %?iPa7?S҂ -i?#껾P6Ӽp`?]B5俌:?WI콐d?Y޾:W뎽>Fھt:?FؿO۾XwDؾ @-!Lʾ]R?N2?0"?<&N侇J~?rcOBuS[8 l?b3 -{U?06HՈ?EȄ?)+ ھӟ)..?7t.(о??뇾ῠxwO˿i/myڿ>RᅫJqs^^?Eþsm>[P?Ew&?6s,hq>1I?<?߿y? N?$‾r>?["?C?+1̾M?3 {fW?+K|+že ?A/TH{? - h -?WM?+1i?9y?JB?L?Z#?,DvƾNs`ݿH\g?@>e?B -?)yt?^޾SžV>.⶿ݱ:? t&?L?9=x?M`?AT+?1uV,?eo??GsĿ+:½#0 D?l4?Af?eB?I8?XvM?Bq|?7 Ԃ?S}?6?/K3[ǟ?_,?S -־Tj16X[m?T:85"; ?W?_<&̾8?wf䳿.?Є?J%?tK侏.zw`b?6)N_?@>.?=c"x?nrU??$zO?/?WԽ %dX{&?۾(?;?ZO{?^?>b7ֻ=񻾍w?hU6??Z4?Nr?"^b?PyK?Tqb@?Qة?[=D?7?E+pJ+$.?1*?q&ξm?ֱr[VvLd?S?ƴm=By!Ԣq4?"ta8˺'=o?Ӿ67m徏>?̾z:DTDoQFCLA1}F?i?Qd)?L?:K"?M?N= 010[ ?{EZe?;ljۿ+c?PrпH鸾욿ꈂόg?P@@MȾpDǿh>=Q&j2ZP?H?F տ'F?g,Dܫz?4ȾvV?gɔяy) k2d^?Ep?4;? ?E{L?(,?8?f4?// ?#!?8,?@?5 Gc{?'s?ey#?6mxG?c?T־gs?/zB~$??m龬>@᤿U! 'ֿ?B3q?,hB?<;&g Z?"(?,8? $f?B@Fy??Sľ[ƿ6?6&F_n ?C/.?VH\--I*?3BC?;;>?Jx?BD?>H kn?Mп?qyݿsf2?5?K^?X2?.?EQ?ӽ̶?E࠽Gj?H.]?Z%%&?=,e@B?@~}?[m4XB?3j@?Ί73T>pݾ17aTh9?% -?0 5M>H 辕*ΌBWX%Zy#|D?[uJLx^x0$;(?g?>P?o-z5?LֶoB CC cA/@+o&YHU`g̾nNQq_~=?M? xC?H[&ubؾ?BH?XX?dEH?TR,?-LD?EJ}?@/?"?G-?E?'-IQ5?)xྠWPJz3a??]?S?6\?2ȿXv?S?/p7h?BIo?8N[r?8d>Ϡn?4G޿ FH%(YN#¿bDFo v?K?H?TP ?A:?am3+ͽ Q>r?-:X#о4,cD6`?@~4V?/??\0?Iw&(, ?;?T`$\?L( rZM)?Gi?FC?^%ɽGn?$ļȿZq̾WiR?;o?BE?S!Ӿ?GFuv?7?G(?M?7 rd?PkW+?4mz??Y*#?\M?0ԿAA? # -roJ?D>hx?@(?F^?D 쿊*O%ƿJ?#q?8@ j?8Ѿд?Zv?]@?c\s ?/?doƾ:?P$ $?]tJ?@}k -_TȿF?Q<0#7?X^ߓ=ܿ?(:?li?\i_?y'zuH??z 5@a?U?zvF?`e7.?D'z龁n'?4FYq]TK*?s&?Wk?@V?OؿnA?v. տvϿO?LC>\]V%pXA NFY@VZri?+KB?d?%RTj?2XiJ\(9?DZ?% p?5ֽԾho?`??DY,,m\?>Jwy%m=[?> f>?4??K]??:(ξr' ?ZO?Pп.??5 ET{?4Nh'ſsdf?* ?N#ľyZ -B?I ?:j?'?G? G?g?+nzyAa?Xcq?3Pf??3+?I/0?6?[徱ؾPտ*h?PUJh>X(j?"?C?8J2?n?A?IV?IO>XD?i뾕?-?0򾼱پr>6m,`ܽDn?6?IZ?1_??P3''?O?zp?X?fH=⾓hO?}#?CFF⿖7|O޿]@J.,~?j/P?Y`3Nt&t?LS?g?Gf"V??k|ybzd+ǿ|?C+_ r @2 -ks{?1R?QG'?.\?xTUɾ2!j?&9?{?kc9?}'?C R%WJ([ǽ~8?P4QkGiU?.#׀&?4?~?.U 6?[`?D2?-ń^?W>žTr;Q?S5ܕ)Hg?Fd,?z >h =X?2! wH??Nྐྵ ?ۮ?D?f@bK?V򾄜?["?@?TsU?++ .ž һ?GzbfG?뭾b,Gxڬ9|?3-|~?_?E?8g?㫱??/MXcf?; =qF?-y?>'<@0*?T̾F?B޾K?!ݨ5`?L0?L/gDO˾ľ?Z?$k"6?A*ҿ`?iHۂ"V>G?;*2 ;þt=`?,Ҿ _ҾSA?<7gb¾L?[t(pX;?9[!L?LAhֿ/?*?%?1:Kȿ|pNlt^?OM?V+:`srF?^n!6?EQ??A @?g?NR?_?D4?c[?T#Ͽ}῁nlIy?]Y?^^RG3*^Q?ƾ" -=?]IR?о_,U=*迉? )?=$?Kd9?aӾ???/n?`g\ׂx2 u?=i?U\?WO?;#?C3#p>U:(?N KQ ?]Dv ?iiq?&e?D|6׆>PӾ}Ž?V?D߂??q:@gt> -u?Fܱ?$N?U|u].?A$??MM?7? TPvI?;(?=-?D>s?&?N}?+?=Z;?Pf?h4]?.f??5?$:B?3@޾ؽ@%?3d?;Nm:!?$LB C?@Vxs?Yg!5":Y? yE?KB0m?FsJgt'?Re:*v?<#>C?<\ھ)&?.~O?^RKf?'lɾj`=(?@?'?H~yb?%a?AP?@?p?k ])p?q?9w㾎eҿmPO6?OؾIǕ?YP?\T?￈t?XPVG%B/4O&v?-^?8ZR?#Z=>͎?px?UjC{N?v}jڽ]C?>?`wh?;?WF?;l8ʾvL?C _;60p;˾@:l?X$?, v04-O?Y[tv|8ǽ\OZC2?L?F!˓??Q?+'6&?:v,Ia?7p?/u(?fվ?BSǾ?:h?35?B%F־{ ~?N)@?O.zpx$h_Z6пj}?]X`:?Pb?5`%c?>O?`j?;L?KV;>?$W?.?׆fWo,AN>!H@|b?Cؽ?[bEB?X),HOjPl?EZ ;{f?7?G> -v\l?Fۚ?6??NT?Kw?X*?[$q2dU߰?>0P7?>*'A^B@<?%긿?.4?E?6HvDR?qcy?7B¾&̠ -3-?1`"?Ԕgվ?I[St,d@?n&}*"?4[澨^f,l?;ƽo*(??Hb6J?VN4?l"\̽q ¾N?]>d?DlY?[m''?Dl?2^x?NA@Xd+?d?P@?L4?>M翖:?Bh8ȾN?[uެqھ?w?IZ}?bqh(8?Eh ?\ƿ -?PuRK?SߧDgL?bo]?J8I^=fP?]˪?L?6iLl2"s??/,H?&R{?>;sI?Xs8?}/tO10$CK)w?a[x?xj?N~ƿ8($?H?pоb'?,M?p?!2P4Vp!ƾ/>:??Lϣ=qS׽L|zؿ??5?Z8[3HӾq^]D?¿x?q/B7?9L0? @=Z`8$2?,)zA?!D?-?]̾;?Af?߮?3}bjn?O?'ݾG@8?W88?'|?84v2̽`a?GV?B?Y;>$2?7??1{4??_&?M@S#7J?Y(V?ȉ qb?74 >?FUC}R?4ɛ>ҫտ-?LC?4`ӡ.?,nu8%?<-ϾD) Ѕ7„X/hɾ+ 2X3?=?:Kq?5;f?ku?NYd?7h? ?6?To?MNվwʾR*?]daV.kPI9@??+|N9&I? ,?0?0?m?J?3|?5y=ž9ϳ?D&?)j?~G?O?0E?2V?C[?,ń?C[ jCMؾ(޿uOmQACt@?3B\Uk\g?3^iʽAL?W?勬i?8;~lϽ"YJd3H?M˽-Q??S{?IY?94V<3?rH:ƿc-ƿ|? ?1Ԥ?g5g?C?@?^ʂ?:AH?.̾FI?H?(O??TY񄦾4&B뿐 ?N7?<R?>?dh?) 󃾃*uD?=F?L{QSX?|??6q?4ۄ?1g'^l?-T?QCuѾƿ\?=YD?w?-e¾d?BF?8 ʾ;E\|?34X?D͋Ѿh/?뤞eF?俚 -cy?^`2h -5]?J!!??L?Kf?8Y0?5D?K ?T־<?r酾VDA ?sdi6^l?.~hOe?X3ܾM@5D? Z)?0N ?=?1Nʿl$?`#?:l`?#?-?|lQƾD>3P?6Ih^ھ(?.?뿟v D?B%@+?|>l?S?>7?<D?Le?J@?L#Wʽ?x?D?e?KpI`?J?`v?־K:`4=A >?8垾侕7Z\r?Xƾ=Q&P?G} ,4?OK"( ?GĿоppP?GOKCk-<[9?:U׾F?H -;8?j,9?`qj!d -?I??f.?h?O5"k;?>/-m@jVk?)?l+?@"?L??:R*?V6?aL?2|#b(?(6c-??94'2ҾJ>ƒ2?90-y%R7 -84?8.Kx -SE?z@WI?žB??KV?U?/&~?2¾?g ?5ٴ? v?)E0?A2N6ҿU?-?rF?Gdy@?oգ?IwоRQY?^ <Ⱦ/D' a`?<8?L}r 7?7Zٿ x??^?R?G?Kž -?Bi?!`?FþGcxF?6ݾb־z̴C9??\2&l꾧;:Ⱦ'(,+@w?S^俚¿?;>!KԾ_?29־3K1,TWzn?;E?^T?K6Y캞V;۾l)?E{?K@+ Z?K`{?j%@s?4}"?=1?y*W?`>b~m:⿰$1$7?8s|w":澀kU?b?9:>b?㕾?Ⱦ;65?Mf?Kmwd>?߬AL\(q}W?Hv@>H?8(+?,kK ľO.?A \>G0:: ?n?8v?:mpU?7?LQ>??D ?P'h_?C1?F՛?T"y8i?6\'~ȿ?S?F >m?C?DVT???6xڱG-[;_?TS@ؾ ?Xmet?f꿉t??/L?!A?MImA?.kP:?+ ?^swr?/Ҿu>??z. -?=ο?G?uZ?D2=CоHU?\](?dL|w ?=3?FVyHB>]b?nzɾ??A?f -:?Y&||+?Kab?,I?L俾/{3?==?"X?H[(۽n??P?Su~m M dKKA?qj?P??4H>ߚ|`,I?5lxK?4 -8ھѾ 8?6??.?d8"?`=?MO?8?A#?&Н?=|?9Q?_+zO0ղh?P8?7H@[?`ھKO?V?k?'`Ĝ|J\r?A25?2gο_?v?@?;'?،?=/?A依񿠞OO[O??#>˾i;?,?=Pf?Lf"?4 W??<[?IV?T;? -%(?75!?8Uf?AD}>Hi\:?F9ܿ*@窿5yv~c c?RҋT?K߽tqt??{ݤ6?g]?Q~?E1)?G? 3?w쿕 CK?ýɶ?p?H#:|?Yn -޸?Q u?U9cL ).yv?Ijbz -ԾN a?RPX&=??h??;u2 ZoF?46m$?`?Q2?kXNa/?9i*?S'ʾ$ ҿ?Bu?e?EuCʂ@G?*2?r?dp]?(%Z?=?׈F`,S?H8近j?2V?M@U?'r?)x!JxM?B?,޾C EؿU?\;;Z:?_Tb?.Hsusre*'R?ԩl?3??ʥ?Rg*P࿚?x?X8?AL+;?A} -6p`"=3?`hB?Q=2?Hr?D?+R:Qv?=r?K015ga?5?"?2ג?94z=-[O+?5 -̿MTN3=d=@B@?u[}wݾ}6?[Հ?ipM)U?W&;?nf?MJ;`?YlM?ڥ#2EbX/NE< (?Xw?J1?i*EB?N()v?}SBqĽ?LѾOx#?S6?(g\"࿧{?OD ?>Q@?;O8e%|{?&= !Ŗ#ɾaX??LBN; ?_%> *7V?/ t?@ ʌ?HMj05?Ȳ%V?K ʾk(E!W澁??/k ?> ׿i?XǾ*=\'?E%?J?^?80?R^?2?IG(?D^@7N:N>?+)nr?GھX?g Q?@?G4#?e?c@yk? @οQ?҉sDBsn?2,?W/Q:?/ݾsP`J*ȾX?`N>a ?@??GڽW?5B?fJlӽT[ֿO?2)ؾ91征Tž.(?AqMU;'O<[PkGk?O?"9?$\xǽ-A(?`¾ -|>$¾5 @RʾCAE?F SnؾA?4O]?l$ETǾ?ڽ"LZA+wf"AG$Bh6?;t>Nl?Mv?@n?}'W??N)?O??(L?F>6??=||?C `?%b~ƾ俜?X ο(N?C\` ?BO忑ޙ?1U@?A] +?O;ʽ7?L?eɾh?Unо*?=` U?S2|?9B?=7?A?:Ș?D33?R?q:` ??QOq9T쾚ASQB/?L= )Oɮ?@C]|l*O?@?~ĽF4 ?GiiLX ?In'?D>eD? ?'򾗁?T-?Z]?O~-?KD$?"5;i;J?2lC?RR?Qn?e?\p?(?6-zK?K -< ?>?dE?9%o6sv?dRξCo򈒿I?hq׾ܶ>?bW%?VJFmyx@deK, -[RlW?XXʾ J+?V=1係+?KGY?DQSW{,|뾌r22ھ*F?VοDSp|X=b?k}?:3 &`ο & ?DOF?̾?E??Kf?UVy¾<ɾ?PE?xH?? w;?ip??%Q?D?0Q?8 ?LL2 )Z10L<3D"e?C(ѽn@Ϳ?Q 3?0hpqJ) -?Rr?Q$^d?ٿ?# hU`?x?;H ns'r?7Z'?=Gܾ'|4?O??q3=?#M>n?+?BZ^)S?(?^ov?5@Ķ[ET?k\?0®?bG?vþLm?LT?:3dfui5rQ?6t/-0?9R*K޽͘?p$?B&l%@,j=cp??mQ#?v6?5?TrQcK?1w>&鐽ҁ^C?Xq߿=' 3,L?F$j?M,^澞ނ8?E^?V9T2d/,LP?K߽2b?6|B?2?}?6bF_ݾ[N?QjG?;KԾ-پI?`$@prBp?Om?8B lྠ?7ӾȐ?bMmnx&?\и;?,V$>g*7O?2|R?+"?Mq?F޾Y? l?:|??=?(?Q>u7?!%%7>䂿?:?=U?ʆ?'?f?w}?1g띞Ƈ?G}?ҾgmjW?Y޾3žG`?TnᾆaU* -?4]?%6?&?G?}UU",?1:v?Akk k?7?)hBMI=.B)  ? 0??"g?>&?DlRԾCg?0™?,㿡(?3.4?+?#2O?꾠?j?Me?9MU濛{IH7?Zz3ߣ?7@?5F?_>Ҽ?^ 7F?dv?c?~A"ni࿓tk:K?7C0I@w2*ȈP괾/潘WD%?ToF|uC?A,?v ?Q@Q?T佤s@?ns}j?v?\-G?b?Yx?:w(?඾_?J_?r;$?YK?X?@uѾr?Uؾ8D8.=ڃ?=ѽ"X?)! ?^l?A?q;?YL-?Z?]E\?A7fOH ?c<ԾS8?7?=Tf׽ "?="?`㥾7-"?B:F#ʒB?1`y?PžM# ?U׽L|;?"߂/\? ?@о࿒{Oi#?_GK,.?L?Uxl>`t܋?[剾?DXy???_?$Ђ?Qj? -?JFD%?)w 5?5ھ%?>?+?1v?\ ?QC+P?/e_>ҾL(?,i1 -e?Nj?T1?f[?4p'־/h=l?Os/9?8ؿ`?CQN^?0^z?@Y=r H,2M2?W=l?$8?W9vgpZ ?O^3?=;?8?Bٍ?>Ⱦ??\?bp?C?;}F?8?h2?A?6#"?&qj?SN?b?l?g?fdF=U !*5WE?f"o??ꪽ?ĿCC?K#?=(gC?a| ?2/?9Wzk?5H@;/Oؾ */L?S27.?K4?R21־&?&RP?TH.?W}?e?/8ꃾb?R?A?(`;?Qz???ԾF? 2\迎#6yjDj?y?U -@E?C"7麾>?0#?ڣ?^ ?^7L@?BοCr&?Pоq&?=v> S&O?U?At?pWo;?1_Gt(p;San?b ޿U -?Kzv(S&}N:w?JURxKr?EŸ;?1?<žDl?9?Kr9hG3T?U0?R2?粗?`>qeQf?_{byIn?0]?F ?2V-ѾM{?ܦ?Y8?8>;L,a.0&L?%+>Y ?9+㕾R¾L|4?99p?XXQ=[@*1?[ߐ'βg8T?'?Em{W?]TԾ"?Y ?V8?V?[[Sk?1,2\?A?1chI&Ț?pb#?TvH?lGϽ?^r?D"?W.(ٿ_?c?Ez?P?N{s<El?f㿗WNA -&?Q>owA5Ҿ?WH?Z2f|&?Ho?L?r?âfOݾP꨽Z@??N|eğ?F?Lc?1.*Ns\1?6?B]?v~ K?!a?>?=?J:B??BAb?;nM?4ta;?@X?};햿ۿv~B;?RYՏ?I߾gƿ}?We*N`j?֟⾑?օ ?G`q -b?Ny?izx>¿8_mjվZ?A?C3(@?JL?T?KAC?4?ז?I?K?l?Lサᙞ?ؽ?;ua4?CA!Iߋ?m:ƿ~G&b\)?kF?9۾!GҾNڿ?U2*a?"ni? 8=?K/u?{5޾Pr%?dh?@IIj?3AE???9+!J?3?O+3?"?!F?ZN?C%? 7㾑Ud?[?2(Tf?)0C?, -;x+24K V8z?*?Oܾ?_5e?5˾B? Eep??E@?85?ƿ aV>XHa?SԾM,?Css_yO?r+e?/`?OF?S41?C%ԽT>?qҾ?t4lſ4M?3x?Ejc%* ?u?>?<&1[?AS1n XC@W?9P(C?Oa6>?,Sݾ?6aL~>;1?b>Ŀ?P@?dW0P?u?FE?G`-4A?eB ?ob?~ B%?ݾ.?cʾ[}wWp?[# ?Wľ$_?# ps??<6l!A5hNpͯUT?^K?V[??,j":1?&?M1?Om4˽QZHB}[?Mf WP?8-{ =ξ࿒uC?<1ʾ}yߜ?E@׾|K,z>徢( ?QlT?4>h0&^2!F'l ǾJ2?0`3 ?羟?\a3q?Xtc>ાzտ*sTJQ?\ЦO?8(l#<P(L(&ٿF*u?P>:?7ཀྵN ?E3ڿh?:ݙ\ԭ?,޿*?7ƾ_?9?I[@?7%ܾ)V?}辿8?h!-zu5vs?"?=0&Y31?MV\?oHB?YH_@?6wܾnol?D<@i@B΀?+O?T⿕?aZ?J'ȿF?I!Ľ?h8?b,EAIх?j_?F*j?A?C=˾4h?((ҼmV~?"W]C?E?Ө?Oq?$ -x,Wdzv?+fھ)Ix.?Z?4o'q?DD?^U^?R5< ?]&XrTc?Q2?ASI?El-"C?62}־Dп!־𿒶/[?PbjO@q?b"!4AGSlu?? ?<(?kL0]?77_?hے?;ھphƾ:ꩿڣ?K*?IU=oeCkľ 6?2}l2e_?)QD?¾Bl?nĿ?@D9z?u5ۿ?$4?*A?%.3D_bB ?'G?,¾!?UAXܿ,o6M྄S뿒z<m?O*q6̽wh>!T6"Jjшd\F?+jD6Ͽx -9>'BUA?ICZɾ5u?"*鈿<|?4p # z ?&v?|1?<?JE$`~ ?:a1옾ſV1.-(?G򼎊P? -#O? -@Q&?,qd^UѿywW.BT|@JN?E0?j].?柲V?@j|cSz9?`lg?De?j-??uF9ʾW,Ϻd?fI*?8jG?FR -?UB?[4D> 2]fj?S9?FO29?4?S6?FpITȾ?9Vb2?I ?,Y?.`j$?H>?;w%?r1|?G?J.?DI^?B?Ҿ3 ^bhv?Tt޿t?F\*?;?NS轿? hl?AcO?~H? ؿ^ľw/: -J?P - ?Z?Mҿ@4Gn羝쾏.z?Y?料?fݷ??u?BϤ`?P=?G?B(?I[ ?cؾX -?PN?\?e?$?<_ؿ2Ҿ4a?>~Ww?IR{tJ侫?a0?/ ?6|:d~?☊>?=!]6?cFS ?{?7~`?gƿ??P?>EA@7?w7a?νLL\g6c">??7Z`?J?f+?,(Ͼش?Q-~!t?ժ? {>.>ߩd?H]x #Qſ量>ކ?"- ?('@?T?:_*v?_qm5^{b?M?O쓾vݠٿ(>'AοKgQȋR@*/+(?[ ?8k: .?BЪ?O`?4C?+,?>?eD6B?= ?#ZvY&?8gI?T??ZO?<?u֬HA?FWO?o\?JC>n?7n"_?Iv?:1?Y?#?A"|]l9i?h?FA$@>n.?_*?F쓽mo듾5vH}O?~#?8"?HbQN?VL\?McNhX a!JV%.?c!tw?S?<:?^fE־M`?r C4v̾Bx?L(M?-H俥BB?c:[2%&?AРI?zq/?FcU?+8(?,)GX?J ??AԾخѽwȜg -CY+4H?6?=t?NC ,$5?Pf2>$?R2?sM>8ڸE?`qJ?YTH7Gf](v?B$Asu?>>"Z?hp?ym@?o? pg ?p8Pt?D\bqt9?E?Y?O߿b?P9?X%?=`)ܾhF!׾W^`9nݾ|?9M4w?@%?E ;?<48Z?[:A?;@C?Hw9V?X?Nn?;߾EdzF??X?>h?̿?J,J%?Q< T t?QS?M?EEBȿ&?A;?8`z?[>a[?( |(6$?4{n -?O?"ۙ?Y;&i}?!W\?Z?I" ?%*w3Eѽ;\z!ss].C¾E`߄ -8j?4Zt㘾)Q?D[?X*1ʶ+H?[5PR?*+"޾m3rV?*~hvkd1X_Pl?Xm:y>7y?QD|Vľ^:B?[OHԾ?][?sthmS}YY;6g7\]0؊>J?gK?ZҺ?Q8?IO+?Ѿ/ ׀?.lF|HǼx?^^qt)?:d羁s<$`l>aL?7{Q̘?4?ZN?K꿜Lv5?A3yJa?Y_f?[.SAzツ ?F?U}?I?w?5b꾯_h`1s?B?,(???&~0?(X?'V˾ ?+@Mp]?G2?^?k -iD?Ǿ6?J?0?9]N1?r{zaNR2M%w[?*>?Dn?ex)m;w - `o\?H?U\v࿎ -,coO?n?p"z?=?T ?T#5/в޾.)G`:H?Lu/^?q(R?\R?n?I_?NB`?@:?a?Ye -?;?/OX'G?<4?OILY{?K?Ild:?IA?Q[$?K-l?|C?5iֿKۮbϐ?dJx@ʿ~F?*(i}?0t3IV?=M{࿝˾5Cȿ?@X ?:Iwgٽx?O?s?S?<ڽ񢿥f??7???FX?V]?ty?6a&ξn90 -"ɾNCZN?'s̾TnK?澪"?XҐ6?97?Sƿ;io?RJ?־w -|?6g3? v? k?CC3R?M?3l̿D?B~dn޿O.lh"ʛ?V?P>fBK&!,7,?BMz:?aW?8=Y:=(T "¥V/c?\1jW?@x0?۹?-ֲ?7R&7?FV7v{5,4?Q6?E"9\?XE?5鿘E??+z>^s?+?e)ia9> C.?G?bF^UHt*ӽ?GU..F?iٽ1,~?/*ڣ?AR ?y4?:]3?A?Qy?^%?b-ۉ\bl3p1?Yio(u?N?tL?a&T?Aq??Cv?6`?I?,Z|0?'Bϼݝ??6!@O?Tn? -?:ȿ~ T;?:Y?,YhYݡ?+Q"M?H|?HF8?nJ^8??H~K?H~?,a!?`6?7?OyB r9en?9޾"$9?蒿>=?S-k?Y(AB@:ѽƚؿF?H氾cȯ?]S`7?9RB0Tyw)E#??Ex~?@?ȾԽCϸ?-?D?Q&?8Y\KF?+ ?'dRwzYjܿ,wXXμI࿚vCYݼ?a?;AoQ(?7º?<|?deܾ2Ҿو?/D?9@?O?6?D'@?GV8?Cu?%Ռ?Er??~4?]"ƾҾI -= ?>r?kIBcDvAmgR? -?Ad?R?:n:?U?T3LqE|s)x?UR`>?1^?hSs?;9'?6I m?\n>f?T?ýL^?գPAԇA!/?//?]Y@BH?:ԁ??e袾o?+RsFGmU?<4!Uvw)q1k -4?6bnr̙?\?8W?\v -?0Ps?':*ʾ$?4,?ND?[Z6J?`þ#g?0D?Wl?m?(?i?Y þ`O?=9b?&TS$??.?H?-4n?ac?L|?)?R T?q?9xDGm؍V?OO?%|?LᴿpL8kޠREC?!н?J@dA@>Q?4?!Cњ۽5fd?*tu@K?OQ?B;?NVݾb ?Yi?@ֽkվ9?4w.J@?B;o$쿘g??:?[ſmPg?:?GϾ`^ȿ#?: -Hvȃƾ-h?G?G"ʾA uuw̥0&ܿښ? q?S?H߂?Bʼn̐VXj5c6?Lľ- sŐ%(١?#t?5?9Sެ???}`v)2n?dr!8ƾ&b?K@>2?6t(~U?e?58h݌?4B*J׾g=D?!AJy0xf{ ț!=?#?mw?16?j?;^?^ v??~?./?2tjA?04/rg6m?%↽dXz?J1AI־ۋo,"2?We\nRyW?U'6?@-ZR -:%ξ.#"?üʭ?*&8?O?KrV>X:K>ľF>pdz2/i|jvmV"?GkL>??O.?0e?Kv=_$?N?=$&?0ÓB?L4 ޶{\ffBD?[[?I?`2@4XUqw?w2PyP?3H@&??W?Ffɿֶ?A$?0?6P=4@?Ͼ?H$?SȐ?,A}6D?%1D?5/?bJ?ܾ{9ڿ]>B@?|ľɷϿHa?FоĆ+'\V4&'_/=?,:ȿbAR?;~?-?1 ]P?$yBz2Bd??7?8zW_Q?R>?(Ѽ"?D?@?r?KUȾ!^?E_,1?@{l?մ`Nl?h?ɸ?/`,X8PѾzДͿ ?!h W(#\?I0ᾗ9L?%6i?69k5;r@W@?m``-pvtB,L?DRԾI?Qɳ?:ܾՆw?꺾?1"?B~  -d?9ΊA??=|??JX31~?EΜF???0hW?0*?$(LOV>,?B?ٿ??. ?CǿO?:Pxҭn?SF?2›9o?(h?Trrw(ز}?2t)lc?0 -?? ?B&?Th?К?ρBk>? -?+f|sb˾??]?Q ..?A??ev?6n?xFcӿCqᾀhl~?1Y?6w?XLx?"?_?()0?M?9Ll?(hpML4tH ,T?[n?TjAY;j?G?U??a?Y -Ui'Am?P/#4?@~?-۾澙j?;2h???Hˊy?aw?Zp f?(?\?F07&QYr@???Ssӽ-P`I?V%;?SGO?:BDd}>owj%?MؾUR߾&;'??_̾WÉ?Vh?gL?76>Gؾ?ޤqi?L`?R\k?Lh{?E<}e-?k?2N?}4߾?I?3|oZݽ?J?~4?0? 7?O Ծ^2?KFEm?Sr?]5?F}?PA?IA2$>~x?.5?brf?侃qdRz ?):ƾZ?IŒC:ii?Ct}dV",W?F掾?^:C?b?FBK>?gҾj?퟼?2?8hA8AK?Č??s?1FH?0 v꿥׿?FX9+?P1?'?)?QW ,?'B?Ev^?6'q?/?֨?PmO?5?'Us?b?C쾅7'cǾL?IF ~?/a8?^Z?:haNC?;V꾺?a|X?QJ? ?.|?fU?7PL?mW"zsV/[,D!?dv?J?\y6?A'5Hg?uEp T?m$?:?N[?8%?Z?Vc?C7*?3ܾaP3?SP?@E`#%krf8Z>yt?S5-L?R=Q$3Kk?=+>Hž?/yT?ۿ0J?S?Y?>X?+G_?J?YhBx>>&??I?CKD+?E?=ht=C[?)"6%ؾW{?(d松#'Nt~?H o\0?3\ξ~ !??dB6C?z@8?Q7?Gsv?C5U e?/y?NK?D5?6??H?V&8f[vW^.^?0?3-G!-98(-?BƾS?d>C?/?x?#? FGxV%x?$?bYw?R?h\?7?)ZN?H?U -?S~Mn?;߾W Kn?D ̾?,ھ`?Hؾ<ž)op:NtQc^i -?:?3d?/辿 weD*<<@?I?TԆ$t?Rq^|f?;Z?Jh4Ž x?2>#X?7?Es??[:ĸOl?Yh?[?Q?W&?@EҾɁ?dn?1v?L^8vI?u̿!?72ο?bYTOdN?SPG+?:Y?(նC|[QN?pM? -~yX?$Vu?atD?!?VK,hF{ Ǽ??NQRPKnv6b?M73?>?SS X<>ڿ[$49??)TƋL?THoN۾@|?Y?~̾&v?Kjx -@oM>FܾSL?6D\]SGFogJ?>1*?h ?1TϿQG -$?4V툾w.?i??I%6F?,?I?/ߘ~0v-I?>%G.?5N??,0N?7!? *?9cx -?'d?G`KND-%ȩ`eM?8OԿ(!UO?*l??T?:t˿,~׿`x6'?ARn3JUN?g_F?, ???-8?<-?'hܖ?@?BP?*W{?BA?jm ?f u?k(hZ\`ڏ=%% ?O  ?DiiFw?32R?5nھuc?Rep.\u?S '?5u?nu?g8a4־h?C/\i3z?81վTܽ&t A ?3?- ?<+?)?O`$߿!W ?xʾk:??7.?9 O"񪾕-Ծ -?5^z?Bo7vx?Tn?X?j??۾_?3>rgd?P8?Hz?4??Z2?A:¾0lD3"?7!?O tc?¿)?;!.U4z?l42,do$ٰ?KԾ:E?3$qʾ8xE?!?2=?]9 5#s?ZJZܽ@S?0@~?6`?ῒ%?.NƾKn?B#?JnN?\͞#ӄ?1?50Vðv ?N(fL?ཚ6?)i?Ra?!ͤ!ξW`?/ -?*?)9;O?Ehѽ*?=e4"?9/?^?E.0?oD?%ž6.?I?[N%?e?[%:?-% ?H =?9Lw?EQ?m(-꾁Ե/?q,#?oh6?ox?d?<?dР?^?3Ӿj'H?Q@sf?6h?[nRȾ6?3H ?Zݿ?# -zs?6/%A?,uሂ?K&R}M?9 jF进`u?aԿ?D]S¾*;n6;н"?WB?T -ktǚ}8 ;Ǡ??≴ʏ&ZDmS |8?p?Mp?ƽཷ'O{^?2?D!d?G?\?H?L?h?Q:a?="?BB?b?XZu?,5g?Aͨ?' ?%`{4ʦ俚!/?2?ܧeȋ?$񙾍?3f㿓<6.?-ksk?22nZIJ?:?4'Sy(?5(E ?]?D,񊾛:?D}x?mM"R? ?Vm?ޟ[y??͘-L?dK Z8,?IH|-L?Z -2PtsZm迍#= 鿗l`I?c?=6y̾Xz?Z9zɾ:ᅪص?dt?ciq?[?c5?8p?5?߰@NB.6)]?"?98?c#???R?]$?P?<(?QX?1JH?EX!Nb?J$?1T?M?AjB$,aorɜ+i?8']?9| A?J,]T(ݘ⿎=e?Vdlj:?<;aM>?޾U A)&-?G_xf?[q1?Qܡ?B.%c?>̱Ie? -?5ラ[>?b9OJ]X ?!?5O?S_O?@?Jžf庾>?)>2?=d?;\Ao?I&@?$-}$?2G?GG?$RqxH?)4?62&-%1?Ih~kU?fnn>b?4"?E`45Wn?R!E8?+?A;?Ͼ?`Vpp{.h?T?V<0.P&|fDvS?MT3\S?L⿂ k,E4?=J?Mb?Nӽ_Ҿk ?Q&w[̮hEa q?ei?7?MH?R?Jn -۾(2?cN?>z $?,෾IicERB?bmF1?D%?J-+?ufC?gey?3LDF9!?(?Aˢd.x̬:l!?0@ѡ?"yW?]8(M ?E?"2?MCz,1c?AL?ID~?Bqx?Bz?/y a@>߿Rs?,󢾑(?9U>c̾Q4?>s ?O)H#?S{y8h+h?)pɨL??7uU%׿?lV?6J?Rn?c^bȾ:Mi?=&ݖ¾ - -]X - &?2⿚Z0@r?>ߞ?Q!?3Y?Zw:?+0?H _'?Suؾr u?j?BBWzr(Z?7l?oz$:bDDO*y?b?l c?]?E,?B_]?<4?\2\z,2оҿ48h?,F?LH?U A?744)Vx,x??Ǜ5b&Yj !Oe?G?G׿I)+?]B?:?A>UL?JmO^?JZ?_[Mؿ߽`?% 3E?;0?>R&Vؾp⿛uw?(Ԡ?\~n?M޽( [_ -þFOԒOJQ@ U?,'  >xP=g8ۥ?<!k rW3оF?9&?Av?(GN?ް?mɾj6d6nMnts?kA3?& @o?oѾ1^.l?Qݍ?+<8SؽR? -+?n9?R%"?S퐾I>D$"־"?}#>:?A7k?),~俠hsX?%??ƾo՝?/vNv]0@t?'??,R}5-?j?6?4(?Nr?E=k}?ZF?(?>ᾁ8?9z?.0J'?81N?C!? @H?jR?)Z1"?%.v?5L&?MT߾r?`2Ⱦ12cC679Y;a>l?S0_?"?\?K4D?j8?H*툽{d2xv?ؾG?R/?ZTP?+$붾2M?29,ž?0ZCǾ! ΍p~$>4lVyt?<-=?!TR?8?V_o?W?S1?)?n??xQĽkrY8ҿw?=1Oj?]j[4俇Ԓ7e?0{?fE?[ȩ|t[Z h ? `^"ga?V ~$\۽B?LE?1X(v{?MX?X"d$=Lp? -u&?Mv?7.?R?9$ rDBN?H3?|XA?1,~T?;j\̡?)οzl?JO<ľG濓>?VXy=BB?:?9jÐ?*?"]`J5?@A8?Dh쾶ɾ{ᅴ)?TS|nj?/ ?2վK?c?.lJ?(Dľh?V?K<?-L?Y?0r?51$H?c?F ?: 3?/ ^쿓{?I̿N:?8侀jWgr2e {?x^)f2Wn?Hb?G^\0=?9z/a#jxA? nzʾdW?N?I?Zb?ZNdi_].?O;|}.?OL)?: Y?]-8$?+x?Nd?6c`Ѿ.s?Ql?#0L-9IX0ډ6,?(ez/?>?"]&?W???T)s->?'y?DEվ)睾4r?9??6?g?(rN삾裾sq.?o0d?F,Y%n~G4W,C?ZԾq$?D'ZItZhULNt|z?Ѿ:@?Ge?E?7FB?,ͽ5b?XM!?J,{ -ѝ'fֆPt;z??L.0L?Bn)?NA>?BD?%"??8̰?dʿZf> -ؾH^c=F?Fv?9å?ѿ+(z$_rNC@C?EN?)??#ο?^?nP?A "`q$?Ca?$`M4KUSf?7[4f,쥾޻|ڸ?B`.1?Կ;(=rG.?nf̽tl󚜾OYj?cffsLdǣ+s%j?4r@hW3M -?_y$̿?YȽ???FC5G2Pސ8G -6?}?&C%^elp6=Ꞿx>x\N꾠?Be?D}?/c .忝?/U>_8>ZrʾsVȿEbxk?^ͿCrJj`?S<0?澱 ?9hEo?0 k?9z?*J|?!hN?7`6ڿ?<l@D53?X)?Vz?U?H{pG?A׊;㿭a?>?E?>,?D?U ?YX?9?)㰾!?*ҳ2J+?E?%?GϬ&u@6?2L$?>|?&?!` )-?I1t?]8c?њ?[~Y?&{E?v?/ڼ?{?YS>?aSQ?9/?3JtfV?E^従^ξ`?IkY4?S"܎^ LTp<0NM¾7s?%X?4 ?Us?Z޾(@?o??GZ?K`4{O־ 5®h1?2Խl?JkB0?i,Z?#?6ҹ?Yf@?!j?(; ?I*?9>?*_q?4e?CQd&ƾu??@| ?6(Ye?^.?9޾?,fN?7=?.?*g?Eqӿ[ȿb?Cھ+? @1?V@?AG&?0i?Hi^?8TW?UH?j+?9?c?;?* ʾe UqB̾ub?8ھ?)F&:E?_? 6?A?6Z]Ř?;|?Odn@w?,ҽ?w?Ap%% #?.&K?ZH?6?@AտTyg {zV?+J6都RvVM~&j?@k7?Q?X?n,Z4?V1S}9N?_`R?@kx^hʺ?cp?Qb?<Կ20)@To?7(<𾌏@?`̌?=x^S.1.?m쿾9Rú?+ W^_at[Ľ>CI?6W?Ǿe C?M?G7>?.^ nfvHW?EP(??CX׎N?z?7f x?N??G?%7* 7]?B*fa?>?5w⾐e?NP'?fi,K{?,'4?Ȋ𝿕ٰ?k?9He?4m?]?H#g쾄¾p4@?G?8`?2?=c*>o?L(¾L?Pz??XN8ֿB?9 Z?G%,Cw?,uZ'i?$iܾߤwLy?42?B5>3 <pJi?Yf?4Ͼ poVN?OfZYxJZ}yD?,t?2jr?DN?'p4?'*?NjUF?98?n|ľ0Q?ia\HϋS?_p;Uπ^A=|už@{?S;>оٸ?Zz }?8FZV"?WJ҇fþBu?Cxv?E?h]?Lt(?Ȃi?|OD?D<?Kx'yRCdZQk?󗲾=?\ ?9 O[?Q^??GavM2?$j>O?Z,vPʾ10?L`پԾCn?vϾIΝ?2x?Dp?E6Nwaо9 ?+8?Z:n3T?*V?Asv֡?){?'俿`B??B̬>*??N=˾Xо?.Dq?$7p?K5i?K?'4_L*V?N.;{?@`;a˾R>?6?A?@_3 ¼9W$?#q%οSi?25B?lFҿ)?@?J_H??u|?0X?&ӆU(u?UXU@ؿ?O3*>(?Im?X -?IBvǐ>\%+Gt~B]?/r?;}l?H⾇'?/[ V\?[?DV?"E?E鿲?FeZ`r}??zA?S? G? -+.?L'^?ER%š$[Nž.v?n?1?[R8`m?iq?1y.u\IH?' ?ht?6n{ -:`${-2?D&k2\b2~d?10|?\lZ?iB?+D0?FVy?EbWm*d?ET⼾q=?Q?0d?In9hg1 Vc_?8Oʿi>ο#?%"hHOA?e;(A>3`?+?;q?ذO|\f/&x?J6P?M#^(?6{?#?BKfh>ʱ7=P#8"ʽi0?gm?PP*?`MR?4?Y.y?!dþт?2.ؾEm6=?D@_?G?\ϞlslJTi?H^?!7$:V`o:5澳'?#g?`pT+;B?8?Nk,V2?㾢?3܏$?Ba?7 -^J7\!?PdW#h_I;Ix ?.~?+d*?>fo$`fv?hg5E?'h?'TrC?%/q%(#y ?>+?93̾Xo}\1;?^?~?G ?RR-I2@p?\?BM2?+ 3 ۿԾ<?+E?SyL?L4@?F̿¾|,?oH?9?۸?YU?+ӾoV ? .8?'?K?GT?g5(?$?E5B.?w:Z?>&7uL<)??DDnk?q|?6 ?4vQY?&?&V?9?:3|\? U?H}z5V;濕FD??FH?fu?I VV+ b?b?Z?alNsQg?Io>J"?P7?/??k+Y?VMпX'Me ?F?vнl?Bоfs?\fF)n2%?5?-7P?/\5?.wEER?9V_) }?I/??$\ԾV)i?I ȾBrxܻ?+޾ta?ބk ?,?@?A1f?*?I.??G{R4庾xX7:?L8;.c\?Lj#?mٽ8i?@?Jҹ?+`1s=?Ѿ5 -I=5s|FO?AG?jޱy{@Q?!X?.(F^?H~?(?%?S,?x;||Jn?3I?#;6̒?[ _yU?8P?Ujg˽?E^$.zEh?Sܾt#OAƴyyI?[⿑nywtNog$⾮Q?x7?`r?C~c?FTl?V%?O?$^^?84mg???{kq^Yj?R? (?@ü=1[6TR4?[6 xоMLW ?>|T?;am~B?OdV@?--?D(?LQ §Zb,?.ƿ?$Kd?$ؾpP0C??[?=.!?^d#?AC?,骾fD_D?۬AXW?S?"? `[?+F?G'?8~? -?Civt?Neþl?AԾ>?;Tok羈?7|?1æ Ӿ)TW¾Gd?C y= ?2>?,?=T]?V&¿?f`?^?B+Hl4`4?!T??C b?=l?6{᳾O?)H?60]0?H>?:?:ѿ*?܅ǾYpM.@?#}X? ?;f?<3u1?[w?5&:?>?+W?щR?ƿ-L?AoX?ߓ?:àsRBc?uxf= [?ً͢x?,Y󲽀4mIyfŽ4? ?aQ?Y?jy?f0 wy=[?J|M@>˼6Y?]oZ?T).?h7 LG?Q -&K?F?|I𿇄\E?voI!;RPxT[?Dֿ[?WЗ?c?, -(JF ?9y?J?DuB ZS?Hy?LXc#?EL$;˾T?VQBQ/?>n~?Iʳ?Gx*?A0?Q%B|ҿx;s?˩eB,F}?7̿?_J?X?E;S8/?8O[,~?G?&k)Pz)X|ncإ?i`?#DЪiB??;1?;'m?K6?Kf?'?Lomt?,?Xt?Ta.5UP?+?V?:?:ܾJ?P|?R&6i?>7~Tn\?|:<8?@s8x)mBӾy?@0Nt譆?Cc@qľg8&mu+Fˀ?N螾G -%0?a(]?y=꿝,&?J2Pcz?@fN=\J.{?`+&ξ|'ArRtF >Y?E־?8$?B:?,?6/Fl?[d?eU? 6NZ:gd?S&?I?P?DCo? P?K:C>3&x?GG?{??&t濙Wm?@U?@\2Kf?aD?.r(v?N?jҾkmξ2[~?No?4?4CQA)e?\4i?1{ |?K[I?Xy1 b?,k?%R?Tlھ?;?8f@?T%L?ɲ$n?6?F,9H?f ?8Fx8oڲe?A! )K_OWF@t?kS?+ƾƾvK:?>4 ?ZKO>E?9n?@n`?5J,?C>?W?5x?3cfn 69+>b>.T*@ -+:$>?XԾD?+15[F?꾤 -N7@?O?L?C8Ou?2ò fEGHT޿տC?aDUp??/"V?L?*PL?)CaCz?B!Bƌ+ȾQ=|د?Ah?&D f?gAt?FKv? ?E??K8vf>2H_2%p27?3?fdT?>?Zs??M?V>?ݨ?Ow?0;[(}?w?$?Oj?8i)2:-?̴^C\?C'rv?E2!?4۪?(g?0<ƾC5?(n8}??T?n@?%[gBXLڙ?BE ?$?#Q3?-?S?9P@f?> -=?$Z?,9VΪ>0?&h?2-B?k <&X?'tKk?XWM4?M?B>??4꿖?I#|-|?/y^_Bh Cea?T|?Rr?P`?Z?ʾ/>My]?E\d?KM;X?cоl?JN?FgQ?HFchuK?@޾N?*?F}ѾG?4:$ ?KbJ? ??.?q; n??'6x?-@S"0? -4eT?,?/@4.d?݊$?Ei?1?16CCs@39*?2{*?7Q?N| -#?ws<2h?t[V??ۆ?a"9`?_FVz?"|?7?:?W;?:*5@?).2?gB?/P`y?>@; -?W?Qo-W?nҾ0꿑?Un?N&?7s??IĐwҿҳA(>?I$оv9>ړIff?D?,%j,?"(?J9ʾqi@?B ?YFwV~쾯?,οՐG/L?T1q& -?J?)O?)P|~?/ ??)?NJ?G 6ھUlZvʾм?7cKXX@?^j?Wx??:?. ?!ɂ?+ԾZ? YR龏(?!e4?1_n?-@9B?!? -츾Ӿ),??oྈ?7Z?8Eu(za}?![?T¾? -p$?0Rq>il??G)??wG?7Ⱥ?;u?!f?L|^ ?#Aa??R>㿣b?'n?H?>5?^]?Z꘿x?fH ?eپqQ5?Fgվ?A0)MDܿ?hY?S^#E!t?i?cʞ- Uk?,6?jbt><ڬ"ƿCI ?8/L"eJt;?mK?Q?b?1b?T ?-V?MT?:CW{K?-^I?1RF?;j?,?T!n[?0"??!9?9c?-8?.$?M,\iGA@>I@M @C?0F?RPX{!."-b?,%?U -?K?Sj?r?w pg?"ȾvF?&N{n?F$d?P?:H??:?!i?!?P;g?&I[?XS@[K'R6Oɥ[?0yDN>0?="B01?_?2kľe m%?odM?;n{Z8n?/:?M?>?B=?/4?!2&?/???H[J&9.?:^?YI;>Їd?>?Fɾ`DоM!;zpп?.D7ĺ?YCu7?\`cξT_H?ݹ8?tw?C~4(??T?Tl- ٿL9?Z{n|s;#+?}t9?YX e?NDν򿉻l%N? q9y?Pt&_?=?u?D?"->D? - G.?d 2qI?R 4?V?U뾊/6`ľTK?Wbn?;nй^O?bd^鿙?8(?JF?|j%?@6$[!?5T5[?9k%ILM>?Jٿ#?!߾UI7I@??:#B7CpA?WEx=?OZ?<⣾egLmV?sݾ#0?[n?:A@?=V)?XOR}?&>uLz?D4?PK}?ru?BҾM??Pn&8?3L昿+2O?I!~?D: ?AX˾K[C?%˾ͦG&A?@V}U?g涿3?fi;?x?S_qI@?{`"?Ul?a?Z;?z^>uaB6?S ?8׽?R,Z?6B?jnwj.?mi7^?B?;ب?@|?/?씈^P?WU?>?NŨ@(~?#ؿ} !?MU?]?b`?Eh?V9g?++Ȝ{??VpB?lGp?b?&|?Y0??l?J? E?:?.?ƾ?:?Jgd?IkB=e?d?B1?9=޿^7о1?7CjW@?<r?:yM?=CNNB2DK B1?$o?FK?9DB?EɾB.S?# /\_?^騿mch Pn-ɻ>UA2?%a?2~?_?c% )?I]??J?O8?1?7?A:zߺ?6l\[B?<?%Ē?GR?f?AI'etC?Vn?Lgʾe@ܿX?WL?9㾊7@?6l ?<|<@;qV?V7?!K%N? ?H*%?,8?,wWlD?7$mý~?ڛt0???Xо#n}?Xvl ?5ѿ>?`!`,/t?cܽ+X?B ?W.?;R?I|?Vk??J?ODp? [~s?q7D?.>?F(?C,?K?9 -l?O7b󿍢X Կgþ.JD?G?bRp?eW?.?N龘ȿz ?~?31?| ?<<2N?Ik?9FzMJ孾#?fjD?2޿u?L9SJ8?@?N>ƾ0?B⾖k<`.++6??(97?k"?'7Ծ@?Q0ҿ?.\Z@p?g?&? -:k?c ?͓a"h?'JҾIEW&?)L#ž8$޾C)fr,辬 ғ"?FH"4?)|$?bi?] KN>?"q?ZA?Vp?Uz?,Cx?1??&ξ?: -1?)Yg뿚 ?+)?*5?-˾A?u?o?(?߾?ٯ?J3?"?ك˔>)?Z?V?P 6i ?7~?8)?G^?T(4`Z?MtBq>?翊??fރ?UfξF`?+ؾ?f1k?)|?L ᅳO??2p?"'(=r?2~?.?9?LZ?=Qν˺V#a?H/?5+L8?A5?5fiJb6>]=rp?:9?5` V"r_ .?D&qPT ?2־ -տK:?If?:?%.?#Zc?C? T1}>@X?IXi?f/>?k?>?&H?0?D}V`?@??%0?/?=?>G-@?t?C*0#?WW?7?2p?^^> oD?90Zvƣ?.L?@S#*?D2R?<ý? Bb?I\q8B>3:X???A??5%@U9?Va|Ѣ"?Fd󿎺ӿt?2 ?"?/e?O?h?R? f6@q?n.9?#̾,Pg]3QEb*` ?[??Q? sX?*Ĝ?$H^H?bq>߅r?%qvҷ [0m??XL<>rp?_k}JAh{?/7?=?h&8㒿@?B?'z?F?V?AHI???Q?2?d?_d?1Wڿ8`?<@ -Ma?.!tu{PkӨ?T jPϾ?F9xѽξ?k?J蕾d]|5,e>єV?+rjvB?:/2ᾨQ?4]?V?5v? j?耂?96?B@]H(Q?0dB?O쿈?wb< J.0? x Oy.β$(HJ?b?C?9c6?GS?k .u?WT*gNb"?O/x?g,?+'?8}?._?릾?Tx?M5j?Rbu?;;㾐? Pܳ,9"?(}?>?>پU?B?|?~*Ѿeпx??2 -`3?? V?_9|=Mew*y1Pr?2?i]?嚴? -?2?,G2վI b\UɶtPβ?(HЮu?1VU˿}x?tk(U=Pd߾˾]?l?B L?8s?Aӿ?n?* ->?r=`?H}E?Vx?U??axT?bF濄?!Fr?fRYn}?BϿ8QtO{[|^.{?սr?V?D44Rֿ`q״?}S,D,J,R ?!:?7!2+y?^?OpLݾٹ?Axf?ZG2???Vv?@H/?nlGn*p?H??@'?Hv?^]L ?5追z?T?E?7c依=?.8}sƽ4,??9t\?fuma??!:c?<[+s?8)ZYÀ?;hh??Y?CH*?-?5̦b?)2ĩ?:RM5ek{$lپ0˾uC?7?3_ѾZ?N@y?19%?? b?1U?Q@?>L,?8(xz;?-ǘq?Pu'?4r?eמ<}~俞K?T:?5?=Q?%'?bp?`4+)?ިp12x𾍭T:?6 6?e&RE?6c$y?/3?N8^(?&٤?2?O񽺔?U?SнT?KsϾ hC}y?5?Q{P-iп=UG?KH?߃?P.?]9?Lچ?}?S10?UB?Tb` ?EP@Tl"?P>kϾtq >?'6?.b?/h`$,X ?gJG?6^?T ?uyt?i? M?Bev??zP?=$O^aa|sᅯ:ؾap8J? Sʾq?;_^4?*Q5[?2Nl?0 ľrt?݈?(?D@)?"쿙E d?ئ\SBP?7о;H4 ?eа?.heϮhܹ?OΆ?3 -?=I򾒝$E?9*?V?as?W?B1?+l?X|Sʾu?T!dPP ?5?t?b?VQH%CU( N'JC>Pi^9 ߸?S?4tgؿܾyT҆?9ĺ?;B?16?꾆澚8ؾDe??i>>?;]۾'?4۷?-R ξBm|H?>ԾW.?+a?-wѾNB?B`?aTlྠ?8O Fx?%2?68:^yR?1~?%^ ?*?=e?82q濃'N4^'n?HVlLP?͖= )?XwMH4TXtqҿ?Ozrv`ۘ?> ?)|^m?Ҭ5?Lv? &>?d ?@R?J.??O/?,bپ1?DQ~?;G?"TExEt,uTup\'L"1?)R?7?0A[?A+?Q*?85W?1?@C?Ů?3+?Iɼ) -hWȉ-eȿN⾝xÁ?:?Fn??^?>??Eľ?#྄PοU? -?4R0?J?*?{?S׾h0Ծ]26?ؿ'Ҿ?1qӊ?B Vuo>ܘоi/ D?F`r?޹?4]?<~NB(?T*_?A?P?^?r8{?< ?Fb@ ?)"?.iʾSܽ&꿦WGY?B'?w?//?:ڙ?X?7ƾyij?\?7;Ręվib+$^?: KP?@m H?6{>Ծ?חy?A%~>Ӿ`?F(?5cF@뉾1?}ȿ=K>?Ei?aNTeʾ 8 ?HkbE?Zz?<υ?0?/6hlݾ:?JnE?,+?D ?P=?FH ?<(' -?d~ǿaֽ%V??rc?9|B࿈*f?VAD \?7"?5(4?4j;?6$p$%ɋ>)Vkm?H(O9¾3/$8Gǁ?5!%P]1}:.?N?$?8 h?o俎?D?8tz5!?)?L6?'?R?=)\?E̽?Mܸv}dS(Tqbfd⿗F?s?Ev ?XW? ? wP?(1q?!ӾsQ?!Lh? ?|?Gce?h߷y!w?}7-놾x?%5?bs.BO?!:&`?&M>ڌ?4氿V-??z^K?72+Y2w?*y3V'v?5 -h?~ -?5Iho?5HD?c*K?&? .2?5񺾕x2?=nUT?"3?)?v&+?DL\P%3G*?5쾒?;?KҲy?*ԾVÕR?=?ߴ?Y?.?C?+?9 -?r?9?$FލlB?䝿sZ?(ÿ>dk?B ?14ɾ!i&}&ϾoFzD?G?*~T7 -)v?tuͿ)?"lo?V?Ԇn?!?M q?\Mq:>RR6n,?/>z7 - ?q??D?Xx?Օi?7Ky?J3߅!hFVֿ{?Ff?@{?A1?K2\;}u?TP?D?l?'Jzɾ]>L?HͿ*憾 :?Tɹ?/ʿ?9z?3ȿ@v6fp@?s)1? =??GI?UuK1?. ?c<ʿS?E#x?>/Cؾmf?4g?-|@1*D? >o?,?bA6?OAľ[p?4-:?Ab?; I?z(?@ ?h?q̱T?N\'?89$wW-?4?#Xپr ?%7w??Q#R?[j?/n?1l?,"^ _ؽA?>J u8@.?i^ɾ?D>žs]⾎s?3z6ȾE?*>t>E܆!0Fz %ԾYt?#\Ⱦ>(K?2x?:O|l]hVXnI?1.?7I?43+?'Ѐ?00^πpJ?&&>van?!!?Vh?[?7h k%>TQ?63>椾w(?B.d@??Ծw??h9^ 鿋%Pc4Sq?Iql.˿%J?G?^i[?a(?3]̿(Q -y, -?,@? F?V?BK ýP?OS?P8?>")us־Uzfi?@?>[M8v{9?$??1,+ F :?7@?ZLPV~?&?Ke?6J?:w¾%?7G`ھ ^s??;y?9*̄5ʾ3e?m:ިz?"Ø?M?Ih5z?:e? >֮鿞g?5R?ߧXAbA,tA1@?>?7A.?(?9 o?>{? 2<0&?82K>? -?gMT.^Ie?`K־1/?YUµ&~}Zz??7鏿aVԾucǘ ;ԾTtLJ#0?,vBj?9JdY#߾t ?m"?H%S?# -mv?,?D1?D?W(~zld:?! =o?Y 8?aDZHmy?+?U՚??3=?@?"D?>?VܴM@kx?b?5Jy?g?3d?uH;vlZ6maE?S?Oz,"?If$1 dD,?7cKW錾|H???w9?;lb鈿?E@d ??)J͇缾˸>??[=|+?Uh (,l>N?vؙ?@?Q&HT?3]<?6YH??8?${?F.ͿBB4BBA9@? K?.ÁYPWR?7*Ǿ%Pa?3Ǿv?.C(Q?2?2?+.?(HE{9ne쾭f ?E4?3?Y?L?0/ա?>_>Ɉ3T?GU? i/rlr¾gs6þKuY?F?u??Ot?+4?:ph?ܾQپK?ސ2?4?=?,&FQ?G5jf{T,H ?:??8V? ?WF"=՘?<ƽR?TiQLhth;Ŀuپ௿?Xe?0?B4hc!8P?W~xKھh|+Nŵ_[ -\^?m?EN?%˾&/?Ib?!b?>?ab8?X)?I0?8B+?-y$?|+?;*v@vq?@XԾݢ?3>My?.t?<)?0x[?"75?0^([ǿzr?Ծ_x*@?2^ht?v?=F&K 7?YK ->uL?:=j?!cV!?W?g.b;ھEpA -AO8>V?C?*$媾X i?9?; LO򿐆?KBJŜ@?f?>tFhgt?3?J?(AV?85?+|JB ÊBۥBwB6n@N@?q?%"~>_ƿG? N?C?69Ҿe?E2?M^]?!侈?2ggzf0q'Ⱦ'=l?Fmpz?s?;r?0ؾ6?,ɿX?.|Zd?䷿U?"i?tЬBM<}^?BV?JبWy ?ILN=h/6]ھw?%!>( 0??8:$>D?3τR?o>߾s*?+Z?*/?[?vh?>R2&!dD?-*;Ⱦ -'k{4?c]D n%?1Պ?Ec⾎ -P|<Ї\fr?|xYí*< -?7{?Q??jS4ؿF$־M-?:='s3@9R_?Kz?j?' 꿶?2ã?9"'+n͌*{?t? 7aMLLaX?$j?Hྯ[?(,ec?6 ?>~}~R?濭`/?Yp?)?xrB|?-y?-ؿ꿗p?UQ w{?FIlоYZAD>4? @???:T?!-`?$jN؁>?Î?c־ -?{wྊz?-=?E;^?2d z2~S;4kľ%>[vMt ?VYx8%?th?qcV?\ ];K?;T?UZ?Aľ)6?վ?1?H -?#s޾F=$?>d?=?I.yl?g? |?W_Ľsn\>N,LSvؽ?[?N$s?MK}?J?M?$?ZxC?F>?^?Or%J?M"?+6?&??JA\V??꿓 -?{ͿG?EĿy?39?/MHM7 v`:+?nX9?=ٝk??=?'¾?3 D?FlmW?*R7Rq?O澢@?^ݿ?7즾տvSV?[1iQ> "Dq6#?>'?I?np? o?FT`r!$ܾ`ϙ?>>Hȿz8 r᜾=f?2?Fܠ?1CR.fWZb>02p?=?1OX?6?E?0?/㩾?<`?)|??bL&>eǿwN?N+?<(M?ؿi?Kez_?I+*>?A +BK?S4?+?DgY~?2Ͼ?=?Y?C͸f?߾sH ݊T?FZ?w?[)tk'@9? ?Df0? l> @*?BONܿ?4?A ?1?=L?&5Y?j'?Ϋ?O?Vk?r7gFF?SW}̾F?Cw7?h?C^?47PKK>?)ʯ?B4往:?@?<{*?V5Sb8'-PῑH?1iuxJ6bV:`"Χ#$?S=?4P(?(Efsmo?ߟ?&.?L@?.? ޏ???]4Z:%g?;N?FPZ=۾2?;?>q@>~Q?H#F?M_*\l?S`xf@?0 ?^PԿy5?N^?EF Uq?Y;a-+?%?;b8ѢqPT?AY?SfX?q?Aÿhp?$?'+ e'B?Pjjé3?QւԾNJf2?AJ9=.8'?.Y4?L?:b?>q?APĿE?Jɾ!??gMѾ6V+?~#]H?T7?;"CDWkn)?Eqqc##7?E遾?C]?,liD?~(?Hǰ%?醾@Q?1?He蟐1?@1h:y?俘Ћq$?䞾x?-¿4jYVR[^X?6 GJk?D -?L޾pD>?#\?O?K*[A?d?)1e@LO?R۾?B?&)⿖ཱྀ?ž?౳p?,d?B h<ynG?CM,xa= ?N?K=Z)ѓ?˾` -K?>{ȧ?ce?4zȈwD?&函D?h暾q~?78?acy\^.E8]$?Mj?A0;R 񾿩d꿖?a@B?&9?SLZv2޾r<'? .^bȪ?F,?:O?OP!?3q@?>?C=3$ W<?-o/j?E?L -+U߿KwN?;ƾGu?%ʾ???6&Ҿ m`Pv`G޾,? ?m?.?⾂Oy?!?=0o࿤32?U%$?%Ϲ?#̤޾?0?:?+x:§l!R?><??K?S?]?&0;H\%?:r?@0?Pw?2?K??I~?1"Xj?'x6?$Zj?*=?7ܾc]>(?(r?]N6,単i?Wս/\?YO?\+2?(\?C[9ս4yTiԾitJE2 yԺ?/Naܔ?A,?61վ]?QZoZ;#j?4z20Z0?Aܺ?QBTRBBMB -B5j@r?1g͆?1g) ?,|?ah?=`Ҿ܈~/:p?Ŷd#Q?]J5^?!??P?@;? $T?-ӿ??<:\?1ON??.1? mD 1pA??"ӰLҐf?&OHI'j?L:!B?*?Lξ?=OcsƞOIy^{gwb>jQ?7h??)rZ%/? ?=*? 92?@p1Z_٭1d|J}@@?Yx?)tȾ>t x߰?3j@?0o]?.?51?$H f??)vNn?R?fj??j U?P?3?+ľhdʾ?Ts?v2^t?o. -?mj$`?iqÎk ?L?HR-)2!H?K_k>[>-:?)dz?Ѥ}?VB?8[Zq2/+Ѿߞ۾^ݿ(潪I6?`?-Z-}@5з??4-qR5=XV]?XX?/]U|qܬ4` c ?"-?/>?%2=! >"A"(ABPA?c5?8RCϾjΰ?3t_ӿÿ$?Yvfs,?/Z1A:`?I-ʾ)/?.)?28ZjY>j?:;?-?,(?#a%ᅯMJ f1?kYRžWD! -aIyNN忣 NE`@?"o?D~?+辯@r?%;J8? ?P:?غF e2P?I??blо] Pm?٭?OʾY)>}S澭(?7?ˠbؾcھpVǾ쾚㺿? Xiz?܌?`h˾@;K?ʛ0-砾L_??I?Gо1)?,?BTxO??P?h?3ǓGzZ?WD7PӾ 9B`?ȾA -?c ?D̿?#kyĿVM?MξX&Juiо?.1h?f?C? X?h?>F\G ?V`Ńr?!`7hR*>"_D@Ͼ4x?' - V?.3&b255 -ݾ?p ƿZ`?*?8׾??(?>Y??5?NT?;hwi߾WIKо|>?H?J3?ѣ?0tN3'?)?; ~!?о(3?P'"?A@H>7t?&??*T˾[ Yls?8'?Vly?'l/Aq??p?'?P,rMT?0Q㿞M?dF?l?rCL?2O!S?c3;?!nu(?H -;y >4D?Hf?a{?M?=L %?'??Z?6?kn?C<_qEӵ?*,?s>qAuy?) A?4?E :B?A{1??ڽ?8W??R$^0Ƚ?P֍ ?Vo-?p?JE׾44?U^%齲섾\ܽ$!?1ˢA?ꌻ9+?0f𾘦\?~H,? [u?TL`Px?M?V?Cm?&?t??/f? L?&,?5Ծ?j?D?9?sH??F2?88?..?0g?A6i=?ٰ𾇩놾.E_J;n~ ?%޾{ܾ Y9N5R(`?mf>y?C/t?X?3d5#Z6@8??Q71?߯@h@-@~?ÿ?'3&? ?I}R?S BBw?啻?7?7D`?AFl?Qy?ھT?272P?;?A]?`:d?8?+9-?A?(?AɁ[_}%?Ix?E$ny _?"⎽0?&?񚿋?7%Ծ5׸? ?Z?Id>?.z >3(𮿛?!+BeerB޾}?!-?@24?blT?<r??^N |r?\!?J1 -͈}?]:q?QA#?9 :u/?=l?/_?;ο~ª?K־<>;{f?mkolOGCiR3)?Mp?Q.?T7axk0翗|?J?Kxy?;V?崗I^R{jQf=<>Y?ҿ^¾?34?3F1ȹ@?p@77P.?.?SE?ICF+Z7kF%? p#㾽,?A?D +쉿6uC)1f86w? ྔ\U$d -!? ?' As3^T?,PF)t?@f @jABBBCC1'BB+~?"?Sо@j+B|?7?Ӝ(>̾ܳW(xk?- -`?NNHԽՒa?T ?Ynb>R9?N>{,H? @rgʿ?f?ʾ?+-v L9j6-FK ?7Kƿ]??5xۘ?!~E?7?ξ?4Ku?3?!Y^hrg6O?n? HK+?+He(dʽ#Rlt>B#>%{fzKB>սv;J"?.?]L#Z?s?g I>gT?B&ey'edbZؾ⨾aN翈b?`q?]U萾O?ot )8?Xx&s?F^?Q}?')?k#Ϳ6A?R?0@@AnA<@z{?M? -Ⱦmվdi辗<+?=?>(v?7ii?&?A$خՆ?2@C?@?B ?E!?=ȰLK -MMde?+|N?-p|^?ѫaSf ? H?M?? -U>?] -?)?[U?U?ًiB@N?b|B(lX$D>ʊ娦?QdnҾS?(/??8?Ṽ?S?V?p?hHu8?G ?ݰcr$ro2+e̾: ?86D?T_쯾s4!??dAPp?GpOS 1iU?/ ?k `~1+?EȾwEgԿ2Gg쾭gؾHC_61̿R?4?e@|$??>L7E?!?"/?Vu,?)7kޥܿ7EY?k޿ ?9M -W_P?KZ6*Hɾogp ^?/sVN?7 ?@jB?|?N ~>|u/jם?cþZPYþ?er?.?5v?낾yEFizv?T &?-??c?*?&.?o ?G=?is?r)hj?99 "?24?Gz|?1N|`,?W?&>7ػT 8?mu?KL?FL6?rN꾾?g82?G߾Xp[0|S#P5ӾR?> ?6Xv <=?m\ 19^|?dHܾ\ PP8?CH7?:о- 8̾N#L?(hgl׾?灾3\! -2kQ?I??Ѷ?-T??SӁ?z?g9Uƾ@"P?1(FM?۠?N]Qۙ?AǍ ⾯ƾu玿M&>f ?/ExEf?3yտ?0KjƋ? >2;g?Ic? ^Nw?H75?5d,kp?,gK?2Bœ w .z ?R?洂? P*?,J ??%/?Nhv? \_?IO?4ib?# p>`?M?3tE2*T?cP?$俟>X?B?*T? Q/ηx?U?Sd6?=vZ{R?>J?]о bQݮ? {r?"l¾&?*"L?!'??8?D̾9.?%b?H‡?@ -8䬉c0(ͳLdff?%&4x!,0A);?)hC(:3?[4?BV%߈?}Uo$ ?7M+?DU?QtV??YLһ(?D?VҾ'be?9Arlx?CdK?E?GED?!C6/$?Q35/?b;G5?U*?6F΂?ؿϞ>Ҿþ_'An?8Yth?8LT羫`?jX?eKr2?k;&?B&o - >qn??,l?k?ĿO?׿_8?Ҽ?2@txQL|?"O𿓤?'1I?1e}p?70~q5?:b#l.'6I?6?3?2?;bŘ1?$I+?A?7(eڒ?߶!?g<TO_?a?*D?5n?݀Lr?8vVʾ봾l??:k^F ?2_J$trr־?5?0 q?CS?.,׾F`?#?=D}?!g&>޿>?&Ă.++w?5??>?t?TZ?F?Fb.򄰾0USB ?a&?=/n??ݾ{O?*н -LD辄4%?\ ?NGz??kҿSῌɾ3?b$QxTyn_͟:?Gw.?:e2?8濅$SA辱+j?舾Sl?/>?cmϾ`<|}U ?Ht\E?A?b?R'?B?Ur?< |<3?]?>H -?EJξ?("S?hT?)IX?Y ?|? -'%[._gL?(x?B]ٿXdIW\xDzd>Z~3?SľLxs4? X?;b܏?n&oj:bQ,?>??b>?*Ym~@6B@7& ->t?(R?M2d?V1BپHz64 ? :0WKק54%?4V)0?񆾅M?+Re=ֿ?Y~o??J|j,5s?/|?f>+8NE#Ü?%U:??)?gڿ?+@ uN־^?Z??=:+X?"u??=?fԾJe%ؿ?U~?[l? ȏ6Ҿ5 2߿sI??+@?&/6?m?ME:q*>#?٭?HT]@? B>F˾DoH?WZWxԪj*{4^?)z?&{(?{tߺ?y2ξ>Dr?1$?ꨐM?4NnRKQ?KX iоEq?4?Oi?K -?* d*>6?74???/,>{&$K?..բ?܀cМq l5rV?9\1 d\a#?ߍ?Ϗc?֎,p!Kj?'l -?!l;Lоmc?sAK?| |?69>dbL.?&O.3>?=fi?Jo?Ny?t?S~CKC%A@;J?_?܂?N^A?1p7?)y?<3? ,ݽ?BB?Dv6ٿ"S?(~cp{?! T?@z?+T_P?rMup7?E#?SV>ċM~? f`1?1BO?4=GN`aX޾2J9\?HP?WT犿R?L|l?H~v?$^W?6)?~d]iۂ?Q"!4ϩ?+`r?Z?:TzFH+d)Al\??X?+J0Q>S{|dq ?#@1VT?A?qN?0>$?%a?I؀"J?/.?:R^n?7c"Z?5y??a̢ʤ0?8?-?.o ?0MR?l?7oz?'Wľ813BPVB ba@;.xU5?{@0?A ?Dǘ?0?7??\9?,sH?oYP1X%}?%?,??,Z궈r?#?aX?ܾ1? ľ`*E&H?ob??ș[?},1ٰ/mhO`j?>?dc}?^??&מ+m=p'?>ƾE`:mdJ?bvt0?9v%B\?6lÚ?,?S;?-.?^2uHfJQ?]n$?tx<Ǖ5L$?W[>d? b?/z?Q3 ?d&CG.?A2llM¾!ОLr/c?Q]?:C̾=9?$&lH? ?/G˦?Hc???<ɛJ[Z)NG?H'?j#?MT?-tmX?L*8?TXx"[t?ոf+?6?پD?& ?N־?0?4?$h[=i?=![3ppƾ??7?'v;(NЧX}?/ai4P?q?,M`?/d?EK?G?,y޾*9M@?)?-v?Jg??ؾ?piܾѭ?<9?%?8_? -y?D]QW|U?:n?6mnn>?9mE?N}eKo?PM?) -"?Fܾ ?%׷R,?)[VWQ,hs?Td'š?m?B?N'@y?@?>W?Swy. Y? '?Q??7;?*}?OI?uh?1zv?-&J?VĘ?p'?'ξ9}?v0{z@M ?-&?X?J¾A恿@?,Y??Cԭ$?$5**ݾLEO?630!?Lv??4?10q???\?$FH -ؿ2?!b>#V?8SҾ?྆9?Y?/s?OF?RYw???[oľ?'4?Oޖ>G?+?-wǾ?2Y澉9Bʋ>h|?;$}ua.?)W9RLݦ=?"z?*n?%??H=Qb8DU?XfD?3Z>z?? V?/lL\N*b>{+ܾ?5Ӫ3R?H)?J/ qV?V/%?YM4"?T@?~?J;8?HǾgCCn?RX.c9}??=A8 t?9x?ؾ{'8`?Dq8# ?5쉾A41\|̓?̿R{j 5?R.&A,]u?:?MV8?D^ d.?-V?nf?(r؁ɲ!ZY?*ވE{v?4P?FBM?/nM?:l?X VY3*TL? -`?!k?ƾWnW넾*?9x$?$a?#tA?yYmGh?D$1xl?dU?I? .?ʚ?.׾׸.־n,?7?0?Qڞ?J#?EG8?f+?@y?K?翝K/?Ojګ?70򾭐?$>>?`=]?5ξ3+?#>ș?SG $?D?<i[?9LIQG?Ejr6?uJ?H|Fؾ=]k^¾TϿ?U;?*X*?J?TRW|??L-;LPS1?Krx?0S-e) CP^ -~ _0]k{? )V G?>DA?6}jW4?C˾24 >#?׾͔cOO?PT\Ѥͨ?F*J$Oƾ+b?-[~?pT[?о?˖ho?+ʿ?:ձ ""?NH?LܾGvu-(~V?3?.0/Ͽ L;)?^b??+Xi?=Q1?`࿴W&?ǾE?Кy!oWPn,Qݾ}+j>?KE?8V?0?J?Q!¾?X)?;U#?CBRZz?&l^J?ړg?Kg"P??&6?@>8?6jL$Yr?C?,i?8?(D4&?,U?Sp?Pĸ=*쾒@8?%?m侕ysꈽ2g·?v?/Lm?-3 Vp';toŠ)?<tY -?1A?lQ¾*a#?=v?.L'>Ȍ=q8?b -m? e5BރpUs?P?=f_?F?¿阾d䖾2(迶]?NLK&zpd{8Z?Q̮ؽx?=:.VDhVP 4?BT?6?G,ZJ 꺾?H?. ?i&п#1?9$?/о\`P5>1?o*\?&?lҌ\ H:d?{(Χ}?E,tC>@Wi?KA&YK?T?3]| -?Jl?>?aܾgY*V?:(?P̊kiM,A?3"#|?'<]/6?/Ծa,:4&d?#_?\-E?LJ.?aƼَ?s?fP ?^F?WVpt?࿝?;fP^?U.>9L?,? O־n)q?F8&}ܾ.?^A?t?>?=y? lz?'𭾍Qg?*{*>?E ?Ü?rZ-?t?k9l>M?TzVwy.i?RXj??Y?U]?E2:?X\p.s㬾`ؾ2o -?=?04p?cA-?=ۿA'?a?W$?7a? -"bý|?:P?8޾I<\?@+?V?Jh?Ot -*?4 ->=?&yξҖ.?9\?pr0DQ?De? e9g-?OK?ZTo,?-5}5M?fؾAgA?<?W?\OV?,kEs?(®۾ծi0>??x?)a`,8?I컾vZ z? ৿~>k{6?Q뾧O?3ʾ]lBwj%?rˋ -?B?.!hB? ?0?FR?$Ế?D*?,?꿣ƿP?> -@l ?þ?6V?Z05?<&?ZM["r?B> ?3>?:ʰ??*r; ?=? L6,?6f?0ӋaZs?N𣿣q?w>?4?F@վMپϿվ ?O?Tl?iムŰ?[*M?\7?GVA?.v޾̓濗 ?H?C98e2?ABU?OJ=x3`A2$_=NgP8(Y~??4z?\Z3?L˒?3 I̿?b;?"x?`jqĉlt5?R?e&??4ѾEn"68;??>*n~?)#?H?B?J뿚"=lྫ?SS'?W2<8޾`13sC?3PH -H?7궾ۿ ?5\8?J&?,T<޾?-$?K$J?C??8?Ѝyzy?? x?$6?FԾO8'ۿ2`l?Ni?3l?U^_?I@}?9?2??s?!Tx?:>?>>@?A8-?RO,5U?[X۾ù?%z'ާ/.?ZI^MC ?>;g?k???BZ?B~?m?k?XC?V# ?K忑uL~?4LhxC^?_Î탾 ??辡??;UA`?.ᚿBl?ֱ?\>?3aھ:ttDľ_ľi?5YY?a쾑 ?.?>0W7gR`?nQq7?(s?JAӾ?Eb?>E?J?Sj:?`rs?2#զv P?<??W?*fDھG<{cʾdH?򢿩zyFÒ ?.p?C?LAe?G1pj??;*x?7?# #A -g??D?ry?2)`jٽRUP-C课[?-d+WܾFY"?Ӿo;? ?1F3޾f?A7?j??Ǿ9O?Cg?KS:־#z -ܾb.? i ?::V}˽?}ս¾S@e]i?;pSNJ??7 -?Q8?:?N?]%X?!C?J?߿H 8?4?'v?d?6gϾR꾂9ڿG!dItbYp.?2T@>?2a?Jw?"A/xDUJ\?LpŒN%l v]j?'?3쾆P ?;(? NZM?!J?*ľz -K.̿ľ`p8׾@ƾJ?%bX yVa?0?@? :@ERre?BҾXw}7?+?_>_?1"n,̾;n?7?-!Wa,m?*(?1Fa"?*I>ʾÒ/?! ?l?2c_?J?-Q?< ?$*{{B?3|-,491 - ?s'v6ٖ?7`MҨ?/V?Zwr{W?CzK06?P0\6?H-];Y?T\?:}k*?=HrE'?K0w|0?<42=?SQ&?(3¾oPQ50% -ǘ?ֿ>.P@+x9Ss޾|x?HM0?Nst;-?HY5<`.UfRo? sA!?3⊾C?\SR?G~9X?މ¾b>N~?9,?8pȝ?2sz? W?l|vP X?$_?$v(>wowOH웯?Z]?v`g%?(?+Ys謄?\?/\w?3?.6<8?2?[_.ld?6??-V?_5?.?3(>?B?"w*^ĿI?Ej^?Zn?V[8I ro?[k?*Vuy?;|g(ž*f$?/:徊־?낾@?A! ->(־V=>yo@1k=w?̧#!C k`?S0?5eZ>2y?='O|?|? -~[?= ?>?dP??3OC?)ؿ5THdվ?]?x?)?.K?+ҽֿؘob?.}zǽ@?* @#t?.'bq=-?P'!?=l?O?RGuh?:3 $O?8?H -?ɶ(9wEꄾ1d>,?~?sh>\=??ieO翤"?@?CIj徔x3O?" ҾOp -/^f?ToS?nY-￘?)bnhrQ¿?V( ?$?0ܺajA?]?VD?5?e0ʾX龚ȧ?*?G&1?@J?9Ta=b9^ξk>L??;펾vPr/m?ľF?R0`?4<]?Lm?⚾J迚 ?0\?i:?̍V˾?jɿ,u?4?3k?:TW|?H?Pz?77?? tb}%?*C?9?' g_T?0Ml?= ܾs?D6?Jʾ6FdBV>eŻ?*⾢(>TLzǾb2>Hu?Hvx3??%]h!v?'Y辅wyԬ; 7bfH1Bv!㘾޿8?U8W?XD?Di&@H2?1.м,d ?5یT*]??bR?zo`lV?REbϿpYjƾ']z&V񺾝#t}ƾB_8ؿJf h?-?DT_@(O>?F01?[{޾WѲ?EB۾(T]?;ڒ?S냿?bW?`X8TL4nƾkK: ;?_ľۛxbg? -Ќ? ?E??CB?$VplV?1Ne*̾{?N>>)?/V?Mp^?8'A@Bcl?S]ko?1i}7ƾv]?@_?G>(?#?7˿?1Y?-:?%2H ?̻ f?Ԑ|`8?7 ?I?l"?l; ??վ? ,̾gZlt|k?"=?1?K3?%?1X!(yKA"<"㿛:!ܭ/?2?G¾"?c,|?<ú?lQ? tgbZ?@4<.??pʿLǥ?:qㄾP?Wپ|p?1_ct5?%!Z?;:?H]4B?&*X?[*Y?2y\S Zwp|#Uyƾ-䡿?0D|0ƿu}Z?5O52`u > ?Xf?)0:?/s)0JĿYT%?N'?"? {D?J7v?1B?@򯾓9V@C@hBZVs[?K*?_?.꾍_?FϾcmFOxP1E?6;s1?BҾBYu1GJqFְy\?>o8Zb^?2??F*?aTOnzDZ???KH?E;n?+gҾaW?K,X3־nRRsg e=}2r?$\zlz]~V?4L?󛿇X¾?*w -?l<!?^7#?T:by?:GV??X/?3`?#?ح?5brG?E̢=K0~?0`?+|Xwsƾ7[l,^kܾn3?B?R?Gھ -?i?U? WhZ-\o -Լ?/u '*?B?I?5?A?- -]m?8 ⿕Ybs4=`ƨ?Mr,sfo?ogjt:ؾj?HpS?CN}*??Eh?@R{X\?'pGxD~; ?IC<?=e?4r?UISk?O -о?+Ԉ?E?k8Q񿠤 ?X?6ɾYQU?rc?:fy,:bW㷵w?MF??>?)b?bYڴ?z\<\־@%?+\>?EI_?@]N2?'B?4½?2ql'd?'?^,?4";Q[mD?CPŒ#{?8JF??L H?8{Z?2俏j]w?UL*߅?' hV?1ɲa5+jt2,?F!7??4?2~>G?9U?B !?D?5j?*lZ?/%WjD_O?ft{:2ž 1оG?.P?'ln'iYo gM/o 5閽0t=6?]b; `K?SU@gIp?4¿G?:F?IT?G

[R?Gq?2\B?8ul?c!!A? t/̿PJ? K! -!~+?J|@"c?,w$?NJ -?)/,辡)|o:?Cž)7-ࡿ [.?=?Tt*Wz~??8 -1 ?1??2c? a侘R??tX?&2?D?*EN`x\gp-ǿ䊾?C꿐?$B??%8T>?Ⱦ3?)S2?0JN8O"?#f꿒?O*w쾧 ?* ?ݧ!9?B?9kypYe待4}s?'>[?CO?+θ?5n?m?o.!>? WbE@K>?-1?7?S?}b>{V"?A;?в?O>*?04K%?7?!(?*t|>,7ir?{?E>8@?!Nf7{+{6~H?Tþ~ՔQ!4mJPgw?9e?Q4Gοè ' /"?Bҽֆ½ ^?S j9?U=R@`B .AZ?Ѿ\?E ?J?Qo=?ZN;(/}7>@]Vv<վқ;j(?^??[ٔ?l?R86搽ݩпx?%D% ?DN?;?9I/?3/JIFB bľGhA'@?H-q?;?Ot?NIp?;פ>?#?O5? ?4'Hn[J?Iag60?+gFpݿV;/?&_ѿv?*b3n |,?쿭]i'?p(?Lv1]>?ؾrS}oȆ?2:d?Ipb?ww?7x?"tz?/|?'?#?&.l~>|? E?B?-?)1gcg$S7ɹJ`Ȩ cs>I_yKMzN?!ҾN$?"Ta>V? 0[<_ ?Ezž;sn,3M(호?W1B&[*?#Wx,?*=w7Na w]E?"=HM?2J?ؾ .>B?1ܲ?^)?cJOD`?(8?FՉ/M?Mp#w?K@Sg -?P½?5_ 26?_{?V?N??E`_>or?(\N@|?Iĥ.`y랾5o!?b?(nv:?G6=?>?O?5c=l?7C?= h??Q?6=,?B#?9@'?/⾊V}?;H?V?4j#?)B̿Ⱦ_}?w ?2Ӿqbn?Kx?8-a>?Ev?)X"T-pv?Goǯ־ X?'ܾF@ཱྀjx$?ɸ$K7?&?;h:?Wɾu6?47?׼CN΃@Ө?B ??Tν9z|?<־B?Hc?WV?޾9пw#?(?)-Y58I#GK#uH 5vA?:?Yv?<⿞R=?[?67"?:w^X#YX|loZP$ >?r?O)''7"?7 -$d?6Z?VDѾ3?G/D?Rt^LOE?IZ߽߿ʾ3fM?G(Ҿ?+޾.|νc¿ο6s{!?MbJu?H?D?_i7,?@2><?6ACӾ;щ -&ý1*?+S= n)pLw?K4?0~q2?D JE v>?]0J ?gap(TwݟZPhoT? 7dQ >?0l?5ڀ -\??l{?1C?;?3>s??3@A ۾#?G?Rqp?'G,BI?⦉?a?!HvU*?hAo?PTu?XA&@s?M?^G?'^ʟ# J?!( :?ѩF󾀃d ?60tPt@Κ?*wM?>?'\?(?V)?Ed?FE TNڵ$ю]?fQ ?MR?(Ө$=?e?楑)?Mf?;"lQl>?;`{ -?L?N?_pM: bxz???@[Rw¿>?"g¾vp?(1d@?-`EF?Ag\0,wU?+<(C`e%վY?% (?H8%?1>}!J˲w5?nHV(? ?|[R?#TN?;Ǿt?<69?&ľ[-Jؠs?Jum"i%?Cpିyd?rᾎʾ B?I?:Ll0?=$E :?;%?=q[?;]{*,{B?E⾨4?!?4?V?91~?=Y?M?}g`P?Eg>R3C^n?*]P?0ؾ~>E?)Q ? -?ay+p?H9^|?d?,(޾ 4?'V?&u?6?4?=n? -\{?(rj p?HPj?6,aH?#R? 鿖Wnоͺ?CM?Q? J6XO?_>ؾ]|z?4@?" 1?HOD?GHľ)ƿ0?=q? ?̚g%bkn7 f>⾅Z? ཱྀF?MT ?7enj?PcLW?BY?4?&y?#???>?5?̾R+?$j,տ[?F9)4G/0Ⱦi˾0?lP\N7{Wv?$3?7?8ƾ8ksF 5?] -?;bf?$?7?K"?~𤾀C?C?X?BK]f?b?쾁/"꿡| ?!?L)]?҆Í2?*V?3?T?)r?2=7j?f'?θ^H >?*adS]?6Hj?,O?@ɾS?&?D?%h^@?@(I?2q?Do@ž@q?MkUiYr?=sp"??G? ]?G r#v?C?B8?=?l_?Xp?"?;*M>ÿO?$]D?%궾ܾw?O?>羖G߿~ֿ?Eؿ~?.싾O?K+Fc?=?6x=0[;M>(Ze?H?ڔ?&Or}Ѿo?9o?1 ?64|?bI?7AT>(?%?*̾4v?-ʾ}c"؊?C릿;??F?*Z'?V?5O? (??91\بSտ֎?@?4P?:?1/ ?AU8?Xƿjn?dھ?\?PԽֽT?O'D?P?Hv k4s?^?J?b?a0b?G:zS?X`?I}{边.l2?OSҾWB?(?3z0?0"Hm>q~|?޾q?#?>]A߿K~??Fp?A?fA>~?9u?.C ^输о+,?,o:پf>"?8 ??lsoLJ>XG??%?C?h0?/Mྱ뛿 [?t?<?T>?$X?j#,}~1?Bޓ>~>?ӾxKY?9^?P?%?S3?1̿p?d?^J!>_ucM - g?==b׾?)wm?6?@}?ݭ?-?-ݿh4W?&p?ݧ?A?^2 C?οW?U$<テ?R x?i-ӿ ?YnJ?m"?7 f -?v;??B\?"rV?@p7V^M?MP`?Q?=]?Sh?JݢQ~`?Pt0?Bam??ҹ6z?7r -ϾLR>Ҏ2?2?m?8 ϯDr?SH"7?G?Q+P?ϕ(=8^ͨ?@:?H?CQC6.lVʿvR?/- -?T݈?R4&q<?1Q?+x̽Eƿ֌>fsտy;?2??(|?)#>??SZ?l?2L6sX??\?ґ?NVP5M?'֪?bžtjľC0?G?0e?* -BN>h?*zV\TC[LS翨?y4hF,+n?Ճ?3 ,>?RN{:?rB6iL\{a s?:'^?#?F;gi9?Z9?,N?+S??xξ/%n?+?<Ќ?0:T?9qr?!(? -p?=|E?:^?2⾭?@Id/[9??.>?Yۈ?䒾:?mƽ?GC~P=i>9Rk/U?V ?^y?[!?`?0`ZP?= ?^+ʾZ(|#K?Nqrb?(?F3;?"wa?]ֿט?KYҾg?F!?=[fHD0/?S?J?=RZ?@qp86S~QU=3?;?x.?!V:?'?9ھ?Bxz?U¾0b?'!Z?+K?HrJtAUS?:$?Wj?Bj? |?D?@hP?IپYꝾGb^, ?.YcW1?:Do?pTDI?*M?<^G?q?anmR?-I?E??GD8"_$?"?Ckq6u?߽(? |H?#6翆dX?4?5?Q6<7TLEоG?V*[?AÂ&y?$?n>?>^C?K54?32ξ?iv@ B?9h?mM?]>jL d@p'=ʽ ?N?I?.X?^?'p.1?G?Q?A-.n׹/\?g̾a|?FZ=.@\?w\ P?DVZ?SB?H4Ⱦ ?B\悽q?I!?޿P?Mi?f?l?9ڼQPv -?In?ῤQJ#3N,?E;?'"fۊ?轞p>Q%;? `?.?=ɾa1;]?>?LkI7]㊿о?M\??$\?:?>V`?cv۾T)D?M]`? ͳ *?!Z!?"пo ?[뿝z}dA> -oj签w:{2?!&1 -ǿۏ꫾t?2Ѧ^`Kg0?3?)> ;e -P?z?+\?_?,E? l?6$?*侷2? M&.\vI?rt?ESuMI?ź?Xlowm?v?0ۿf^ (B?(S'?B?V2N? hAf?!{? -?3i@Z?EQqdu?=8?1?EfEN.?rw?2Kޚ>"܊>;?DǙ?|?:voL"?\xBY¿jҽ?fa?G1 FܾC/翉X:#3}?D⨿~?\j@NpM ?c􆾖->Ѐ?<Ƚ?9Y0K_> ?p?AOpP?Vڿs?R?;$r?3YlȲC˾"1z澝TBbckA?i?0?U*t{?,l(?E?(;?J3?2n?ℛbu?: ?G?Im澈ᦾ1iӾPs?+3?1b??AD?{ӾI7?3&i\Z?A~? ?H|?8O'?Qbv?5?u$?*?q+?8?-?O8 wbٙ|h\fMcnYҾe?.?(g.???I?-09>?Q~i?)QI"پP??DN"?ME{FvJ?.IyBE?3\?*?%#,Ĭ?(%ai*?䪀?.+0QC\3ūL~tH Pl?2wƾ=$ʾG?0gC?8[??ֿ?A8m9biT?D*[߿[<࿥h7?bz$jq?νni? L?mn?!?;n?v??4)??a r?&kk?H>N?!Dhj -?gDIоk  $?>Rjl|G?. -%8&f^̾?8GؾD?+.¾O2kʾ[?*XϾdȾ.No/?8y)?"?!dq?C쿣ikT5ھ#F/?8 {?fR"RA?5 ? _?&?O?'G׾XS{?zF??1\?L¾ѧcN?-Spþ1Q?Dڎ?Z?q96"?42-x?A?U7bՂQd45?7*0x -x/??BZhN?U?D¸?:fˇ?$E?׎W?@y?"=9?=P?O `iv2?@s?McȾTH?F4l>y"?Ly?h?QQPd?#?K8L?,B?K??HVl?!V>?Q?@nN}?&⾹?D|?;?UUH?.&W]ЦXYhx?Y?ʾx̰4?9,ھ֑?+ξp̂j;??ҥ?%Bk=!?A濑߾ ?<9 ?N -Hr?.?|澍 ?B'`Q澚:m?J?@Ŀ?;(꾑%?+'H]=?Oo?>?PV>ν=-$>TzB4>7/?e ⽕@2l?#@f= -.Rν̾$8վ'L=4n׾ ?L1(?0<"dS3?$[ -R࿏#D ? D J?7=Eq{?! gO?-X?g?H?Nf?6?D(dL?<>+?lT?=P?%T7ř?Gll?>#ȿe?6xPl?~H?8,?.d?Q1?3P?+ԿTi?ٔ&ԾoK?ޭ?,p?(`'?>ȿv,?Jr?1?6 ?h|]6g??3V?޾?8a{| x?NFuxHup?? VN辅i?Ӹ?-J\d?ƾɬk?4D?8?꼵?R?8?X1&?bؾsJ#? ?Gd57N?8ڜC??&C0?~?>[n? >v0,?ѷ.?.^] Z?e?h?9g)@Bk2?NoQ?&AlI=lDtď|k?R?P ;l9 - ?퓢EW7?SM>?<#!X>S쿄:C?G3 - /?:rRf"u .?&AW.3?9\ښNؾ=?< ?\ PξU濙luw5g>^1?OS?w=[8yD?{?EtJD?Bjf?ʾ%2>w6ԝ?`1?:Ls -,Z V?#__<#j?Tc7W?W?K(?* @2?N\쿋3𾴭?D_4?H쾩Ɓ?3P6O&Gh\@##ʽ׾?=Dƿ`;0N澚2;??!?qھM࿡L3D??J(t3?0F̾xھl?#:6?=h }?EYL?Kf?5`޾?h?2ԿR+>?־Ⱦ*"~־{u?Q뿓S>z5yo??J?;??c9?bӽ־5?/3X|?Ӟ>?k?!n?,>ܟɾ_B?RAϛ?G?^?8z}V=Ykx*p(?LK7.4q?/j?:󿿘(/ڰ?OB E;?Ks?3ش84y<A;)B @v o}A62:>Ž8bafx?:? *?O?"NZ6?$ -zӹ?Th>?&)o? j?ꫧy^,?J?1% \ >8ܾ^>?L: ?2X*0)?$ ]^O+r??޾m??2fȾ/?"S?<@:2þU+꾵iξ1j$K?*r?$І??Ϙ?6?E?.^?? w?("??;]q ?j*l? -?9 -¾GO,I@杊^࿜[?P<MW4?gL6+?/{? s$.O?42־,?6g?+&½s`?/~H?2r?<nEXP?B2ǐ?7=ξ)? -<꿲Ԩz:=2:?B |H7k?nξh-?L?]S>?b?u?%gRu6?h??Mc[Ƶ !?]yξ0&߾?N#?J?%ZÑ\!N䉾࿷0?9@B}>%wk AIaB@&?%?#E?;h? -k?T3z?2_)}V?*JBA6?;L-?' z]~F?,܀R྇Q9 ;p? Zh? ?_ľ㿍? `itU??Ծo?;lApe?aW?X?5K?< -Ϳ)?/?:?&AW?+图6>Hj?oڽ|-?ݞ?\w?&VI?*9@bCfKOKw>Hc?74v?)m?.?߯8츾s뾥x󬾶\?0?#|;?/޾I?O"?K|⿵a^@?!꿝N?ڠV?2]G?ٗ?; ?jѿw?JѾR?\pg?*?6~?z|n?OiDVv=ҰB?7*Q+ -=jr?4?AQ?F?JBmT?I?bz0?]?^a?l⃾ľ?`?9q?ye?DZ?UYj?k?"?:L뚾⿛R?-"?9(mҿ}ܾ?H -'?&ڿ?hž;oQԫ|o~?Lƿ'n?_?ܡ;w (?Is^>O%j?05% б@.k?8F2A}n?봿n(?#پ:K?Sn Y?X$?&. ?k?CB?196I?B?@N|ȿ+r\6,ys K$RSdrƾq4?I/Ծn`Ӿ?ܸ?5<-sXea s"?QDVo'z?߇{?|?2??BV?Z 5>3F?,f?Ntk>>+[>ܾ['C4|?Z>C>>` ? ?4Z?!;: X?GDD?2?$K羠.6?YH{"%w0~, ~徐!ޚ69оО꽎r,t\?=r?:X?A*?K|8?> E?8>ʿ 6 -|?de?۔S־3OP?!~b?I7?&~*ܫd?AV?>C?3]F?MБ)"?3g?!Xƾ| U?8@?0C ⳾?4?3}5ƾs^9U?.g? ̾[3?KzRA#tv?"\?(n?>Fj?1zw/.-?@l?:?82?̾&ȃR? rڿL?Q?7Q9P? oBm?Ⱦj -X|g&s?2D^z? ? Ivj?7"߾[Mz\i?;fH?%zH6??h8Ӿ*>r?r̿zM?۔? ",? 2b?8?5й? lmS?R8? ڇj\Gf?Ol>g*?F?O3avag K ?st^ -5R_L?g) S{OM?Lx?U?LTj,Fs0+?T;iz?>bu$?ZT?GN?W 7?@R{ S JmU\8s9־Gվs?R?3y>v ׾=?)ڪȾWzhؿg? -?ڿd? 6?BP?lξD&D:L@-J?+pɾ?-l?&鿆?ߪL/ݿrj5uZ!"*?Hu.pt?+_?S@jl| <"X? ;?%?+ꖾ&?"{Y?5]_?,.bzf??XHtѩ ?_`",a?L8~W?.oB?O>{?$?dMR`?=?K>J?¾pDZkz쿨?N+>"F?ԾSX?1s>" p.>??%7<o=Qd^Ծfy?8>?g>b?D-?a@%?r=U?I0>2?>T?;Ŕ? 2?&ڦ)?:[@(?F٠~^Λ?r?t?$ݐA?WwHb?ؿW]?@\^?g$O?bd ?d)gA?%GJ7@埾zտqkV88C#5???{0Ap⨾8?8??>ֲ?U}޾sL?iDr?#?e SU|?QZ?8Ʉ?9 q'}y?=¾YjO羝]?L??tv.rA[꾅p|?4z?9&C$Ⱦmv??Fľ͉?9H5ム,{B|#5??L ?*?;`<3e?L?%?4,Ej?2?&X?ET)?ߦ?+tǟ?'6(B?A???tc6?&g -?8bF6i#RqPHAĿ9bN?K7 ?m$^,B?%%?'Ю?@U_?Ef:׊>?:a޾=?,򈾡h -r?8y?65CՄ? ںuXHn?A?1zz?>v?5? c%&?*JZA&K?8{-pl?++?3?-U?uԾܼ? l?>!Pþ?R?3$?a'P?(?3}t? )t? ?Fy?$о55{ wz?0"p?HȾZ?D7H?%?tI`?GP?4[-?C6?9ƾþ#k@cb?R@l ?H?="o@?Jp? uֈ)#D?<I?G%T9~4N?FC?.(I'L?eM{ꤾ9A?Sz-I A۽N0?{|HA?DB[ܿ€69L?T87+M)lB?Jy]?JA?P?ᾭ~I̾y(˲E?5˥?ɬ;)/&!uXh|d[Pͬ?1m?¾D,?O3>ޘ?(?P+p\'?Qy?XNg ?PMD?9fP?]??!?9ӈ?3V07,??8ͦgٿE"?K񵾓>:?! -Ti!b?*(>?4B$?(`Ê]?&@"j?3B턿g?fտD?ߦ??(n?Tz;'_T֞X>H|rz?!rf*ؙ4u?Q ?;?ErY.C쾂# +|N ??T;? -8.Ͽ ?XKZ?c>$Jj㒿}־l䈿D?FGپ>S侙@ֶ?>X -?m'6?Dᄆ<)?,C?JoK>4t?8 b>?<?=ٜ??῾M??־l]?)c#\rBF -⾨ ?C4(VhbTb?W_៻󔾘O? }x+E?EMѾxP? -R@&\u?c?o?*&l?>?6@?)]{M?+>5z04 j?#>"ʾqO¾>|޴?-ܾ;?hiῩ0?ԇD?r?K?0A?6?:\D\t]?5fҾZ[Ķ'tX?' ?8Vc׾',? -u?␾Y?Cr? = t?SkЧfJ꾋01B?/Ff?/,?JlF?FV ?8?"6BŒ??M$ʾh?қ?8M?+ -?ttjNa?'?+k?#?.?1u^? 3?EUZ@̜@rD?k>9bh?Vq?Ms?q7"F?hZ|4?Lkh?'B޿ыļ(u qhc9XT@?Qo.@ P ?Tl?[\]T]o mf.E1?@0?L?9N?ixMK?xy1?5]?HE?Kk?п?'?S9K??G?L)I7rCa{R?4?M9?:-?8bua ׾C"gͶ=} ?GS>Es?T|\ڿ6˾4~?9?7Ҿ̿,?#ाŀ?mxBt?йP089ب?$f(^ -?؛𸾀<l?Ap8?Gps9??QBZ[?*I:?#F:Sq?4?5/z?"?*u?'?FvB?D ƾ~W7f?6F?!-0?3{?Mj? }p䡾h?0?H?5꿞Ȩ?A[ ˠ ?Hn#?GFk?{߾m5<,Z#?>?/q",q3E~?>r?Fl?A?$RX砾c%?:od^Կ)d?8r? u:?/?Diٿk]ֿgѿ?aD?&x4ҿ@ъk a^@˳h= \??iݰy_?@?@[Y{i?WĦGl&?T<?+I}?G?6Oƾ۾~ H{>?=pu:/ɃGn?Vؽs?_d㴾?F9a?oQ?$P:?=v?^Xi?D4B鿎?l?k̾+ ?'@5A^@<#@e@ʸa.?kT˶EeU?&?qg -L?^Z?3Iu?߬}WP]?Dz&@?1&4 8>[p?>e?@e?l/*t1l? -?6?9,Xk3 ?H?8]?^?RʦS9 -cmȾߺ?T?0h?je??ό?;PľJ>Ī?r?9R?'?(vF?4]?7Ծhp?vi񾇡a:0}o?X?@?A5~OyGb?@mF4A?3Y? {E ?4icGj>N?8|Ѿ >;?Lp?-4^E?'>^\?_Ծ[ 'K?L7?Yo?; -?տU^?ʾ!?`E~r?67??o?>⿪(?8rs?.?>$겾m?D5?AE/?d]˽#̾9R?Pl&пtx??70?;ha] M[Ⱦj3?LY?B>t?KT壿?JW*phRa?,?B6?&xoṾɾ Ҿf).?W%>da\z?f~*7?A -?Pv?$n_- 1 ?7xj@u־(^z?*k0!BA{?R ? BoA pvf??/yd澇XZ9뾴P0F?ߥRv^*&]z?2,}?EUtbJJ?A?Ҿot{X?o?Uߌb#^|.¾Ctj}dx.?N;gQlN3?+5%?I?3?0YT??˃|?:?mD?.I?侖h[1u\tN?F?%?ڴ~?6?=Wi?:̾^x:X?>f?/7?,m?⎲?焿C˿Y?>?' ?8?'>J?`ħUK2z??(?A(f h?=*?=,?Yvl?(efZ)Mnk?&?* -ξL 2rI?<;k?0+n?Lpb}aAAӧ Q?M Zc?:?s?!,G;Q?p<hf=֊?aBϾg,?A%?1Т?[lܿ+?E5^;@??V?*j:g,?$?žb[?Rr?2Ⱦw׵?)??*^쿧M<_$?HiUJ@Bm?(?C?;D?@6ؾ D?0?/?Ų?ᾔ3?w?$b?68?K{ྣd澊fU?0&x?>4⿝zjt?]þ6j: +}MA?I&7?#2?ꤾ"i qV?'tpTu?-<澤?b??V?I~Ú[_6\9?EP?K?2tƾG?'*??鼾cj?I۾;\w.?}@{o?5.ľn?bm?Xdޛ? 6`Kk/?4? ?ބھ/S?)? "Rd?ѾF:5?=^޾Y &?2{ulr鿒?[>?W7%E?,Pd:?&?A%>3t#Q?Qg:73?6 XĿ?4[ݙ??:AUp?F?N?27?)Z?9žZ?".b\0?3g?&)^Wαm?5㾟٬mK?-鿿.{ܾ^K&?,#??C?5?/zH?J?Pb?J>҆27AE￰nDľ?2?6g)Zr??Ltp?$?־?Fn?<Ͽs>X?DU?@Ϯ?Q?}Lw¾^(!b\\?-޲_Kwbξ&]𾧕;?%3H[?*F?8BоЧ?W -?)?EC?9uy?(K?4pbfXCB d? /?F>Ͼ?@??%? ?J4?߀{Q򖾟>c'?2⾛??ξൾz?GF?žT"?:q#yv#5Ih^? ^6}G|?Gj?EM?!4?`ۨh?d?=?3?B?O޾g}7?>R?Z4oV\x6?H0;T@7=;??4?*??o 1 -齾u ?C$@C?\ij?')l?G?2u^]U柏K8 Sjؾnw_?>~?C뾢;E?>h?&R/_?e?pP{eK?>?%f?8:ʾ?1X$@Ӻ?Dp_6:ԽAv?b ſݿW?s»cW?e?U0A?k]?AJ3?&&6W6?7Յ?,Ƞ?A#d?*?hOCLo@?HIC?M0?DR?KA?*?G=?U=?UV,M?Lξkotӫ?ED%?G?\?6о?dh*zmX?2(迖Xƽ}?S¾R|`?;_a]t^WA?]ڗ ?FnA@þ߿+?.>R?߾ }4?$派J ?^L=?=ݸ?4ް? ,?ؾ8?0a?/.jоpゾUz?EY?2^lG.? 2}?@㾡Rw?Ehz {-k0b?C?"PjپUR?Q5TtFN?+Lv?$ERѾYJNB"@7Q e?Bs?:gej? 4?ݔ| ?5s:?Hdb?:>?=0r7?.?'=@?5?|޿1:hH?@@#@>EYz?d .I[?(ŕa|AP1/'v?6?Iɾ hxCVPfl?>ɾ޾HdͿ?7 QԾ]bAt|?&䊾d.l?H ?x?I_?2]A?Fb?Cb?.|i>s?.g?XK?Dsv>>t?-?[>Ǿ?3!??Zn?%hQǿ?4?l?C?t%{&?3 ?!?68&M,Z߾ ]v?1?Q8%P 5쿗IAP?S?#?%o?K{8Y5UQ2?y?@?UH+H{?%xbuXҾ&?07迖B? %?2Yr?!ns׾?2Ⱦk\U^žU6ƶ?Fz?7>?%\I徎?c7FCξ?W ?6?4>?о?>v?$-}jP4rj?? >;c?Jпr?1A?@7?WR?.h?.?[l?2% D>^G?%99D??.?&CԿwzW_8)vϾTGG??Q'G@~Rx?/?[V??q? ?7Ⱦ.M0?.N ?4cdZ[{?/8ڂ Qd n8Y?]ʾ ?h?EWĿR8̽?OD<)3?ۜOE?+⊿ þ2۾ھ.{p4>T?(Y'?'v6ky -h,6?(&Vl?: ?]Q_(脾5W>T?@?]վ2m㿌 0na0u5ֿ>?ޖ_?,r/zm ?,?Xe>?F8vt?&\?.@"4?t݁٠?6L?Af⨸oWྀpU|??/U?TJľ[?ݾu?UN܃k?U@4+?FŊ7g?j?NeMN8?;qn?19v?px ?H-Jo?<?$taz?Ϋ?=U>qo ?h}nf?Hlz?1)7adr?j q?i3>gBZȾeT"d?B?T?RJkdvֿ$LbeqzY?7V2М?n(?VARan-?>E\?Uq?I0?|žJD?#?ܩ&3ؾa,?4?R׾ȿ)q@ -qiC?@S?ʂ?JjJSbj(z&濓)?:4ʽ?A wפľ|W?Aq&86Z?2򿙿6 ?+ {??DM ?-z?UJ۾˾(?t ?1K辻f?<<8ld?G3?4ľtF?HmJ'D?'?>K$R?3v?пS.?fV bܳ>>;?}?0#?%پ_`?!x:6@? yD?dȾ۾⾒8I>|Ɓ?GvJ?M6wv>[>><܃6>ؚ}?;N?<< C?(Er?.@>}P@H?@?dY?# !v?9r0p9ӮU?$54?GB?>d@꿁ؾ|?Q(f??N?S?Xu(g?*?P.?tXgXÿx?8V@?6?L0Y >C4r)?X5IT?r@f!)?W\?E'+>.{)6̾;?DhR\?O I|S5h>s?B˾4?y?^FWؿTþfA?+8hA{Y>Q=?*n?`(?xҿ:O?°?ܠ?IH?Wf?̾v>?WbgV#*?Dcu?-uоKA?Sz??5c`ھ H?%ȟ=]lZ¾JxX?:YCX?( ??2?7M7g?*?*ʾv4?6 ?$E?3Lj?I=vԾk6?"U?20tu? ?580s? 䖾 ˿ڑq?$t.TB)Ŀᙾ?.`2?"{IпP?9(.N\?' w=3-r?[zQH@D?#F?)nT?Q?;Z孾œ~?8M?}连 !ؾ 8?j?:NޘͿdiz??.@?cY?B>'\#9?Y?flZ?H;'?KAǾ[mS\?ճپ/U3ѾN%þvR ԯ1?!!?L??:;vj?2F?N4#~?``?H}Ծk:?;\X 俿5p>&ݴOa쿡\?M5>?-ѹ -?+O,?Fn%F#l?,׾Ұ#?0v辐7?E?(쾨?8྆C? mT#s%^?'?E陾^ֿݾ?p?1r?F)?$?+Xǻ>JV93D>ճ-Arkr?o?3Q.bK? I"]o?j? -ꂾ6?;%I?FNwm:{n?2?✾g4 ?'??K? ? fz?(4?Ҫ?NоgbL?% X2XȾaZ>L̽7羵?/vL@3Ψ?,2ȾiDx?!E5d?n^y?ճ|nm?v?W쾒V>Ux?"b?CV? ֯?kjNX? ^?#E?_? ?Vq?)p?8J-ᾔGο??EJ?@@/>?-C?Fb?bQ ?P(>qÊ?](?'>\?S^N?HLDɪ?O1?dB?F6?"Io?G6^DZ?fLRھ`r"UB)clԾd4ֿ:?:?P|'C1c߾A!ҿ3?TX?@v?KT?Y7I?XmB?Tnr!?:;?'?98?Bo.ԾȜ@0oԾI?[?g^?U/0? ??(FU%^Z0nS?=,Hkd2pʫO~{z/|? :4@uK*?3`@>?1'xϾ_O??(&? Z@ybA?׸޿?=En1p⾉d ?.GV|DS>嗒?%X<>?#(%?0J@4xYѽ󊾬.?9zQ?C??/#D? -??(38/3ξy?9p?G,?)-xtCOd)~"?GCr?+bu?G?B~L?&/t?=?뎾4'Lv>1<+A@?~?IB?(Xx\n'@?NjB7- -5Q "cM4Rl?W߾H{^巿 c?8)T?>v?[d?@rF5#bp?$?9-/?Be?Ly?D?F)F?KgkZeA? i?A(?9->?Mi)?! 佽賲_zľ)Y[H{?6 -U?zr?ؿh9?OTƵ^?2*sпh?t -3վ&g?翺ekO?J?<-j?SA泬CAB|f;H⿥ξ#{?1x>ۧ?( ?/Ob?b?LG?Pc習?-L?D0?IiCeU?[Y0آN1?#w?M?l/*?$<1 @ղ>3(dE?꿍kھftv0( 応u?0r?!X-c_qH?cھvP?@L?/x9.e?\\4P?׾9?1?$FI࿟,S?Aý$<& U?92?UL?We?Mb!տki,[i0ֳH2c?j?'?EN?>Q6>1iAEke?2:ZƮi - -j;X?S -,?S[PF2?xkvꚊ?e?Ƚ|JV?7C٦M?G`??p?G?/3a?[??:uuDm怯徬t?]|%$tL?#q:wP?P?@q 龨4KQ9 ?6j?&?t? iޫ?\=_j¾dX?RP$?s{€?Nf_z?0?~.?Z?0'f ?7b - ǿٿ98?=@?u{`?.ho??U?'鯿X<꿡j(?M ?-J߾o?3ѯAARBXBWK??Zz?G(??:?3 ?Ř/߾\0j됿()?܈ݾ0>'>2?9Ҿ;?"?6k?,`ԿjN'7?CS kC?Qd*?On!N?P鿪"&7?r?-?FŰ?&w?a澤?,4r?5T?-xž@0?]?a???)Bξ>e?#?/hP?0`x?p([v.?9߾ψ2Ώ?>Կnӭ?MRH?;ﹽ ?V`?ޞ -*?;G?l573?۾l?Qަx?C\?Z?Q^?Ti*?* -}I??}(?A~S? ٿI?:?W>F)S -!$Ҿ&?iQξHDW0?Z!$?:{Cp6.M5?+? 5徱F߾\?'n\n?@?PB?侺8?-YS?% ?ES?M͆RԾU?B}mR0Xذ 0?7B͝M9L?=XeT8_[?&,>D?4;?Iz="yH?'i%倾 C|?KzH?!%?漿:|cF?H򂾖`{?\?x?+ԝ?BY`??$0>5f?(?砽ĸ?>5q?8H?O^X2\HuZlE?>?;rĝ;?!ƾD?%+l?"ټ?݂;БO?SK?&??)drn(辫tGN}? ٓ;?f゙L? -?,`?>?8d[?5>fq?NtqK4.nM}*?Pr?N+K7ujx"xL<?9QKX:ڣN 9SC?c(?N?@#X?A\^?H&;Mc?c?i+ ?SF#I?M~4?G: ?Bp?Abؾ׽=z5ֿm?u>-?B1^Ftcq|#4#9?T-X N?ƴ?- K`Կ*[  -wŽ$y50?Pc?<.+?1׾x ?=^?4 x`WonTL?&\B??2 *?s?A!?f7 x?D'?q\U? {"C)%?F!?*?Y?#ʿl辝? -Ug -t?5J?.Nz B?7uݿ7?I{?B?**@<?.ހ? -E?͢?+.?8?&gd?TE q?T?1? ?6u.A`??㮿B9?+?J'?>?.?g/?#&?<?7AEI>_`e?d޾F!˜mڬ>O ?0?lu ־ Ⱦ T?"A-Bz?ҋǷ?:2?4-p?=L;_?C[Kg?6?Qym濻p?WsQ%CzUȅ^rr)?Y7R?P+s󚿏W¾*E\ ?`?R)U>?K6t߾R&v?6Z?_4?`Y?ꕔ?A?,tE3.wdp\a'ux`ƾ~/+|t?&Y?CNA뽯h#>6ƾ so}4?\ٿp?=~?Ւ?F?1u?޾?K̵F;??տ4?J$?,?Ͼo!N+?_pr>V?@?$v?n,ۿq4?Hdw0?N~ -?M>M?l?si?:!RBڿc5\ؿ?Br?5*?VJнK)V?#h;?$sU@_?-1z??71 \/tV.hp?`ZȿB -aCԿŽzܿ=]?<@?5y#&$5O[ƾ0j=tKF^qs(~G@V?-YȾkye>܏E?Bk[n׾?0t?2b{O"?>̆~?I9;p?S^ Ae??P?"DW?lڿwBv s>B?&?8vTL?3T?پ:?^ ?.T?^Jr<㾉?MA?, ? 7GL0yk?Kt)?ѾQ^?9?e?c??2F?J?Eƾ1D?*]PO?99) yPIR7Rv fbՁ㾃Iþݯ?&?|CG -?6?'K>Lj? -$?S?&?^t-?Gj?Nt?*>n@<*@=L?K,?S?߿%?@?%uZ?*?K[v?Ӈg?"?@E 迄-c>?_f?=Qkо1?@䑿?J#ŹŴ?F?M7Cξ|?OXo?.YJ?\Jľ|?CV?0622?-L?,.?B^?7Y6?..?3^?&z?\R6|d7j?= -P*[TސV?6M?@\?KL쿔f?0 ?UCȾgV?DV?e?#_n5L ? x???6 ?GW?](C%Z?Uþ]7 @OsBg$?F˅?,.?D -hMS6|??@>o.`FkM?Qp1?%o(??Z?" -t6?F-?5S) -?5?,?)???8 GJT]?AxR?n?*?+J?pC -pq0J!{.h??!?0?0?UzKɾv?i?lh?.d?&c\?!gei|l?$꾆>?[?No8p^z>~U?EQ9?6?3{?YMڿA X?7#=쿏?7g?L?K\ ?"Z?s?eY?x0A?6:t -MپF?;+"?B]=C"?3i\8ʚ?aj~?(q{Ԭ?/ȾI"?1?Nj?1R?B?Dp?Bp?AK*?0V?BX?J?G;ܿ?&p'a?ϼ?UG`!-A?'VR?,*Jm?&Wð˶?.=?F<4;"Ѵ?p1( ]e7Cƾ?<(@ Ⱦ%o?Uv3e!so2|"?1Ҧ ??;?">'?ȕ?)2?J?'lĿʒ?*R>} ?6>ꩰǷ?1\"+ տJ`м?#>Ap01ـ}?7?`?Ӿ]X?g__Tr?7/)?@R?/f-?(?z D??:ӾP׀z?XA?K"?d?ڰ$?FKz濒moklrþU03As?BQ;?$1P=>u?i@?f6?\?/Mw?/n(?U1&a?,n5SF)d˺?74?# ?0xpEp#?Ăo?BC>о-sDW5ᆿ^8=?)C?%fR ?2 @}@>֌?_(?D>3?<?H?pľb0͒cZ? ?4HԿ)_6?TK?0(0?.TZ?Ir?#P~,?)?6x?@0??e&?%6??Y;ჾ־?-,?.:?+6Z/?Q{>c??7a?*bn p?'쾐y5v'6-x?X6uVZ?nؾ.?4mk-?YG(?Xg\࿖gٿ?"4xfܾ.멾~s?UH_a?(r?>DU[&?NL,?Drh?7 ?XjB?VvT ؽr?2N?0@l?@~+t0I%Fw?ŘӾ̻JX3:6 7e|a:=R߾mr,???6F@?b¾׾KC¾[?0좾Ӡ,?8??8)?5!?7qͽ2R,Bvھs?Tܽ -[ -?R?S?7žYN?%?.q?T?dR?;0?5?t?Lu?U?D V? 1P?Cͽy?1쾌;>g?0?,4A? +&c?B?0?A????d6?d{?9?ڴX?UD;??űF?C¾d?$^{?&?Y]Z^?E6q?1@<0 @ AL@2 ?ξ 4?{Ҿp?ODn̾ż?*?4-:zZ.?^r?#?@H?r˘l,4A?K?p%)sG?>#?EގP`?KI --?3?'otxW{?H~ۿľ&%󹾆}" )긾3Pg?{/?PD?+R? &?-ĿRҀI?9!!?jUzN|aツQ]2?H3#?-U?# ?= ?Qf缿x{3?vE?G֢? .f@?,O󿪌*?_湧?SyԾڹt徿社pS? -ƾ-f? hv?)[>?X?w?o?):?+.a?)2Nw?jG?%\^?$?&^zW? -r?6?Tct0?ߔ辏p?.?$f Q28PxZ?BM q?(GRp??/|^5?2|?o$k,oHj?)JOr^6??!ھ?G/?'R?] 2/l-cG?H뿏?E?.ݾ?+=5*?3?6*&'?C;L?+/oҾ?-?EɾV¾qn^"^k?TӾWܿPS?1ZL6 ?x \Yں?,?c>6B$?]}Vੰ>[{g?Ei?V?߈"ܾH?ҳm?:Dʨ?*d>žM?# ؿo>?ʗ?"4ڿ?rԾ?$:Vst?Pľ@@#?1@+@$?A?&&?5 F.Ƒ?\X? qr?-J?-mB?7?/V K?6^ۿ> ??*Op?+xd1r^g?Ff/S?2?ۦV/yv#n?hY?n7?W6?&'r?=H?;0 -1-?!UؾSaZ??JD"?TFW?G;&|f 4?_?hR?@uU5D?>^ξh#j/xSؿBqLͿK?6^?T?1?(??88?0?F?=">'?(jH6ٽ|w?*>?6B)W(?뢱?"PV?نo?@a?4\?~MO̿iD?9.b/{6p3EfJ?ҍ]?0SM?,i ミ9<ނa?)?;5?RRv?)?=yѾmP?*ݿQ?JmF1?6? ?6?6j?7"xT hy?'~?Qv~u?\?? ;ƾY,C?#??Rڿr\v>+:? 3JI=I?0V??2p?9?鷢?Bx=('?2?[,?>A?]\? ,?˖?&X?,e?EV=~辻Jjl*ھd>>׋?IR+?D.7"z0?;}?/n?[ ?̽??I?8~9?/ɾ6?=[vĀW? -2H>fo]?D&B`|?+?;df89ר?K.jEǽhN ?L?dҿIG?R9?P[?d\?PY?3V(?61?Fn?7cL@M?M\?8?OU?;z?2(?Pf?EK!پQ1?B+ؾM+f?GKX?F;Qi*?%?b?J34?u?P$?Oݍ6?3n?8߾?7꿩J?JN?2uޠ/g?~D?S0*'Խ@?'s?A&v?%?4?B?ZՃɾ4?+(?Z?/TiD??PL?6辝MU$0?/~\8?Jz?R^?)Z?0IǾ:?V?sþ?'ʌ?%?@6lC?/d ? =PЖᅥ۾s&>6?Gbmɒ ?3?2A迫{??Ӓdma6p.M`?g?ؾ~E?H~?>KM?(e?,i?5{?,俭 SlPCW>?@ -?5 پ?辤T2?An? ? }?W?E5?>n?р$Ĺ?R??ɗ?8_w>? -?LNɿ#B{?M?1'ھܾ(A?)Lc7H =? J{ֿZe3^S?-t? O?p?@ԿikE?1r:??h>Uk??A?2h9?} r?\^?,6=O?dK?]`?Q/OǾa?>u_nX?R?zߣG٧5bؾTWr⿈?D?Fa=v|C?RUB(T?Q?DHؾn7?V?NY?*??N d?<b *`\?;^?BU?8 ?X?|?=\ܾg؝ -P?bN?[ >G?U־!Hm?R?&?@Id? >\g?1T`?"Y6??#N>UZᾇs?1L>n?=/?BO?ZjsKizDڿK+?Z? Y?:6?+?W8/нgI򐔾7xq 8?/D?)"X ? ? (sNZ?>ᄚamj<2?"P?+̾.?{ ]7u?ZB)t?6? қ5O??$4>yS`IV -q v?C`>NVѾ]?P/꿜?ⶾyt.?VP>CV?&$?߾|S>dfm~H? ?j?*L?+\G?1?!?5]Lur?7?1׍?=nДv,~g= ?Y5 R?[F@A?P??Hyh?M s ?`F{1w?;h2m >֑]^?A(?[ ?=TUWt dLb?>s(?.?`qtX?z*Ϸ8v?K ʾ0?@?9!R?7vo1;9q/Aè?fA?3ſuuc"?ֵ$B ԾRR?@2*h1 6b?X?C?K⿋N0?BW?F? KĿ+d? HW>Sa<???I?+??׿X?DN?-u'+?/)D?=䢾(L޾>> >߰*?AG~?j6پJ?$e?ʟJ?A"??>e?*B?T?ÛL??)?$pְX?,?ӯybKb{`Ńu>t̾?!V?2?_4Ӿ:տ?2оqW?9њM? ʚ|Ⱦ)&5G۸?" ?>b,?'T ?2?%?+㢾t>̮J?"?h?#?Gvl?1Rj?[?+h?Cʸ<T`?P t3=mû6 Q> ]?eN?VO7w?A;)Mdڽ*?P-g?1eM% Bhb?HaȾ e?Ch?L?k-?/ پdj?H:)p? ?CȾ]]O?'d? ?V?^9Ly=?9?BnNBf{~J=-H%cپ~?Be@??T jQa?+ -XH7E#?g&WQ~?1?) ? ?6X?22?Be?&rr&Rs? \??ZE?%V?!侮$x$ѽ8 >D/A?<?%?M_gh@ќA-h?ALS?7]z?S?6?6Hx??FXzgQ>[?'sX?M;& -V9h(?0?9r?,?)J?< f?.IAD?"?6R?~ȾU?2?4j+=8!=dȀRʯܿt7??/;nب?F?R?, Z?A??SZn??#t&Qn?(/4?*,I?17rY?,L?U?=u?9E1? ;?j 6?Q{ Fȱf?t?Hg|?n[?5ÿP?a?Z?La\ȾI2ٯxȾIĿy*R?Q2X{#D?_QHؿ|?3ֿ ЀP?R$ax?EA/?A/Φ׾V=?Oz*R?ZQM?>xQp?L?+?L| -CԿ+Ծ??1<5M]8?B:{?E⓿ͺ W?䩾3q?cqZ?&Uد{nxgH? p.Ru\f?QC]'T?2aw+J?,?#?6쾊?&?FDFO(xU ?6Ig?w{?PBNΪiTQJб?=?~fB?@L?:J?']?/fWA@?S?Ǿξ,?2A218?L??GH_?C?>d?:+R=R?4 4?"?7aX?Ul~꾙(w? H%(?+:wt8DZ?*JŲ?)!x? ooOB)_(?4~D@?ľt?nh?㣄pY辈*[?*X0Ծʾj? ?X??c%?@7``?JKE?B?J쾡?*>Rk?Z O^5|E,٣?)7@?C"?L?5M-?1>@*@2&>cVTo+a?=?.Ps?=4̿|_<վNʾ~K?5vYd'O?m2??Bw#_0?Sz V`?I0s).x8x?8pB@??R{1̾!]f??9ҾfȾw?>m?U@?-4?>"?+s:?1C?8羖ſh?!{|Nt? "b0?$?΃濤b쾫Y??7%Ҿ?DΨ0oBF%?=c?*־]`A62u?6PE-?Ծr\>U?EU?? -8!a ?֬O?5ľ5ƾwBˢ?,.貿?=?(?Ե6>f?LJY1??2]4=tP?ebC?]%?/^un?輿~'??>sֿϷ>v?'Jٿ?ޙ`>"?-ミrIb B>?r@꿘>?cs?ξl?3.>'?G???9i? 8?߾?84>-?Cg֚?U?,@V>‰@ζBK7B?ۛ?A?$xz>?EoaqQ+?2 ?D?.p>?D?~]??Ep?KS'?LRg`?Nsʿ?]?Z+?;I?0?6mܾpSRĘƖȽ>,?J -?:KLȝG?򁁾x?7L?gE%?9i??f,-D䱪?Q Ǿ;~7B~i?VS?&;,?ZEJ? &ᬾ\뾴I ${w|?&2?⨾fvƾ*Kw?EAC/86?OȾVro rK?/ ?J?;G?Pj?0[?SO?*?72?-?7(+jϾ ?>s>LMi?'Q?#?0@ھ3@l?(:f?A5KC?i?ATf*?H04?ЃdMX??&Dk?)*rX\?Jyξ?? %?!R?R?F, -> -y?;q?۰qv?( ,?ɉ?D!?꽜\'? ?C7?;%BE?%$l[GhQ.:?Bnr?UO?R?ZF?WԲt ?zR>Ѭ#X>?8!~1@޿=pfZr?56cz5?LJ :$ cwľM@?5ȾG8 帴wHgt?9ſل?K-?Pؽ+ZZ࿊>?[J ?=G@?9rDU?^*򾋵!lֿy8~:?Dlm?CP?Q`GB?WN8 #N??Pˡξ[k?Bx\M2om?PK?t??-ؾ8-1? ׿r?$,칿VXuھTDV?SS/oT98hj=%6輾?;J%?H*5K?e'?Fr8/;> *?%K?&BD?]辈㴾:]m?Imm?(Sz?3?=L_?"Tھq -3ӿ'?1??O -ܾy@~??m??3?8o@Ѿ]½dEr?: ?< !D޿~\?&m? l?:f?>(t?Q<n^?%?E"?3m9оuL??0C9P?#R.?9X2?6g?N- :yB?ݪ!+?!?<濕c2kR?/m? -$ ?l?63 $ ?Ȯpƾÿu *ᗿm"}ru>0]?쾇oO?3i?)߿@=?jT#?!?>Co&Y7>3g?!&?8!?'G?4~^?BRʿ7?Qy?!jP?7f?3`Jvpb^? o8_~?/ƪ?<9?.? -Cv?$Y?%Z??|6q?Fq?Cs?@"O?I?%b>">T?@?BY>su…GQ?ާmr?-d^"?#V4g4.^^?80?6I?4⪾Kѿ3~؜{ -?7U#?ͪ?J\?6 ?1ھ?I?@? -Qzjؿľ)?"y?-^پq>B*?%?!bF|*><"?6澡۾?4?F?&I??3:?!Hh?~]28 =;'MC>t?]8#?-rT?$XDZ?O72-4} ???ϼ?Dr??蠨@;=Y?1T -?!x?- ?< -n.?|X?CJ?JlC/7'?$ᾈ?J6?8I f??^뿍f{?ݓ־Oݽ3:_@9K=Xv?Tp?9@Q-?KڽN6?D9ScZm?{3ڡ?Qh:?MD޾ ?Y\?]ܾ5?A?bx?(??5eca? -q徍O?"2y?!?/a?SHSP?L?H?=,?*0r?+0?D翾ZT?7׫jb?"1z?>6 -4?8澀7n瘾,FzEP? ?M?'iA=? X?65 `F|FK&վY@R"? Fu˿ ˾4tNnv&Y8 ?%GľL?;,ך?4m?M -2?@D?J6z?)󦿡bt-?'h?LD&?-?BQ;?*?7꾰#Nm2>3?:B??%|؍)쾒\>?9?I4X?^.?%į#C?9xȾO^?D俠OB?3uAX?K<?^?E56V@f4?TJ?ZU?O>?~v?lоܝ)c.:?(XҾPl>[?CTG \TopgC\?"`9WE?Z"oQcX@澋MN ?^??59?S?>?@˾5[?8W?=+?H&꿎fP?R^Tcm| ?G?ӛD3¾tp&?@P?,? -?8OԾ̀??̾2"?HA?E’ta?F~?ʾ]־&㿞O?#{l}'zll\??F$UJ^־4=?o?(1?1cd?4v?@? ݮ  NCe6?<:?*@?$W꾰S4? P0pQÈ?[?$G?rȿ?b?/6?>?-C"< ??'{?;>AC?ޚO.|?"&?IkܾQ?BAؾB?=(??>ľOݾJ>̉?C?b?@3  ?5 -Q?Cb>!D?<$?̾?/?'>r5HV^?Vw q~ѽW?/[Kb?(?\]Y1;D@B|Xj?8?) -Tk ?NH龍pS3?7?Ol%?f?C*1h?44? | l?N'?/Ml4jYf??MM\?:#?RH#?c[F?FоBz?DUL%2lϾXb"T?)_?Pj?7%?RApNG_oNwMsnFN~?T5\4ԾZyr?R5q*?',[߿DP瞾[?%*?8ƾR,?@޾rlоbjZ]?(?J?c?Aa?1$BkC?4o?%nR?Z !?+ ?Z+FV?$)0ֿ8?-:ݿƮ>m>˲ѐ??,/?`{?PMdX>f?B)Ⱦ5{K=ᆴd>?nV?2J?/B]!IV?@WfKjN?[k<^?jz?,`?A?A?"\ZbBs?|ʀ??]?3 ž6PAž@C?M?Ҵh?Bf?l.?Ζ?G?6g!ݿi?Z? -8?KoXg)?'M~Gъ)6=?n -3ힼ^տ^?ÖK'@㾙ؿ??A+?^mP">՛P?H0?8i?G ?Ts^9m%H?:'E?%{T?8atixþ{R?13?bAоg_=?a?l2<:ľ?N,о̏?3 -?P?,Q`>?0q{*vUJuƾHQ9c)spz{I?,S俬>a?&H?0Ͼ7?P?c?=4?|&c2?1yM}'?c ?Smd4?(PCqV>$T{Ec̿zy4?O:?!?GW< )?1b>*o_e\E?8NקO?Hپ(u?>M?_YV?1d?O?3/?ҿ:?(?#??V8̶&?Uk?BZ,?VԽ??ܡ?0?+?ꈾ?? \|N -?)?@B??"J?1m?񇆽.?#r?.`?)L}#!X4wN?X#K m?4N(?7?િm@ -T?r?5JoI ?#I2!?T־U??TqINfPj־iW3]?7ҮB֌u꿗LH?W?~T?HؾR@9 L?@?(?p?/PvIG?PR(`??1.Q.?BJs?2Pؾ0Ky?:e?.,|Վqľ?=^{~>~yyP?_?UI?$|'[0?3R0#?-}t0N?53}[3 ~ >+?]?u6?B)"7oS -??<$?E?F?@ھ??Y?%6'dP?!J?C$Gpఽ%sY?]t?H,?Fx?V ?PE?=ʿ6&7?=C?Tﻭ@K}{??;H?JE?cD ܿ?"þ4޾U?+=?+(?+ -?A`󪾤`?:Ye ᢾ) G?`mii?. w`Y?8ܖA?D4?F"׾K?4`T~-?H2n?䲩?Bk I7?"F?+1Exth?FN\s?=o,>5?8?QC@?v?#?*J?9sQ??.? ݾv?]?/澯}(?d?h8?M)?#澴G?#޿x?&ξ0a+Ⱦs?B8 ? Vr(ھ_?&L?>H>0?T?9m??ra?!e( PӐxh?(?/???$?X?J8iv?+E?PM?*& dgA=?à+l1a]`?!H?ދֿĹ?%6?C ?$֨?ST=w?cl>-| r?nl@?]&?~?W?&/?]!+=ۿW۾쾲I?-?8@?Rھ>^??۾Yiྦ>gc?5&?6&?JР?gD?F0C -?EepAw?CU?t@?A3??9>?JajecTp̌~?4!Ot?;Vt?F·>?2?Bf?!kX&?"Fƾ?a+?8K -*k7?K?_)?W?+꿦ā?9?-JC"3NvƾG1꿾y^?!Q?5vb?%o,?ҿTgW4?Ы7*?̾5NvOY慿w`?)?6N?Y"?9P ?.'t?0@ZZ2˦۾R?V#wb? @@'0Â?"?? J,AiT?4v=\LXE?Q; ? ?+?\ä{y?)r~r?)Nx?) @OTᆱ:\*zf?+D??>@?4YE?8?;?$?hO$I8>k+? z?>~vp3x?:㢿S#n? *EA??Ŧ?9??H?&sa>).&?,'??'?- TL;@= ]B?2?mhc z!}'^)?=gپe?/[uX?Dz?Db?N?e+K=?]Կ%prYڹ??nӾF־nV} fD$?" L?'Wd?s`p#H\@;}?28?U*z0?/.$bx?1?OxNW?($>? > XC~0?ϾQ?|?8⾟PR(?=@?kVl7}4P+ڼٿ`s1R?HaJ\边'\>܎>]?s?:kǻ?zX^%?4?@>?,?=ξ̊о]E`?0`M?9?h?&$ui9+p˾5Ӿp'??5̸`A>&[?ѨϾ\?"Ʋ?"ё??0K?$T-;?>]nԿ? H??-h򷃾GW辳U(P\?\2禾kiѿOF?Z @9LLnY/?%:˾A?>̿Z?#i(B[,v??0|־m)196?K<ԾoTz7?]⾱Dv< ?-?gYPK?.>a$機?@FBܾY.0?S7 |Vp񘾂BF?Qxl"z?SQuz6?Q?"vX cQ?ɴ.L?/BD?ݛc:d?anT>S?27SI8οy?( ?9?ԮNi?.þ ?:F?蛰?!b#R-Q??6?7tl꾁qng?sd ??<~?20[ϟq?+T3? ;??辈e?~?(W?( (hO?/_?y@9 0D٢?3]?<?rМ?Jvt?/C4\.?6fʿ4^V.T -Ǿ7U?1(?>(0?2'a?f?@s?=E ?Bh?S$?N࿔13Z?q/?(3?Hg?_/?GT?$~B'sڪ`阾ټ?W?2.?W ;l5bϬȿ?qbqՈa)O?Oΐ?HV?:g?8Q?2f?Ri;[rQ?MMxJu?G貾!ǾZ "lm x %?.%t?;?3JK3羝i?J_gb?8OؾV?<_ᾣ>!ĖhV?D -94?EtAؿǂs -?F½aZga&S@?.,?崾O444[m!_sLhƿ.7?-fxN:@X>֋?=k`Op^?^V?2־}M?(VX1+?+ -?K?Kʽ{żφX?)^Er,"?+kqg?>Ⱦ xw?2UPA?46Ͻc(Ü?侽᧾ ?PV?P1>W? r>>]~P?2?85?7_,[o@=%y$*`?'p| `?@}J?!?HJ꾃I@d޾P쾟=?J\J|*?<0z?[ :a?2х?'-?!K&Ծӝ?5ȿQV?g@?CKo?/Bz?Yʞc%%2?ɩH? 4?*';r:ʾ$?B\@O8?K3ńq>J:U?O˰辤 ?`ͺ?=#pE?L*?E(?~݇/J?(ξ_?@?"^R%𾯵_?7a ?'?줾`V*]p ?|O?ӏa]r?|[{?.Tvӿ?C$4?Lt7}??"}8IJ?Dy$n?"?#?ؓ⾑WF?u(`Jm?9?4`?+оK?E?-^?-@?ȑd?c?hԾ[?I'n`P{?d???3?*sտve{?,?&,4?-?A?3xK2i{??+2T?S␾G"?ʿ;H?D?8?ns24? ?&H>?J? aؾ皾nmLտþM경>?龐? >ꓶ?F \l?Ymw(2?@6??U?L-?<@rEb?C%_?`{h ??L8ܾ8q8o`?_ 辣x(?xi?VoK>?MQΰe(a ?KF^>xA? -;۾VA&B~a?M_쾽l>a?BQ?[%jɪu㾊̳5?b?#xt־p?2+RQ翚ɾzrY,p?"H5Ѿ:iB@?R?g྆o侫%Rq?뾕?5??0?3-@INѾX&heXd?;? ? -IԿݿH|?%]ξb.jksH?%?YB?(?$֢?n侮?5<0`ړ>S?6Sm??F?/**hfP?HZz??I`jľys;?!LF@??0? GwW?D~ *?ྏZVE8~Vk?N'?Bz*ӎ? zA?1cT?>*?8t*?!wP?Ye? 3?>->glPq?96 ? }?}B˿X侦J*6?Fny񾳉<>㋣?f뾎6E,{=gzxZqR~TH`?b ?~?Sn =L +Ӿe6p0|ȉ ?Į+{,F,?CĿjc?LPҿ(o?\ؿuFk_>*?EY׾>Z_?LO'߾?J?c?Q9߾*` s?Qw?V]ξeL?PR?=o?z? -v u4 $. <T槾 -_Bќ^'?$B>?K}@??;?(@t?5D?=4P?Fh?5*ɘ-?/ -#j??)俉H?N@- U?]U᏾'_?Fčރ?Jņ?@{?3*?z;?7{P?#П??4?-K?(ਿ]n}?9&\|?8R?%X;Ym?4y#?(ƾl>?#|Wrԧ̾$a͏?O˾_L?u\x`w?4hw?6| ?2BV )9>¿3?L<̾"2Q|?*?]a?B?$UNwJa??cȿ1ξD?Ny* ǿ<?U?) ܴ_꾉A?Z0?PϽ}ʿ⾝>?B?!?2Kel ( ۱?(9> %쾽3ܾ?"?BbJ?I[˾j$lg+T ž,[XP?7HORm+!?QGb5+?Aw@)I?JQ?2ߠ?BI?[ -r?R?̄H$8?+?J?2sF?a?,'׾8;ῧ;?YP?,ʿs¾>?侍7?3о\>N?=`0Z?A0?H??@ ?5y?.$w -5?Yx` lD5vr2h?"j?/ѾBa{.?=@~ݴ?A ?;⾎{K?qK?C?MY??-?;T@?B\8ؾ_?Y?nj!is3Ǿ Qʾ8_? SL?.O?T?4f?0ELؾu֎?GT??4B\}?خ?~A7? zr??F~Ҿ?dqRƾh&?E[NcD?Hr(5ʾѿ?1R?h%ƾm6?95_˾?HBB=>0~q#ڽW2?=3)AH8"?q漿hI?5rCY0u?Ng4?;$a?a?;SH?"y ?̾M?-jInο?W?$+Ҿܿ?9?. -?3?$*?Y?A4N_Z?@>wi}?:?5?;3 ?Q0R?6оnf?!?9Jz?0ĿG?%w}_ξ?]亾 27?6v??}Z?@K?>1q`?]?1>)?ؒؿf?T -?$?޾_gFx?˾T ?=PÿԾz3Zڿ뾇x?/???/V?(D侬r?3 |?" ?F4?࿤9\X?$P6K|? -$@h?F,0aI?*;̗= -o7?K)?//GZ?0Isᅭ?V@6?5>Cྡྷ7n? "FO? _??j۾|&=?'>?>?>?$ -ҋܾaP.p侑idz?Wz?Q?$ο4f?@,/?8?B%?`{`TNPaw,:6E?9$J@!޿Rfz?7񏾱lþGP?PZ?s7???N?v?w6 ?U?ʙ_?CL׾0?UpK j‘N?@?g%9c? -?xݾ?H]ǒ۾tܾ)䐾j? ??[Pn{>3?7f~?DMϿ?)|?+)?5y #ƾ5/-?B?[E?⌜LOu#?>>?)?ۿ}F? \RhEr?/T?⾞'?[$>%?V?W?u^l?G{쀾]G? @?{&ľ~2?"?ѿrx?+p?4Q? ,D8ɤ?JgRaX!5?*x6?5ǿD?5=K>4?* |u?Ⱦ -?-v?>, ?)ƿо?ʳJ!7?elꚾP!?Aͬ?Um?Ӛ?6?(( ?96s΂ <?;?;i:?BcB?RN@@al6 I[?,qm?MzV?8u?JR?>??.?Y1|?Y??LmUx'?q?W? ML&XA@پtS`?.>?Q;ɾNt?hb?X ?U*?3C_?*=X*cW?nM}@?-Mb?$#?M0?C~?7o"? rܾ”1?Ц?n??VUߵ? ?%c.?+P&.wz[? -V>,=O?ϣ!HԿタu4WI?q?+?'vZfn d?%P?]Ͼ?0P?C?V?A J?ü%?7?a:?Os(8?D4g7aӋؾu$*?$"lAPB@C1NuC6s?M⵾w 2? |@6'?*ܿ)#?:??˾ʾM+?*+?)>۾Z|w.a8s?+E??! vȆ? -FL?ӌ㒾?0RZ?D՘y>0P?9&?Ut?8? w ?" -Jӊ9t|o?Rt?'迫w??C?4[V+ f7?W?bQ~?,fdˬ8%,WXIC?T((?"R R,^꿗z ۓ]?+ r[,?-?TR?36>b?P?B?C?'?A2j_^?3է:u޾Z-TT̾/?8Q?,Ϋָh|?*7(H? eP4t4N>Pr? ƾP?n?C4?5zپfLȾ%wξbrڿ-?^ΐN?࠾i?fq؉ǿPF;?]㾍?D0ϻ֫sv?2?_?H}T?CW>0?0Xf?}a?F ?E̾]]^5l?S:?|Ѿd$B?5ֿ9?*j~e>T9l?D;?꒾>?_tުx"L@?JNھʾ?1h%?/=#xlMNk? -5b)mz??(X?e@8EC>X98ȳj? ھԪ?Ҿ Ծ*?-?Fp͗Z^?BO4\O?YdR( ?Q$i=׿;(_4L̾Q?MO?Y?:?hC?CUƾ z$?󶥿($#J?8Q#$?x. >?"j2?p?3R6?B'r?+ӘV?e`!Z@T??P׾7ִ?E{JɆ?<]j?:]D?Bp?2Ï?,^?_)$ɾI+Uq1(?6 !?5?d?O(= Hn;Pڿ(O?SF?ޛ꽒2&{S?#@Wڌ̾z?M ?ID;?:'?F=.>1hH?(5?5@;?<2?)W[??.w?~X?;?-,Ծ*&?+ -&Ҿ?&?h*?v^yR?aS?`?!^潺LkD?U?89 ?P?@"I&?:w?SL ?8Q ̿J?ME[fоLٿռ`5 )*6p}?Y -@ӾI+?&;Z}?MfnD?M~@i??޾9 }b^?;/8?ZR`^! 0xY?/K侜?*?2fh?*@?!6+?⾒ԾL|^?C?EsǑ 8_?j -k`N?A٥?598?n/ofc2q|1ܾm?AJTY -!9ˌ?S2꾉hF?-7ǀ? ?=?)j򿬫?2]5??U7 _>:qm?@fN?A?%?AZ?( -P?stnf?Bվ( ?on?8j=x?z@:XH?g_5ȾR%?]¾l?1m?A^? .dX?F?Xa?0|?7҉`J?MR̾{vxZ?+DL2zOb>?0̿1Ko?VW0Q$yiVfc澌Spd7)$?`Q˿6+4yȽ][T꿗6N?X=ھ?8\@uAz?MF ?.ZXhF`?V̾W aq?#N ?UcRP>?2?2迅F?T<( -8%?9?GzVZH㌾?XBѽ@ ^uؾT>v?1U`?B~E8]I|#?N\?,?Pg?/6(~?N/o?>V0ƾ4Q-yLy?EU|^å?7?|?HD?H?&?0?? ?1w@?*ھr6?؏|?D{ 。6?3Ծ?ԅB -ǂRc?='H?.L?LrÌrX -nu*?+߉>g?!bL?''ͿKm{?twcoe4:-ȭ?'Ru?$5BA rL??&Z?8?<=?&C*أ$?z:?.xľL?>羒5ξwfd.?f嫿}?@?-b??}$h?IQ?#iW=.?\?:iqr?1Bf?;c?ޅ?Pҭ?? n^? X0EC??oȿ`n)HO^O5,?d"F?H?oL?vlgX.yNO?3 Dq?1?e+g?SٮGASB?+?Y?0f>ދv&|vѬ?C쾀俠f? #$`>?H?Ci?DDj??` -뽎y?@\Cv@?s#?H?$p?4 ?>sZ?IR@IW?DnB?HϷ뤿yh?Q?`80y}ÿ& y7?}^оI|oB?Ufn??/?"ZF Ͼ!p:> 3x +;?:?@j-˾q?~?`?4Fb?p>4'?BNֿ?'ְ?G?25.?)?0"R?'?.о1>G? ؿ+?89?"A\C>B@2=?0I?4\?  k4i?>ā0?0)I??}¹?./*DԕU?ԂZ>|>MX[?깾?;񿉤1,? ſa+?!$&(??܍{۱fH?5q?'^?Y~?Q-I2!`? n?28@Wѿnb8?c?$*8-ϼߵ?W -?; -^3?t ?tE*?ak?xA?LTF6?2qf ھ->?AOΊ?NSEj?]A?[W?gH@U|?@ u?XH7:?7?K:z:?L?7}{=z?=.m2?WJBǾ(?2?NοxCR%D6(XQj?؜&?VAQ?A"`F$?5俘P?Zג T g?T/e2?J⨾"BR@h֐ -v- D?6Z(?;'Z?#?Dx}uC?Cʾ!???~q{?.hD|=rbM?M 6Kho?.x?[bt? ?1DSJT[?VFGH?9Ǎ?a?; O?:?3[?HZ\/?9X?)l6;ľ]Bx?Tq??B? yrr,?G |tʾytuѾD|?𽿌DŽ,|k?م?R?azP_࿟:WBbd?E ?l$T?-d?VU?M=?R+?L?g?FlԾb?,|?.L*n ?-_ pR^?7'?kq -cUbrn~?1+ݽo?/ u>j?e?,WMmӾye?icolq>?AGP?8;Zk{¾"%X?6WԾ] ?Wƾr*C7?˴<0?N<@>J7g?N0MܾppT2۾?0ҋq?6fqD?C"?9ſ?Ya6*?9K"kD3,?A'?*m?H?(Ef?8 ?A??J :.?.Y'?BU|' ?2#?L?aA7.LCb,AI%?i2q?;țѾVf?*y6c?(>,zb]?L??ր:Ѿ=L?N'Z?t(i6>@9P>sr?\+?AKBǝV?lK?Ljc?]YPo t?@dn\?ܴ,>wU?F-?I\/@ry3@ -IYa\_{׾z;c?,dfW㾡O?nw?St?]?b?_R>*h`?"DM0')?/ҾҊ8O࿣u?]=plcDu 8˾s>4H?-/p\'j?<վiM.ḾLÞ>׽ɿp8˾a?>T4ABPR?RX?(D~?W4ht%S?5TG0>gz?L8Qx?4T?5/ef?Bw=྘ JG_T%?/?A?T(;ga6?6W?2?5}񓿬e?H'ミh 2#? -?5!?:h|¾n_JPb>?_YBq?7M?(;cn$?Dϸ?&#蕾"?#վ ?Ͷ?P7 ~>XѵvZ?$޾hJC?4Cyx ?6x ?/ߌ?=)t?ֶ?о6vZ?K?JTCS??{b?1BU\vnj^ T'EM/΅ƿ?M?@Y?5S?Kي{n6˽G?W8?>,As[TH#T?[Ψj?% ?Q(?F| 1᫾1if,?P2?Kv?Me d?ؗ%H?қ~B<ϴ?Hyr#芾uaww?DWB)о7>~Rz>aξ?E,ؾ&j$?B#i?9a^ ? |P?Zn?9Gs~E ?3s?Ye?V^쾗?r;$?El?޿徆??Ff??d?G 8Il?2{p4E:?,-y?CA"]?5w?Do?UB%RA聾8v?NxӠ ɽ<#w^!?Zھ?Bʛ?W??Q?\?6}fK=?J?DЙ9 ?,(B?;)\Nk잾j[p?յCʾ)Sh?s?[ޱ>iM({@9>ײ?$aE{+J?.3?H>{x?^.X?B?G 꾘O?&j4l?JL?$S׾Ծ?p^?2Gg3r/?TS?H+F?4T?,OѾ ( D ?rY?:ǾMT9ľ̿B?+tn?(׽َI琿B<?ES"f?'C?9 ?{E?7u?cGn?8)^@v?hۿ ?[8†?7?O?7ZSf@R?W. -Rƾξ.{Ի),qz -迦 &??C??ƿ~\/?=h?hĄ'?Rk?LV GG 6yĥ_%b㦾c^ -6??bo8?7?xYk0nX/lR?_ZpICmyZp6?|2*? -!g?A?O:g,dxhۿ+?P{uj́(9? -?75I?nE ʾ3~?Q?K?&ݾ뛚]N{M?DPrݤ|X%(ܾ!OXA[?L?Vտid?k*-?)P?Nf@Dp:CC@3~?.?4?a~$3 ?XeJ>T?8?oHRt~y?o1=`?BT;\hu -s?T׾:mu?Y֊?:4?\P~?,ϾZ?\.?Ҿ!9ƟQ<-⾯a#?6ԔrJ?5[U<-MS¾2F ? saX?A^(x9܁?߱X?K\ž?R@^i\?G?AJ/MFࢿAF?e"VwD@^pēƿwuо|⾱yt?A濠g|Ҿ@?'Lj?a@?L'?"y<ϧ3D? 3k4?& s/f]4d:_?/ni6?RB?a?18"ل?6?77[[?fݿe>?Kΰ?<ڨf?!¿.r*?B&?JETc"?:g?97?̾x)g?X|?J8,?2ت9?>y?q?`{6\N&nn?"f21_9O?:i?80mZK?4q?D?n¾P$?.?7M?ƹ?M?⾡G=<}?F@?L<о\sLv}Z?i?ҎꖾA?m3VΓ|}U?F#R?O`}?dK꾰c}?:?2q??ž?4YA?!, -־¾8?Sо5*4?@SNJx;?);?;Ȫ+?˯W#q8?3?C:)plM?P꾓Z?Z]?bn?6*[?_|R?9ޘ?N?Yo?,:YS?69@Kmh(L?./2(n&r?Z ?8?8F??%]?Ug?]?5cl?M >?z ?;?>~ -?3˾q7?z(Ⱦe?BR!B?R\F?: Ip>fBiK|]оM> ?'?4ؾ^? sIڿ?uf˪g5;wj$?:p ?:(t\?4l|mqbZ ?tuk>ƾ??@>? ?A]ᾜ'?#,6}7ott8X?$"Q< Y,\ -?Bذ?^biƾz5#W??:b;vX?X}@,~?2Su>I?#?#F8?SW?@ߦ?7Vm?J UzsľNL?*f?඾h?8Rپɾz侘z? cEPR?$:?]6gyS~g徎b-?'?;ﰾ{Zp?>8*Ab?Do~ƾ' ?ih?',?-X?WIY??;j?[f9bљ?W?+?1zi?% ?I澥 \?;yؾ^辿?= s?Ve>:?}?<GT?b>KA C͎@g( -?Z rZvz?f[T.Q?3tshF0?Gg,e̿?Wj<9%rOZX?17?=r?+8P?bN`?ޤ.?B -_?m}ھ>uj}l?@Z?R2P:!ھVԙ?'9`>?>u?M?2%yz???Z+*Rm[`dLR׾ܾ?+m?/l?@?FEHT!?2;>ɮ?K+oj3?X?悬 ?=?vz>D澟,i@m`J?JԿ {?TM?<ڢgL̾&9n7JY -?C)h?0Z,1fξeƾ6FM?#?Je¾=?P??CU࿝&|,?Umd?:T?Uy;1Ü?1.?};V@ÐX?!﷾M!8?R;j%?I! -:S?,[lqp>?;?U`>HT?0?W?,h?hν8rF{+z?V1?Hv.0z?tz?Q=QUpN?k`V?6dA7?UEH?=Tv?48?*Ⱦcy!?*7E?)Gcۖ?Gjx?O侸?sx?Y|@(c97?9?UI?:V-?(m"?BiZ+7.ĿLW?4?9i6=󤾖?VW\X/Ҿ`?;r?n'}>K-~?ށ^?Zeؾ>ڴ݋쾿:V辔~?aZƾ2pƾ"?R@0Gz?nϾA.V?8|b??T>6?,)?!ې?!t8>4y i#?G?2z/:\v"?T3\mu?IFg0?Q6/?4)h?cJ"쾃˾D>>mľpC|8??'6?[¾]ɌF?ѹ?P?Bŋ?:.?R; ?<?i?/A(uBY@ -+Q?NR?<O>ˡ?5: ? ?Z"$?2n{ʾ@?/ZWyg?վd6?'/~?S??|n?.U/?])%]N?d?:x׋?AW'Jv$4e,'?;\?1F#⁾v?4Fmb-ھm?6>?.L?3-1?ξ?e?9`R'9jt\o?-%~?1KQZN2\Fց?>G?.Lh?=!:wH(P ?9Z?.?Qz?LWP?6?SLtDʾT?@xA'?V?@S?QZv!@:D;u?Ou?*"r?ϓ\uþL?D?Z/ԾLJ@~?4H??G?7?N#.x?GOg1?nҾ˾_ҿ?%qD{ )'-?KP>v>^0ʮ?"??aBヤ,V4CIƫ?վ]擔п?#V -bKK? -ľ`ƾ&B8@?6v`?4A)?6``꿜[߾ ?824Gb9b??.#pqޫľ?X=*>Vmf(Jv¾;bNZI+Iur߾Df ž ?7?6ps??u:̾~:)?EY?7^?˨?0r?8\-D?..?Xg>݀?D]r YZ}(;?V羬Ԧ?&6\?2վI0? cT?2␾~spo?G1v%?+ P?ZZվ'n>"BR*=֛x? Ӿ "?)?;Z?H݊?7E[?'[1?D?`?I?^_,~Ɂf\+?gy?,I?N>qؾ[?P?)ҿ@{dOР?6ᄚ,V򾐊E/?6\XԾFh ?Cؘ?(t|?dQj ?9 >?AR|FyؾK?&x?Ci¿.n>4?-q~s?@oe?3?楾Nz?ˋY?.\_?0?6ݰdcM̤iʙ_ڿ?>2?L#]  ?Nwھ8gW?Ғø?̾c>(O?Mg?3-?]B?EIN?U*x?b+?`g?D)\) ?D?\ҾT'>N?,?=2^?D?ҿѵg׾SWh&hN?;~:?:"?L>b?Zݱ,abZGD> \ܾH:?T??*ѿN?B?9E 褾W\?Z?G*?-qM?4:?.ſyi?@|o$?5?H?\8?R_ -?aba?{?I?E꡾$?C`{??pϾ*( 1vrW3?Et(Z!f?p^R?>U+?F$gڍ"?_软q뾼/Y2侑VRmza^?= -Bj?^,{??7$?.G? sOտ~ Zf~پq?5Pkc]࿃ke{9?s־Jd̾ڐ?hW@0@ϾI>q˾tj? -Q?@ľ.-?=ZG?QUR?!(ھ?DkZ?a?&*wr8a??AGLk?Bx,"Q5n?C)?L-p?l?N 2`ϡH?>R?5r?&u&R4?5a'@?I&?`ƀh0:xbGB?/Ƹ ?(@VU:H?3݀?=z?*_?-{?Gfyu^ce'|O~hY!N?﴾!?P#??󿖱>ӣҾ -?=ȿI ?@ؾ2T?=Tؾ?M?o@"o?^CԾ?1̾ʓ?EG ?ߕצ?xhU?sswa@pHBA6?B+L??ľ/Pg?*x?_t?&9g?8C;þUf](vemL?3V?'?4R࠾EI7__'?/?nF=?xиۍ?CZԾ\6ha@nl?co_OIȽ^>T?aA⾁0?L_I%?]d>?Tᅵ?/r g#?>ZzS1?BF?6d?]g?:nU:?9DFp%.?-mӶ< >ྔSwmB ?>> ?!5پ?6.׾ Bv?)H>?׾O侭ԘyI?xj?-0|?b/?8J p.?=ԑ'O῎񂾤ڿ@?`X?[ȿ3'zVӾ\{Z<@BE ?W>2?ܞy?LZ=x@ ?JC>ھ꼾Oo?(v?5@?9?Glܾ;?/5c?N򾠴=ȾG|?Я?$e_l@?V>M?MC???U^^iY?V˾| L:-?Oק?::L6`ĿţT,(??d~?;ӓ?2?w?<Ս?4⾰ ?WZ_վ=UT/cn?6s>>4;7?=pX?, S<@$Ӏ?G@m?ݑ?P޾\z?-eȾ5n?Tֿ(3W&̾ n*?)4BQM꿠]H;?(w?C&)?A?0_>"Lr`s?$0?M>>Dƾl9_?2YhKAzl\ Lr'5|9?G?Iء?D? ;?9rξȾuz?) ??3ha?0оN?^yR? ?Į6|C?EP? ?Fm|?Z񺾋?S(?H?=`Vp8?;?02^?5`Z֭̚퍡iT{(]?چ?[?֤?cz?4~yY?WZ]??5{? &OdE?1+yR~?G?[B3?\!F?:~&⿩Ŵ?Nw{t㾒?VX6#\j?+N72?:r?NMro?#i?9hƾ4Й?6?K?,E?(j׾ 2>d?5?^:~R?ٵ&W.ܾB,ҾX_1??8;=I ˾ >?G̿ XjAh~7g?I*K?F>?. ?] ?f?0]~?R -俖s=,?yp :O?  Yʿ&?&kRMJ?F0?# ??迫Ta D(?]Q¾T>W?=ٿ]&7fF?B?꾒 ??.t?TSZlZd?.4?Fɰ? ?]ܿ;HB?0s?Hb?5?G-?Et9f3?+͉<6y`LP?@?@?]S - ?Lk?A}QB '0k^ʾC?&徿??"l]~?Nƿ6?BjI?GN -?ENjz[?E h?U乾a(?<ԉ>o[֩?>??I?CZGP޿v0?$?)?jMꀿs?YSH?/ ?H(4^?,3~Ҿ`?&>>?v?\KC{&O?JWr?Y?%WC`?!NpRJ?3c?G:?B+Z?8 K?PW"Ii?/?Kg@.[T5>Lj޾wޢ8?X?r@?F0>_N?UR~e+?7!?5={;_9?A?BӾ;&?:b'?A\,0侎r"N7}z*0Z??a.?HHm?-3? Hhw侗* Aӿ澶0?E0?U?Kj>t&>^2?Mr?*Nؾ¢7{?:EbľәuHE?61?yĿ?,n>}PNaP?2rK ?@dq~?%Ѵf?g`.?܆>>yb?A?_&?9??H~{ -nb?.׾}Ԓ ?1X?+D2*odmg9u{hK?;"ϾfT?5,>I?TAuWSb2ch?OV?ԢGܴ.C?]k??k>\Ff&?EenN־8?x,>澽?:XS?M?3M?Ex?.,ASԕ?7=%?Fhh% O(?&(Vs'&?8"btn?"Ϸ'J?-b>?>eOI=?7?Dg!vWKS>'?M^ ?/>?Jcnr>D@?3_N?)H -?tHվ=?7 ?6vM?XW3Bb5?[=?PkmP?1DHtv%P׾̘L?2 _1cP ? s?y?x&?P<?!?X?JԿ!?"0x?-cL?Tr?2Z94{?Dl?/? -g@c2>?*?/|hR?(M?Ƞf?A-j= *_?;P?M.?G<8o?辧M[?Tت?O?ܾ?1z?5ˊ?2?N9"?F_*5??+2/Mz}v?Xu?SȚ?I28?GpHK=н!>?/x1^?'b̾C?B=9ڶ`x,h?5?A1 ?9ᅵ{?3?%->e9?IT¾vԾ&~?O?J?A -mBc>?=޾jS~?5n3@3:-F"z?]$Vuh?O뿦۾S0?:?ES?"e;?w־qþoKk辤?Ce?(0>%>?7cteпs?^n?j?oZA?E?SRN>?RSݾ#>|~?>+3Q4z 㼾ܝRv?.w0h?K??n:?eqvL|?9;?9.~?u(zc:PM6?N1ž&?\?A?#NcD<?(KxQVܾa'?>Sf?GdH?A]{v,lǾwF9 D?T?[d-ؓ?$?#O?r? -i?-5lVaa\|?0"?0?NN|QR?'2??ھ7u?5$?"?$?DQ?%7?:dx"꿞Z?iwоT?;R7+?oMx]?3V?Jj?<| ?>6?q?,?e?&?*W?"?+I*J^&?i$?}p?ru=ҿb+%+?zпk?:%?;UR?"־R|wi2f1T?$P?JbM?9?7,?7?X? n?_F&k0?o?\Vhr8/?㏫GϾdIA?U:?hB6q? C!?R1?nu?T?%48-?[ʌxbcy?(.?jƾ :Q?V?Q?6*꾿|?CZ ?Af?JBS?sF??ʾB? ?J-k?7Ügjl?g?/&?<:ھV?š?D?Ⱦ??c?R2?1МTX,*?gާ?0?=)*b<?&>?3 VeZ?E>Uھ2*!B*?@B?I=?l??WXv?_m]?Js?+?Ara~о\? |l^Ts?MbJ"!g?Tz?Bwʨ?E l?p޿ -6ѣ?l?&I?5?5L?Pg忣&l?O0^?If??*]͚?(?2̹wa?K:?U >d?0:-4?-v?3[?q?tn??8'&ln?SGk{xPþ4?9㾁%Tw"H0mQ?>j?;d7?OQr|(]U?,Θ?!{gyw>og7؉X?EiB˵ -o?Z_K3?BQKa?C(οkʚԇE?HMѿ`?J?A)?5;qH?=Iw?^?GsHξցv'= B>IB?ygtwF?%`V?LHr?>?R^?ټ<z?* -ϚxT?D?Cc"?.M?ھ?<0vZ?H鿠Bn־ͮE?* @?]l?sZоsͳ?C7?C:S?@_?>>?H.꾕6࿪>z?1S?6?>澃Y?!?.Z?L?5?‰xi앾\?" tH -j6L* -?5 ?,ܾvV@*B?3f?? 1ڿN?DZ?%Yu?5+?G©?d b?M;gɿ*O5b?*$r%Ͼ̭?n3[̦?1_#?D#?JwzGs?QHN?-þ?Ncľ^{?,Ծ:lFy?.?rʾO2/?;*7?þ2??:w޾&"L\h>[? ܤ:Y??0$2l9|vE?*?4>@?lh?E|Wsf?.r?vX?6r?` ;t?$?q?? qD˘|~@?kS?$m#メ?=ܹ?PMJB7X?K?,ܿ?:?@<ӄP=?;Yq?B课W.4 ׾t?D?ʾ6Gxwghž OhzE7EX?;Yg-O?2ܿm!? ̿|>nXyx?4*?#0?4?)f?ZLt?@6?ɾl~?zW?* klQٻ󿢐?fC;_p?ߦqW?*nZnǿD?- `A'?8>?B?_?P~?DVNoˀ?:?<=W?iD?+l]?Q뾈?WH?]du@re4?Ai?e?:,0@_?zr?'U k}*aH?d?*=?S`*?;?^?@S> -?3־&>Z핿?G.$DnH >7g?% -?/8?<=?H22/(?0?:K?1ƻ -?GyQ4($?%L>?fVy?"?Rl?+ZD?UbWx?.KLF?Ko3V?/e_ ?30|zž?N?FU?2&m?L?>1?+1+t?$">齾LW?'t{?1F߾ss?r?ن?CJG?3tž˩kR?ZꜾL{V?,`\H?2žktXi)x?W\>VV?͹濧=?7f$? -?R@?L?E`k? -ń6>4?<>?"r?-Hٿgtyr?;nؽR?Fk5¿?\Ц=6?:? aj{?2j?)? zb?B%4-+/MHCހQ7?`4 ?7j?w?0j?5u0~h?C?@?HMyMz?e -2m?M?l#?K,?lῠ?"?+?^m%?<ཾ;6S?=삾mƖn>VwA`.9?u9 -!?93xܾL{4f}z }ZL63 d!b?R~CǐzDo?@'?+6l?dҾu?/b>eq?{_ek?$ӟ?UF俜&?*P?RĜ\:?=Dz0^?.rF?͋?a]俤L]hH@?֕n?9?=!? ?! ҿξ樿75%Ns2 }S??Az?[ ܾ=b?BB?H6?-rd?A@;`?˾?5 -,iO\񭾈{?n?3W?:1~o?]FJnR?M?4^?H7Њmx~?RU?ۏZ?H<2ѧ? -D?@ Yn?~???`Z?[l?k?dޒ?!:?ʾB?2%Z?2? c?$\$\?ؾq‾(.?<]N?1n濥>?/:fk$?IH?4FtܿdP:aӿ?-MeK×h?,?l:2y?]qI0m,>:'i ģPt?#=??sB@4۪뾖c>]۾Eo?OB?4*Ծ?Ƌm T.X6ҾsGv᱿z㾪br?)*J*?ғ?8cbh?@D?K=n 3@? -oCn&lQJտ8c@԰?/M?9?]ȾSҾ{~o|?:)?%y?=lk?F-??5ٽ`??Y?"?26. -?YhH7]Ծ2MWj@09 F?7BJ?LDҾ!?R(?Oݿпľ~bʾ/.b?[!?_6?#&U?4ľFʾl@k?I0p?=9#?A߾38? <̖?H&Iþ?E`T?J|ڌ?`&?\2s?NR?#}h4uJip?F.xdĺB?QٔՐ?gڹ5Xa?3Z?f?:״#A辺?&0?=s?\?`@%\AZޚBfr@-?񨿐N8% 牾|?>?]D%ƿ=?Kȷ?BS'LY!ݾ?.gQ}?-𾾄~2GL?&?@"7ͮD?=riUse?)|j?.\u%l߅?.?ò?)~???Ҍ?FC?;(d}]5L?%@?@־?&T?:;:k?<Ǝ?P)@=B@?={?Qg!d)?c2H(ѿ*D?iי?Y"0??#?NP:q>$с)&[?]ϕF?4Od? Z5?9?7q2?UB~6?P#O?>t?5H?9?Z?+ql ?,?=?;? ??#3?:?/M0@i/?&%I8%>?R/?7'?=Tpn?$pƿ6k?ZWS@-a?6 ?2܉]ˈ>Τ6N?Cܩ Lo߾Ɨj?>1?Tb?WF?&͉?Gj _\R?$eI<:?)]YuJv~ܾ?1{?)Dֿ?az?0]=`?澛п=?I?%Q?ٶ~?`!?2վĕ?55F?o} ?C?Lm?U?(?8z!;?;% -'D,Y6ƿ?2L?䛀vb>J+?&ξRzK %?.*!?=??|70?㾛 ?۾_]&po?Ռ:ڦ@ԋ?Oi>;>靾#ID?"A'ADz(?3Jc%jLTln?#e޿N?DR5?8⾗h -b?D*<$??H.t?X0 ??b?/O?J8?<@; (we>&?1b>X?\?n?*ȶa@ -@"L[?o"#c?@v<1?9>37'??Dྦྷcc޻?K/?(%?6ʾ4T?2nxDٽT?F?[bdμGHK?I׽9?=J:?IzT?A(8;←??.Mr?o?ReM?@̾Kz@?7, B3?1G?ӡ?-n?ʇ cm̾?G@/\?$?1D[y, U)?B?/7$?:м8?5p?ݍ޾|?Mu@?/u@,.J?Z'?;V? ߸?? > -Vf5 QrNuVc>}t?`jU*?3=?0V?#l?._>r? }?PX?KH?ʎw^?0"|G?ŏоھ3Z?@S@,/Dx+-g?Ab?8? ?Bi?&ھv-cDat?Weɾ09꾽C=?M?+z?_?1߾W.F.$>վt~qx ?B±hu}>?%H9b?(}?IUfKL?e*?\=Vx:?P`޾6J:<?'?% -?Y!](??Ft0O !?:i0?qx[.tH?(ס?8R?ľ?:Rf?M?;Eɘ&?PC܈p?RjkϘ?:(x?A'W?8?>9[??F?-` ?-v?';쾥TDz?6eM]?*ڨ}?7J?C??*v@NGWUN@- -Bh&|?-w?"?7|b.Q:׾d8?:t?4Z?H >ddP!>~^)d+пMq^辐?1Out?EԽs+?,.N??rپvoc78WLпe|?H}JwᄒҾ+v3}?쿩쾇Q?Ŵ_оAp[>򯾏@# Hz6ݾ`$wT쿎P?q?6}->8A+A%C?ξtiep?Rj?7?>qMH?@Z?;x?/T[?ƾN?RH?C~y?JzǾ&t@A(t?.?W3 4?U?ٌ?6Ixm?HL3zh?A[atm3yF?Lؐ?%?&ھ=Dʚ?h?Ri4?6jľ7G.iYjj#?C?6澷:Z7?D?YU??48V?iBL'??J8&MپP?DPU{?A4mk־ӾS㾔7ニZ?,_ÿNbSR?ľ;EH2Yk^XHľT?;C/=ݾb?74'Yžf;?6+ -‚?9 $ ?:j5?A?(qٶȲ?G?*& -?2;⿝?7>?N^?7/߾@h?Ә?Fd? -$V?F#?܊?9K?0̾.1l@`ۙl@v?ׄ2(ɸt۾R#ȫϠ?t2?0?F>ɿ73R?F"?R;?I.z>1显N,O?L ?>?P?({/P[ |?-~'?M>=fk线bQVr?EH?I@ɾρҾYY@<~,???ܾf-?\~5H?P@YҾM?_iZwt`hr:?< z)?d}>ʾUJfQ㾚.|>AgAZ5.?F0]dX\~?+?3h?*8?=wIW:u}?9iD?=4?c^o;]?%?2@ @j>?ZYa?K;? rվ`%ye?@Do޽??4L?:eX?1\L?T#?@4-?:P;V?xKƾC? p?Kھ7 ?I6?Pö?134?PoK?-%ܿ־?%@?8J -Mh?MR 侜?-R:?>;?.澔?ڿ,?I x p_?4E\\P?O~?gDš?-?,Pm?m&ׯ ?D#?3a?N[6fľK@f^9A>$N? q)L.?1\?.?3E3?0D>?M4?:wm$?c`"?Ux?F?N? tJƮd?Rr?/?6J?ܾl&?6@&?Q? '~?Ef?F#F;r?U@h+?Q?I1D?8{`?O?1T*P,??XNNvpoD?2.p?_ـ?9G?6ʀ?)B?'QuԾL?"vc꾯 ?gQ"?7՝?P?0f? 3p?h H?H"?(?!B7wT?ϑ!Ajw?;q" -?$jҿ9?Dqtр?/%?4w.:8?`[?>?wI?*tcr?$.9?C/1?ga?Nʾ C ?6)?>[&pľ_Q֢ؖ`?AͲ澶x`P?^?Lr?ذv ??, 4W?HUO?3&ξoRx'W?: ?;v;¾??Zi[?8L|qŝ?S;?3l?#?%,п5e?B`?J&!(?<'M?O%?SK?EvlM5?ض<+RnTR?B??)Ú m2?HD0q?,ƾYX?@cھ#?/HU@?.?DlEؾH;$v:?*B?Ǿƾ*d?!˾?2??O ?rٓ>l?+3:?-?S?V?+꾟ݤ?!?:UuT?)5?Uv ?#?C?L㸾?' !(Ҿw?#HA?%l"N7?G?-dZ@J?A(Z7Lpb?' (alt>E"Ov? f>p?6O?B2>N?:Kݦs?X濘?+2?W8?,q?9K?J+Z?OU?5w?ȓKt̾R?$?:(?Mf?4?Jz;#2?Y^迚Gu/*???*dr??0,*>՛'H?m?."f?/3?Ԝ?J?qоWP?a?(~{v#2?+?L׃u8 ?my?"oôI?CGX= S5Ŀ!?ֿ}?t!?4M?ʾ{ݾl?-aLJ5?$O?C?7{ ~?:?+Ҿhr?$X?z۾/yX?&?-l?%&6??A?%hcw[?.A?ѵv?1X^e_bE,>l ?D[?Ad(P~rl|QF?@DOH%?ZK/??)*?A }Rk?F?RS)?!w?M3Ҿ?3۾FjX?ߛ:P>0?Dj?͉? ?(i*?+?DѾPؽθľ N?پϾ ?njcHU`"iwVn2#꾝&?=+c@྇RӾp?4H?3J?:u.8??v<о=?.W`NH[۾d$~?^| ?>Z?0?Kuɻ-?L΄?=zAF?AQ1?*ӿ?|d*4[4̿2d |?#!??'?A㔾V|?9!wU(ue?3T??e?Fl{?,u̾^y??C -?-|?)?72uھ_?0E}{?=jW?*+?2!0ӐREJ=3?-?MD/:DP?`п<ւO?-P?hɵ?#iɸ2ANy?%$?DdMF%?*u?%L&?~qtsʾž4%?%{?H?:?O ?9?4yM?&u -`?G@)k??-?9D&Lǿ?&⿢c?VJx?»?Kg\fӾ!yǾk``@s?AV.v??'辯l?U -8Hƌ?3u?,澮cMY*lC?M X?RB?<=?:?`??\pAT??S)3?,avvU<-?3?w@,迦q#?%o?]3?[=ݾ}t4? 5?XP?B J?;C?">?5Ӫ?ȺsT??ݍ[?4 -?!>?5Y9? ?;l{i30?:d?$r?mH!/'?-ۘbd?ߢ?C?? ?-:?B .B?7nlT?١Ob?FYC?4^Ru$kZ?eGRa]s`ѿ@?N;N?L⾽¾?d?܈?%ظmi?<=; yO hG?Cz?;=3O1ľf?&MS2?@ξ=ʴ?^?]!Bj>n3?+1?6+< U?m>#пsr,w?I?+kO?Ylo?9=WT8T8)?K ?U:>?ݬz?N-A?2\3F@v?K(f־Gb?HVƿ?$I?:NΨ?%?6?(?3?'iT+F?Ab?2??=^(?`??J? ?I@ R?-?(|^Y?: VF?/@?Zr?F_Pܜ?(V?5?I_B,?o?CD?jd?4ؾI0ִ?s@PM?Tk^?+-ξMӤo Й`B?3Ogپ%? )zT\?;6,?@-?ʞ?5Ge?1׫k迟p>V?Q%}?(^28`mN?-)?dt?FM?%^?'{>gM>?/2?]7?@m^???.bS?*9?? 6y w? ҾMv?,~oy?36ھL?>€??I?B?Lؾs?U(򾑋R?GۭB) -0p??Lsa'?Ae?H턾[^A?>U? -Vt?M"Ѿz̤t =?Je?u?I挾 ?Jp` md^?Iw?s??5 ^S@d(?Bn 0(?ڡ"=K'?Pƾ?;ޗ?4d?|݇sQC\ƾW+>GN>?U/?Aw?Bnas€?-_n?)?B.뾉j,? -}?]lTԿ/gLV:)3ͿLjY[ɾs ?6em_?2I/!?K?PZ?&?3T(?.x?6S?AlZ?ʾ?Lhf!?U?%վ?E!5TĔͽvͣ?He.Ӟ?? ?c\?YW4ƾi%?5 ?/xÝLa@꾙3d>a??1!4z?ڏ{H?RL?y?6?%4`?@v??8??$?-d?2R8>?:0?*u?1R?]?3g[ƾ/4?+޿j?ә?@U/S !?Ŀ?Z???򻿚?K iM?cie 3 -| Hžt {ƾYlsk̹[e=?;׉ Z?IrEh?IO?YfC&um?W3?O?q?,o)&?9?G?Vf?2?`+?9d?2hZm?B("?Pzn?)g/iR?1:??wھ?TZ~{tJ&Q 쾰Rc?-dc?h?I??1:?%|K?7˾Ps_A<9$N??+?2H?>?*};$?q*hR ?Ѿchč?:A)+̫?,?;.+?C?A?Wu4?&dt࿭HZ?6?V>t>?y1?.?l8PD?<l(.>W`?RU??{B?Ci~?OX?@G侚?F ,w?3l?)vr?hE?) ?;AO?.B?5^7? ?;-?T=?k7 -W?F?-)/׼ ?.oǾ%ѐ?' '?DV?:Yv?2L4]?/ c?9 þdn[;g?'<?S?=?3?@o~?<>w{nt -e5?՟??C?II?O??Lv&P[蘾G;?;Ru?C?JB?uwF?5?LESaTo?TC[?8T?^?:;u?B#?WS/>?9A?Ԟ}^?5?&ӛmD?7K5?N꾿a2h5?W2?Ⱦc2?-(j?2?*CjXK8› -&?j?5?C?G?N? -r?k?4jBE?Jp?DǾ?D:GlJQ?C? d?=5u?.?,k?MfW?*a?NɄ :"?bd+?I5U?O÷?5?Dޚ ?Ю>玿;_?&Ls?2{x?B=QFb?4*?8Ma?88`?=?DE>澫̾$?HOL?O3?CG?0t8?R/۴?Ae]x[?C⾕?I?763 ܿ92?7ϰտ? ?/?J9!?-(u?Vz?0|?W?_?:>RVKUF84?008*b?s?+ƙD???@`?+価e&2?& ?@by+C@*"+ ?F&?J?B?4.$ssCI?Ӑ`.:ϋDB?؎?/^>lhI?X(u?$Z'I? -^?&?@ -ƕ?3[?8c? *𾜓h?"e>R?*srg?5ξd6?BS4>?3&xƾ(?? ??=?0$?3b$A ?=o?8V:YH?ZO:8? MQ뿠Wwkg?NcR?[b?bJ?>?o&?Kx?Vp>e?'\D?? &bQ>?%>-?7{??7X?-;$??Ge7?C?)?~$`2w??γ*# t?9n?PȺ<`>?C3D?=A?+;㾚Vrп[0 5jxZQ&?9Y?IWF>(M,?$gex?4@<XBf?/v־? -?!w?ANܾENR\-?=T,n?4پq?\f$?G8w?V˱?G̳?6^?" -?K-Z_?5 ?Z?%>jV?JZ'?>0? z?#/.?ЖC _@jѾBb-}?"V?o Y:y??ճ<@$~?-l?O?¢?DrL?FL?B:0Ͽ^?9b?(,Jvz]?¾%?=p?;?L$oҽm:k??^?,/?? {?(gVE?W?)g鴾Wux?l?E?f?A?+???Bٿ#CB?)Y?-?ߟ|N?=3 ?4K?1Xc?322BZ?Knd??nL?PhHQۣ?R?11?_/?En@YBr?@(r=f"پW?@Ҿ;?4?l?617p?Zgq?C?(b?{? Q&krg?.w?窎@'aC?lz??j, -R?@ ?An=@?"?Լ?۾!?U?-l?쿮:Ⱦߋ?3L?V?0߾i$L(?=?!;ֹ澤?<?$b??[Ҿ?Pkz$fྩ }X@?'Ŷ4hH>ɬӾ]pO?<*?H~qBL]??վӾX&? -)?$Z?Tgj?6ƉϾq*,7ܽ:Ԙ?vay־|\¾y*KX?(,?8yn~?,E??Zƾ[2V?LR?/¾8?A?C|?>%+?S[Po ?%w?$"CVd+")?*=yj-,wֽb>?[??Rr?4,t+?'Ҿ^?30v\?>d?/?{?( -oҴվYn|nnG?0z5?B\ǾN?'?mv5?N??P?.[?޼Fs -@=8@4?`?ƾ, -?E?9+>?(l˫$?v??-\?Hu&?9B`?k[?)2?%M?ADͥC]ԆA ->Z?w⾪?۾9??2u*?W?!???"Xl?:?S޿?3⾏^??X(?H ? 577?D?\ -?6?0ruWt?:Uw?8eF#/?$:ֿ5>?]>?};K}aᵾ?N澹t?M*?> ?L?80Ɔ?B=\KD?E d>p#VVӿ|~ǿ0!(?4{a辞ѷ?JP?;߷?"?=?@`V? _?Ue?>N??/?:H?5Ay3rDS?;?.O?=VaaD3??̳P?t?WtfSk?96ȿb?SV?7?>ݾ9r?N"-?b@S?3q? r?8?:?0:'?@Bk\%i?İ򾂭a?V.a:?Jj?`%"?5:۾^m > (?l#`S?w?R?(վھWC ?%?&Xn9=?T?- ??~?IuZS?4?G c_½>?YqL󾮆n>ǵ?JJ$?ל?1@%пοit$$?Qj0P޾⾯ @@CYCHBRM@% ??Ei?7qR?sPХ?IBL+ -w6f?w?1F?MԳT\?,?%]?Dh?Cm7?#nR?"?J>r@~źy6@?:H0B}su?_zhо#K}ZKms?4poнg?T?ii Ǿ{?QYD_?1?<\eNo?7:% ?/V?$ `?5BwF>(Ϡ???;0?/?ў2 C -?OQ!Hi?"v?+"?"H?^H˾^$?rQ?3@?G>N?1' ̋?پ׊VW?%-w -:?A? o?Z3h?@ Zg0.?ؿ H>Ƶm??Fs? {?@"z}>E2?R5??H?o?~-zҾȁ@?п$?=d?"a?J!?'W?;1D:_?վ? ?ȾβpQz޾4?vU侖p?9վ?h'X??5?Xz=?sؾes?K$8\;پ?@ླf?2i?U T?&J@6?W;?!Ƅ?^A?5F@A̤@rӸ?5&?@- ?!^?Fj?"?&m쾤X>L9K?h+?*@B? Ržl]?2?5(?) -~?)?\c #?W>?8c?/b?+6zlbƍo?0K?GlO?=2?ʸݕ?>-.}&R?D&z?ScIgQK%d.rr^?4zk?@:f׿Mmk?E?,y?:!V㾆|㾂Tc?7?\RX.?bP2=? ;?%1?Z oJ@?k;R[@! aȆF?:Ӿ4?!P?(mʂ?0?P$&?S>Ef?B??)?Sp?*[žI9?G??4>j?.&*?:?6)xPԠ*?6ȾJ?9%TNl?0h?7?L]?v?/@Zj\˾⿟X4M-?l?:c9?䰲?Pqۿ+?%?&@?(K6v?1~^??$???Et?,tq1ArBAe~@Τ?T{v>,??0?Haj?69f?->?<|U‹??!?A?(j -?dE~:?^?'>/^hܾ:侂ؿ읾TY ?4?!#?"\?۸>Ҿ>;ؿAY>A?j?f?,L7i?&e?S=v?%`?¾ϚKTk$t?' ?8Se/?U?M|?H@?5K8wf}?-??ƾ͋?Yذ辜?42srA?ճ>)W|վKg?#of俥s?BBGd(?9ݎ?5[? q^?$?JE?>t=:R:?WY?TݫJ>Ծ7'I^?;?Hw?ݡ@R@? ^k???ھfxef?(z?+>^?@^hAоF -1ttD?Eh"?5W??W?|p?@]5 Ȑ?3uD.?9$?=?4]#z>X??NEE?5$_??Y㠾?I9?0:!?0@? \|?Cv?7>?|?A?:n?AQ<ƈ?6d?=??M3?Vt?/g/xwϾ1?=쾯/tc쾋^ܾ;>?1;?vz"?M!?Ӗb?|վC??BR?4s+q?Zq᭐Q̿Y?,J8?YБ}sR^?~ƾξľy"?+w25p?$?<98>h? Ф??ҍ""R?AK2?H>?Lᮖ -??M+p?y?@:m?8<?(?99?)?;RJ|&/?3v4T:(?6ה?_Qjc?Q]DvxB?SV?wVĬp'?K?6(?dC~ -?]> ? &??Dz⵴#a?"`N1;x?O ܛؾܾ?ZA'C}?BAZ?l>?? ?84?=x?3?3y활?Itf?E?n?H?,?F1iH?Խ?.wFs׽?0n%?>ArYlh?2:\?O)?mBоҽ??6??@u@ֿ?1Eq?]?8#?Xf?z6mDd?5ö•t?1ѩ?S%?7??i)-?8 @"D?/n? '=Կ{֕r?) ?*3ib@>?8?AW?G}"?'&_󲾟P㾕wp?C㚾 c>}Hߐ?N"?N;S?I?)?b?1$ ?.^?EjO־?Ff?B?c?+`?<-?(?-?Aɸ>㿼? ?RN"?m?@N?=۾ƭIJ{?V?*.N?PUP?A/t?6?2R??k?G?J? -xqо^*?AoNJ?ҩ?=A?,?:>M?R5L?A8=?9ʾ2ܣ?& Ib???J?j?ͯ?'x? Ӝ;A?U?#Ֆ?*|'A$BQBj@?FC"N?>ľ]+?57?+?BV?a?OEb?R0ay~?@tO?VI?i?3N>z e?-?%/F)쾿ʢ?*B?;Mf?J ""?- q3?=z?G??HձľWW?8ZD ?*k+?a޿Oz?ߌG?ߟ? ?ǎď zľjj?' H?$̾6?k"?B??DC?(_>ۀ?;-})|(i׾LGţ?P?@lt?#4ڽ=A`c%*m?s'P#?=Q3|=E?olył?$y߾Ģ?p'Y[?'?E4@?T?;ݨ??2u?M:?⌾z?A~k2?N?:O*?h$ʿ?J]R?Iľ[h?6۠:М?0 ,?2'?qX2?^ŋ?$?}F?R`?.T_?0^?ApϾz11̾JnO R*??ߟ?4վN??&)R "??j?#?.!ڽ(42s?zo?'b2?X?a?=-?-wTYQy^pᾼi*>?. -?Nk̾+x?I]?'*$ _d?3v5pj9?3wq@BqBAG?oN5-?0:B?Q?4e?*Z?g0?F? ?HN?ʾ?$?A־վ/??FgR? sM -,?2?# ׺~풎a辕?9?*S~꿔R???~?Mj?I ^h?8y VM?#?=rʾ?/$3= ?>V?C?=3DT^@?b?*?%zؾ6 -gw ?Ƈ9.X?2?RC=0Gh -!봻@z?FE`>GsE?0_?%u?.B$??=@Af>C^? B᧾zN??*ھ?)e^?I?8]b8*?-a?)+mp4Ⱦ~@?J`'? ??3x?yo?6-i?f?% -=?,tN øYT~0?9"8?VBU+?B =???AsP?EFv?uſHZ ?,0Nؿ??>G?M3?3Hy?>ʾJ?tngL?O# >.?A? x?Asw?B=\?2aL_?-F?vI#\և<@v?Rc}?<>U?Mrj?)h,?I\žD9j/V ?s<?V? P?8; -z/<q$?QTn?!D?*????'?5M -wz?P?M-%?*u+Gh?4?g?+?.g? dL?k?\=f?_??澎\{ ?4оUS?2XVf?E?(?;6L??J9?Of?Y?V/^^?^^i? 8?.?*#R4? -?;4?_۾?+m+? xƾ[m̭k?$?I^?P?3ռ?D~ƾd&xy6B?,@XB=X@?Q?Γ?(?,Ҏ?<^@?AvA@ͩW?+2w?1*pF O/?.P6F?1?,1$?  ??;qǿ՞>ה+i?M:?* uP?,?)Zs?LPT?HV<@?<,$??*95]>x?HwcVھ&̾뾙As*?HW7?k.2gFG,X?M?6Y?4lk?KK?# ?9;pb?V?Dr?>{ ?%\ҿ<?/?h?c?VR?!3߿?%}ϾV??W?$?9?26+U9?/Gla?ӣbmp?8?Qd5?;^jj?? y~?.q?FZ?e?&e_ľgq\r!T? ?Ծ???P#gd?M?:?R=f?% ۲?/~q@ S%C {@s35Q ?(?8DҿO?O?:@$@?+?+k!MUEOT[q?f ^>7gHVK?8R7?ۍV?B?<>҄>z@gϿ_?2W & E?2X?0? ?9vlΚ*\;?@D?+c뿟J ?"+r?G?ٙ(?8H?4CO? ?$?z|??8ƿw0??s ?.7?&xƾ'?Gc=>?ukYg?:GX? [?4Pp?C?Qu?Qu[~?C??ofLmF?QhD\Z`?iC6߿r?CĒ|@"?*c?O( o&s?o;?1־ͽ?5:#N>o`)?戶?侲W!^?U?4*?:&?ؾz?2|?0%'?8?/̾2龖S쿥nڿ -(?Ȏ?*L?'nݾ;?UK?X ?1???޾ G5B?9?;卑H@?:~D?7?-|dV.?;#?=?5_?&)-#?.@ƾu4?K:T>x/T??I$o?4?ؼ@%} ??3'G\?;8?#ONf㜿?.W{@WqTJx?L?+^cf?%X?8di޿ H?;|Az?]?%?-Ԭ?J3Ᾱ؃?3~?Ӳt?9Ӿ >CľPgMVly?4?Hy>*(w1 ?aп6 -yWY?jډ= ?.:2yĴ?4?@ d?"?R!ü89?O\x -w?Lľt:f?>?1mr?Xvb?=?N?=ݒ"?@ؾt?EUAR?7? 2?If n?в}٦sc<˾Rbh҇?۝3?BcBvEH]c?#X?w? $YĬ$ ;&?FS2U?W?\9?, o[G`?P5&l?2݀Z?dObd?Mrwa꾲v8{f?,¾6nyg?)?? O6R>?Ԗ? 0?8i?$"?Y\AϾ?&?'Ldz?Z%,?)?6W?L?Rkwbᾠ?@ ?ib?2(}L?@ od?-);0Jo?F͠i?I[P?4߽?᜾j'4?F%c?9y0?|ާ?l?P迗ФFon?+vs!ξ#?lMԿ w?n ?RK?2頾CԾ3?15sl???E`/x?5[?("?Bt8u?؀V~?:M?Bk?GU~?תj־r?<3?(9?9\rʃ2x?䊂_EAB?0A?5.w(ؠ??˜ؾl_?=B>ˣݾ$??`?P99b,u}?[yCy-i?"?@Dn?KȾMO?? ־u?A8?Y?? ?m?.?̾&"?@Uh4m?Qg?=hY>1ɾ`?!?A'^g?" $?3vV??&Jw _þHO|PF?FJ\,4@lA -%?? ~ľ0?? ?9̾Ύ?=Q~?b񴾓s?C?3wHi𿔠?S&ȃH?:徂sƾkWd?k6?+?缸?>p?=?~h0V? M? Ңd??g???d?Xʙ#?4াP$?5F?=R?f?E㪾ť?Xb&|ҿ?K??.B -Br???$?#ȾԿw?--P>D0?8o?Bny?0,x+52{?5Ny< -?)?J,о͏G7e?'^?6?+Yr?2꾔-?D`H"?8?ܖ?o??;?_?B ?C ʐS?C,!0?g?R?=0?J ~l?LIਢ?C@?85^"侰0?7u[V`3'忕=?ā2?f9E5?8HDľR?B[=H? M? 뾛QClH J>?9&aſ/?Ud?-^?O?\?cuɾv? ں?Am0B~AH?TO?&/L>-Zܾ?6u~?"CQ?-ښ<}f񾂱??6 e??o?1dqF?#Q?)e?Ta?M&?MP?+ϙǻ3?D>k? |F?Et/x4\t?9 ?&žf??7f?/R?,?=.? ?9g¦u?5?‡?95ݾ;b俗?Gt?@]y?䠾:;?E?Q&?CnzC?wX?4ƿް?;0?8h0p>`?9l3 ɨ?r6?Ga־,?Jr;%eJq̾"?0ݿ?SL?/>$?6ɦ6&?F\z3?-uvy0 zgR?Nf`# "{]?i?Fq.?8$?E!?Mdbp?)(K?&?Ce?2-󾂑ƾ?;"Vd?;;?Qa"k'?ӌgt?S K̻!$?xT??Tr뾇?I<kr?3>iN"?%I?@N6A/?BݑB"|??O[ރJXkK?ɮ?*??KE?Hyh?7?оeNO?#?8վ:w?P?Fm&?#?;g(=5d|G\ؾ-?c`?4<"?Kg1ھ-?AI?A f*_s ?<k??0?"ȾH?=?7B?Ϋ?C??o?IQUJ?'*T_¾?7 ޿qUɽ_qT?,{|mU_ECUAk8Cu7?<ؾR6?._f?UR)Z*??ݾЈ?גҾ3 -?4hؿ煾!bfEi_x& s̾SՌ辢h?B_ξޤz?6xGOҾa(&ɾxzV?yS?=?MT?G0x?-䵿 ?0u?L5#焾Wp?"ٞ7?+Zn]Ӿw>?*̾[f?䊐?_2?4?˿1?c}??$ ?EEf??G?+BN?P?l?;>D???9 r??Hԥ?ݮٿ -??*b?vE>%%倿%{?G,?vξXC,?<\]ے??&k?y%?CI̾2?/0ھɰ&?p0z(?6B?Zw?:P<_T$ھ` j?2rcؾ1P'<@)D? ?#n?y?"I&)?β?Us?-D@(>=|3*4羳l|?E@p?&nn舿~W?k?@,,ZUME㾃M?*ߊCb?Los@߾`ؾ̾i4?-5b?' ??߳῜cPreE?I?k㯾Dz?J / -B^ۿ8xhľPtt?EN!N?E/KS?ƞj?IX}?#{aj*??uwz?뾋yEᬾ0?#J`-?;f?/l? v?,ڵ?y9c5>;\ v/Ҿم)?Oz(?13?28dv7L?Z?F(?:dS?0?5[??q?+)Ǿ#?(??$?dH޾nݩ?4Ҿ!?N m?8z?'6ɿt?G"/?2?18b)VA?d?T?7,c??iAUp?FB?D+xʾu?J?M~?R?]?8p?Ij+?K?8h ^AY2=?#hű?*?L?,9?:;?SSҴ??2N?B?'L?1_?=ibr?2?(ԃ3?ZD?p?&?<?.?'E>b ?L?? F?؉?ظD?47z?1f?Ee?4??ο4?%NyD?3T?Lɾ ?A|o,Cf?ީ?)0ؐerԾ -6?*¤EXWV?QYm?5M?K?h;5z&T?Dz@Li?"zrl8?W.<`$?A?JfH?Gg?9AM>3侭!??K?4RnpSe?Jݾ,*?Oq ?qb0d?Ks?*=3?X~j?2U2?%U?4'?=V4\Pۿ7?/?99sL.j?.?,?%N?\ U& 7,xDGqp -?0m(S ?@??↾T @,s?A?KN?_eNľ?D?F{?@X?G8 ?W|?FE?=E?Q?]h*YZ4?I:?Y>?>?(Gݿ{?C?S3?7gX go?' gh?2K?*ſ ?*=b0??.Ҿ?1&%?N\?0i?)y?, ?S뾘k8? z?໧?"%%t?9]?1?8B¿rb؄?>?,7?'Ac?GҜ?? ;O?駲?7Ȭ#?"̓?2~W0|zip?DX#? ?ya(3,# b?5Ff?ӌ:>^?#/x?Խ?I?d?t?TcY>_j?>x9??aHVS,?"D?KA龑 ?SD?Y?9vӾ??* [Xk+?(B?\$?y@?Jp&oi?-fԬ8h?6C?5h濮ڗ?,'D5B?. S̾:?O뾓Yn?BZ9?3H`?$?t\? 9$?+?D(l^?/V@ 0dd?\ ?= ?ҹ{$>x?D>; L>4?%Xj?!y྆2?4rM5D@@Qv?L@?6s?yu?8?z?BʾK?E:,?Q]U+?^ZpND?j.ZkJ?-j~ݾ ?XDvXxXY\C?@)/B?H楾QH?81?J [>'q>?IaS?I}!?3f?/$?%?R?Ⱥ? {ؾRR?$w?u*?e6?4λ>?<*.?w?"?+HF7ӝ?T?K(:?W?@D4?ƛH8sd"H$$Y(U 3b~f):Ԍ+??оmV1?= ,!0l,?F(3lNξS)?K;'&?=Ҿ>P?^??)5C͜?[R?d?OD5D־M%@H4?N+d1ӝ?E?]x2Nt/YþoD?8L?=*s?Dn~?S9/Ӿrt?-?4? L?'Vj?O۾UX<|?._#ɾnM?б5=VwO/?,4?=cɠ?GY@'O? -`侠SK?F ?7t1?@z? ߾=Y?*,?0';?^>96?HM?9[?B2, ?",6|W6?D*?7mF?)G?ROA?/Yl徲2A?2??͍0o?45?bk?0?L?c*l?8;l,9т?9yJ?J1?/4T?Тb=%?4z۾n?Ƒ1-?71b?7wmBvпeixo8?bNj??1,l?,/0^?'|?YD?7(~@ۀ%Tݾ-?62(@?;=?X?(S?'?8|?) n?A>AHAGX @?%=?f?+*?/P?K??'U?))0?w?8s#?+u?=?G^?9?=Bо?G?>TRn?ۂ?K?&|?( N?9g?>?Ne`迗\?v?FIӾ?KR2Fe??1?CJ=?6:=?=پJm? p:?&Lz~O?4X~? >Բm>?=C澐=?Jq&X?L\ )D?6?$??M֔?-Ve9Rh?!;?"@#-?ۤB.?xվ徤2hþ?W#G?X׾t.?Z{JѺ)?Y?$?!ƾF?1?Cҽ.Fh?.8iD־]k?/PKN8=?+{-?V 텾 -u|>m`=濥$?<?ۊ[?:пܾ?2̃?qK~>^=e@XTh?V;D$@p6H $J&??'?K:?=?.?C, Qn?,v3_ ?Hu?? ?1^žg??QX-뾖?7ww?&c?;GӾ]?eY??µk!H?$~?B% CYžt⳿x?Tg4@T}?:vb?;?[c5?;#rn -| "|?=-V?fye?F??u?AeP?B?k?Oo?-w;-F?Y3eO=`־_]徺?9?(?ʾ ?G?5#̾PYN?9 ->&P־Wata_־T?j8õ?0|ԾR#{|?6N \?Wu˷? [r+ -?=?Nl?U@Sy?2??D龳 -?2p?Cx?3\[?̈?Y?1>L?־%*>G!?P?R?:8G??F@@#lnY?K?U{i? -CȂiN͋?M ?-??l?Eb?9R?%׾k?( q?#E?9$t?<\?G2+ ? Jb(9@ˣ@-x?1ԩ?. >jR?=þ? D?4Ն?.}'ڒe?@6]=.?-ZM?Ky?^"?%5?+}?)n?W?3x\?;c⧾R ?::xچrP?-T?.԰.?ޯ?Jb i??3T?.h?JƄ.?@}޾2x3{]ƾ? ?8ÂM?4Y?P >?=[?=v?&'?7zK}6b?0?3Ir?*?l徧 ?@d&??4m?q?i?=bfIS~D?r?.m\_t>aqܾyr?p?:T?D]'?<\E??JY?7{?:4"i>5 @C?MԦؾ?|ؾ_?D?.j%yQe-?Njuؾ@?5bp??UϾj1jf-{ڿ&wo?8bz?<3ȼľ?V˾d?d?g %?8;?c?%x.v?C&?J -?:'?,S?{?5U?44?!?Fx?! J?-p?+?*dK6?U?":Ȏ>ؚ?g??D/ܾ?n\?冿?/\?WWոg?/;?>6龮򾪔FG4=?V甎?F?%~?4Н?+?1c?2;?=?N?=1?)L?Qƾ?46?ғ_?JY?̒?+P3?A?r?b?B?K?Jr?$ET?ξP? Xk - D?-'?1^wB?9ヌ@"ۑ? -?x?!2-?Ef?/UVJG?CA?6E?p6?:?D?૨?'&>$Xn? *?mx?&^G1O?)6>k??-&?'?.޾L?_?K?'Ǻ?+B?J&? ?7yݾ>?@5Hw_vw?dA#-?@^ɒl;w ?Gv?bu?𶾲5F?D$wzU%?4m?9lPH#v?,d{nT7Le?*??Dfѽ;N?7&f?:T|?+*c6(?3Ծ[)aV?񣾭?0M? ~Kޛ?;3@Z?<]ꔾ&?ɺ?TA? A>㼾-gP2 v?9?3;?1^?4?.k?;Az@.U?2?̾?4 \l?ڀ0?/v?2`V?&|qb?-?$ƙZ?vbо>??$ꔾ?'?$z?SX?-??ۙLtJ?(I7?& -?9(7Dh5?5?;G>|s?@Cm??WX?~?a/ʾnп?:? ?3>?'?0?ξ?>9^??E?W??5<8haSA?1\|m???^"mPpy#i?0ξ˼?@?I?8?P? lw?6U濎?D^ſ?JY?:f?'xVBP*پ]g" ?NW=?4夾2=*?KkV3\?2Xe?%X ? %d"?Lf?<}Ⱦ=nvؾ쾮R?+?C1?A@}n[^0?.T?D??;?-?_Ԯط.>:2?J'?S?;?R?/?Qq"?3 qrRH?'B@&`4?fp9Ą?A>?/'?I?ݛ?Kf˾ҾMk\*[o?#f?""Z5? 뾃-?"1HW??3"?8@#W -?? Ml?s ?h%4,@%P?0j?02:xg!]w :?Dt?CW㎾&?Y?7\??D?>VنپP@?2-h?4x??;|?c?/cAI?:Өt?*e@+|??`?:p쿝p?9?OؾŨ[e?/?CNY?=?e%bھ~d޾J?O `|?3p?8\?%??%Ծ#)?(H ?X ?J?⾏?)dO'?"8;Q?L4 ?.R?H" d=ҩ`h?+ھ)Ikʾ'[g[ׂ Q?M5?#?B?4eg?0(r ?ci$-6?AEk-*?;#̾.ھ(?;U?NR?9:*?̌s?0?;?\Hھ̋?)?ٖOᾖQ?՚m\?4?8]K?I龾A??D7?%?P?O?? [.? ?_?#w? _?*??`?=E澑.uDL??7lh?$ľqi?<?>1=},gj?Uy*?I=HB‹4?A??$Rnn$1?9z۾Dxˠ'??pmc~??=2h? -侂ˉ? \8?H?@~ ?P@z^A?K?1 c?>?? t?ɛP?:D?+Aj?2 S7?#?2?6!?528?0? FT}?B?9:H?' -H?V)A?r?> -8?9?9b?$?C,-G?;r(|?9s?i{ߣ?-?+/:?Eھ -3W?) -:?@g?Aؾ&?\ 鰻[?9t? 2j?cV4򟾏F?9=?8??LL[u?!3?N?[1>A?3?$YbX?$3{8?Oྮ({?* -?=E?֦?4?0?'?>A!;?2We?(?#?I1ֿ?HY^?%Tp@Cw??4??R?6?C84?"?"y=?E ;ղ/$߾?#8?D(x?!?&ƅ|5w?6?EElW?%?ʼn@g"?6Ѿ4M?!"?-/hWk>nz?%`>?F>n?01?,?Ͼ?ȯJ? 1u?. 'gU+4?0C?pT˹?0gj?6h?;e?W񿱇?!;?ݜ?i>"/ ??.׾hՋ?C?"?0㊾8n??[<+z? ?G?UXؾ?;937#lf?)ϾD\?>sx྇?bmb?EU?JxܿM?IwV?Nש$۾h=w&Y?!"ݿ?,|?AU?H<?LdRd?y/??@iNtGК?Tk -m?Ԉ-(8)?+̶?=j?33>[?Zh?EIeF? D3?1?<2e%??9RnI:?/:KT ? J?#?F?F?G3?:V?(,8?D?.?U.>jG_?B|6?ELͿ¾?2?4?.6?σ?=?ե@?Y?о`?!.? jUNgT>??2`=0`?#hd???ij@":>㾐d? ۾N?*RT?A-~⥾C@@*?E7?LXO?)vԾa?AA?+W??6JFM[ ?<?w}Frj/<=>ެ?zV\?@?J?):?&aAG\C_@f/?3T?Je?6,??;y$d?I~?J?F;x?+DҾx0p?*FIY?!t?8?ſ?@$!?:s@?)?Y 1?C?1L?3Pc?V?8F?! v?@f?حƷ?2?-Z?9![?Һ?>X쾂Z?U,?>?CBCL?{g퀾]?LT -^z?4zC?*\D?|5?K?"?ՎFK]?eѾλ\P?C?-E: >h?S?Am?4?>A? 羶Bп?达v>Qô:?"@$ǂAECd?(6?I?Bjx)p?N/?2@[1?,.?+"?ݝ?N?(<錄"fiUH/?O<>0W.#@>6?.j%JIY}6QCQ:3??@׊"?9u? Y?AY?Ǧھt?B ?h?;L?**Yd򆾟K{?cC?ՎK?&]l??@ؿ|?؍?%'??޾:j?= - -'n?4 T? K 'Da?*(?4^ ?@*??$]?Ëb#?Fh`??3g1 O'֯(Ay%iA$?%js}??784@?"/,B?8?-oԾ@ȑ?F' b$п?=lƟ?/d?G?4??a?H\?B?0X?u?Z`>,|i?2𨾡0?a5F?MT:ھM&In?K?)Qzac [?-?G{?E9\?8S?g\$?*7??!yĪhҾHX澾kL?iʾQGnjT?ZCxnmbn?.&v0? ?.Ծ?+n?eM?OgNW^.?Trj}ί?%??NĿ&T`4?Evx?ڛo?xS?0,e?7?2}?c??<^?j?Cl?8޲?,?9V?S?U۟ -h?"7? ??M-?jY{?;60ꄽČ?@?=խ?;㾎d?[?Ex?4H?c!? E?-a ?`q?Q ?ӞJ?T? iBqBM?ӫ b??6E ?h[?,lgy?FҾ?)|?>?&[?ք~(þh@+〾]ֿ?,ϿI?JǦ{((Gt?B|g?C?i4`?K?L1?;p`۾?6?C , o$K &ľ|A?Fu?P?/?u?HEj̿?fпϿf2?(3?5?V;??ƾZ@ Ysx徹7>?8?Ck}$=?5?Q:?.T8? ?;?6xFm/uZv?q? -i`¾)??lR??:ھk+ ?BV?;`?!ɾ ヌ񾋸?{?:'f?n?!J ⿴y?>cM?*Z?+@w?,?0?;W?64?q?q?: `>q Gw?>D?Ū?J? ? |?IxϢp3?DP9?7tX$2?)~cdG?*P?w1@HBJ?$tžzLr ?.2.?Ƕ??.J?It7K?4v?--NסH ?ͤ{?Ȥp?@?6?d?8\NN?2x?C2W>j?#?D?B #־, ?7߿84?#X+.?&x=?7P'?:þ;?BpZ?1A6>#0i?N?˾`?.?%?E?w?R_!ba?8$BpC?7$~n15?i?u?YH?$17Q?6j?;8ھg##G b?RH?>/~Y?\SϿ?SF򟿢?6=%m)3"?'?@K?578Ͽȴ?N n?1B?`?-ie?Je -??1>i?$n?&?,?:h??ߞ6?z澞?2b&R?/}?&?0A?Iq[?:M??<?X?9レ m.I?1ۺjL?)?9#u?='?$mV?*?*7?.?,"g?"ľH???D#t>ۄf?:lf?A|F?106r?+??V?!??-m>?C>pL3\P?:Ҿ?A!>MоwB?A?Zp2?0ʾc*??^?E˩?@>P?: ?0S;? ,? ξ?:,ƾu?c?.m"?-?I??Bd?@[Bf$?K?Ce*D?6?8y3V澊d?5Q?Y&??E?!2"z?A=x>7uҾLd?оK*?LL>љ?8A?-? &?J?)q9? -#?w? -?FMpm?&K?&j{$2?@ԾVclƾnk6?+uqX9?D6EWb?AZtBVFM?`q0z?=??q?H?u^?E~#? n˾x#k+r?LZ:l?A"GB?jD?y?쀾?T!?G侫^U?ϟ?H̾O?COiI?>B|?&?O .Y@#>?,."6?">L?C1 { 4?'4h?fI?W?CS?"1nƾ|?#mɾc]?ɇ}? z`?J??&?rߙ?0QR?ɩ?23@?/?;Oh?H|־y?3D?fp? (/<$G?"r?N辚+mhھF\?9z>T^?;w?-DX? -ى?.O?ˊ??7?y?ƤI?E+?/J8?G2S??%??7+X?-Z辇P}D?^󾲚?Am?DM?5j~?6߾lm?k? #&??6?)r@/?,u?Cfܿ?@ӯ?7M?8k?o? u?$|=Uq??8?½?ͭ?90?$J42P?&)x?#t?OH?-Cq?@Q?a}??k0apH?]??OqL?0i ?F? k*`?K?+#%Km`a?(:?0vȾb`\Z?@8?4!q-0?[,WHU@?^-Wξ*0?BF^Z{?0?𔾉Ѿwi -?D?>*?7f{?RӾΐ?3i?4yž j?#<Ŕ?.2_Ҿ?<&>RТ -2?ҟ>*Hq:?/R? x? 9s?G)?%gKw?ݾpvF??;x?@^?w񒿞 ?4D^@?B,?)ʾcXjhBT o3?B࿛7{?H?D?@9>S̾  ?UQ?҆??1OSOr7?͵W?(K?"?x>r?*UImb4@V?(?9>wN?*?+@&_ᄌ?Ů?`V?s[Fq?G?Am@#ķ?B?)n?$q ?4x?o?D\?>{?1 ?::dpqUbǐAJ?UZ>?M1?Vbz?ۂx??&?=`?M}v%?Q܂?2b?'ä?77Iÿ޾?59?Fup?z ־oG? dľ,_\t?р????5?L?(xL@#JᆪXV?tv?E#?/X꾒>Ȉ?5پri}?7S(k?7z?\8ӈD?X[%?%?.ˀ?/Oо:w+y?E >|4Pv%hlj?+{3?5Iǹ? 1?/fha⾛9!?3?Ҿ$P_ؾ.??:?C -?E'?B+u6b?2NZD?.?VxnA?:Nf?Q@?(>?$??Qc?$.d?Aľ%"65 ?2?ד?._žgx?]־}~W?E?0?1?Cv?](?_f`sȇLz?B? R? \6?^qJ0Gʊ?D?8 T?࿚[u%?4k?@>?&CJ?hK?.?%}Ǘ?OԾ?Ra?Lh?'?E?!?G*?侅2???Jˌ?-|??DH?XdG?(e]@a?(mEzt?ɀ?7% N}?1e -?8R??37F8? d?)hh??3`?&>z?(?(/?;6Y'e?DEh_>293??D? ??Oa?'g˿?Lb#tްTbx>&0?-?8P?';4?2"U%/k5XA?ID??T?ʾڧ?3? zп??0 n#ҿ+oO?>rFs&]?$晾 AK?@Ҿ?*78?(׬*?9㵾γV[?s^Au&? .?Pk???) ?`??>?Yd?y?ҫ;i?辜vǔdui?_F?k?P1??񺿴w?8dyd>vP?Q ?/?M"vϘ^?YP?J?AmL?&?)?ͼ??F*?C?&?$#)?,?I?*p?,0x{=.? ľT??MUA^?2t`?Y?/?+|?yh?JH@?YI?Z?B>U+W?*??:)?/Ӿ˙-?9Ct?( @,^?-?Q? -?8Kb?VW?1E?wi?:Xjx?f?X 8*m ?D8ʾJ?Nn?.N?%??|t?K|+t(.??ؾ@z??׾{W9?Qhl }^ts?.?־X6c?(H&:?FA?Ax?_?3";jzϾ?cucp 0?\?+? w>Ӆ?1T?{J?)dr?I2?OX"?۾???~?%.&6?-?Կ(?#y?ItfX*?CfD?g?k~???4?^^Ǿ֎I??1r)Ad׽?V/?;?LE? t?R?;V??+M??ӾB?oG?,?Q -?٧W?[+3?)h -_?4j=D -L?!?3h?xSJ4?Pi?"$?k?9b?y? WUP? i?xqTF??*g\?U??O?6֛?#4?G?> 6?;?)ge(gIe?b?Oh:?Ӡ澞?W?֗ľ?Я.?5?&?D>?3G?-G?Y?G>s?"R?4ϥ>>?u?*&?Tp?.Akm͌?7?EO@%ھ~?X4A?$?,x+?բ@?¾?,ٿ?*?R?)?+0?ԾqQk?Sm?"cz --qF?0?0|?W?e%?A,?uЗƇMj$~? ? jBBG?9?-?prZb?$?,7sU?1h?ר -?>Ll?%2=Z?C{?Ri'8?9辤>蘾G, -#t?"0?PJ@?Y??쾳P?;֋Ͼfao?b?z侬x??A?:ݾ0?2V?F&v?4v]?ɾ}?O2;?#>)? &?vd?.C Kal?ݎ?4J?7[h?Tҿod?BcU?19??5w:bg?3S@+?Ą?!^?'?B?B?U?#?-OT>6~?-???,?Y~?!,?88|$?- ??&w?:-hp??'p:|?-7?5J?%;?9f?љ-?F1Ijp??!?AZ8?9?U9@IT?]+dɾz?R?]?ֆ?:??=r40?<^7?:?+9H0b?6ɲD?hG1\=<릿E|?_?=?/ay?Vt_?D?꿑j$t?Pvkm?M뾽PYJp?)B?GuF?fq?"E㾒v?D?SSݏ?,;Y?+hF`c{?ַI?DEeN?1C??OJ?>?VUvg&?+4G?!"?Qh?"!?B?%y?;ζ?0?Άfv?0S?8l[?f:zY? o?Yp>7I?+[^@.50|ľ?6)z?GTP|s??L?Z?.u ɂ?T?x ƴ??3ݠ?9pc6?&m?TƐIR?'㾚쾤<4??4ǾI? h>?2?'b ?6?,K? - e^?*]?+]!?/_?o&?'/@)?9?k޾ Z_|j?30?4|ȾgJ?.`?پ?%?L4??O? ?*B?,*=??3?JR?@0,2?%i~?BorpKaͿ#G?1?ݍ?N?ӄBrCr?#*#?>1?F>>?'侟2?">!n2?:?-Zpл?8n궾e8Ծ|Zz?Xg辐?_,#?Mt>g&?͛h?JI?YxPvo-?O?~D?k rHo;!?NW?D ?Gj{?+͌b*e`?.N>!@?A̾¤p |s6?S޿6?:`]? -,?,Ǩc*?:D׾?9K?<l@I?׎?<n5?1Y?Hؾ#:e?A?>?{iH??B - c9?"c7.?֕ ?Q~_?!/?|D?@\?.to?bw1B?3;?$?[ ?&>߂??,?Y澋LT?.U?:q1 ?c3|?b?$ -X?- ?8PV?*o?Z`?A 6̹A"9?^#>?* AA?J(>ݿ ?/?S>A?2 𿞁c*?\J=>?;?8^;b?,?6>\¾Aо ?G:?d9?0>a`^?K??-H??\0?.T?T?Us?@?-=?-2CN?=/ ?K$?Tx*!?!BX?:%|O`?P1־7ecKԚ"\?8H?7[ˠ?N1?Huvi?V7?HB%T?M?D1^?Lx*?<^?+*?)?ʢ3[L -CKFIjn?Z?-ǘ??"vT?4?(m?a;?/SU?鿾]??:?BU?6ԓ?H?0?M?/1?>?.?쾋HmT?E}?.c־_Ϳ]?Nt?5̂?Fm?ĺ zr?9.;?3N?2 ?Fq;?.w?D6?,Z?@6??|??M/??[?;o?F?@/0?G?;4??U_?A4?j?::&?$r<' -?8DY?Y?E??/ܾ?͡#侤?8?߄@k7E/?ʜ?r6?Ij|?E>m?]?m?5ֿf۾UO?5 ^8?ԾKپ?53~ -[xk?ݟ`?%:?HdXz̾DŽ>b?iy 'k?/7T-x? ?$?4?(*߾?(?S t?C߿uԾ|?> ?@}?g -?*>?UM?­?JP#L?'J?6\oqd?0(?:X ?-?9K~?)UI?V2E?6?<\s?n?Q5?>?SP?6B⾴0`&?D3?;.ݾt8CW辋UB?C$?ҽR?9?Y\x4x?f=e6? T? Qr?6\ʾU݅R?2/??1@S?8$?;d?>>?cU𾐜?ݴө?=?("v?h?+?:s?9?"۾-~?J?~оk ?@x? ,?\?GDo-?Db?Ѡ?32??7 IVb??#4?͵Y? ?7r`r'?0C?8^?#?"H ?K`R?39?4?޸?7Ҥi:? E??Ab?2< @?@~D@ ?CviYCQ?'_&?-c2? `bse#H?5R?G“?ld?DeO6?7S?Lgd)?&8ݾ4O? -ƾ7?+H!%?"Xg?G?*7?3?HK?A}?O -?5_Ȥ=*6p?0?:Y?:?"2i?ވ?N ?;S>IV龻>zm(<4࿚^?GJ? -?=)&?-¿Ҿ\a?Iߍ?6!Ѿ(?) ޾B,?0?19D{zPv?@-$M?+A?9Hr?"H䚾G?Qi\? $EBo>AQ8+j.;?lz?+4A (?C-~̾n?D꾪7?1f?`?cm?@j?$;3?æqHve?>?%F꾨?,}x?#㒾ݱ?7N?6?:D? p?@?K"]?dX?$<.Ć?츾Z?X?'?̵ܾ -О?2 ?ho&??!g? -???Vٵ뾕{N?%^*=؜?=2TW?&f??G^?F?7 ?DnL?Yz? -s('V?/U?~?!?:?+>| fD?),? )aq/>$>Y׾'F?DhP?, -`c[F?Ymd>?,r?0M^?*?&?J?=?3C?%P@(h?e>ΐ?A l ?n7?\r@-|/C?!q5?Lׄt?C|?1E±?-??"4U5ʾʰ|? |?$/8?N}? ?>{?I2?jM?)X?6nJ)@?IC??R?Am?? ?Q? ʾv5? ԾVj?Ӵ̾c?9,?؃?Ͳ3??%־|?(r?G?>'L?G ?&[?H?*`Y\D?=hN#*־e+c?gM?Ek?1KB?IF?#\2쾏G?=F?̔+?2kH?5! -R!? -1ϿLF?\?P>Uf?:Lp?Dij7?8Roz瘾P0i?7ξ}?<;?<;> >6#?.o ^?3J?42?JT־?xǾ-\_i濣HKm?ľl[r4iI?-?@mu]?3\I@?9?K4N> ???3vHcc?`?E?!待3; -?GI?!=?ߍ=?-j㾍Կ?'\-?7(?Z\?V*?7?%<Ƽ@n?Bu׮LHtt򾃬m9?HN?Bi?7û?9M?.B?PE -t@?=4v?7?0f]F?I?9?C -?"e0f谾>Փ?M?0Ѭ?Z;p u3?hR'"?"?/z?"?3'? ?'x[?9w?g?~>h??)N?S(п??&?x8?U7?2 .?(?l?T?5?8?C?O?7`N?JϾtP?5p#?;Shf?*?R>C@ܾvIq鶾v"}R?+?̢2?@ۜ՝Vpf?,i`?c?'o?3W?ܕ@% +?)p?Mo?򯿟עH?&X {^YY>d?uA?(?ʐ?(e?8~l8E[?AX?. >?:Lw??2?1g?wH?0a&?(i?*???4Cgže}c?5=T?;al@U?LP@?9Jw)??/,?ԟ>G ?:{?3>s?{;?-fҾIX?;>?:~?J0N+lz?7>v?B ?4?d?B&?@?д/?4D ?4?48?=?Gտ/V?ĴU?[/?0sʾ+?t?co?X?Sh?4?f> >ۛH?L?ⷾ 8?*ZIv?H?I?t?%@?1pv?$? -?1?%M?0?b\?*jzྵ̮|¿XI02?T0?6?&M0Ȝ_?`$>J)H? 4?D?޲?Rw? ᾘ6?12?,> N??.`>??AOo̾ي9^W\?+gr\?6¾l??{?C)+sξ?K|Xٌnz п;&? xwf+׾H?9:?*?٦?._k?5?7MiP?@dfժ?e?(xw(E?2?$n?8?6?;u辇fx??2H?6}?碾?#8?7οK ?;?o?6Ivgb ??뾀?*3?5쾥?5QR4?:JA#@j\?sx?$?n`ʟ>?5:?3D? -n?l? 𡿭3o?ItGz?J?4ƾ>J?C]ֱ?)} -?'H?6?*?"A?9{;>88?3S#?4V?"?J"??"U ?8L?G?R??flo?.e?4|? s?'jξOlt? 93z8G񿏁Z'ǖ뾲4?D?)?J9?('jξ_?3?+|(?f?߾pzvD?.V(l?*($??YfT:?B[y9D>Qg2?P"?/$ ?ݙ@ 6?%i?D?μ@"?3?8И<ؾbZ?WHd\B?6?*.Ҿ;sKo >j>3;l?GVvcf0sxrb?L]8H>쿬V?pF??1Eˀ`,??J:?8w?AhB?η?)`|?G?F4?$?10M?ǙO?/~?G??4L?"?#!?.i[?OԾZ?޵??ɘ??@ܕ@&\]5@!>>=?=?Nf#zc?7Ԇ?0匾?JLvX˾T-}GӾog?վ?y???&v?+???>I?ߨ?0T?!d?3-?FX?>I`޾Y??+?D>K?5n>ݔt? @?"ᾔU|?? ?7?, v?3?4uFx?)A?}忉?4?!1?"?)=rнW+X?6"yoVA- ?gʿr2U3?1{;XҾ?[?b?5n?+G??&>A0C#B澍lW_x ]@nݰ?;?1?:P&ξM/V}4앾Tcmsq?<?)|?:a?? |?_?Hjx)R/?@՚@[ -?;Y?߃EA?I?4Z??b$?923?0mp?=Rda՝?ЌF?(?3d ?^zs?֢?0m?N4L@ {?2? 0?r?#v?t1?6 ? ]?+Q?:9?+A'D@жv۾<ʊ?+?=@&>?B޾ 꾠r?<Tq??̞?up>?0?%?Fg#|?@?6?Ŷ;?51?F -m?;Eラ6?\?Mn?z˾/V?#v?͌'?J@"ӿ?Q?,(#{le?7sо#?Ɂm?A?׎?C쾗?Zf?0?Yw{?0F?W뿜u!{? ?Á?%#??LS4?^?-~Y?6[V8?έH~?/DF?!F??O??-?}?1e޾ J? -"e?+?Ҫq?ՙ>?N?Z?%$fDvR?(:w?_t?z9DT&澀0[FZ]a$?C.(WҪSJ?* ?0x'>?ؾYB??w&x#VѮ?JW??.?A=?0qw?;оg5w?ΤM^Z?迾 ?Z?ѳ,?<6?#zx?ڭx?Q?+?4CH@&cM?#L?4X(?Bq>fD?ɉL?`"9$?0r?0H?(dpH?x'?X?(gY$>?β?6XX??,?/?K? O?-N>?F$&?S~?8?3?-z?A>H?N0f?G'@P%?1Ӽ?ͯ?f??,?ڎfR R7?b?`0{?ۖ?A??7Sa.?L: ?.W4ަ+?4?IRnl?:? 4X?ơ?)VDi?"j?*(V?(<Qbn}ھt,i[T_z޾ -R? ?wr?e|?=I?ƾ@Ǿ,?}R?:T -+`?5?۔ʾ?澩? ?s¿[?>D8?%?ؼx?W?Ȯ@!o>Ⱦj%?&12e?8^?!?#;?J{?}?C=iK0?7& -h?EMƄF?_?Y?3G b??Rw?֠Q/?%?dn?[z?V -? ?c?߾??f^?*7?5R%*P?V@-N?ݥ ?/8?' ?fݿ]]4?l?O\Y??.TY˾~X2P>?յ?P -?,kLR?&5?*NS,?@⼾haFzeW?Oʿ?7?>?P?%#?1T?B&8?%.uҾCD$?8> lNH4?"?Az?,r?^p>%.? 5>5?܂koO?6B?)Jg ?ӹPp?Z!\?P?>ľL>z?#?迨l?Ap?(Q?xˏ^&? ?G@"D?.Y?.X;?0? !? 9?4.@ X?#*m-P>?4Ѿ,?>?/)ԓ?J7?%e4Ȼ?X&濟Ik?(a_'?g֦?.9?)yP\?|$?K*Xb?5H?@?P4?L¾*?U#K?ƫ?!?OEp?Z?8 0?p ?j??1pL -@?5B. ?Ҍ?x??#?;.O?~.@@%8?$վFF?)%?)?$q?7?ˡI??0??8?'w?9>%?9]Ͽ?KPF`?@{ʾ&19?`b?0?*?#6~?KBSaT>?Uڿþr2t8侜K!bҾvd?X?44N۩Jȅ?;TTT#ѯ?I`?֍JQ?1I?G@ID?81<_@-?*0?,X?$!??+Q?3)?9?'?V??"l?:Ot ?M??^XĿ ??:-k?Mо ?ɆsT?@?1m?>vR׾??Ç.? L?X`B?z?9?*E?0^?ݖ?%8?;?< ?/~D3?[?>qҾ"4?&M݁?,@??]>+?Jt?̿?_idn?;f?j?6?)t?85QXF??-CƔ?ԘăuY?7?F? [nZݲ?t@5 V??*Y?JV?(m̀?0?bN?(?BX?1?`'$?&[?1??n?/?Wq??p?A?>?@?1'?7'GYG?.F7?՜?9">k ?_??#l/\?\@ۛ?<?ݹ ?1 ?+?/?7?*???-l>n2kV?[?4˾]O?-xa!?J0tԐ?t&bܾLMMsH|g?D=sà?G?a,b?&qONJr俣ľp?&i?(?3ݰ! ??U$+?A?vuԔ?Ԁ?_d?-?#I?ذ?/0e ?A? 7?Z?,ޘ?$ f?2>?1#>=x???9-?$?+ZZ@6????? -?$8?SS˾-/?$y?%??1X?'uâT?6?3(>??2? ?=TG.sCw? >l@?Cv? -a?پ9y;??ը?d[?)x?<~?a?P?ܙ? K52?&(S?5]0?C?" ~v[?&.N?<۾_MbO2?H?پzaּ?7s*\ᓾ6c?BRI/?O?7l? -?V4?D3oo.GR,?"ʆ;RK?E?q?01,ľ2?l?4?߳$>?ƫ⾊¥?5%:O?U?>/?Es?,?6?,bC?-A>A:?״?iCK?N?b,?7???9?}?0N?J??&tF2޿5????1R@'79@T?.F?O[@2???+?@ n?,(?,N?Et0?ܚKƓ?>*4??L?$?#0?=_> ?.?Q6?Dr龧eU?'sY?, ??T(? 2?#Y -׾ԾQ?p?x>C``n?3?DJpw5?F;%5?0"T:x?"D?=.?.?τ!%6;OX?u=\/?(slVQ3pȓ|?l(xw7??!}߯?UN?,? 3߾4??:J j?7$?R?B7?xő(3>Ě?? ?Pd3? ,?;S4a2V?Gu?Cp? -R?Oq6?AӾ?$j?H]')?ƾq?n?81 ?>?$N?R违F?)?Gi?P>??ʧ?2@?!?J@(??+T?Hi?? ڌ?)^D?6U?9ʾo0CvO?6ol?1G?!?44J%6?hØ?<7}?l?#  ?>`{?%?Au?"B#e?Z@$5о?;,?J۾I4?QN?=9m?cGͪ?M?s?Y ?.G$'?pz?(*?K'?6 TH?08??6?B?.+]k?,?MD'J?$^?Bt?R?SY?l?DQ?4A@ɾFfF0?5?$l0 ?!=+u?9&?\ھ|0p --?AҾS-,?9 qAxľI\$?8Q?3Ɔ?;6ц޾Q0̾P􂾶CξۂK?1D6L:KAc{n?)+?|Zh[6>?';?қ?p&?E? l@&?R0? .@ϰt?5L?IUO?,\.ei+P?H꾌v>U!,߷??@i? r?-c7Q? 0ͷ;?:?cF?F|?+D?Q@?,{Ѿ:)?ἆ?^M?!L#?TI?" ? @?ղ9?/"?־پ(d?-? ?+`!G@?ޓ>оm?ι?R? ?־|P?+S?US?]}?XcW)J/:Ⱦ6Ӫ?}-7?CnVEvԧ)?ն?ʟtо(??y~?U3?wަ?v? -?;h?<Hɍ?0 ?< ?+z??!V?1h?"?H0?ĺX?+8> -h?2GoJ?PN>)V?<?Is??3!,S??aQ?=׾?b4?Brv?a{b:LA?G#?:Go>Vھy`,KPx?tq32?M[?[R?J?6[@(h?JV?!? hD~?2/+-E???_e?p?҅I?8?dM]?1c 6?Nj? 8?,m8??+@%N?EJ?+-C?#G?,Aj_l^^?%"?¿Q?.EE?O@o忯#P2>?$‚?ӯ? -Z??Ҧ@?@yz?*I?H1?'?@@+?v??4v?az?A?Y?u?1?E?)??b'?3*?15V?dx ?/? ?7?]%kt4ַܾ'9?25`*?L?77?P??*%?%?#8?S?vTdž?S~K(??3?ܾ??K3I2?%־??%~?&?ҥ?9yg? ? 9?9?LT?EB">ߑ?濱[eMM?:/j?!d?BF?45?O?0G< ?يA?!?5n??G?L>:?=?i?E5?,)&U6ion7X?ÁXʾr qS?r-pϿt{>?"5+|p=?@ǿ?3پ"u?c& -;TGR۾O/f??;&?D\! -=7t?@Ⱦ+L(?2X'g"$$????&ľ?⑾r>ߙ?%: -P^??۾X̾QF??ow?20?97?5>??I>i??,Z?1"?'i?^???Ⱦ s?+m:^ -?)s?=w?0G?I?!?St?A?vlY?d(?4^???m?MRf?)?:?nGr6?0^?Nyj?V?hU?Kд? ?A?؁?2t?<??t? -1=񤨾?_?1־ؾ?4Tl@?n?v?M?t?1Bp`-?Qn?V'??3w?#U -?("MB?N?T$8H)84X?R2?J+d?Kzپ?Y?6tp=H%(.?6C6Ծmp?@s{C:?i@ @9`9?l?P{6?E?u.?7sMn?F-;]}?e2?^z? -= ?0m?G?RJ?2@?&> {?'0-?/?VW?`?̓o?a?/?۶?HE?????62ѰE?Ds.??׼?Fdz?/?ҳ??,?Ԛ?Q@&/hþr?B^?AQ(?>?U?ϵ2?-Jm2?6`{r?K P_?8?m ?;:?70T?޾_"? ?)?L?h?/?̾I6?& ? {??:"/?f2?0?&^?HH5Ճ?.?;oDZœ?'?8?2R?1?ڿ?& $.z?.ò;濢&XwH{?81?G_R?8+,@g?ھ >=m?)qXn?3];?F.?;/?G &?.5z|?a -V?'({PR -@yF׿??+8 ƎC?2?+?--?%X?Em_?0Q `K.??w,g"j?# 䜾~9c?ħ<ܵ? -ʿ?/㲾|N-?;^?|@"??a|iSɛ?'P? -X?%?Np| Wp?L]a?,~??J?!e?B84Ļvnw?q(?l?#Di?0D??)'AIBخ?΂? 2|?4׾؇>C?W4?r̾.?=% @ -¾G?d?=DT?$?+El kZ??4?+ɾěN]???+WS?4q??0?)?;֪(h?5VE??,?) f?G3q ?-ľ?q~? X??+v4>?ZWh?+ ?澦>ؔ/?;?C@?F?SA???.\?bm?7?i?)>#d?H}ֿL?>?a-?׾,~?#?(eW7`P?%*bd?RO?Hәls?U?3= -*徜# ?6R[ҚX? N25?E#"?ྐ?.΋?HJ׾Tm$?Ҥ|?)Ha~?&S<|)?GJ9?9 ?^?/|?)k?$b??;S??'??5Utr'?u?)|*@?R?zޭӿ*? @(C?;Ѿ?K?@$?5]???4Ⱦ?v?,u?#yk?r"f?+?F_?υP? +??=0?6թ?6$?S'?(-Xu??Q v?S>?S?ƿD?"X*?-L?q?7?3@n $>Ʌ?`JŽ?@w<{n?:UT;???Am?B˪?;.-ܿHw? |¾?%?!!˜>9$?0G>;W?)J?ڛr:4uu!0Z?)~?Fƈ?Pw>z?@?F$ji-?:?/ ;[.?1?9+]?4>2?.f?Br??` ?3ai?D"? J?16?#-R?J)ї? m?P5@)?8`"?C@TmC?@3??,?"?՝@)?0T>j?+??Pj?_?ͷ?!,?>ݸ6¾~ - ?Ծq&K@?f?RľV?(?*?.R?y?澲y?Db?3,?LZ?$ @*ej?P?o>,?#;p?&>jžf?J8;$?r?*ؾ(.lPjԿH־J?:Kb^{& "np??8?DyF ?tT?,fƾwĿR?.?6%޾i徰A@J?azo?> ?vH?ۻ:?h v)>RO?G?櫹?Ҿ5?DD?-?J84??<ݿ}>Ë?-?36龃a?52?Q?>1X1r}Si"^@)?.???hL^L㾄^bv?4?#˾?ߡ?B:?B?4?ݱ6x?Z3?=},b?0k?Ŭ@/<8Qi?#E2?^ ?>?.00瞾?ςg?.??4??,4t$v?I}?AU?5b4?/@־?b??BB?a *@XB@!{?G:?WԿn?;L@#~???t!4?EOgL2?.x/@%?'/>$?h̾>>񿧼??7Wp?<&q3?(&׾v?3Z^?:y??Z?MI?6??[1@'?)Pd`??>\X_kvЊW!'l龥!?->(IㅾmUgf/ÿ~I?ߠ ?AvVy!~?I? i7+x?#~if(羧I0o?4ȿkCd3b˕Fc?<"ξ&X?-{.P?& -?F?(hh<.?ځ~?8R?9Xɠzf?;߮4??R_?$\4,? -#?K澇1Md|?>#Q@?Z@%B6@?D~e?Ь?A?>KGo?)?/T8@#?1?Y?a|?3Ί0B?T|?&澉?Ѣj?@ $?ޝ?RG߆ ?;?"~.?6?:z:6?Є?+?Z?:?H^?5@(ɾzn?Hp圶?l?5ɐ?;^?-h?*?@?KS?8ftf(Ź?>?= U羙ia3zsO?0Pjl /?I,?~E?4C̪?j6?H?3ʿT|?+mϾN?)k?44oz-.ܿ)=Hf8 -?*?7B?=^vhg?2>?="?>x?P?4?,TľJ^?x?QVub?,t@T?ت8?u?K9x?Nm>.KK?62w\z ?JC?F?_#@?`AB>EAp@?@ (]?N?3?¾4~?U? ?I&>a?6:? ?2?ξO=~?,?@%@ @$?ZLjq?;V?,l>?٤R?/6G;t? q|P)?8Φ?,eT?7?'=?׾{ -?EP>L??;T?7?R(=I?y@?'*Ay=?9?C? LXzv?0?ܿ7?ڬ?h?Cپ| @o\?^?#?8?Ծ-|?3?-Z?HU,N?>O{?rAtωhܾ@) dȲ?zG?x?!/?Gj? d?(pM?ؘ?Jt?.a?.?+)?.lV$??;j>'|>Y7¾SUQV?5?/?:-h?>lƾ俥,迖2 -Xir-zj]>lsr?Cj??W#?@ r?蛚0?W v??/D t>NԾq?B?-]k?܀?&$>?Vmǿ྘{Z?H`?+>W{??CO?-myP? \?f?8H?)2ʾکԪ?/0Zq??!(?I&? -?JEM9?Ks??l?7śV?;?H?'C@.5eZ@*B?ȣX?3??Iz?-n"?uMi?/5??vY@?-D`?IG?E??p>?-D?Gd49`w?0G?)"?ȏ?/Lþz?,5>{M?KP$?+?@e?\?6(?>C?,?,Wz?FU?K?&h6T??=B&3??2j?'x?CI ?3AJ?@@%6z?Z?RȒ?'ONx?1n?)?5Њ?N kp"?M9?h?A? ?3?`>K?=?%?H?0K?,?2?>?ү?f??#J$?CEp&?|?̾ྡྷr?ԫ?hؿ!?@ھخ?Pj?>naq8G?}?F?QhϾ$HHQ%\a?SB?2Bm?=?8`?%EB0f>?1n\?ESi?1)JPx?"cn?F|?`²?:?X?,.Կؿ(?#q?%~?r?龀h?+2?+,QV[6D?5=?@Vs< P?N!?N ;usоYg?@>AB???٠>6 ?X>@? `?毾Kf?1M?Ǎ4?$0?ء?̪!?hV0?u"?'?@?x;|s?|?탾,???1Fz?"~?>?a?=\&c?;`kM?Q?'g̾%D?%Ⱦ)>y@'?{r?,? 4?Pώ???^?¿0^?#Cg?'뢾r ?V+ĿƬv?վLr? -lO?&?T?=,?ی<?9'?VX??g?.^r?B?N4f??83A?ӥ?T? R? *L?˄뾺lH}?%Z?ZY?2Tc?d?#fؾ?>n?G$?4ƾB>A?bh??ҹ$?Ͻ ?3?6?ȸ?!Z?3v?O?7w?I:?`?!M?η3??-o5?+)? ]fu3H F?9?r ?!gXI?xZ`?3v\V4j?*FYg>ma?6:i.?hƾڽ%?A>W??nL'x[1;9?:XWཱྀEg?o%?=i?6?7?gȾ/}k%5WtE쾮`zʰեz?,?F~?)r?.]???)??1M~Bi?mt?K6?,ƾ9@V??f?:|*?'V?9@1I??*5T?'?&?$?u9CNP?ۊ?@C??[?]?S?2?/>?"r9U$?'ξΪ?*?|fC?[?-? \n?/@t?+E??d0?9?0??2k6?e־T&y?Kt!>{@" -?N@ }b?T0?-?C綾ԣ?33>q?4pؾ1\>?$cnx@"?)?-?W??%?p? ??9?-ehn @7Q?/@ݬ=x!٣}"DԾˋ+N?2ݾlt8eP?m?aU߾:?=?.+?-?H `?4w>r?Fs?'GK4?OZ&?Gń?b?aסP?8?!>?BT%? ?;A?X?,ar? I?\^$&?T޾-?,?8֢?>Qy@+PwBA%Ծ,fȨ?DD?,G۾?=rOj?6h?׉)?-Ī??U?!?PN ?JamH;KP?K?Ȋ?׵?2ݶ? @%|?8И??H羥">q??#,?6վi٥?A?K*T?Q -?Pٰ?H?0ž~?&1K?Frz?Mq?I?=k>#?tV?.?+?vk~?w?-:?8)?@0?7ܾ];T?,>?g[?*@?NB@'A>$E??ߊ? ?Bd?+A{ ?*?ַh?f??2ܿ!.~t@'q?<ƛ?U?֘p??Vh??_;WPN?K?Bx?L?:(?]?IgᾜS޾t?>>"!?ҍ}QŶ?3ru??߾F#?2=?đN0?8j*m?j?#$N# ???&|Ԫ?C -Qᄉ?J}?4Hz?5I?C?3 4gy?L?"?z)1?B?Tyj!?˥?F R56w^?B3?@m>>?5 ?R?4/6L?9y?2??% Bj?M95?a@?!?d#?2?,?E܅>NhP?ҿ?6?ʄz?55?LO达??)-?04?_?BpҼ?MkrX???H?6?6龁Z?B?&/о?Hz?W?d?p?4'H?D?<>!A?4\@?F̉7?#gҾ7~?ѶP?%x?#N?٪?7 -?FM?Ё?M/?:Z?D־Z>XPйѾw^?@B?>4@%!u{?Ӑ?A @/h?҂?K:?5?!z?.ip??ZG?mvt???0X?6P?;?]pX?$b\o??4 ޾R{?k?D?Ccu+?Տ??H辷2셿3?CV?G>?B?ܿ}?E/k?\?ajr?):"?BDsC? t?۶4?-DVY7?3?@?))>%&^?;?9 zhK?>S?=Ӿ{࿰ɉ0?++~?Ah;? ,?.T?[|̆? -.*?؎M?LGJ ?1"?@tx?4D}jj?¾n?Y?9?E>?1>J>?"y9E?Sf?E wT?,8 ->?dtu`ϗ?(?H???[?I羼~??,/?+?Nu7?vr?DE?0?w?M!Y?񄾤s?~?F ?9s.Fѩ?7K?+?3U?HE?= ?$'?G?XW?3ߐAFZ?&H`?Q?cװ@+-a??->f@G@?B?/?:.?;?*%Ͽž?%l?C?;龘q?&?8>?6T?˺? ?τ?O? y?%?=?J'??H(l?`?%Y?AX?%)??F5^I?6Q@$.?'-ѿ24?h??xvԉ?:T? y? e?7?>T h<;?Ϝ?>8Kٺzb-:*Va|*RM`?!j,?;7?6r?И]d?Df?MڿԿn?5Z?>`^/"?NP?>A?1 ??9Ҧ?<.v?:?5(?+?N?0#  ?w?+ђ -쾝S?8Ϣq? 13\?9?*?>?@&l?:?F?ա?d4?J8?A?௾ ?U?5#?8?4QJ??l??B#?+e{A~?؄?0? Qk>Msz?0<>xP???A?Cl?BP?`?6@ ?Vw? ?(?*m? -oWt$n,?4) >?Ez??@?$?1?Œů?73n?N@޳"?@%׻??(??AS?'?>w??_ P?-?(L?ܻ,>;>.\??7 -?Z\G|?ր?&?#?-r?y?m@,w?Z?3FH?1n?"F mJ@$(*5?? ?[x?< v`?ْ?׾?]?1ق[?T9``V&?,?&>龦Jl?~ѾK?_?=9k?/"?%?ݐh?2H?hOHҾ?'h?G˱?62Sj@X)?:ӾUQ³X?$q?PLX~ʿE?O־]A}?>$?U) =T?Lྸr?KS?7>?3{is?Wb?3 ?A???"ΰ?C2?26?45?ۢ?34?u?%&?1W$?6?%?"̥=?Ն?0?$pr6B?d'?u?:?:D?(?l?EYY?4y?,pD?;/F?Ծ}?8e?0i?C^L?86ɾ0?̑B?2g?;̃?4e?ۀ??P?5޿F0?34i?T ?0Teş( j?5#w?3 -5?MK@'ː@'??M?E?߾u?H6?Hq?:?E?#?-ވ??ܦ??;rG?K?W,N?%?.?Bl? ލ>T&?Ko?,_?+?K?&?x3@AJ??U?-8? -???ҿۃ?7,l ?v7?JkA6?/7???ӛp?4ߘ?gwN?Z?l>?P<>&?D>f~?,?P)HРT۾?T?X2BluD??V?]%1?)?Bj?8>#U?;}.WjQ?B !Ҿh?<?Hȃ?Gl?j\f?䟝?8llH>?݁?ߣ02?31>?mBz?Yj@( ?n+? fDr?L?X>zgҸ?$:?:?5`?#$2?5?4R?x?G;0M?ažJ?Tx?M濓ǚ?-?έ>2?X"?L?f?a?>WMg?%$?jj?;T?7R86?q -???2>?/?ྞNV$/?@?n?ΐj?J?8'?] ?-`?/?+{??2?w5O0ƾ?.;}~(@dӳ¾??r?3?5@?`?$??"+&@/s?I-?3?=@&Y7?9Ud$v?PA@??G?Þ*?,W?%l?8?a׾%供6?8l:?^?#?|ˍ?/y?-?92?[?ϙ?3&,3?<`>ΠnI1Y?ah$?#Ą>A ?(A̾Wv?~C?ڝZ?&I?&LN}?V @%¯?;? u?Etm?*?E}5|y+?oTc<> ľ -j*4?F?R/?)F?1;?9n?\I7?%rZ?D!?֜t?̙;QT?ɐC"?dn}?.>jyR??忤r?5?S?Cu[?P^^v ?9i0?I&???U?O?n)?Pc?1G-?6m[ 澨J ?;A?$\l?,?Y??p?;o??C?=r?!ZB?+ -? @?$g^?*B?3? X?[?=??-4xy?'U?q?ׄ?)? ?Hh??7|d?L/kX$.??6a?1|??AH?%@%-?=ξ޽Ө4?1H|d?[ř?KpBZ?6?Д?.l޾ }?(˵??'j̾Pr?f?1H?,BC?F?4}?? ?c`U?y?߳b @ @ع0??W?@W?4hF?$Hy?*?6 +&4X?TþfϾs?.ބk)?H-տcs tr?(]x?A>?0?Jh?,?3??"1?C,2?>U?:/f? 3cW?,>֕ -?Z?@O?Au1?`MQ?*I?7Ӟ?1>Ӏe?\tVc??F)?.xY?$h.O ?>?"r?I?&?$Xm?~?Dw?/FKk?Sj?G?B?-ヌ""? -?zN;#?YL+RX?S@b&?Ag@)l?9??$Q?m?Ͼ봞?g?;p>!?0> -Gq^ y1?y?7>??(?BH?Ρ?Áj?1ٳ?A?*?J ?R?g?[ d?2 -(?D.?,h?$?(x? r$? ?.,?-??>?5|n?3N?کP?BN?4"3 H?:GyRW̾h?KZ??z?J˸_?x?W?WUK?E(??j$@I -?L?@8ǾEL?pV>^PuStx?I hUR?,#?#?!,ʄ?PʾRھ8+?/S?ͺ?:!?0\?<쾍 T?'Yl?'{P ?-?55%?b?weDŽ?>0Aþ -?5N>?(h? -N@)z?t?(o??*D/?[\?/e?/?۲?n!ξsb @.?@5t=?]㾭E?&O?Z??Zň?+]f?>?@S?W -?_p?GH.??s?5?Dw?}>@?+/#?R???Eh'!?nA??x?v)m?:|? -?6_?$?L= ?74?e\?T?B2f?ˎo?*?ӹD?L7?< -?(?OH@"W? t?Z?9? xv?"3>?>U??0?=*>?'g?2c?O/?%{cJ?BZ?->ɾl-/?2䦾>ӆtj?,w>&)?Y3??5? -?<]5?6'??;N?3?? Pؾ}zK?'??ԫJ?ֺ[T?>?* ?%ƾ\ y?*>Ud?pN?2쾮u@? k?:e?X >&'^?-?2eV?%oN?ۘ?, gbp?PS?ݪ??Э?<48D~辿?$?<&S(}`}y?iH?Tb?+C?0M6?'$?N?=?%?4׬?>Ⱦ?#_g@?.! -?˩\??4 -?kF?ș4?5u;?;z?Fn?&࿡?4֜빐?ݾ>\R?M?:ǐ?R?ͮ?(.?/,a=?'?܈E?2r@'g?>C2?M /?8? ? ?܎>^Ht?5˔?G?1\t[?"j?4?4hh?-?2a?20?Rc? 澹??%G?~e>.?C??`v?v:?:ӾA??TP_?;m(;H?_yJwNʓο /<#???VwF㗿H?7]P8|?&\s?$׾x⾑?*O$X?0&?d?Uj薾>?=ى6Mb?R>P`c̾\%?,Ljf0k?w???־J6?(0I?^?ӺTx݋?OZ?;?2j?Cz?}&??ޅ?5ܾt@1??KG?@K?:??!?#O??}Ⱦ??Fjƿf?t]?Ɋk? ?"?3U?t?!Z?/X?4dd?_??@L?.?T{c ?JZv?CS?2FH? q? -M@(v?V־Uh?@/[?0{? ?EG?/?5)?&??̂?>C?)pZ??:?'?>?3#?/ʹ?$?ǭ؁^?Df?4P? _?O5??.]?M~?@OȪ>r\ǾN?C^rd#u~?-; -h?T?$kH1 -?`~`%?2^eZo̻?;,??;N?͖?b:b?V?Qi?@: ?STAwM>$?ލ"?;6hH?Q?+?Jɳ?.iw]*:?Qh???0?%?Ey?)B3ⶾ9x?ܿR*<dž ?6)`?JX?0?΄e?ʩc?$t?;x?F2?چ?C^? ?(p?Є?K?#.?CI?v^?:?+Hp?C:?;36ȹ2>@.nm?0#?F$?Cz?S?O?sn}y!+:?[Rm?/z?( p@-xp."6~D?˶?Gd?xp?Wo|7L?H?e?R?K?@wW?G6ݿ辢N?G.W?aΈ'~?7Ū(?{Y=rf?*^?AS?\׿I?Q޾A?x? x?1'ۿ?.?ތw? 2$?9'aj?7o?4?&d?N1X?9?!L?N?9A*?.?<\T=uX?Q?:ξn~?E0@׾C:r7o۽]}?%?J?:MÝ?C"?G?P>+?.#?#?t ?9羉ѿ?,?|?!?"y?'`x?ñ`@%:>ta?ZM?9?78@ Z?:?86n?L?#|?>`&>%?BL?.?6Ő?z?OOk ?K?Ѵ(@ ?5;P?3?Rھku ?$"?д?&@'jj?>!?8m?3wG (AY??6v?ߜ?5Ԓ?۳?0cy??+ԾW?z?):f nF?fCֻ?oy"?3n?5[?ݸf^Yt):~#??>wLt3/?618>?9"P⤾^(?, ?-?WGp?⾩$B?2d'{?Ov9D?1򒾔f? ?!{Ⱦ Q?3Byͱ·?0ʾ??Hξ?3_?.t?!?ja?6݈?b<\?!O*`?(ྚB?=?#'l[?'AG?3`???gN?0>c?%?.q?&bK?q8?F-?濡;?'?|y?$P?%?8@???*ȸ?;9u?2?N獿/J>ҿT??>6a?%i?`8U>Q???C|?3H??f?z?#?!D?Gq?f -?W40??-ͨ?1?ؿ]?ۘ??8/ -? rֻ?! ?%E?$>??@a?F?^?j?*Z?4>Aj -?۾+w?.>??W?ҷж??J>x?/fN? ?=]???q?6J?ӎ?}?2.???B?2>V??+t?4L?CJ?@6?ݬ?j?\@ 18?7?7?݃?&?./?9]?,??ĥN?X8??()?-4?>'8mmݾX?侦b?;$?=W?/W凾H}n?>S?D;E?OZ|?[k?Pf?.(?NdTc!z=K~4rƿ9??+oOʒ>/c"Ӊh_h?!5?'?/ ?7JH￟&??6CxngM ۾x侶f ?J ?6??>ݾ?%nI?A/?׾ᄍ\? =>V?:h*?X?,x'?>?#qʎ?g?H??eq"@w??Ql)?2?; >"?N֖?(#?՗@ ?:Y>qqF>?ܦ?%{?,2N?7O?"ʾ:?yJQ?ܲ?6=??٦?*G?>?4?0?-4?Z?N?/ ?2p|?&U?7D?e?A2>d^?kt?$ɑ?܂?F????U?'??:F?5s=?\`?L )8?P@eƆ?` ?*;?%?m?K@*?f?ɪw?~?V? ]?Ό?G<7?E.?La&Ф?GF9Ѿt?c1{?I?*\9?n? h -?D?5?1?@?5?R6k@?Nz@?2u>?4e[?Ҟ?zk?$3? dp1 ?& ?h>꾐W⾽?AnB?32&yοF!?*s?8辇?0r$?24?%hJ -nw u?;l/ڿ??ߎվ@^t`i?(A ?-?3LO)N?"*?/?'(??,G?(l\?8~I?y@(?>u?*sQ0W?).J:D,?$?BrǾ{@F?, ?>?a?6?;(@1?B@I ?*1?Gig?j >PP?+> 3?FR?.O8?b?(@&>?HA?[?3_F?F@"?ٸ?&*?[B?3+x?}?.}?%?Eb㭾ȾK߾,b޾u?GتmCp=f`Jr|?H?WrD?3P`?S8?Io^iX?L䬾<]bLY?3\C l`ł??S?8?Ex,Z?*=?@G?AzL{?WȠt@&kQYʾDO?^?uXkP?2p?״?@? -?#?qf3?RX?B?_?ϕwՙy.BH?K ʾ'cA?Yw?~G?,;?- ?y???:!P?s?)? v?FxXBL?B?/轾Y=$?\?:ҾF?VEH?s?C?&lbUs?1?-^L\?ϳ?0?$J?.ھK,Š.V`>lž?he? -%?e? ^?HQm?A?4OS!?C?,;m?O?G?Tc?#?VsG WTEZkj?`??"??4f>?;W^@#=P?ҋG?#8?@@&?ö?VH? +i?-?,(5?:eB?C.?$[?C?+? #N@%?6C `?P=Ok?e"@(D??"?0)?޾ş?A?&(?V?L3?l?^]?(B?GM?ޥ?FJ?z?گ?W@(c?$$ӾI?&?,L?{?#r8?Fh?'?r?z|j?$?(?^ݿ䨾?4N8Gp?14SqN?P忟??=lj?N%Xic>{Y Wƾ޲?#I?Yg?;,r¾k?⅚=Dۅ_ }m޾?:F?<䢾[¾fH=?ʸ>D1?Y?+h*?u?Pdt?E?9J?˴pa?U?,?? -7h?;,?;;??I3? 9?7?J?{B?"K?.?bUO?7h-?M>?9Pj?HmP_?"Ԭ?zj?D??Q?"?Ն?%?# ?(?Bk??A?0?4?(?M'?P?=?w,7c.X?3Y?-?|>?i?1|O?l ??2D??Gp?q?9)>M?6=H?]8?_?`i72?6 ?~?>?@@ξj?5c?4?֙*?_?)??v??<$@c$PN?&3?s?%!~\q?I%?-?K??i;?!=@?M?6T`?Iw??x?1?/??n?302z?7Q? -x??0G?t?Pd1 ?8?Bxh?Dg>???O?%9Ҳ?m@?%q?O??Rؾ ?ԥp!ھm,?4QqPԿkoͿy?=ۧliw C(?LR>\?8龩4?*c: ?*NjP4^^?@j?:3:nCϾ ^tP}4??`R?3~vx?=7&?"[??(u?⾍"?#?HR4?0?=Px?n?)7??{@+T?%ތ?5뾆;?%[?Edt?KO?Ѥf?Q>?)?@?'?:e?7n?Cm?I侹 ?+;?:T?;8?8r|?"O8?U?8|??%?WpL?Jrb??q?z>?M&@$?ʵ9?-Í?Y?EH?>?C"?(?KL?>/wrqu??T?5%?* ?-?YV?6˅?ª?W?w?Y?>aF^?UG?Gt?5 ?+Dct>|@$Y@gކ? S?x?5D?'cD@+\?I?C'?6E0:?C??5KK?X@0?*?!o?)۵??? *?L?| ?m?,?v9?t(ܜ?.N?#?%>[t?*~?%Ij?*PL@!βF?*`?$u!??=~?#?" -? -x@(U??$0&??;S` ?3c_Bғj|꿘S_8?[ g4?)*?(󳾯S?\IT>]?,٧)?'_\?& -?Кq:%? Փ?˚?cbkd?('?U??9?/?0oF?۾ )4?z?:?g)??3f?ˑp?˾? ?ܨ??!"?z??(|? -???t?1i?% ?pB??bf??]?,? -]?t?H?v-?(;ȾPt?Dx?Ey?y?1?A@?J?~? ?*??)L`?ٌq?/0?*B?Ŷ?Y?=f@$;Fl?&?)@ ?>R?ׁ?(?9C?^? ??ӌ?D?:?ȩ@,|^?HQ?(\?ٰb?Յ?%?h?9??F?(T?Nþw?/`?Kt?.S???E,y??P?\?6,?._? ??HJ@?>???L?(2g?64?G?B(?O?4P?Z|~?1?Br?06H??G뒾, e!'?D$?W02?N7`IGQ)?L?}K?A꿒!~?[u?'DxM?Rd n] V?<5Ծkn;SB\?ҡ?Iƿl?D9jb*GL(|=k*?3:?Np?#%?1z4?C?>>zO>:'?y,?*i?2)`?gR7?8?* -?X⿦hV?-??R|?~t?4;i?G]?՝?ݱe@,=?La?,?7k?2P?}A; b?=N2X?ؑ*0?%b?Z?6?Tn)?(¾?h?tK@(i?Ղ>穼?+??z?@*6?$?/μj?VȾ/?????gJ?!K?'?Kr?N#? ?+8|?Ȳ?OP?????~?Gx/?Jz?+?K?.,?yh?8s?T?ߟ?ֱd??"]`?ԛ? -?q?/c?պ?P?x>D-?=b??(???L'?H'V?){? @(Ŀ辤>mD ?1?*?*F?Ŵ?4?2[f?("?(I?Xꈿ ?-?L#c?8 #?LI?-H㾅ph<$+`{:?Fd+?MɾByX,=?>]Q?ko$ӾnW.?U|_? ?YG|J?ȿ ྪq??u?Ф?+#6)?3H?D"ڿLɽ?C?@'?,9?M*I=%N{'?@e?5,W?// ?oV\p?l#0)?ͦ?߶C?H ?4O hYj$ⴾ*:?L71?,?۪?N}?)A?#8J?/5?I~?( ?:┾?{?-?B?ƾ̞?I?(6?9?օ?~?EV?߹?džS@"{??!,?@l?f?=\?޻?$?ጃ>q?A>J~?Ww?)??Jz?F@)|?\RM??&?:d쾗2hy?0Ʀ?+?e?$~?*b?5??Qnz=t?A(?c?@?Q?.}j@"?EL?ۂ?h?E?F?.?$^?v+?̧m?ϕ5ɐ?1?,N@!?-6?%Z??1Źw?7O@"?#?@h?ř?F??9V?g?$?FྡR?y=?-L??A'V@%??J̇p?7B?(4?h? ?c?=?0Y?3?P?ڛM$?]??&r? L?}?B? R?Z-O?م޴4=F?Impr?3j?/ľ?z?,?1Ҿ@M Bqo0K?IfWP?AM?ETق24c?υ^?!оgi&?BF?.{? X?:?A&b>r?ђ/?0&?6L^R??4?D -!?͗rU-?8?++ w?a?/ ? -?x?,-оK?Q?Ք=?ʣ?Bc@#\T?d?=擾/^?9?Aɩ?^%7?8?̛?I>R?9`?@?\r?(?84@*3@-I?J$? H?ӢHgb?/6~?D?۪???'?؉S? !?@#R??b ?C?Պ??0?&D?J?6n4?P?Iu?.?c?bd?&?8?>6?H~? 4?,??/o??M'?J8H?%B\?чQ?[?%&?%\Z%Y?0?K*@dw?6U??{Q?@?J??/@ Q?D1?ŀ>'?(|?R@$?9Q@(MF?Hھc/8~~?0@ ?>ܼ?6¸?p?+i$?%Q?MT?,EW?4i?޾ٯ8`x?PuXl?t.]?MB?@J?=Y侊 X%5?"B6?d僾{?>oX ~?B0gnr$>P?=m_ֿe?(5?/.?,%龅.?S?/?>;?v?-!A??Ae?ch?J?tF?Z?Z=?Jtju?5Cd??K?,c?:?rDRT?C??w?9>e̿ U@(?*&C -?'Mi`?0?&ڿ:?%2?$?A{> DN)>U??2.?q)??M?ZU?4"??6?%+?D4?~hE?? ?3?n?tXcL~ҧ0?,a6?0r@(s??)?4f.?8ޝ?1l@#6?ռ?/?6Rbwy?5B&?кL??? 87@/@!^?ڻ0?~`T?PZ?[?;5x;?0;?SNj/$?#?A6?3F?v4?*@4??x@%??.?Fv@\V?6?"pr>6?z?޸?/??`?2"Z?4?@C?$?,#?Z?Ɏ?;?z?֜(?/ק?dA?# ?Aĉ?T0?.r?7L?=?#xl?Ft?;ھR?C`?/&??2*R? ?8?W5D?:?8:?Ȣ6?1p\5Q?R%)?- ?Aѽ J ~G3J?" א?CF2\? }󞾴¾?'?|?(Ȋ?E?_@G>T>A?&?X?'3[@Qk*>($ |?ʿ?"dr?S?Z!=?]9?I??5Z?f??*0?2t@*?79D@?;Bݞ?- ?@2?U?ذ??@ƾŰ?j?,q+?l?>@ H?Hي?]?S? Ҿ?9U?κ}?ڋ6?mW?5Y?˫S*>?<.?1@# ?8?Oz?)?8?*$?6?-?-R>=?ѫw@% |?ϮBw? TF?׋@?7rJ?C?"O?F9?{?d?^K> ݾŶZ?&1?2&PHe?Ce?U̹CK;_?Ϳ!C?Aȿ.?Q?4h?!(1?Cؾa>i0mФ?d?5VF.x%?@ϙ?CtH۲?hDE?%?K¾^?$pͧ?@qJ? &?!tf~j!1ɇ?BXz?&$&?#g?(4?L$q|N?!V)?e?jz9&?I>?E$+?!?.?Q?\?(?(c?#龙Vs`_T??J?;'ђ?ؽ?!d?Y?h?m??$??I}?6j?8)S}ԝ ?ψ>1C?״J?ٿſ???6???,Y?6x+t?T@?蠖?ɯzzHN?"t?%,?WK?#f?*?>&?؄?HK?&ƹ?{u?]?$.?]e-ÖR?R}?ʵR?t?d@"R?@%D?y>??#?_?O?/O??bD@??5;@'i?6?4?9XV?N??(H?rf?NDr ?jN?M?bd?2?f?)??ܑ?NP?+Ign#@?>̘?5i?D ?6?$9? YTt?9ા6ZR?l?Vd?Iʽ -x_&[d>}DA𾷅?6?T4?3l?76T -*'?L V?3־(??8? b`?CG?/!?[c?=!?O7Z?3Q2?E?4?*Mf?7-.?0JľW"?/h?(B&?Te?"3ľh?t4?֭?>ۊhI?QMCr y?Lf?D¾/ ?*M?0/B?\_?n?;?վ ?->-Ӓ?k6@&I?F?P?(?ԉ?߽?/?:?C?m?۳ -?.Fp?W)?Ӿ'Ⱦ?8?)?\J?x?p?8&?ڏ@+a?]Ӿ?3\?Z?//ȑ?"?$??6?5OU?"?w??Ϸw?Ӳ?3pZ?>?l??I?׮ ?o? .?k ?_?J?+?,?x??2?J@$e?=9e?|l?c?K?>B?'[Yi>˲N??2???5?՛?12>EO?%?2?(tǒ$?M?H?&Wq -DrT|U0?b-@$վlބ?CižMϾ\Y$E?(c}oM>)Kj?E;E7sg?H߾Dv*?-9sv?LI?;@o?KN׾:먾[?Lb?'R?8B<5,? -#M? ~?;?6?2M!?(5l@R0.U?6?JMy?4?*t?U~@.-?:?8 ?5t5p?%?3"?ѣpm? ?Բ ?u9?К?J5?}W???D$??-a?NgM?l@%?5ዾǾP??X?>?O?@??M?6G-?1?&+%?Ծ˥?/?;v?ٽ?+i?)?4?J8????w?1j?3 o?6X?6?&M?A.@W^???M?9a?DF]b?h@#s?Q_g}?ڝ?&8?/R?Ӽ?A?dH?6?̭A?$$? ??&#D '?6??@+?PX?;?\?k3?d@$Lu?:? Q?-5@?@ Gl?X???4?ִ??6?_B΋h? žؾz"?n?3?CT?[?M?VM??"@>z -d?@;?->5?I?6?*2x?8׿:?92?S?9Pm?I>1???H䀾[ؾ -Iłq?gƾIZ=˾G쿤4Q?%5?6}?;3N7?o >N,q -?(*?S羛 ?!03(] -??E?'|? -?ɶ?!^?;"ྵ+3?SʾEd@,0El?%?qT?C1?7??CK2$u?D?S4ӿ?q(>?>?(@ ?j{!??D!?-?ʫi?)?.?)?LeC@$9?']P?APn?Ai%]?C? ??!?]%쿳+?9?˔\?A^\N@ ?-F@%?%!UMo?,Vv?y?"* K?7mľW?(W?6V??}???(?E?ϿU?z^4?3r?/@l? '?,?Ӈ?)@,l9? X@-r?tľW?ڴ8?95?ï`?׿?1 ?ܗľ)y#@"?X?8a?@?3Ƕ?%4*@%ھ?/k??߶4>Ј!L?G5?ӎ?"i?/x??4??*?J,?o?Q1@#/8?Ğm???6ҵ?FC?B h??݌?1:,?S?>?!@ba?.q?B?n?徕4?B[??ޠ??&g?9j?&R?ߕ>־ǰf@'x? ?WMH9?#a~?@,?]?g>ZNb?]b?M9?ɾg?i?8?ȉ?a;?V?=϶?"e?&DH? ?V  H?3Pi?F[t@+bn??6|o? ?)3??͐?w>a?ɝ?-*?A?R@^?ȑ1?4n?ȝ??-j?B@^O@&?8?ЃRh?4?H#@%Ö?5K?j')?-?3Z?8Z?;?"վ(?"?$J?$? ?&?*? 8F?'8?RU??GY@NlG?0?:9?/ɟ?6?Oz?A?J?0?I?9 Z۾)I_t?.ʾM?>F?+.d8;M?^8-{?>$3v?Զ?wG>mہ?;?8x774d`?7X? !ľ̆od?5Ǘ?NMp~ROL?,>?,M~?9?=?'2H?&?7 -~)*v?e??酨?]Ô?'罪?2$@$(?%y?#?+?0~s? ?l?$?kl?$?A @7u ? M@% j?х?3@?A?+ϴ? -8qg?Ҵ? t?;@/?ƴ?|?ʟ?/@$q?QZ?@#??D@$?1?9? ?֛q>h?~?}?B?@??0S?GH?T?M?ٸ@( -֐/??@J?ܵ?o?@$o??)???G???0d??x?i܀?1d?+<"N?8&5V?ii?@Xx?HJ/,?@TP*GÐ?=n?W?Ð?B (_ݾIx,?N?>?28P?R?HmgN?4ھ?S;Bo?3?!c?$*?1?C-@m媾p@!<~@ P??I -@$p?2/@!D?K?=snA@M?#@@*?# -?R?%;v?ۺ?!,@Cc6?0n@#?ӯ?(Q@s?Q? ??3!? u)?* ?(ž ?"?H?"??@?X? -?<?9,??']@\p6BD?Jak[?5oq_ 4]ac?Df?Od>0-0?;"?E?A(?(}?;&$?Hd?CaUJ??$??? @ц?%(?$??>>fw?ƾ?^??"?!Ҩ@' ?n[:?ª;?%?/?ۘ?g?ٞ??䦘*)?:ƿ8?R@(??G?8?Q??ͦ?ۘm?q?ՎJ??*@~?x?R?ؾv?f?+S?>@ -@"CY??H?p?Ȕ??*X?3@+C>]@#??U@-z??2?'G?,?w?ڄ -@֊?@?)=?R7?șN?60j?O+?&R?ٝ?#p?PC@*? -?1?;2?Ї?A?؂?2??!?ԓ -?;ަ?׾^?3?f?ٮ?(?.-@#1!?TR>?/?.?ɂ?$Bô?F`?Ԟ?B?άT??%@7 A?K-?$???T/\?=:?5ސK5?;[ᾢ?5aG?ATy3?nD"?1?DJ5% {?=?2P>SO򌾏΀)?>$}u]?+?kd}zP ?近 Q??Oi$=?Z?H ?6c?DS?*B?:G?' 2?3)G?7F?@' ?*׿??=?B>Q?#50? ?3>MN?2?/??#($?/?87?y?/!@.P?I ?J?FO?'8?@%c?t?&+M?ؘ?χ@+b?g-?0#? K?K^>o?)`?o?3v1?p?Ț?t?/u@(Ş?l?'@'HPr@(H?-?LO?ʈ?!^@)@*?@'!??I?աj?Z?.?Ew?ބ? ?.?K{ʅK??x?o?jj? -g?k@#27|?7L?һ>6?҄U?*?A¾.?3c8?-?2Me@ٲ?YߠArJ?1F?3N龒?9jbnҾeIf^3?G),ھ}ea?HZ#p爾*?F?V,iXþ@z?4WZ>O?R?IxG?٠?8u?#/澨?m?'.}?U!?ă ??輾f?A NV?|k?#`??Q>?>P?GT??@找Tt?)?ۅ?l CZ?ת?/*h?#):?0#?;w|?$?? ѵ?$?9?7(0?P?Gp?<?\>0? -{?Vy?,8>?oN@!?:?-b?@?D ? o@?<?/F?ĥ@.)?DJp?@$޵?\?-;?α7?݉6?X?0%?8f?2? >2?ҹ@)]??>h>Ŀ~?iVF?:? I?!W??ג?@%?s?P?C5??8?5"j?%x>Ì?A?v?fm?J?+8? ???b.?3Ho?"5? ??'??16o -?̎v.r?) ?D94yז?$Z )x?-??9P?*@@0~?xB?ǀF?B?܏fG~?? ]'?&d?"ڰ?ڦ辨/¾PvT@)?"?j"?U??ن?o?S?@k:"??8?P? ?߶@&1? @(?1?@&!8@*?K?!@!-t"?-?(??'궰? D?:a?\@'Q?0 rdT@.|徚 ?#?:ؾ,?4?b0=?(@#@_????&n@(|?M??)%־9>? 4? 3N?-?8?-X x?(?%T?ڮ?4?r?#f?F??_@+tȆQO?Hu?5%>?<_?:?6?Ef?zBξ}$m?.O??Co:/lb?UӁ?#?Wz4l?0w?LJr?M?`-?K7?8O?c|?;3E?e1?G$??=?s $85@?90澌M鿠a?5оո?6;:'?"Qo?D͘Z5J p?9?:;?XU>|OE ?9Fr?8?L=o?!?Bdt?*u"?+f?F>R';?zH?@ܺ,f?;?3ݾ -o?Ԁ?,?0R??BwM@?@,?h?I7?J?3??U@'@?&??0?88 ?&c?c?G? G?DuP??dy?H?٤P@.1?駻?.W?8o^?A,??:? d?&?MF??17K??ݕn?U@+ݸ*?b?L>j9?9o@"?7$J?%f?.>T?EV? i"?ۑ?%?%?7x8?a\?o@!?4@%3N?*?̙@a:??t?0W?@P|?? -@^V?Z?5?S?.@|?? P??ə?2??0?h-?@K?֋?O? @%4? -?1|ᄏ?ڳ=?!nZ?I??\?/A>?¾|?2@k?Ҡ?@?༾[:?"?YU?(Z?'CѾ(\?)$=CQ;?-8֞?D3rbھM8kV=r?Sgվ]߇?Do,?S#s?KƾԾn?QcrMFK?.}?NQ qb2?CP;bAZ?_|???|?\T?5"?Bо:?fdU? -޾x[yo?HOz?Fc?6?嵾 ;?!U?W ?&x?Ӭ?&rx?, ?(?Fo5?>=m?ڡ?J爾 &?5o(Z~ AP?DSq?F|xm#оw?%?ji??>rWƾB >X>ٮ^0b???7?0 ?EB?Nྋ@?"@'Y?q4?冉?lw????,&.>;? ?s\?:)V#,?v:w(k?-?J)Z?˦v?"9+hB?K5?X?*P?`?T?B?9T@"?J?*ȴ?2˾?@(f?I?@@%@@CB?Q ? )?E?T?d?Jc?V@&?Ed?9@^?Ѕ5?%?A?u?@,?Dx?*V"??6?Os@?x ?J@)@"?b? -??6?e"? ?RI?P?C@c?|?ܨl?*?O??̡?2@j?T?σdn?,*F?@?ՈV^?9 -??.)N?!iN?F̾ȵ?N@/m?<?M?\?]x?/?T/]?7Y?/?e??ABQ"Y?K?<˾l ? -?ݙ#V.zde?0X?P?FB?@V8?\̾ ƾ.KM?:L_?ru?2ke?; VA?eM?$O?Bv^?'p?F?,P?|.?*?X-?>L?ȕ?,llS?=? a?#3?8?f?n?Ծ|]縨?7?J?9iӾ6?u?d?@#i@$c?N?5%3?޾+ ?҅?>?@ ?A@*)?+?-X?[N?M>x?C?w@/F?x@%iJ?+L?+V?4PF?#T?%#?Ao?)G??I@d?✡@j?أ?ق?"ze??!*?&?%u?#V@#ޙ@N@"??Dp1@%1?DB?$?{@) ?Õ6??.??3<@)??'U}?e@&8? ?-"N?@::@1i?Y@+@e[@l?zd?ۃ?ex@!@?3 ?-@+v?>V@$? f?$????;@'kk@"u??nI>RX8?$m?4¾b?B?N?3?'>0Z???f?N?O?q?)r ?W?!??`o?&ݖ?/f?,i@??7X@{Ⱦ~?I? ?,2@vMоi:>X\0?:Ψ?d?Dɾ7v=1?'4?@OͿ?Gؐ?AbkaI;?Ζ?/ ?O`E? )wƾm?=K`0d~ҾzlQ?C?N8U_ ?D?^,j?aF?/0?"?8R7?>Xo?MdaU@&?ˁ?u????'??/}>x3?ׅӾ^,?4쾨hp?!?얾`'?`? -?́?ۣJ?(uP]g?@܏?!?J?!??,?fP?N&?e?F @$n?4oJ?.۾?(?lZ? x??-n3?Le>j?Bd?`?Rr?I?*Z?z@e?q?]q?{?Z?e@?@@#@*@?&]?@#5X?%??֛?@&&?7?6?Aj@AFY@'@/@) p?3?F?'2?@+@&@.V?&@?%?t?p?{ͅ?t&??27?]鿧k.FB ?7v?H ھeZ?8n?!]Xh?$HH@z@)df?L<ƛ辇?0?:ƾ?v?i?0&@3BmB>#S?/?$?L -?Jtn?0o膾 j?*3?^p?.?#?8?4Ӿ_)z$?{@iЅ?:1?A?>_?;;?9?̉x?BJT?齾?AH?2 @@"˩@,?ɿ?4m7+?Ȅ?G@%j?@'?Y?;I\?y?H;?"d?@"w?7"?-Z?NI4ܺT@'??@%j쾐BC? $?.;?rU@%q=?9?(?xe?1d?@#ԧ?DJ?=>?>L?'A?< ?[?!פ(:?)M?%5?=쌿?9?Y??s-?( -S@(F?h?F/?#0jj?->~ol%?Ng?W?PI_?3P?8~}?6q?*>?N??.HhQ??:]?#?4p?6?T?sf?he@(-2?=ƚkA?]+z?׊|f??JX?4?5?DJW?~?-?D?*}N?Ս?FC~?Dl*?Y?Nt@)??(y?+M?$g?9:^?9p?R@##3 $?.T?/嗅>f?/cs@'y@*zF?%~0?# @Ms?WN?Z? C?@BضBjAF@!0 @*]?S??g@?-o?ٙ??1N??ΰ@@??8?r@%~x?O'?؄5@*b?-?؂?D@#HJ? (u@$r?*@&y? ? @o5?ܨ??(??6$?@'l?&>B?t@gݑ@\"?k??3O@)?E?D?M?U> ?GlI?CK?6m@,??=A?3?9$?6w?փ][^Z=Y!?>?ϩ?@.cA?DL¾s?(CO?G!?^ԾZ+?!9zҾȺ"#{ȾV: -?7Eh?FRF?ʾq7?4.?-?]A?Ƞ?<:PZ?5Ҿ?)m?1s?C,??Ch8߃wG@?Ny?R -?(?+þfl7?N?:?!i??:ܾC,??G$? -?+?`?-4.+?6@$?b(Wj?6t?жT?:k?5w?M?t}?eY?&??1]?xd?"?8?3o?֙?֏y?6?'v?)dV? -??9@/̬>"9| ?2?04;?#?, @i?Ba'?X?҇@n%h??"@%辵?3P?ߢK1?߽?VJ?΂?9?@$?iBBC/đANf???~?13@!?-j@)`?o?3@*3@U ?@B?ф%?@b ?9?AX@&@)4h? @`h@a?!D@'x?`@.?K?8?/?A՗?'?В:_T@)@"/2?5P`?1?Q? ?Fz -?!0?4'?FS?Qf7*I>F?H?Gb #T,@%H_?P3 t?JS; ?J?BM?0t࿩ V- -*o?~n)v<̾dS8?C^ ?KV?:?A1辪VnNt|1/ o?B+>.ȿVؾ }k?WG<u1ٶf?B?E?5?C|U?Nw$Z]??E?)??'?"҉?C?7?9E0m?>1?" ?NW?*<7侫o???).?2V?74Mؾh??GDQ?ML? ?3Jl?V@$Br?1gN?F@%9p?? Q?>?z3/?? -??ٟ?ݗ?@? -(?!?ƳW?>Y?Q@"?\?L?ع_?HPj??fu??/?#@0&B@NQ@gi?@*J?7@+h? -V?}?@ |?>?OT??%k@)S?E}J@( ?v??1 ??=D?I4]@%7@.!'@.@.~?#_?Z?f??{]@)hg@,?`@,?k{@ ?+`,@,VD?"e?-T?@l 7?*.?n???E?F?>?[z?3@F?"?6t?K`7?KX?צ?ўþ+?5?9?4s?-?T?3?.?+?#+?=s?J??ܳ? @*m?",? ?;?]B?,9?)?,em?6$?uCj~UlᾯD?RM?](E"L8sQ?=?;h?Je,?(ŸJܾ͸?Vˀ]1B)vJ?G;E` -?2s?9v?,)UG?X?en? t?=:?q - 'k2۾5?,q龅82w?1d9񧾞C?4Ⱦ?ߠ?>T?s?@# @(;?ϩ? ?h?G@(Y?f??x@&?s?ur?[r??Ո?L@$F@%j@l?i?ȼ?ҷm@)If?I?D/?ʶj?a@'?),?y?S??) -?=}F?֑??Dp?'r@.?5M?&r?@'ť?ۇ??] 1?˶P?{?5]-?j?ľ?̟?-??@ޅ?7?;?*?.q?-L?zᄊ?]~:?>JE-?2' !?O?? ?>?lT;M=BC뿙:1`F?Zwv?˴?-B}??s~?P"?0Rw?I -?2ql_B?'e?#?4[s?&,(S??X-DG5?D[!7?Ik?E亿]"?5EhH2? -6?.F?L?A@ɡV??Ǣ?Z?U?8G?0`?ҫ?FO?D\?@?P??˅?Ta?JH?+D?;~?6?OI$?X?]? ?LO??h?@1?Ԡ?;Lh?a8?K@$?T?~? ?Ru?;S?p*?M3?l@"@+{@lI@$?%)@&b?y?ז@)?̓`?b?܂??ӑ?0?E@'@,?ح?5V?F?@gz?@-?@)@b!?%fp@d?@?]?ع?|@!? H? . @+?@!Z?H?'?Ӛ?fG?X?>9@?+ϐΰ@0Y@P?)?#]?Lz@V? ?$?u@(~|?1dP?E??-?1?H~@-8?x?FV?!??ܣ?!BrVP?0?2J?6??*?60>xxl"?H[l????b?SN@ ?=B޾pq!т?0X?-?,?|.@޾;u? N>"ꉾDi!j?Qȿ8?I[y|)很8ϾEFIH׿ -0 ?*NT?I~-f@;s?Ӆgbk?7ap;?F ?t??J>n?ː@)?6?>?,?85w?F:?Ɉ ?Bd?$Z?@)?C?"?/?{??I@%N@ m? ?FHh>w]? |?]?H??u??6B?=?i?@e?ܦ>?"_a@.{e?@G%?޽?? ?ݷ@(:@,@#?@,!?%x?D@i@B@gE@'S@/$ ?p;@aU?@*@gU?A??!@&e??߀U?R:?cQ@(ק@)?B@m{N?<&?U?ֈM?B@'?NLg?@+@%@(?"f?-L?,@?y?*?p?2F?8?ן=??% ?,?ޗ?Фo? (?զ?O:T?zB?Fb?q?$H?Խ?f?(>1??d뾫?_]m? \Л?<"t?(𺿹짾)ۮ?n?9h?&߿?ԾQ? ᾍI &X??JF+5n?H ?.p4d&,?/@T\V϶?3,WyL?R;s1 Rm?%9Ӑ?C?/4b?I氾ܾ$Ҿ6?3[rח@Ծ.(N?BR?2K?n9Ӿ?l?X?1dOc,?s?|@!:6?3B? -/q?2?aQ?K<?;?e&?BR`|=>?*̆?5}Іb?O?# ?+?1ߐQy^?9g@#$C?)S*?[\v?Ƽa?݉@J??۫A?N=@f?H(?:? @ @*(@-V?s?Й@)zg?,@*%j?˙??lT?^?ë@o9?$?ۙ@!ю???D?ץt?B?39?W@'J?;>C@? ]?B?Î@c{@ku@(?y@[.}?ځ@li?<1?fY@'(,?մ ?&n@'e@,DP@+ss? ?5&6@*$??@ia??Zw?j@?@)M?A?}@)a?2n@ h? d?S'H?/l@)??c2Ґ>t?R??Z?M=]? ?7B۲?26?:? *q* sо>D kpO?/B?tf?@qA?=ȾP i/8(Dعx/T,Xؾa#?+`0Zpc$9?'kʿ?ޑ"h迟?)?B W?@r>xqs@$mn?&''n)`?. #?hJM?'2?$'??]?FJn?LdJ?D7?^*?(d@/?3X? ({?N?ǚ? \?\?+|?2F>^1?V?0.?ģ]V?_~S?;Ȑ?K? @?8??˞??$@3?P4?#Z?`?]?.@ 0?Lv???9?w?D?(`?R`?`@)z?ޘ?D@#l?9?L?q@S!6Wy???#"??$@!=gg?:@"q?ASD?BL?2@)a@*w@.@*f@fl?Ɩ-?٤?@$Eg@(?<$@Zy?!@&?5@797?FH?'?0d{@!?;h@%E? ?@+:>G? L7X?-s?<?PDi@!~@'7w??R?.c ?.Æ?,?L?@,4?-=?A?T?IH?&?s??'?;??t(kF3?ў??3??w?冾 ?B?<{_?3?}??=sbjv?+89zq?U0?F(ؾ.L6?;(<}?)5o?=Ծ?6?"W?OD?,MS)?ɀ?C?QF/Є?;t?EH4?$guzk?*Ⱦɾ3dc??*< 6&??Ҵ:?VpþEG?Ls?9+?*E0?/?"#0?U꾊{?צ?Ĉ?B?-?=YN?!rV?,]?A?8?Wl?%[?;_&?83M?/;Ҿ?1@%?/\?O$?(3?2*?Ę?.d?3?2?ڊ@(??F?jJ?FL?+?&A?ՠ_?]p?&:_p??-ÞCAR?Р -?X?4??ɘ?<??ʔX??Z?ٳ7j2??Ԭash?@boD?(,׾s?#ݎ|&?cmM?T[䢾 D8HqM?Q?RK?Jl^z?Fm>?~I?W?PՈ?GSp?:s?BM -BuϦ ?M7\d?݄?ץ?+? @'CZB -i?>?*a?D`?-.?8?ˀx?6>锝?^??Hn?3.$?I;@.V@??֘(?T?ye@nϝ?ԇ?X?K?M?>뀾D?g@d-@aM??H[1?m?iP? u?Y?ٰa@%@?@i@kY@&p@52?t-@m@!@kl?2@x@^@*@k@01R@' -?,@)ť?*??о@( @ ?b?4?-?(־=?E?ϋb@'?/A?Ɩ?8?ǐ?ݒ?+n@?鯐?ž@c?- ??0?+?^n?`??(Ŏ?Ŝ?ۭ0WRwa@&?r?N?2p?c?K?=N3??.? ?h?)Q??R\?F]?zb?sCR2 ! ?JoMPs/忰?ܽ]j?6 _$ؾp?Oy"K?,6%y?X?7;꾃?seԾ^Dkf>0&X|B?LQpva~??A2f?oqrhh࿡]پs?u J?p`?6;tj??:޾N|?:j@(G?3 ?2r@*kH>R?ĺ?}A??H4@(@'d5?d@5@$sm@!@$?ұ???C@$?&@i)?%!??]@gG@%sO?/@c(@t?1@@$1j@f{?0@h ?$@Л?@!@*CQ@)@.y@f@l?@ מ@-@#@bj?b@(b?Ь?@@eO?$?-:f@'J5@`o@2~?Э@?jw@$?./t?I?e?ˌn?lb@(?? ?-m??͞?#? -?@(;?R?Ȁ?1??.оL?%?Fh? -?El?j?-?7 >ʾw>Yb?5f? ?b?4YԼ@-g4? -ߢI?C] ?AhW?J?94˾Z⾯IuWN?QY?IMJ`+?2!о?KlH%\?B@9?&[V6־UjiM[v!?L ߾K?c?/mھ˔{ʼn]?ȻX{쾠?Rp ??t?Qv*}?(Y6?[?0?5}?" U?tq@,Sr?Q?(?6?Q>?d?I/?tM@H?!Mh??=!?׹??%2_?@''?ZB m~?jt?,Bw{*???I0~?/v?MO?>p -?d?#0?l?v?x?0?؎@(?.@&? -?7@Y@k:?ʵ?%f?D[@m7'?@ @`5s@0?D~@(S@@,@^@%@h.@=>?3=@e`@cw%@qIn@%{@ޣ@$??U.@n@i@g@28@*<@E@d@l@XV?؂@dw@6@ZL@^,;@@Y ?@:2@`?&J@$hT@H/@8@kU@'G@f@!9?7)??|L?Ы@&3?&?ѱ?(?ݠ?R?=@?.*?2?4p?O? 辕0Z??@(Q?P@?^@CE?/?C?3?*?@8|?Ͻ?׼}?5@)d+?6 -??5?\4?$71?;􆾮?O?D:(l#P|0u?$چJX]?͏þؾ꾷?,d?:?;ɬ?4县!Y> >ʾ?.ྯ?!Sk(ܾY?<˼?#VÿW鱿󾟛_Е6Xs?>8>xg_?-?3:?IE?ò?;D?,? F?XL?9?3?76|?D??>J$?Y??8@V?9?P?N5?.W?(r?k8?8{?F?V?v?ϐ?ե=Ì@-G??عp??=.?+?i?Dn?y?۱P??k@#@z@&M?@_;??'T?P:@@"e?=?E38?,>@"G@ 5?ʜ?Ι?lj@,>@,@a@-@dl@e@a@08@%?*y@bl@cL?Ț@hП@#S@@$@l@l@j -@U@eR@߬@d1@_t@$@_w@gy@!D<@d@+3@du?:@#-@@@+D@ @',\?`?-]@"d@i@_?}@#.?܄?՝?JH??e?w?7ȾO-%L?ߎQ@/ ?t?9E?ު?s?ѡ뾷??d?%?B -?? -?Ӕ??K7?S)?>*`?By>&??K?+!?_?Pt?(O4?1 lk,Y[%#ᾨ"\P%U4f?YaT ?2꿦5?/?)7ͻ=?*mxUJ9S;Z #[1k!Gq*̿:*??ɹx??GZ?J?/? ?;VJ?0,2?6t?0AO\As? ?.[?ԃ?/LA?Ըf?9wܾ?8>7?&+?eϾcY?H?Թ>bD?NF?*9?r?Z/cR?'?)[?׷?M?LV?_T?GQ?GQ? ?}7?2)?ԉ#?"?!}&?{@_?8Q? ?דh?/f?N?1@-"@(̫@&"@h?@$?1@+:@"@(2?3O@&l?NT@'&@@d?L@Zs@[@@B@!f@U-?K@)^?O?h"@a+@m?@@b9@_@h@&@jL@)@=@b*@A @-^?@W@Y@@б@j?"x@-h@lo?et>m@+@d4%?4?O?t??I@@'?6{?ߠ?%?ɿ~@&^?#?#?@?)?;ԃ?հ?Q@.e?5,?f?ٿ/?@ߥ?+;̣?"1?%a???%D%b?̈?\>??(?"9ώ>*?@ =??%6վ78jBZ7 ->b|?@9qa>t?@9jr̿_?@EIA?#Kw?3F?"ԒEA?NY?JuLS3?@K?/3?%A?M?(?!?$LƾwB?T|?U? ?-?ǯq*?ǾGp?d8?9'?>7??/?,A?? пG??_ ?& ?W&t(???Aǔ?/=?T]?2?!h.?>;?F?Z?ݰn@'?ժ?6?1???`?s?F];@&Px?-/_>k? '5??J?@ K?5@O\@z}@'?b@Z??Dr@e!@f^@h@J%@j#@d@e@-A@e{w@j@Q?̬-@a@g@\|@3^B_@X@N@q@7@'@p@$}s@f6@@@!@n@@g<@]ދ@O@p@<^@i@d+@p!@ w@a$?N@&?*+?ڟ@'?@*"@31@-<?e?O???#e=@+x? [?CL?z?W?٢V?'`?_?ѕ?0? -⾻!@ ???;Y? _?0dR?5?O@(+@??|?p8Z?D¾m?b?66?^ ?%馾^q=Zg@. 0?f9ҿIǿK?3dz8EX?C?5j'?!ĿҿL?2J?C8?㺀??H?Mv?AQ?m?I\?L?Ϩ?F@.ز?B?>?;$?1?2$?CA?~?ڏ@l@?"@?%k?*w?$N?3M?Gk?2D>| ?5D?C@/?ľ̍V?;?( ?#??6s??@ͿW?@ ?F?8n?q?"þР?@?V?7? -Sl_𾖍޾r?S 3O6|?f0w?|?0@?Se׾I˪4B?:3ވ"d?*I?&??B"4#?NР?TF@?H.?A8?.?6{`?(:?vJ??̓ Y ?DϾ?:&J^:?1[?0?C$?9?@4R?CZC?2?a?=?k?7?0?"?W?[3?J?Iپ?_4d?4B?Y?~>w?>iD@mBAiѾ?M0?}~?ʩ2?n?|?3]?8k?&?N@*p??#?j?(@]^?rm?@&??\@"?:ӄ???@f?!q?z@fO]@lQ@iA @?خ>?u@+?(@eR@e -?ۚ@`@@(YN@]D@[Y@>r@j@ŽA~Bv Ax@/s?5k^=?P?оoxsh{Aѽ#?D:&ˬ?]?.BN?D˾ž(#^?>yj2?2"?$%O?&Q.AF}?L>꾃濶?⿬r?S?$M?o|r?x?4`־RQ?O^I!gm ?O?Tv?;?3%??9iđb?.62/S?ٮȾe??1ξ?J#?D,?fԾک?9?3g?a?M?+,r??2j@?0 *@$YBCf ?V?^?;?L??d&@fGv?tJ?ْ?R v??ީ`?i?bE?,?%?ѭ@e"@f?c?ը@%@%@1e?@$@.y?]@%OA@k4@#]?R -@T@cx@(@$I@hR@r~@ov@@ѻB@4@`@e@+@ @@@H@!/@@xj@@@F@ahA'@_HAkAk@Ԡ/@Ӷ@쪜Aa@@8@@k@!@i1 @hh@#Ig?œl?@۾?6,?g ?m?A待Ĩ`Xt†?a?iZB?8b@?!=k?CJ7?Dr?9?-vcq6۾19?*wA"?- ?*P]f9??+??VL7EdΟA?7qޥ?“~_Ǿv?(z"??/?0?՜O?B?JF? >}r?+^?RwF?;?F@'??ՙ%?؂3?W@!@@?%%@t}?(@c1@@&R~@MLAe@:@]@&"@@cq@L?@( @_@w@/@@kD@~@/@*@r@_E@m @ҩu@@+ AA' AA%A5AhAWAA&=AѳA'9[@@P~A&D@@@@g@*@mv@ .@v?S?n?i'?&@" ,@K?P?R?)V?>L?->B?/?ݥ?]??-(??'Gy?3?c?'z>-˾`?!{~?=9?!O?3?S[v?M)֗??FP?n?;?[?DUb>?,?Q+'Yx??VN?[Y?.kU<YCa`?5pT?BzggpuyaRR}8(/ܾ*GپR? u?1ϿI߿FZ?;L>8KXV?8O?+'n?"?!? ˄?(E?T7?jjE~?3*?17?%?|J@, ʾ9?Q?Bmcy|?6z?t?DH?$t?#Y?#h@%;??/¢??(?||?5#"??ߒC?Gվ;!> -?l?a?ڭ@!?3]@?>A??@ W?/a@]?3@)-@#@;@)4s??5?a@hI`@@aD@ @cj@r?٦g@_o@@Qe@mB@G@"AxA~@, @q@d@^@@@_RAHAA&*A57AHRSAӨAVAxAqAaA6:@o*@ٴ@p.@,@np@@)@ah@8@h>9@iP@f1,@# -@_@cj?d@I^?@'ٻ?<Ʃ??־/\?7s?]?K?9 w>?vg? ?F#?Ix킾h?2B??榾b?5俒UJ@?Qx?Ͽh? Bp?)C J3PO?A?MV?VQ?eh3$a?B?VUǾͨ?E/ )U0?E*}WE?+.̾P?0{FNݾ_$?3lk0?"ܾ)?8 zSj?>Vᔾ$?D`?/>?\*?O~*>5V?܋?(?0?2v?h@)>?)7b$?J:?=پӒ>?,?QA7?8?x?SB?7μ?.4?%?$\@%#?NX??ST?Q@hH?D(+? N?Bv?л^??Y6@a&?@gF@/(G?A@iD?ϻ[@h@d3@"H@ju?׾@a@D@ -A@@q@@#@B@6N@h@^@݆AR@cAsAq*ACA@@[A*AAYAZpcA`+A:AZAAAA]A9dA&\d@^@@}@!@Z0@@jp@@o@@/@)F-?+4 ?Е@eb?ę?&'?\@-?؞@"D4?ٛ?M?#"?P?"`[l`?!?'q_?zz?. ?1?a}?b?6F??07+KL?h?/?>H徴ݲ?f?@r@W?J7?,;?Z?"?(?A`?d?Һ? MTn -]4h1?#0?M̿ua&?(lP?@z}?L8\FQ ?7X?MuZ?B?!~$g,!|¾L?1[2?`ǴԿo?oD྇QX?@Fc>տvQ_\?*?i0?k?8ᅳp4?`UL?3e?+?Xa?(z2??C -?(u??Zǚ?Ͼ?\?ش%?5p??/?ͯ{с?ı?Bz>?.?@'j??X?K@%/@( ?~V?`????-9?׭>ZH?/? ??$?*K?k @)8@&B?P@{@]@*4@c ?t?~@ri@Y?@!GO@d1@@@ "@H @K@v2@+@fv@fZ@m[@@_AA}@@LAAARA NA(XA\]AYAjAA&lAYUAjtAZ@A>A%A4ALU@@@ @@!_@@}@/A@e@1@ip@*@'pX@&o?՝?چ?M?ӯ~?CN@&.?8(@{?#g?Ͱ!QA?\?Db@">q ?2X?Ѣ?k??`4??B?#D?@?LC?L?6X?? ? ?ƍ?"?*2??t?(\e?2:S?#V?:KN?>샢?F9{@8~Of,Jޯ?S,.?_zوtL( ɾZSx0?9Z?j??*&?ѾY?.u?ac?=>V`? 7ھd8o?/??';?=Aj??E<6g?P?"?*ޯa?*.<̾~F?u?c꿞1?aַL@'|?']Z M?>_ת???p?08x?Iz#??ױh?@?2t?@0h??v@+jR? X?ή;@??P?*?&o?ʅ@+k)?;;?Ĥ>-@@@B?ב@0K?ak@,x?ǒp@]@@@G:@@DAv@ӿ@z@q@_@v@AУA&w @\X@@A gAʼA}2AY݁A{AilA ALAnAFAGSA\Am80AAX@@̛@@@\@n s@*@dTk@e%@Xn@eii@"Y@@-:@)_@)[@0@D?Έ@#=?Bv?=[? Á?T?Ġ?)_{(?;z?О ?Ӿm\?J6?ж%?A>s?4*??J&@!?U_? -?7@?C?,4@j?*?֭AL@*u2?8w?*U.R4?T?&̾M~?&f?:[Y)?ֲcj?!p-zؾZ?9?+!⿧X?EYJ?"tz?,ʲr?Ά9?0=}?dh? v?=]@?U?-(?[?y@,}?! ?Ƈk?6??? -=?Vp~?U?E8ƴ?4?g>?'@f,?5|?sb?ԟ?j@1y ?NT@`0 ?R@)@"k?0'?Q?$[@`W@@0^?@W@A@@g@\p@'AA&'A @[@?@ҏ@%@A$VA6AZA8AM_AZAGAJAAyߴA AmAWAjmA4d6AhAAVAS@q@@@@@ @or@f@@g@}UK@5+@.@]m??@b?c?ه@eJ?ld?@&@%?٘i%V@X?@&#?9D.0Nz?* K?ѾP?%ZN?8侢??ຈ?2?֑?-Ow?V4,?Ҹ?v?*\??B?;|?T??_ԾG? -JX?U\?7?F???á?̠k@*'@h??ӂ@(6w@f@d@]@>@3:@z@`"@@М@A5AEAAYArA6AA8"AwrAZAWAuAI6ADA A2AiA^Aه5Aa -A¸A/mAk=AAI2AUA@y@K@@f(@ @>@1&@o@`@)Ln@@}z@c_@(Q@`,?x?=7? ?K@A?ph?(V?m?J?Dp+??'?  -? ߾?ۓ?4:?=8?$?٘?"?C?!)?(̾rgJy?կ%? ?C2? ?>ɭ?f?|@)ʹ?$>>s+@"H?-\?$?wy?=v|.?c ?f꾔RXj;V)?Hs6T?)z\fS?X=N?ٲݾ55?5L? -gy[+?B2?J=?MO?29*?*?\ .ư?+?,?@{?Hjk(T?G0B?F?q>N¿ž?i[-??U![M?9?N ?M5O?R_v?6?oP? ?.*?(n?Z3>O?Ɲ??%?U?E}??݉@^CuY?v???Rf@-?WE>ھl?a2??̓\??P?R@+y@';?d??@$k?ʾS?$?Ή?{V?9?ʵ@'d@*ܰ?OZ@%@)@#|@G@g@og@~@@@/@@Ս@A'rAG$ANAAVAGIAjAkwAFJ\AYs/AAAAxeB5B>/BN B9BA@ASPAGB )AAA5@0 @@@ -@@cb @]1@l y@)eO@+?e@I?@jo?11?ӵ@*@-Zgq?o?@?y? )?@)ڭ?`?;0?[?źp??;nX?/a>5??n?G?Чu? .??/ -?hy?.h4c?WG??'I9~ᄎR?/(?*$?9?FP?9#?߅]?'? Lfr?Ltuр>7`?$;m#{ݾ^S?Vx?!ӾXlA:K$A>4?+־#pξj???.Dı?4?5?[wj?=4|? -\??0>/2پ$4hey?U -???x5?`?fo?)?|o ?(N?Y?X@BΆRA -g@{@,WȾ?%ը?JY?#9?:??`?ެ`?̰?5?b?s@#3?$v?K?n?.{?~?@1N$.@._B?ٴ@,@?򾺓q?@g@f@,m?N@,J?҆?=)?@d ?(@7(@cc@`@D@gz7@̛X@@@qA(TAG4AB -iBetACAG'SAjAA^AAʈBA̒ABYB1aBYءB% -AyB|BBxB1^GB;AA5A@ҵR@k@j@{@͍t@.|@c2@-@"M@mgm?ׇ9@/?%@i_@?9@i+h?$?p???./?H?9?0f?*?ٹ??+?\?"|? ζ?T?V?4?.. @,H ?$??B?$?";?Ly?Ԃ3/*? 6r?¶?-?@+@*?H?[,H?ΖJ̿:ԾWSƿ,Pv?P V>X?=]ؾ?*i(@ - -?8f?Ѿ:?=[;?⾫?)p? FC.?mC^?G0>R?0pEg?6q?6?'?=-?(;M ?@P.kbӾAK???27c=?$*?B?>?/#??RB13BtBpB,Ax"@-?Bmf?Y? =@+-? ?*?@?z?#O?)?>??+@)?\?,x@af@Y@#ǎ@$@&@ds@#?̛A@aǿ@Nid@@k@)@:@AVA@ЁEAA3JA|vAAA}AjAwuAAhBܟAѧBBMB7cB,B"RB)9B:B B -YfBB>BnBFBeA@A8&@@B@@@vK@@&?.a@h?@-D?4@,Ų?@pk@)?۾@d4?Ю8@,b?/I???8?9%p?ؖ^?մv_?F7?[?C ?D.Ծ'@/?n=?v>C??? '5(D?4?i.x>ھg?j?#@?BP`]ۿ ?.44/?AS>rF4Rx}?X?=(@A?@˾#ƾx l銾[?6?0̾Av?5.?B?e#F??D;?&5p?ӡ ?:3?>6?Rl?G=?3 qe??W??Q?*@mA6ƀBiAf@\F+[?]x??VS?ȧ?sd;߾@*q@&?p?m?Ba?۰\@)ע@)Z? \??ּ?ӱ?ru?9&@1?α@jW?ʏ|?@?`?@n&d?؟?tP?yj@b/@ -@m@>7@t@%@@@@M@@A&AG AkAwB2 -B3ByBBUBNB]B&;B!ƙ?.2`d??,??,+?X)\?`L?B{91?XxgD>?4 hM7t?թ?J%;?,$ؾ(alHmF䮾 ?AptT@2)?6?4^4\?,O!?,@2j?Ϛ>;T?).?'Yn?ʾ澢|?^?^A?:8?f?@k?JǾ?IV<|c?CƯ??8$?=?ݲ?<4[??2|?d@*?֔?^4???¼?g3?CP?v@0?5o?Ĝ?(}?y?\@ =@#?? -?0?v?S9?l>@(6@'?g??K?@g?ѣ?o?y @*#$?@+4?">@y@^,@$(@@b!@dU@@,@@όx@=@R @MA7}5A&:A7`AW*@AyBBRSB)Bf'BMBpBBBưBBBBiQBRB|Bq}BMBtA IAxAF[@D@}}@@fC@uM@l?@co(@h?f@+@)*U?ˈ?1@Y?@d@*c??ЕR@ }@<@?D?W^?X?B,?<@*j??/.?>4?~_?,=?:@,9??.@/?1?OF?3?̪?7 ??@?ɑVB -+z?X?%?C*?ʊ8?ÖQ?&EM<?_Z:/sv ?i}6g.??/v꾖C^e迮J?aB־?P|?N :5,`''І x>^I>?G.c?v??W ?_)??I^?.?){?gp!?6?;?.H?XMľ??-??Y?҉?ֆ?z\?[оA?4f?Ͽ5 @P+?"ھZ ?:sq??2?\?J?E?#쾔;?%?u@,a?Я+s? E\?E?K^?jg?T?T!ݑ@&3?ܨN؊?wn?x? ڿpq?*,:J˰ - K?O??9s?8?A*8_lZ?(T6<>? - ?+?N? Vn?#QdQ?-R?ږ?.I?ڏ.R+F?3ɾ:t?1nľ? -?Ԯ?H?@?&о!ǁn?0?f@34h?;u??v?3?FV?/??.?F?K/.?@?"?Wsx?)1J>?j+y0? ?'E?8(C@,??=3?0?#?Ń?@/?%?4*^?#?H?Ɍ?F?q@@&۩@%??E@)@(X@$@:$?5@\S}@k N@/mB4@{[@(@@S@7@Vw@Ҷ@(\A% A7lA%AX==AF~PA{/wA`iA]BBBC6CD5{8CC=C.ȤBB_B%B>ABAA@:A{AZA6Ի@@+@ t@(@@^x@\;,@O@@c@!@eG@j׻@aRM?V(@.!g@dע@.3l?R@'ҵ?2L@+p?ۅ?&?PI?P ?Йr?㾌?,"?ܭ3?;?F걾c?ƴ?,U@*v?a?Ԩ??',??)⾲Ҿ?*?-&?? >i>?>I?:(޾˟?iq? g`?+>3@z"?)TM/?JV2,Z/dWJF^(???>Ҡv3'?1?9־A?,<?O<^hy?8?9D?(wf.8_gھxVh?=T?'i?I,C?*1?:U?6˚྄.&?/}???ͽ?{e?Q`ľƻ?7?J??I?jt0J>fE?O'ģ?*?q@/?ں??MȾ`?v?#?8?>@,A0?C?H@' y?䁄?5?3m -?pP??ɟ#?A?j@ !??j?@j;???V@?̞@i@d?;@Ae@ɲ@t@S_@$@MjA @˻@ĦA%\AG#AHLQA6AZ -?AA.A2BuBCclD 4EiďEiƚDCLC_ClWB\BavBn B:BA+AQAk!AyaA-@%@+H@@<@r@as`@f@P5@lQ@j @@0b@,@?ҦE@&@+:h@%?@լ@jI@(n?h(@lf?Ec?*Ł?5N8?=?.&??jF@(?ǥ?5P2S?+j#Vy?A?v?Tȧ>|㿪#Fy?+Hɏ@h'eL?6k- ?%͔?l@?; ,?1zhz+C?dS?'u)??7dP?'6xr5I?*(ʿ(G,?2?00k ?5g?TG?5ž[G?GÉ?Ar?!?YDz?;?=? 2?%>S `?۳Z?3?.? ?Z?Զ?7?'"硾K?2 ?ZԾesX?`?֨@+o?'I??$?1?BP@0@iQ?,?`?I@Z@(.>@&@%@#K@g02@e@gx@ +@]@`'@=<@@@/@m@A ~AXk??ע???lI -? ?">ߋc@?4&AK辷%XI?A͂R?)\1`%@.z?7H>?Ae?~yfnq?>&Y?4?55?N?@'?$?!p?1+,?#ћ? ??:?_???:e?4? ?)yC+6?6r?(?&?"a?x?Q`j\G?/p? ?<|b?.Y?p쾳%?+s?5gNב6?"@%?1M??ߖ?CB;??#? @( -??h@ @"e@&?@#@"4,@$@n@&@#8@(c@#@]_@@c@y^@&As@@(@A)AiAz DAvA|WAlARDA BFQBBS}BwfCV\D۞EiǜEi5D(zCnC BžBKB-B)B -w;BZeARAOJAAWAr@)@@(/@2@b@h@z@j/@Me@p@)x@g8?´:?ĥ?j}@^^?@-g@$M/?5Z@@ S?ƶ?dX@h @!?3@-j?ͯ]??;4U?ʬ2?=v?̦??.?Ǥ1?ٵ?S5?g?:?|?Cm?-?(٬?K?Z?<?@?{?/ [?ɝ???$d?&Ekr> x> '>&aaB=(>|?{?>bM>8>L=Z<و>)w?'AmA0?EH2?Z>Rfh> ?_?"K>3l>,v<{PFH7L=F=Arx\>)=M>+w=J=Z=s?#6=>=bx"Rr=d@?:>CE?C>,I\?[>_#{=;V`_>9ֿvnr?i>?]C=hl>ѿZohZ=Z>S=f}?pt?䐽Μ=DZXpվhv4"뛿ChH=Ǭf??svO/!W">;HB>"n5=Wl?Ħk=r?a>m 2S~;h>Be? =y?J R>J?Rj?`}6V =!?D?{>>}=7X鮺=i(>}]P=}=`>4fD=jj&ä<_?yA>>r?>U@/=}T>9ZY?ۿ _=\>Iiv?iPC)'<ո=l?u>qK/>"UA?otB=*=􆾜>?g>4jg~??.T;>w6=>4h?v>'dD+_JZ>4|==9Dc?=޿N>g_e;@=?# ?E;>.Ls,?B@<=<_hX7dzF?f>m}?SSjA>g>ij>)_e>7Qgil>]5a?'sN@K>>#춿]T>i)ؿLk?E>wV=t_?&5=Bx=_0m ->-9?At?j> -?^[?ݓ<?>o_?\\f>8Ͽj ?/8? 9#="<=HaT=È?|kk6?~LP`1=x?XNV=5|>-8QUtH=nt=C;Ǡ=G?t1?i@L|>n?un?e=??=&>4=.?gxv=м;R=;=t &=T?X}?L>2y=U=BHL=;?*=ܼ;t:a`Wx? 0>1cD>N>8 -{?'>2d=f`=@R>.=.N⠿`8= 8.z|W@=d=v2.?ff>)H4m?<H ۀ;<5@?2=zgܿgRaY @`s?M6:w:?.|+((<"܀sD[t<֓X^?褿u ܿX7>#N?^]K=Gs?\?s&p)>mVGe^^EA>P(>yR=VA???־kF䬱<ЃHC綹??{aPo?p>GÆDULY+>>?«=H= -=?*BoVS4> l=u>+8>8A\:=.Y>l?9 ?=ȼ=xPוhmu>HJ>5ή?>"b8> -u=zh=ˁ?hſYs=G=Kp=f?v>) ?Ss=Z?aZH?{Sl?\?zrK_V -lR?Gf$࿎xh?Jƾh< =&?zi=aK4=RļE@Pk.tW>gr4>ݿ[N=J -U]zP?r=^=?VŤ??^8=k kr+=bNeC>݇`=!t=s] -dc*@#g՞;;@`ҿeD?p>ý?r=Qtx?|۵@g@ 迂 >#J>=/^ d>s< ?Z >p<;:쿋3v>uu->> kN>=T+Τr`P?]k?X=+T> - -?u*C'Hyؾ ࿌(~ -f?3v -o.ub(==fn 何3$>z]>L e>C$1g= >wbd>R>n,?>#>V&;>&?x>F `hdTq)Msy?qA*=Ȟ>>h>Gv ?d{$3>E2?tF>+J_F>s?k>(Q7=B>@ѿx:>Z-?G~4?%i=Z>U=' >/=r>V>S^=a`=r<Z???Y>>ȿih=%2>=W=[e<>z?=:>IY Bˍ=]d?lQ>6@?v>>j?=vSpf%o.?t*oT=ƙ> ^v=yƼ+8 l> 1=? T= ž0EZ^?r??+J@׿X`U;@J?=>0c?I76>>P0=ֺ==BlM=$E#;ǩ`>=TDN>*U>@t?/X%(j eS?xοOc=F X>B/?;{=N>x?r{ S=V?rĿ+`"^a,?W=4V4? Cl$*>;X4=콦? v=?az^a -iͷ|Nш=Ws>=͚>t+>ϿJX=qbpVաiJn;;4>wָW4={w2>-=?>$?Wٮ=?wrt8>Q?⽟0,|i>S?j=!jZu=>]l[_>bYB>4Tu춿i&f?Ŀp}g^*>0'~>am>6 w=>-p?Y?|mpM?%=`?-ڿ_?>*a=x=ݝrV]=e0?V?E>pU>r;P'>|>XRĿneO=J=*͐MۿZoO>#>߸?hKT =#G&Jz?*>^8>H=ȶd罿^ZJ?=Qx=t>B7Z?_=>R?²>}˿=V=jg0=0?<}?B?㜿>>V Yd? U>Zrs=z?x> 7X=d<J g=:`?j=/>t_x%>o1srM$BV>cZڼ`=I=x@6mAy^wu= -POi?X=⢎=Xl:>=>$v~> ?D=’_=5tP=RH??=Jm4>$v@dJP]G= UVrۨ#?}s"i?{Fd?7пu*[H¿aQ,"Oߦt ;;C=ym3j>=JZ>{=h>)>c㿀[a>Qh=>>?>VߴMv|>2?W8=jn?οMB=bYTlH=2,~Ru]ӹ]> -gl=?@DA̿_FV=JY_i?QGR>?ſKgz=ſ> U^>@фRF?=}yF?>=a;t@=<>=+vo~=.T?s<ǀ҈kw^>5I @ʹ>CC?F$0>\thKT>1@>*RdĻ# <=PԼG >dĿZ|=ؿms?R|/~>K5S?p??7=MId=?z>=$x\S?gL=> =BlU?b_?,=οcM>C\} v;?H>/]`b=뫨rb=dqPuf+,}?Egz=7b f$>ِ>DY6ؿt=2m=~=?+?Cg;`?;~?ܿzԾ?uqk<>T{x4v>=o-Y>օ?쐌>8ca>1>=6A>wj>G}=f<?^y@$?$?_1>yl>>c< ޻?1\>]'l=P0=S?r?X@-?]T=/>,Y>>Tvcq=΄>^6>u>`j?oV?.?n?}#x򂿄>Ev[=)rL> ql1>JCW>op=<0j=?8嫿w4~?\-R=֜?>>½mBb?=/ݺ?}=(?U =@L>-+=apcxn?n?:?t^.?^=9l=vf35?y?m ->?z "=a[=hN|>)=$=4h *p>yUF=ױF,x=9ɼ?|{@?4-,{X7`=T?.0 0>H2?U=?`>;?s>Y83J⽆Ud<<)-UJo??b>8qN}8j5T\=ꤿS=F?Sh<0[<_9a?ݰ/(F?liQ?>xGd? @@B¿q6=DUݍ=Hc>Y>Depr>< = |=x>8>CI>>n?> -?>\>wxP>*8=(iA6W=>>0Ư?bп=\\x>" >#=03c[=0%> `=a>2vN.ꞡ8)M8@>!$K>Z=P>l<>;??p,FL>s>.=>L=>Da\^b=LAf>,s%AԿh=?&?jdZ?O?%SJ<6P=gVV4=>>ʰ=g!u^=sP>F -=Y(>4Md>?>hl?|<1?^>=6> g; ->>WC* ?n{z=пʿgw> V?Va[>`Hs>'P=8?ο^Aed3=Dbm<@=L ] -= ;m=Z̜rWa/gT?z)=/7=@=,>[i>foF>:>j?7~>n< =^?[)@=lt?US)=@>KߚR;Y}s=G v=n>UÓ=F?eM,?j܌>L>t@&<( }=1l=0>O?(4=~ȸ@[n?|w =/PXB; ?gU>SgHmX?UW -Xl=f, пG[=`rj2<P?u>h_a>P0>Ę?4>C.?>>}.yOh>EE=E?p\D>4?=nY=+>*?g=>J=<п]=շIV>D`>>U?i|S>Nm??>|u<20P?=?%<>zC>>=>I_>euWZe==,hk>Vbyb=?؅?K?.?ВĿws=>Y=K>C>n!?+q.>1ZY>J >Q>8ø~CH?<>&m?`=r>C>q=\ܿi<Ĉ@>@-@==޾>8[ƚ=seXz=}Z@B?ff]?y hxͿS2=<~>p -p@UDP>}^L>_?7H=|}== 8 T=T86T>T <=@V?;_=$=Jڽp=n2>(=񕨿a?)==}^?tHfh=tK=?(e<˿@i>?>@N?c?PTA?=b>w=?h=P>~q> <}0U [&j==p%>U>|>U̾ZD|<' >=r= =C?>]:t=ி׿z}%?t ->c4X?n??>JL{oſQdP>CH뿪0̿>&:jN?"Rw 1?w?kY=?Qy= k>>{lпZW?~TP1?5o>.'oH?=z[ V@> Z->X??g)?DWHg?O2>@&>k=!==Ax> -T =4=+(?z>>>f jUJ>6=x=?f->3[,nlRfPҊP>II=D?Gcx~>-ҰQO xh>=I*?n5?l>L?\ƿ k?`as> -u価?^.> ey?iG;?o!>(=kؼ>ǎ>NB??BeY]Sa*:h->I&WkR==Yp=?7?c?&D>'=4R<>3?sl>=7Je?(X? :=? Miʠ?i?[V`>ubY0oj=?t>Yv=T$H՟ 0=p=>{*<8? -]?B>4IL>=ϵ0dժ?<8({>L>8lc;pn=ךuvq"t>7Ix$t=קQ?>Q?w-hoX>CZ?˾a=>|M? bWHLxH/cqj"f]=ft=q>?=P? S=??|Ӽ?/?Ő=&?Xiн4ٽi P>^5r{5??>7>C?bK=9ؼ >i!<$X =X"w=ʿn?p;7? -G4=m?>+v?a=R?Vx -?Y[G?=>"Hοa}~>lLsKU=*?rf= CRm==+ =0=x?p=?L=z=">:@}q\<ؤ?cpp7/="U<=-}ƣzbϼ>>'z|>_K|?X>PaafGyE=w>A9=hR{>$LA==d࿃p>ւP?X=S>Uhi>Eȼæ=qYbw>|3J#>l:k>Xahb=̼?>(e=v(pH )-g>/DTb zr>)>X\?=Z\>!^>\C=%=ot=r>=.=gu+=\;~~hMa=֫r?C?k&i= ?U>P=[?k\>&kΪ>O=M[ܽ@ ]tg=0>0$p]%@HA?p=\ш>^> Ծ{Nο^F>)?Q>ͪ>7Y>'(? ><> ?72?^<<>|>9XO=>][x@?w ?!?j|? -=[\vkU]d=wn=?\Pj= -AQ$T/h=A=[?^LL>7ʸ?C?=&)> <P= -6Ŀx9=߿> -,Ŀw>+`=*8 ?մxJs?? >Rѿ? =Z;6>H>@pVܿ~>F=ӝ<ː>S<|0~ =%H?ke1==7pz7̻ wv}> =6PerY'=eϼ?Xp =b~=<>3q=* hN#Q;рmO?P"?n7<@?t5+h~!?|/.,?b] ->D=_J>5(>9>,5R=w=?z{??;<#<><-~?=>mq>Yn==?5/lȿeߨZ~>'D> }=o il,d0>Z=e=6q?c?lY>9.3?{7=;o{ܾFY@=jB<2A!d>R=aZ<B$V?=Z6he@ k?O=X >Pl=gʄ= >X=O>=>!ǿpn<`lQV0?=Ģ=;>$C)B b@f˿]CFwD>p?xNt>1H?d@?UF TfPM=zc>A/ =X?}_ph?l<@>K=9n?T2(=o\<0?q=l^j?uo?6!2Y?w9T:=ޘ=`?~1?'=>i~d?[R>k> .,?>!`i^='c>j*=<0?t?hߔ=;ɢ>)?`Icx=>A?{ -=' ?X}!<0;Q怽>R\=jh=q=B;?۽_>2pF #?L/[>]E=`=л:= =Hؾ???S=9>hӼ=c">ka>H=:~>4>=Ў>9 ?HAq(>HԋY^?z?5>+>h>PB -=?=Ә?|qM_D> -g>R&=Hca]>$axQX?S==p?%YZE&=O=`>F>31?'Og"hR>i>B?!@X? 9J> -=`>Qz_<0;'&B/A ?uZO=p> - dȿȼl=N?}=>>=x>K]EW;@=7,fҞ=,0=Ҿ>}OI]k8>?*ӟs.&k@=޿A˪Bc?I==^b<(b]ـ? -">0A>Kn=Z>H>?<[:>U:$Jl?>B?zm???\k?y%wfOG3gl==)Z o>e~0Gk=ZV=^<~t=?C=6=Rt-ӄ?eh><ۿ"8?=/M`>&=(fM =ώ=ᒿg=O0&l?]?9p=mP= n>h<"w= X=^?zuj=bb?ʿy=ZH;d3vJ?C=Phؿci=L=͇N>/x1ì>p6?r> &?6QC&K@Uc`컫?f>>r ?^1{G?7ſXnD??~?tXxN>3鐿nS=-=E?{??T?}`><،>%(?P>l_>ye?F>%>a '=ϰ@w~=L?}},n#^e?0>>)>%[>b1>s,?}:>j>j~kt=8=ڥ2:ނ>R=K=irT>zT<='`P??10_@~#ua{=:?=>\\d>"r}⼉O{=ڣpp۷`|8GV?n?v8`=u(>yz=>Bl>[?Q==w)\[Ch*̿EBP>* l -2=.%> ѿH]@?mZ=rj?\o.?~C6?c!Ur?u2G=G$>{?7=>?|X=z>Ogf? >[=w>=M*tU?X>8??hnRJ=]~==X?w?z"?=\d^xdRlJ=^ xӺ>>=e=ZX>=XpN&?=+?=T=D+Tr=ÏN@!daf=h0?ά?h>~Y=l+n?\qT@[d=E=@! `>X>?xtW>*=޿r=j> oPB\c>T?rS?Gw=G=}DgP=@?pF>>2D\N >Kpn?Y>no><<= $>l?paM>3#ڛ;&>%?^=s8rf=f;mMS&kW=&hH=P ->?wsa=愾:09? -;俕?U=ǎ}N>/K =q=@?sufc忛 ᥕTl?M=j=WywOp>t"t>=Ľ

e¿[{*?O,?wLέ?]l?q>q>LL>n=v(y,<0 ?q?&Z?1H=Ȑ=pX;lBM?gifm{>p&V?1=*df>C >AR?E*@7?$P| |I?~bKb>U}>>VHI>SxԿ}K@V>G%l`>:Y?t>$RjX?Qr.\<=h?N>ҿM*?^&v.A>;x~^X̿?A,pib5E>&8Կ_̈?f#?^\w 7=h0c>`ض==d>a=Cڼ@?ⷿb>?Dn뢾#D>^>m==ߢ>(;>f*>$?@@z@Pg?*>,!=B=J??@>?:=M= -#ŕ+[i?;e>5[>]O< ]?x?>iDhjIEؿno1=?;=4==}=H,<=oP>.OD?ڿZ>j?ԿZӼ>E=h6=>?H=Ne=.<?%=b<?pba=O?m>?>5=Ŀ~ ?B=D.,?s?~tvH;%!=Ϯ,=ӂ06?ǣ>!R?h*?|h>*ʗ?nxa^I?y30> -%2>0=_\>7ɻc?`ʀ=˚> _>Qw=&D>J8D>#t?uk;1DW?tY +pk_X?kE??{Rm?w=fؿz{kd?F?6=E|Ocm?$!r?Iz9z(]<=B??l;?*u5?TNd@>{$ '?<i|dp>=>@ nFk.@} >F^?&>JZ?zL>n&UX?7 -U|2=ݗ=yDD?g=9,?x=K? -v=.kݿB?[`E%bKa;vP۔H?'ciU?sN=>Nvbk?yr==$`L??$7|Zr>Y6+< XϿ==;'H>Z?%>%}=L>H>P=U?q uRo2=sdHo>x>*&=-8>6 j">-6>L?.ހ><<2O?Y<#kPX\?dE0?|G?hLf>Uq=L=,Z>.?a?ӿ|пh=Gp<+??{k#5Z]"e<@<"?H??:?Q?uN??{_U+r,57V>gw -:?O8=4X?󊼃={?X>=*vH?,`AT??3!' ?2{=ˬN?XW>h?pO?f~g?4?w=oAm=3載C@=p?u L>0ֺ>Q=B?u?u=6=kȻɠ?ͱ>T , u?p؂??(gR?>>&>k= ¿G[P>`>C?:>o{=X=A?˪>0>M"={,>?}>^ҽ4=/8?:`>sr>=4> ><>vbݖ? @>=}+$=j@N?Ɂ=UL=k?UJ>?1&=thD+2=]p=(>sn`?e}< _R>2=ɾ=/8=ad>4==cj=d>ǿ=UĿl 0˾5_Q??o濂r2S=kҿW迄>Tȿ_4?¸=ʾ>>k?<<+= =u?if);π=~=\kLD==i m?rq\=ꌪuYpvi>s(%`v>2u[?\?^=y?BE=>vjޏi?kzoM>uf?#> -BiU>%mxNs-#8=?a=7W?*?3C]J^I>MMx8?~pg@ =c^m:>wr[j>S0?v.= =6aȭ>B? -=0ipbHf]oMpsXYc=2<mпRR> )?ǽwh?P=Uzߋ>Ӯum>l==ΖfW>A>+Y>n]b?> - -=v?0V\> >Ln>V`?Ad=U>ec2 ->@=?>P]9>.> P%Pt&> o^?=l =Ȼ(?>k=0};I۝bp?%>@z=ĺ=Tx=U;`>sos=e?=>trFs=쪌= -l> &=tnR=f=~>?5?ic?rBy|_>-Qi2>whʿ_M=$>`\=)z; &P-;Y@=f<>/β=,89z`|߿f"h>{=>6<5?=K^:Yb3yT>Rȏl>[=NQ= >sHa=?n=0> ?}C?->5 6O=âX>2e&?%?N̪=\O=a8=wh>Ly=fjP9R?Xd>4yҿ8U;>_?=sQ#&B =yd=:zb?]R?u,=$iy<+R?7H@v^;==]Կ\bW-0;?sz;`?>gg?p=\?2X.?x%>p?i`|ſ5>Ob=v_sh?=SU=Q4=| a>Wz>>S=."b?,IĿ?8?}Bp`_?=tfn?;;<)>=Rv?=@>CB@{Q<0=> ]@= ">_IP=x=M>Z~?ƾ;z> >=]X(?gr'=q^v=6nal==4?pha 6پ6>c~>-XnN?|C?@P>ӣ=5<>8?vO1>Y?M>1`; p?rD?sz=P^>U]?7<=-c~h>p۔>=m4W?U==?`?=;f>+^=Z?4-H>y=D_>?X>n =J<\@> h?AAod?N=9wJ>sb?pV+ =?Bj#vrZ ?~?r?N=R>=I(=?{D?>I.oXq7?>.[iο>J>L}v<7='>@=?El==z?]=6u\=#1=> v[MR?Qq={$վ4=Z>*?m==J i xv[P8P=l>) !?<=y(> ?p?8=lp(,`Vb =ެdG>k9>A}c -?]=>o``>F> .>=l\>`>^> -}>yV??=rop>7]>+zAC E@]6>4=%?xO»?<%=$= =J< Q?.t\>9̼G%<`:A°@?%=|yP?Ui=( u=$=m =j?jQNb_`;*=D?5>g=M:==m>v̿URۗ=!L4P]ϿpRg}?7}=U^Tx=S?}!?g@D@>?m?w=N<*p?O=cD>=?u?Tv]Q@N=ְ6y(l>)=>;?6<}sN8=_> #3@F@=X w?cuH=?qt=?~'?x[<n ?\?4=,?w:ݽ? #@@bwi??Z=[ids@>?4?~1;?=c)伨=0R{c'&?>C>##s,uy<4 >/? -=u=zOО=zp_<ѝ7tQz>d>U>`p=8>X^?.>~ >I>Z>DZd>@ ƿl=s<0?[0=|=tx=G _S>!=c - =WPgr*h?U=Ǵ@di"<#X= '=`ex?4>?/ku%A@?> },6>78=H`if*=֟l?6?'XRvN?@=?Pq龿ov?m]=%?l>=Jk >.i_sa??|vN=|=W0==mo> -?Ps%J|%?K?l $=R?!=P&??l??M]??YP?KR>`=*== ?vy\?d>B7?X><>?0>n?F=r~?le?=?xeV|}?=x? =z?l^+@@>|tX@?w?=p=-d;@?u=1x?X"AL@ν}aȿrR=ֿM-c=aT?iÍ=?];^>P\;K!@=5!=@8x=K?$Yek=?HZu:>5ut!LA??u{H?uQ=>=z?vfԿtEjxҿ{>=.>?>`AlO>e= ֿR+=Ǚ8>+X1=`Q:>i=nH<=U?0=>?lNox=gc>,?>)|>H(?3c:M?D?=Y?hJ<2=֘R>mZ=6=<&?Z>s>W=j=:p?|>^(~<0?,D<94[yiR<;>>aq?/? <\H>&24:l?Z@jewG,=p?O=N>2<}V eFaƼpIߪ=U;l>5>+AP/mAnd=|?= ??76'_??nGU=k80?嬿MV>e->Ϳ> ʐv?ڗqY=oZBp=M0V8ML! _=;?o?>*>j_[F??c=?=>3u[t1izJ5j*?G?}kb?lP^5za>8y=֣p6?>0R=?ݿ?jsA_?j1ÿ?m>=?fy.(8qr?^µ?k?] ;?f}?$>7|lu?=?=xu>==j?f=>.S>u>\"HW?Cg?l>˰>Dw:E=V>_'?9?>h?=ѐf?L>_V1SBt'?|fkB_F?Wq?I1`> -$?5,?zp>ܢ>5>;k5/=>B)A=YĿw߉6Y>"=?f<+X>o7?.B XdtP^|?>:=G>>??>Sky=-<#ـtd>Y`?py={Y>%䠽9>+þ?0 o+?[Dc>DVjQy>HL?οjJ=*?n9yaн=^=iR:=Yd?oPrD?=?o(Lhǀ8?z =Ƣs4hLl|w r[e?=BD\t\?v={f$9==O>{Z?E=o\>.K==R$Ƚ׃,q7?~=W=-t<@[??cĿ]> Y>;@=/<ؿfH_lA?vZ=?j?=H?xŴ??|+> >{s`<=_r=6[>|ziaTr?|=α>Xοp?9?Y^?ɮ>6?`>(ݯ<8>H>jD?> 9ޠ=?>6ɽ\#7> ?wA=9w7v@>ĿiVe?>!4?`>Q?|5x=ڴ?7h?Ը?n==̚=.4X?[7<ë>Pt -td?pCO W{ ?>&j?o?|=>9n_#Ϫ=Ɵ=)t>=߁p,~ޥ<=>Me>=a=6?@ ->I> }tG> T=W=T>0^ĉ=c')!?=?kÿU5>9zA_^E==PZ= ?'Nvfq=V> -Wc?>! ˿{R=X/>l>CY?_贼$>o}#=r>I?{y5>=֡d~bY?#>Lq=M`@?.[_?/̿i$=>a=C=X ?¿P6LT}ƿ=1$j>_+UK!?zA?~@X?{1?Ge4 ==E=ζT޿.?v> ?v=F@[=q?q:6KYiV -< -V@n>)>\$YR]=>>񠽦=Sc^?6=PsyE:sa>ҿfؿZh3g?{?RkI>?Y+P6=T=Ю? ?1H?Y??q2]i?lI(=N@^V -?8>+>'>1߿^I?wuQ6>Q~@>1_|< ?=dI`v?m)?=*=B?X?y>'"=5:p=;fid?=qfr]u}⿂ >2= -=l=ܔ6.=[Z?i>*T=!=?>0o?+ÿvd r>n2<Ͼq\yReԽY`Cn\?IH=dȿdj=PNt$??Ob"?Za>9r@?m>7?~[?*=(?uuo핿2`>x?h=YT >\Q3h>%ԺOTx=ORl?>i<Ǡ?P=ew<>?Aa't==fp> h?~ ?=zj|?x>?1?a`[ B=>[>,?m^>Ǧ=a>?=*=;b=Կb>=¸q>?%{== -=D=_>4>=QN=E?@=苖>XtǠ?\v?zkyz?::='bXs?=z>g%F=L<6?rs>V=7%wܿmRH=˂=Th>xKCO=>)V?v@=h? t=?r>x < h><`Wc=?P=||B?v_ʿw࿿[޿JW==iI7X?v=2c =?Y&P^=6ܼ?BY[>f?j7{\&=T8=H@?%?i=p&#G8|?~z=$.?L@ۿ]?o_0kJ/d=1H/ ?<όjac ?i\C=H={ `LO=tؽ-r=־W s<0=[?L=l??ʄ?{?TxS> 8?l-=(N? bP?q#a?zj8>=zþпpN=ҲQ=flmS<0<^t^<)x=;?ry?a8vu2?<?ty?"_>Ͽ/8>=(P?{ֱ=m0>hFlS? ?s,>|3*H{=.?I?5"?j`=@?vt2 <=*Z?F>r=e=8+H=L=.?U?TOѿy>'??A=@=Nl?o$0H?naB?=^O0?>rD=޲[ -yE>"v=T?]ѿfXTU;σ=B>y?k&=۲>` -f[?,-#=fR=p޿c{?|w*?|i+ -q>#>c?V:=d0? s?{4?=# =ο[g?L=bn=v=5=Tl=f5T>?3?`=j d?~=dq> ?c -=8d`S ɿ i##>"۰=dw=l)^s= m>}g5 ?ռw?Y@9>moS=nls<ŽX=,Z>9{=nlZ`=ML=TL>'1>?+>eнs8>Sn5?u<j{$>;=:?@"S¾"Ŭ?4>D-Ā=u~lt[=3o">^a=0.;pH<'8=r\ V=D?q>s -=$hz=JTj<6>XMPX> K?7832 o(=ߨLqڽ<*)A?=\`>&r=>Lt>.m=o`?+o?:>4yt>Z={>`|=>#֗??G׿sFF=:M:%c?=5A>q>'\?m,G=J@p=mHo$?xٿ^>.(=ֿzم8k?=r>/r=\?=:b<80/x@=D==sD,^=\? -=m"2 lو? -<0z:ak<>=ڼʘ?`;==vQ?=K=U= |>P{? x@=@ztX?>UB⿅7.>a=ܐ=X=8<2?AOaMh?<;S=EL<@(7+=ٶt=?#==<=x=\#>B?x!` x=#@=Qȿs5L۳??g(A #?|N?n?sh >OE`=&8=mP/<=[ઽ⣿t\??tW<\=A>C֨?՚G<>>>=Fh>?Y=@s=x^`=y>Tj=>X?ȾKD>OJ?U`w>d?>n=@J>-m?˗>]-?{Ĺ?,<==rp@>13I >rH=>̠r?3ZDa=۾4@t7;w?L?6s\hܺM=Ϫ>P?$>KH>=A=]0k>(B=2A`?aM>hؼ=t==>p?w}ͧ>(_Zd濅 8?c{?uT^?my8W^?~*=8?XSqZ>R>v>Zj?ЙU??g"?dr=p]{w@^eNt( -?~ĈwĿaF=>5k0l?Zuhݿ_)?U =[gLg9[?4x>&X>+^>>P=NmX?$->M>PshQx?=1ʀ=\< =p=J=| ?R(?J8> ?La?q~Yn>=g>1X)= =ֿKHa?zۥ=*?=J_$5;6,@?G?a\=?vκ=$?wO=\;oEJo>\(>+=O濟?=UШ>N?=(Q<`?bwzZi>VoT'??xla=FvrxbN=S?r<=DDu=n8tÿ9"2Sq>^>6yQ>3q>Nig>)d?w=NԿ]=rjY(푐>Z:e:yS??_=F>*Z=p?;B?|?I ?H>AL>uR?Sy@R?B==8?>C1[s=6=r>ED?z<h=>vd?ZῈ@?g+L==ca?=,?m=| -? -&N=l?|z?.> WWcbw> #Z?TaF?~h.!d?r0?m<ć𽩜Lx?y>P@srxjv?p >#FhL??Q1?qb=#=渿u>rɿn>R=X?K> =?icH_>0EQB?>i??}@bOK =8=L-?eB=ˤ8U^q?JcY!0I?1T?M,G =>^`,}=0z= S>tl>i=P~;7=2>2SZwT=_>e>>2mx1=>F?>5??y>!nSic==?Yy>GjYSrEw"=h=+=3 pע:?r>F=z#=$?i0?l?_>?.y?^:=-lps'~=JPX>Ҟ=L>U>N'i<(=8D==RL>1X<=?o;@@7I(_[n=Bw?/=л[>&o>s&\K?%=?e|>0>WahR=bؿ_=J?F=|:`=T>j?HVڽq+??"?v)C+?Oښ覠S,rq?ΌaG=Cg==)m$>>ʒ=}0<8?Z?{??ht?x.=2=\H>/?'= 1?꿁8ӿ?0?Zh<>SN?t>@x?]?n.OD>A?~Hm۽eL?_~Z獿v\2?l(`O?u-?g<E|*l>}=P);㊠` =((j=T<=넿pl~?o{?"~?xd@=a 0j`/> 93t`?<پ.4>4?lE =mfu%?q?gQ}=xܾ>(D[+xj\?+P;Ah:X#i v?#>:D=xLRmR -Ao>=[yhT]"r=I ?̾M>I?=F$=Ȃ_oG?>> e>1ۇ>a?3?ǫ?iI?|= l=??ldHW>3=R=%3Tc?1WZ=Z=Vuƶ=v<>=v6&\:va=0x=ڠ<:> -T,|,> ,>=8 ->!= `?TO2:st=g==Z>z=.>5> -G>Gr?t=ɶ??{B=N><0?I=&¿q=_>?U<7HP<װ==}?t!>HW𼃖p=Q*$vڍjξ!>@?X@^0a k֮>2q? }?})xȽax= Ŀg"q>"nw>ܺ?G=?n7`˿^F|S[6DT="4lCjT?Z=\*p? t=Z0zP?fvk)=2=hG5,^ zV/pF?I⾽=j=-z7X:?|4DVI=??|GC=rHS=8~>1z?8`\wl?\b?R?t> -bFy> a >5>R(=fh>Ta=3|?>CK?jS?"&p={u.yώ$3==;?xR>i_Y=>>9i>R-I=X?}n!~-=`? =? RBjP;C?;>7J?L?=;:>j6?~ =5?ovpj8?Ҝq?r dr=̿kw2?{>#?=ke?\8kL=9?Tz=E"?0?>*9f >?h<pxO׿uF?5$>[x=ްt=9=п|Cqtv??ſ>)n=6=|?D -.wh$H>L8qNa@+8y>ܿ伩[?l=z?w.?p!u|[=^zh@lr=Vo=o+=۾10<)uY -?K3@Yu쾻=sP?͠[{sڽ~@?~\H{ -js?|֌=>`qa> v=2J?f v?0oP=d<?mH=_a==?8=r}u28?jy=(!b?X<8?u0ȵ?f?(==|C&@yA@<ը=G?/=ݔ?}tzտ =]LƬ>oAk&=%YlX= ¿Is >_->,q?\KH>0n>r>g>Dȿp gJ>@> 䐿mo<8>}oDf^A>3Pd꽡?oH>ц}fM=h:A?B |j:F?nl>[?Ba*?u: pZ>.=@H?$ɿZN>11?=z=V?~+=74X̂??>07y?Q?x{j|r?q;gG?I=C过ÿTfE}uH?`8?v]_:hp}6>L`<=+@0Q< ==:o=*Z`1E>`t?Q?t>Löm:=;=wLjὊtnힿn$ Y=~?q|>AJVrCRi =? -׿w7;[T=X==TEM;k=HE;H?qX0><>ؿS?p=L??kJ?=.=¿P=ֿfy¿J#6?oHCD@?HlP??8U=Pj.ֿi='^ -=>16cի{d3??dq>7Y?vgfؿ$?>U0< =:= =>xp.e|aB㾢lK=\>+䠿[?LʋU㜻u >~=!=|톪=̘ ?=/d?g<ћXk;?O?=5`%=Ŀ -<cA5 H3?=}?@<>"m[?k=̾[^xVb=^t=q(==ahqiB?\>"/^>e=L=3J=$?=h=j?l'@q̿lrLܿl:ͽĿTu?iv?=F>M=&|?xo>-/r??ue-z?s?rT>t+=?>)>?49?Zɾ׶={Ht>EþNA?qp?7h1e{ivά?=(=?\ѿ>-R=z<x=V?{p=S8?M:=(h>r%=T$??5W?m^Wq=(?2="^,=n?Mg?=^=V=R>N8?X|>;?m>j= #(q=X=O">˅v4=?Ȳ_>.[x=A¿==R?j>ܿn]?6㼚V=?R>#>.+\>@L&Z=¬H#=~c俘(0>[>7>`=UfK_? ^>}=`Ŀ^_4?[IQ>?:=.t*~ϿQȽjܿjo"N= rh?Y?U?&wD>#|>9?W@=B@ ??|by{w> p=qH8=,_O&K?z 0U^S 8j&H6eRQ\H=Ql?W ?=6D>_L?.k=e>/=?Uu@%l>O^>qLl?z+(ֿ[H}= ?gD<"пw8R>6`>*>V?vg激̬R?=Z? <7?X,yeջHuf7 }P|?jEL2=Lȿ `=z?}v>.9O?R׿?Hww?)?QDi>}B;P?p=Hkm=n<ue -Q??}J?l?Ǩ<??b?OɈL$?= N?b2=/N?)s8> -N?~> dC=L=>0az[5F=>4;?P>+*=| E?rQ?Y?<;=g<%`?tW~E==cf?jHw'e=x?ّ>.J=bĘ`==YWD>QN= -RX<|g?O== =>$:X=YYl=nT>;@@=<ꌈ=<(N032=b6< ?4$?=P`=>=rr爿? 8?qv=ͺ"?%?=w<@{'= |=t?XN=V<?+=¼=X;?_3?Z>$mXd?>W!@վM,> @lu w>F꼀;M&@?{?jv5 ??S=#`p(@;{<<`мp?b?E= Nx=?wHW?}S`2c==m`L=XB?f?7˿f<8=p@~+l! ?x -q?vs=@Jp<40.ҿy=o(x"s~=-?v/m`=ɕf?{G?S?4 @>=`<=·?/Ͽ~=H=n>X -=?S~0= >w?_I?%R>ҋc\uA¿Hw=\}>Wq(=^>=<?*>5>>C꿛;=?qx??>W=X>CS ?r>%U_ =oho=&a> ?h=1a;QK_=РY>; =$KC6ȏ@1=/#Ľ! >U?]=޿b}ӿYQaݺ}'dj>?v?n`=.࿆:Z^c8l0p<§?kMd=y?.?> GI6俅 ݐ=~n_ -?l\=rhwn?wa=~X>^?&> w?!> < pu=r=N=enpvs?qN>b ,=G/h?$>98=\t>*E@= ?=3?`= -?fS?z=`qS=='>1[*?? ->Av=3=pv>&[&緄@BN`@>G<{?]=ܛXu?Tb?_0= => ?}L<м:s)A?R<|??I?= \@?<x=hn? >*a=/Yت?c*< -}:=:>MH?3@"2?>?Us?k??{+[?~?=?;>rS~h9>C> kT>"O?fVb>V> !">E>4NB> :fv?&hlgoO5!?~?x_7sFg=Q>4>W>K>-wiҾ6[v=0=hd=>j>??!=j=1X`|h&>=$WTa>*@pX?=?=Jex?>=D?|j?d)R?(kJ(?s>1Q?ӈ??`jv=q׿v󁽆>?AP=?_e?z"c>SR_> -3=d=@Y=}"l؋c<-q>Dw^=L?@?;<!<{?{>)SY>-KO~m`A=dC@}j"zfs=njfR9>޿o0wpS< ?j=S?]n+XH={4>gA> -?+?w.>ס=>p>I=7J?*ؿv=T?=r?t_> FҾp; k;G@=] ^c=m>ku=D>T> G=_pl>r7>dY<Ś> lY5h; >J?(w >DeuPe0l>'>vy`;ŀ?*?J=v=B?ؾ?-_͹>8+>6h}wT:U,?@~#=fz=R>4?> 4usl@L>@=ךn<, v>eֹ>}ջ=4=7Р>1r=YJ>kyۿ~=vN> ^=>>Ŀr?mD<9|3?@3['>8?T=diI>OIh>nP?D??x">=P>B>B`=(>:>3L>:ٿe?^?n>9Y*!V==k?S>ƕ"= fW=>x=?=̊_==MWȿQ? ?1>zx==i>*= ?ɼI?SKg>Zipzm> i=vX?g==#Լ@)=¢>!ʿ>Ex?A.?D"}W\<==F=wKW;>> t00{g>@?TZ=5?Ÿ?s?F?u=y>ut?r?**=,?6*r*<@=M{h?<֨<1?fҵ=XDp<2=n=`x>e>n޿ZȿRy =6?x&=?&>9?>"2?~_׾[j>8>"CŠ> ,rbel=@[D)E=_D>-3W>/_T=,=}x=.;ȑ=̽'Ŀ(i<- tzx<b.q? ?p> O=jy>٘=> dg5>T]K%y?|HnT`4=>q?=x?@?{0=Z?V;݅?qhSR=?M=={==ʤ^>t@B=ջn}tlsd<(!h¼ `#?ƿ=#I?zL?8+=;*`=?rX;>?iY>,\A=z<ȿvI?i>b?WؽgļA=D=L?-7ȺE?rt@=I(<Ϙ=?u?v -kL?>'L\^=%H?_o^?l?~M?0==+tP=)>=W?s=0=uU$?> %s>pRf?w"Ud?}(?{Q|=쿇?yT=h23)?N俏`=I8<#(> -L=b`,G=0g>)b>BXM>}J>R -\=y =$f,>>[$ǿp>%>TZ ?U?n׌<譸=?=[tK=,?QJ~> o=8T_L>D@<@>$F%|f=D?(WU-`%==0?v=8=T?u??Y?=y tʶ:??{=^(y3=4=:?u<>W<8=]g=h<@?y?=ܽʾ侃Q<𐿂ԑ> 4PԿcA!P[x=rkK̖=n?v6?l?j?>M|>hZ?;("?v?ؼ=*=?=@=5H? ?`tq?x^L@_;>K G=>=z`?sѮ>F{y?wx=/d?dӾq<-<@ >,=v$=*H=>po>-uE?(<?ֿn\?7(>O>/,!P=J?iɾп=?@?\=z?e?=n~?% o=y?lG,?=[~^O=RBh=?R=+JrS>l@?,?-¿_qܿr>=mD< Es <!=?)VY?=l=矰>gz>-yhv&?>Vz=[tOH?<=a4=خxë=\e=:<9Z>-IYƿh>蔧?z >(LW>!5(=*>5伊TOd?=^n?2?.?~?<=_ȼ%yl?)p3?n6<ɇXPb=x= 4?pM@`_9?x?姜=j=|= -b8uCR<ꀿrߙ?wNC{(m?m>??qҿ7?|@? ->%m?{?45j> 3?kU*@> -?FB-?\% -BѰ?A"<ϵh(khd1l>5=(?zx?{K`=Z TLCa`YĜ=9@?0kȿx}?vxƿp?ebL=+==lTvbW>^?t=wn\?PN?5=?Gk.0=zi\?y#qP=&=4CR=Rz }Kd@;?zW ?t8>>~>0,>%~}U*-hs>U6+=`?>e=6$>~Z=P4?bL=.>B?> >>$==FVƴ>"J=۬=W4YL=?ݿe|-?ڄ=%J?l0r-x=0Vs|#D?_ ?>?>K==1޿q ?{6=v?^= ܼXt;@Q? -?_MZ=r??t?у=}>2ǫ{&p?,;=J=:6=TtX?B`?l=[=d ?Bh?v77{a=Pؠ??Dz?&|nl>S?幔?cf=q?(~"?)96?MԼ,?}?{?X?<="j]bY=? ѽJ?]pz0?O==; -=u,? @z?>>WJ=y==`4?o3?0gi?>I4=N<$?{[?!?lsH=Ud`a?z*wgU=e+x==?sqsE[bA:ׇu׽\?=/{b=C>5/I<@`?߱?s_DH?m}<,`z3Xn\=0?qh \^?=(lJO=?l =u?i@?M==ؽh?dd?Y!?II6Opw@5=Z1ܓ?i,=6ڱqL`=+L> =YT ܿ\on)r;hU>R?c?'??Z٥=n%u]UH,> .<?u ->n>J+l<>ik<+!> Ծmxf"?nkX=>X=ƿg=^ZsS>FM?;c>y?yx6Zd*?hd8?\=ޗ?6>7 ??Ǐ>c><=,p?gĿm??m= =,X=˾=z?iix>IGC< =.>l.U?@.?lA?话2մzL?Rx_u< =1ֿ\.=mf<1@>hB>q?q!?~?]6==߆?vq޼)?u@?D?v?x>3e?St?=?l> =t?Xw?Uן?0<@=Xn,k?lN}=p6=X_? ?.?uy?c?? > T@#!\?üP?Dl=̹=?=\|>ӿ:Q?gâ?J?K8eqh=#/=B>6PY *eHʻ@?<#??@Ћg>N=>ff>Jz?{ -??H>d==>? >'#=< >H\r? =#X=}:==Tlh -?=׊^ >J]=iPiʽWD?b&=N>В=ۨh/@?cmn>>0<?khؿSֿ4I>a=r#uȿo<@=Ә~1=W$%0`>@?z>0?=C==N~x&Qt<: ?M#E>+}?n=੄geZ8?ڔai?s&u?^=O?l<¯=bݿ'@?="J?_zU=R{T? a?~?+:<@?L޿w׷=>!n=6?h[l:?$`,>!)5r}2t>'nN=M?D=.>3?=Vs?]s?=a>3FkB ?>?^^@<8=a>?r=Fa<-?9 >?? ~^??rz>8>>M0 >H@u?LQ@;>]:WAK7Rp=Ut`?rFL?=to?z?@ -k?<=I =?8&qrZ:=^=0ߨ= =?xH?\Kr{ `=E=?ٿn:N<?Qtl í>BLo>Rm?7?ɻv>XMq==|*0[b?{ۿ8r>^}e(>RNV?`?@tv@s=T?w(=r/ieWnN&@G ?>&*o>9M=5$=L=K?}?wƿWH;_K -==ql?j[;p ?'\?O2,i?WL{f+tI=v=~<{0==>[r <"?P?+=a*JX8?]Ș?,|>HX>PI @ j*?1p?dȽoԿ{m>~?߅?Pm9b~@J?s?)?L=?s5?|$?z&==>K|>I=Q࿌۽>ڷF; =;=I8ݘY?g&VH<ʱ:Կc-aM?9?r? ?+x=j=3r?o>T?k!>C͐_?}?,=?~3^?ſwS??q^f>jQ*?T=\"?Կ}=g.k?qf= = {4=Z?>'uwտ=pL,?$n?r?E8=+(AyT=ga>?qb?aV?}A߿Lv>1=f<=^0>d.h\?E`н?=0 @O -Ɇ=O=Ji<@>5^~Y}>EdT= =(F׽=b $)2#}vi< -<<`?b㿄N?n)=R?:P{@GA`@?.*?v>@< P?}~)?\N?tk%=<=:㘾?,?u>%?q*M=?\?)(?^:>6 Ӊr ;@B0>+;f?%?az==YE=)|sHAP#?XO3>T? -*?J =c2?k?a|c?T>?&k=̤<ۀ=[?}?K=y?<-mj??u?D=S?cgb?I<?}up?o?I?5?g?qV?t?ȱ ?yТcPX?j??hp6?! ?p.ip?Y?u?^?4`?|0?oO=žAuF?w=-\=]̿L"J`u=2?X=6?|=>3B ?nS?p>/-hoڢXM? > ??e=== ?[$>m_q>Gh>G? O\> ?> ݿ[-9?~=ow#9>/'??_d?_}>+?|"=h$O;aj.??t󒔿pK)=% @G |>*~??Q ?}l4>Q?0f;?=>0??>_?xA>'?|FZT;`?|IVMN?z ˿r?{t=T<0?mEZ>O l>=k?bfW% @ ^X:3<ɠ?Uw?w -?u#???$?V?l>'0=ƽVԄ@i6;.?y\AvM?]`?A??* -Hj?w~?P?^?z`=ŀ̽B{>0s>%8??LuXKG=Fz=_>H?碾ժ?kij>:iPPGC>ӿE&?O˿_{V=|>4>t#Ŀ6>?y>` )>?{Y=Ȧ ->8>>R?ۨ?_g>V>A>\@aX@??><1?x!?92G @?~=DĿq?hZ>=><ؾY#>!=U??y> ?=?z=>7q"\=e=Uj?%Lĸ]𷿆|??qE?=.(=?'?tw0=(?h?]??:>Q&d?fJ==0aY?{xK=m8=Zs=ax =?;=?]>iTX+?V?'H= ?XGn=Bd^*?| K?;=(>9 -ο96ܿZ?ugڜ?jz?l>=P;ـ?w(`\??z<{+P?i\S?<peO~TnՎ?o((|\%_^=WPtuQHw>F}u54оR#?E?s?ݣ1?[W?^@z=l̽?i$?Wo?oT?x=q*?|3=ʧ@fl=&$=??+S8 w>CŔ|=ܗ>&e1sQm W`>:f蒻2@<=I= JP>@0=#Y=&?(;`=PH?}F?.?+?63?RܟPD?ֶ(wF[4gIHަ!иZiT?>bU.;Z\v?{= A{1?MM!>fH"p=H?=zg+tt1@p?+y?> 2W|ei=Fx?z3(W)>=>?;=1T`?2?F麽\kA -i¿f@pj?t=b3=B??Fs=->t=ք>  =Ľjv!׾W?=>=$?8=u ?[,bh> -?|0?? -=z)fB?0=> hj3 :3@^x>.@=DX?r~=tZ??oH>,>? ֿy=H?e[?[<p[t?L=R־ڶ?pս6P<?[|<>=U?Ju;` = -PfN?6=s= &?7G=St 5>?wһ1=YbHp4??Vl?k]>#.o=?V<ָ?X.`@R? -nJ.>=Xh[>F=3<}C=6?vSP\>A=Ā¼==О@P>[=D?7>yx>uRVnYQ8<@>j;W>AuXK;?h=B= ->V_:y -t-?za?w9 >?C^>/exsD](=`?d?C?==8@?l=zt_8;@qpk4c?㈿N ?rcـ|r?Rd<7?Zu?1?Ұbi&\"?V#2>>\[0<=ސ=M?_[<>?qd>'ٰ_hhj?D0??yֽ?S??y;࠽Z8?:?}ܽۨ=UDt=.l?n=l=8>=3>_hܼ'=#켞w=|=j??}?ʢZHH?Pܿv=??X4uiw?d>m^>*U>jG=>x??P=9?s?1Q>!~EjGP.?:@,?= -?y4="=0=b$jp`}T?0c߾ -? ?v?Rؖ??%?enT=->4?Zf?qdпjI4?s!=m0?jBῃ=P?x~=ܰ== ?R`l=,/?cy>`?f>Ysοy h??y>8Fc=(@?l> <\H?>=f>efF=.}B @0 ?h?.=TGt?x<мؿ<Ů=N:U rؿ6Y? f6?}?=?IH>bZF>C -H?ɚ?vD_>by[[c=^?=!1?J<=ol@;B#q"@}Xd`;e@>*?st=J8{H1|#p?u@f?dVT=؄u&޽5_=]X">?|??Pk?l =R?fN?=n=2?e2=9?}?_?nV -?@~}i=<=5?{X7=CzvLv~=̞""?}=~=L0?r~i?hZʾ"0s='4?q?m{#?p=@@J/?>!?KǍ?s~VY=M|?h?翋 =Π?#@<?~=9d=g?d=ݒ?87=)H?Z?\'?M쫽f{t,? ?3j=o#4?l=@.?>j>([)>?/=>oL>>)=d J8F?~BTm==C(=m_?}R=8?`vѿ=ܻ< >5?s.lhC+t>a>@uI彲;<> JEc==P(tx?W?> ?==TԿcю=BI`?(;Z=?`= -LP}?WZ>==TD=?i?j>:9/~=x=@x?ڴf=CܿVYFRb?ڙ?z8X@]D8=uh0???b?!?l=:n^: - ?J?<O?:h?|c6?J? ?#n?p+=8q<@Ɣ?Ii?{? -? `?u?wXx?n:߀@S!!A_C='m@>M&?x<1=?{&?pk? mon4;F<͢0??0>?:=1?Ghf yo[l= -?dP?=zLXP}ʈ?oH?uL4?~>ƽ5+NCk >0>?h>EV=Δ4>gp?)==n/xZQ~Q=l\tR?R=2<(>z~?5=?Pg=??wPp L?M޿Mo>D?~8g>~<ֻ=/;?`W?>:_U?U~=?l.?D? =s?jo>#p??r?}>>]y?c>:>(v~^`>$]?}>B=:=3 $y% Y=-T<ݶ< ?U=`_?п=M?].j?Q=4gԘ? L6ٽz?0>:?k`={䖿,U>ϻL?0p}a<؆=vr@ȾI='??W_ֿn]?M?vn -/=2\!G<?T<@9=d=?}ӗ?=e0=y$?fz?0 ?f]?r]>? Y<-`=Lhh|?x?al?q?V*? ?yA ?=?g6@"V?F>05?򎊼r\?a?X[+ ?d=HD=d?q>/3׿NE> =HޜpZ>R >>HQ=5]>a?}0>C=P=?T>I z`?f>>y=Zu->V? |>,6L@l6⽛r,?x??(??=-?~>=e>Mr#?t? Լ=Xac?S5P1ɿF>#-cyb{pݪ?A7{aa L8q"=^="=e??=¿?zi>xڽӘ=D{H9=@ >Rx>ٮ?@.½"P=6b=='n?|uG?<wϺ>7>=6m>1K> r??AX>s:Ң?|LH=נ̚?g=?u^??f?xF$<\|~>P??*?!?T"Bxб= W?qB;q?a=J%P?U??zJ"?>1?s?6.>=<{@>Y?z?\R@-?&?uo>$?@H=FH@Tr?s$)?x?+ؽ4{?w;@)ǿ@??p?Rn޽tb={=SX?<;濅[?g>@tLox>Q=^VGf?ו> dvX;BL@=Y6=\>nG">)>V>A>Rc\;14HnJ>-@b]{?8l=骿*>]}%= $?{}޶>bnOv=iXkz??.=Z<Fp>md= ->N"?O?n7ɽ?hj:>:e= GZ?v9}?|N*P@s鸿?l䶶?S3<=?y֌? ?yo?kp??<Zd2?x>?jgڽ/B>=T&?zvZ?u=?l.z?K ?w=/|?d!?#=W=$?C?t<@?-x?p+=:?ru?===|?\>%O>08i2?|2X=>n >BΤh>E>Sf==> Žl=¾=5?R?3==|=6R?{xp=Tؐ=*<|0U >"t=L=R"=؇>%?wz1=Z<ߔ S*L[>B>GN,w޾v?;?}'>M'=o=hg:?}?=RLnwM=ȼ -u=hD=r%Z}?>@?u -<0[п}35rފ"L>򡿒Ŵm?_=w?=|L5?tZ> <ƢH!T?e[O3=g0`;?o?Y;s@?q5>% ?.<9H?sb ?-?ؘ?IP=<>V4%b=Ic ?=s?ov>$t@ϿѴ@o?kg4?XI?}$=i<>=iܽ㗔?nC?U?)k?T? :=Ts)m'Dڿa0>To7s⾢>.|]=u:=b#T=C$dS=rV??$>=?=&?^Xv?g?{1?sio>t>hd>IW4=0>6x?=;,>Q:=hk?u?Y=?U=Kf?ڽI?4fn-C??/>>k׻5`}`ML?L=<>hп#?dֿ]>x.UD ?RUyx>I >)?z!̿l> (??eo_;\P@=c>+Cya?f(@IHv󶡿s =_=h=Ol?W?r lyn?g>I!l(Ύ?0??1L:!6~? -<?D?}Fx==VX=?vE ->쿆m=r,?TD?s?~ ? -?2?8X?t]#?;Π?tŽ]ػG`?gȻԘ@<.?q?|I{*=V ? ?TȾ?C=!ఽX-?~=]><#xlh; ??a? &H?ƽ\?xa?0?< -=ZDe?t=Ἶ*Q2@B?č? -l%p=2h<}|`9hc>oek?K>U>?;bV>HWZ=,d$=ȤAsPwhc*\ )=l=#{>#Sw>>&~g=٠8=4=4=d>(ٿl<ܞȿ[ֿFr=:?y?gfA?{*?ؿWm|?W="?b> GZ?M??r?pR&?Ձ?_@??Y=VƼ=7$@=%?`?)X̿VYe??~=Mh?:?h:^qoh{?ؓɸ?վ {=$?bsw?\=v?o=S.<>`e'=pz?{&~S<30|@U|)t?QD=s=>E@?s?jj=tCoj[?]38? &u?&?eP9?ah|?t;=_V辺c= -?whS?L’w?~?|FKxit?c=?@H?|?؊?p@8J??e>,?gA;j@R?hzo ڼi@>KK>Q>f? =>h=>]Ŀe>ዿzsK>=rti\?>q>Y?ܿDw>> =>(H=H=e@=l[j?~&>gb=Q;=6`8>PܫZ)?1?:[? -0<@?p=w> GUX??je =GX9f<> +?Q?hF&?w=b> 2?>"u?;S мH@ =Fv$vA?s?} >0~ ?ˋ?b?]>==ƙ? -@> V=u*>KUfI??֟d]_`?8?N ?G?|˾q><=G@`g3d;d@=ȸ=N??o#?{M?v)=??Yds@y?k?3Z="> $r?eo{q <=^=<ӨlC]?=5T;@?7`>A(p?1<ŋ?y=1::',=ƻ >?X>#=}fL@V;}=sVH?n|~=?b?=1S$>?a?P?>&$hi?,r=&?<0X?U=<`?yP=T&h?нU?o?|z?q?aJ;a?T?i[d<'a@f[g#*p?b>oN>Ry>}= = -eJ]=~<@<]p<䠿SZ?k?>]/>(0.n^c?[]ph5>N>c?g?$=c> s?C?\ܽ0=[b\?jZ> ?x'm=D=d6=U<>*5>@0?V?{տ=> 6=%t>gH-=Jix,=J?gX?=:`=/>\lH?giMl??vI =2?US%o??T2=/>Y=~=>??}&==J8?h?#?󧿃"="MI1?<f>5=א=-x?~`?j ?F?Y>w? >p> [?$q= F\?WۿP>T2s?sf)>?OB>!?wl^?t=:?ŗڽ01>x|X:=vN?9\>=?[?݅?=bEf<[Ԑ?Qn?}^k@F}?r?{t?E?!ݿZY?R?;?B*=E'?%~=>>1:ԅ;??@ -E;~@? -7D?S<0?n`= \?zw>.!==27\ <KL?y=Y,QC$q?{."?>?Un8?u˿m|콨ؾq0?u=ƞM> MocL? -=<?|*=G?q?J.> -m"=ހ?B> )hp=7=>3轏\_葽x?hjd=ݝ@5g>\?)>`==4<[g@''.l<H= 'x=?k?e<$PwUN?b=Stj1`n='?>:!Y? >R=̮=?H?n>$?׿^p^?S?x6JlS(?b<… =,??z?W68vV>+RJ>P=d"?|6j^Q~G?e}Ŕ>?=??њH?t(i??lK0=y0?8?W?E?w x`>}?k#?r_-=S?s=[輱'=?c(>}:R?~u>~>GQ=L=a?zڧ?@?=-eX>F??wV_=G逼P?Tʐ?񿟽?L࿃t?d5=?~l=Xu=ɀ?}0 -?>ss q%B;!@7*Ô?pR?s4@:oZW?u?`>pNLLƼ?m׿tw=i -8> ξ}>q>> Wƿ]+M= \>C> i=r>$pR y=|h:=n?>')>?aj>CXf=x=.=kp*xQ?H>Eh=H<޲x=,풸>G?G?w/,x?s=@ ?}=/"нND=߲C?u{U=i: Z`>m?t4?pq?:?n?t?qj?i|?tls=_?lA>)B=n0?V>VYp@?0g0-$?p?| >^=;Z@?Xt?kh?Y$k5=7?I|o?`8?y ?m*R=4l==Ҙ;`׽yF=`x?op?Qul?r??z/"??v?f_=A?u2=L,<_`??*?U?$`?X]0?x

&?Gp>[h3}?rf?f?i~4=?n?p0=P>H=vr<~=J4$,?tt?a)?%???#"=m=+?y?G߈qM?t=s>\R[_>>:+xaveGlޑ=QĿ;>%Te=C@~c= >C>?O]>>us=0>=*l>~y]+; ?qiD`>#Ix=Y=>1s==T(=:(?1k8=oh?׍< 8<ƨ>C?bhh'<(?l0@]v=ϣ?L{?s =`|t?]$HjA Adb@Rw=(~ٿr-?`?l|??hҼ,>%#bj>ȿ=X>oO>϶?~?ղ?1^?w=?}b =qpOĿln=" -= -?mN=Bn頿l{{?=0?6=Ƚffd>𩿀po?qt>??t?QT?wp.?G&==p?OfּS9<D?=Ll=RR;iʽ)l,=,?*??>$fyVp9?tsd=k0?j?ݾb@,妽\??r?j?#Z5p?T?3?m?]⽥`?=$(l=*??>?,p?$dה> F>:/ -=t =8>u>? d[^/T=?+Ds =*>> -x>$=>v`=\|=??b8f>[??>%ʿzl+Tت=)J?b,Q)>F?aV>5=&b|=|?d=u:<;p??;<ѷx=n>C?%޽? -?_ -Ƚ8=>=nL>ּ?pr=X >P-?gC?4/=nʽGz伔AoBѸL@S=]<B`sl? !=c<)p@P=O -ÿWz>9 >ؿK8һ?%h?s?v߿|?P y,tE@o?vs=?=1?LX>Pk;@?y?o~D?C??^=H?&?Z~?t>oAS{=肿lT\?C{B_#??1dLC?>sm[==d:=`?~b:=@ynZ=MaoOhE?GRݟH?4=SD>@qCP]=ؤ? Lɼ9f]?)?l_?_e=rʼ<0?>}wiR?RY???.@>?Kr{޿=t=?=<5@ ?{>V}'R:\do?o˓!k?po?^C@=o'hA?\?%@t~>,8??'o?Jq>>5 ?g,G?2=*??~V=}p@SxXEw?)=A?>A2? b?{ ?e@2?opD? m1; |?>_8?MJ?>?l=C<?>;X?Ha?ah̿M'?^9=㋸p?v?^m!?si?x?ѹ@==f4v?HjyF<<=?k?>q輔\?i ?l?whLwӵ>4?d=?1?o)R<"G࿌zk=O?T?4?X ?h?[=@=ٵ^m;eO?y[? ?q -=.@>a6?~n?::>|y=U5d>¿^Hv"=>?|%l>fH!<8 \d?r>9?;@=饮=@;k=>1.l> =U}f=m=VF>>^޽v=*=u?~Z n=%:[&=d@=«j=?6<н(h>^:??=(?i??SEK>.Tl??>%!Nx?k??PӎV?:<& ==ׄ=T=vV׵?8f=:=rg@?x ?|;b=}=T?f?)3sd?=s?V"?T옽}4d~H===?d1}nh>GI@!?V$?L?Y)\zOԿ?z?,~? ?nʽ?>?uv.=j`?|;࿂?=_4j8<>)=׵ ?f9<0 ?{I=?F=2??s^.==0j=;?vr?w?A WǤ?V/??`?J#>??"=CL=Lf?z<?S~( -p1=(J\;/?X࿅Ε>{q!> = ?R&=пb#o>v+?c?U3=ɪ>-=>)ʿk=8?{< =@^W]?4uy}*u;e=B=SO@"oý6>:7=JZ> 4Y?J?6w>Nj\?Igg;+?Z8ĿmsS=Ir@S3?{L??>:=V>Bmm=ǡ=^x?~ɋ?eS< > = ?}=2:D>EC&?^?ʥ=lN#@>Yzed{\}F=޴=N>?Xh>>5[zy*jL=u(?G@o?f1L?zh=5?$yLSeB=5?{n#>]`J= -пa@:H?tFP=?6@6ּӐ=ڞ?U;s?LտpG?Dl=???=G ?SH<Ž࿆?ѽh[?l+f?롽³=+?ʡ0;nJT=;H=5|2=?h|Ԯ?c??sr@??9<=?K>H&=հ??|<=P?_?N=,iV_jH="?=g{?O==r?G<60?%<6뀽@?1=@b>=b>Vp>xֽŘ=> E<1?<> -J;?1?]kR> xC>P<ـ? 5vpr?{UfU> PO?{%=.>W?W现l5??y;=@*?;=пA=lEj??}>,<۾?a=Q<"ཬ >7=9T0?oYC?庿 ?f$j?{@??0$TT?e92?F(=ke?T,T??<<Ě?=? -r?Z<?WeR=żzZ?|?'qK="g[?byݾ?~P?;aJ=>]v=5=n3yZv?z=ο?h]D?O?`)?v?a=v5T=OL?~z?ٛ^?,l={q迥|Խ>?rH?̇?r~S? ?nu?|= b?w??~TkP?m4iܽ="?-7?xƸ?|6 -?½wtݴ_=Ľ <5???|?>@;h?{h?=Ho1h?K&=d>5Sh%]x 奘t>>8B]?sa=MпMNl(_d1kM=0=eN>gu>nq~k>ِ?v??j|>\K >JW>9?>~vQV=hvn~>L0qz@>>?d?*?@y=.=o?[?|F;~=w&P@l?=<͐?y=~>!'= =d >Dw|0?(?X0?<}'=|?(>ON?m|?U~⽥8?ldUFE"p2WȽW@=@H== ? t?:v=&?u/??q x=>==Ov>=S:=`?医@z6=?´?B<8r`?eĿɥ?Oo=[?~b>t?=`=E ?==)<`'x\b-?^S5È?9?glH@Bd?v<`?rӾ P>Ʉ?.9|?m0=U0?H+ -=< VP>,dT=<=T?y -?}-?}/:u?Zl=:w\0>m?\M|?_?t?}@@.ȼ?}:?h輚0a?~;V=Z=T>>-c>_]q=_пSg mg?3> -m?|xo=Yx~p?\?ꑿ{Ӗ> Z5qD?ݼn=8K?=>9>2)B^?u_\=ۨ>c=Y=,@`?]?dN/<$=Z?v>KL=[c?t@ -> ܻx@> ^?jnN+ ->!΁=eSʿݿ>EO>.=]:D=S if=P5?k?g*??H@[XF> d=b|? +?TJ8?ؖ|?Ow%>Hg=@;|G@?޿q?:.y,?7?pT@`?CX꿇/F==-:?x??-9??eY>9t|:k`8;`^l -?>?}%?r?y:z?l?">:p?r;?_l?n?oZ?6=;-;ݾ ==Ԭ>7?=p>P~j?>,<5(?{k>:ЪSp=y^>Q1=[Zc5=s?Sh@zz7AƵ> D?pO}c?lY= @=c=<Ű?sƿ淫?s<B0?T|7=ш?}6=p=j=À濄:?wH=o=+>l0" ?h =?X=?unqH?k?lw?̦?b\?Q?н$>o4?x4?N)??i?ؼK̰=?{<=ɪ?vٞ=?2= }=?t=F@/?P,iX>< ??x@>w~=v=t0?͙<}=X`?Ot ?}?Â?V> -U> ܼ,X=5=9^seb?B^;.?<(?&S?|Uo3 ]w]Y_@O>C=:>$^? =d=Q@nW>8M?2?/?M+?zG=޽=H&O=묿E?e6οT&X>?7C?}mm=(#h>L?($SX=Jdyh6?Az$<{#8@?ݼཌྷ&B? O%?ts.?N=ֿeX=Е?I-퟿=vD{J=Z= h?y龻<@N=<׍?u&=/=p$=<> \<%=q^s:?lij?a>)eGg@?^?z=v;o`+?^H>%?g)@,;?6v=W;e~I=V̽ t⋠@?w1򽑠U|=@L=X?y=$(h??L?Tz)w`?tP=u$=.<= iRy=VXh?wer>?k $_%Rb=pIP? ?XX ![=޾O? -?|St T"\Hi=%\=J&=x=+f<``sE\?dN?~烻_o;}@?h=K&}B:?3=l??)?g_?Td=^?P?#OJ@2h=4r>OV[=`JSF?WtYh]p?$,nx/v=?΂=тk<è=aĿv*q?6=)TD}?'=Gb?=g>Q> z9=_n=&iԽ'8?tc;N{=O>*?*d?b4=ۘ?l -?_F=?Fr?>aGp>/?p?}=iw ))l ?=>d>> -]^H=j0(? H`?{!?w?;o ?bj]?~ Cwn?L4d =W?eB=?`z80?=Hn ?)=&ٔ?s0?1?yC?Af< ?,qi=?di u??&d=ڂ?6;ـ==+O?zޞe(?P[@?aM?f( ??}\?bC==\?4?OV?r˜?uG ?{?&BRJ`(?=nx?q:???X?w?֩]?f@.e~(y?t??WTYN>?Kxk@h?}$W=b?P>?x>=@L=p]q=}?.>"h=pf@S=٭+[ =6v|? >J}>y>(N(=T???v>, ?z!=n\eR>7=O?\`>l̮p?S?f橿]}l>(&tתPl`uxX=(?2=d8ؽ ?`No?#?Cw?<~=5y?@;=L8wJK<=G(ؽf`?_9?igzw4>5Ӑ? >?nS?|]?}?u=R?L= ?eh> J~ }dn??Fq70?l?y˘z)7y0=˪?u=B??<ʵ=|6?OmC?v2#?BqH?MyiE -Oۿq?='o\t4= -V=b>cm\=Y3=ݝ>%>a?ej?\<+fШ?2oJ<Ұ~>U<ggO?8>f -Oпm=>lTǿn\@MĽ¿{?7=R?q6d;q ?> -Z==h¿u?*>ຼ萿7?}=I>?NW<=ؽ٨?Y?I=Zi^z@?tL N='F==0=i?w*p:aj>FO?Z(BmAO#(d=?><4=.?->!?qz;ѽ$?=F?KR>=#D?ih=zN?l?z<@t=*Hl=2Q8=&?_:=? o?T?v>>]Ͽ=l?=kFD= -^$=;8?>է?Ⱦ ijC:?i - ?9ǽ?o^ɏzlTW)t RqTc??z?ޑ?G?GQ`=<0=bZ:acP<@=@p?a?_?뼝x>t?cd?#=4?u@iE?=: ?d)=i?m?9?Y?x.h>@V=~J=h\<>.¿> m?5+@`G>|>*?POR=@{t=N l>V4>:]=="?vuy>Ox?͊wYk60= 6="=z=띤=D?t??k2d===e=?~4l=2=quih=oa0?,c?#?x`=4 ^Yt?⺿Q,I̿T=st?7۽Ķ<5_P=G=ǀ=4t?rV7b>)>??ey=[00?v% @S?i?d ,0?;*]ll?lÂ!>E=Le?ϕ==?=$2?wz=z9x=;"?]? lJ=$<[@=k< =|@BE8?g@=4?Hx=$= -?g@o@;T~!4>A#<8(=?o@ؽ<k?jP =@'>17Y -??,?o=y?T$t?o -?nlQtEa?]?xt潼ؽ@ =ճv?0?o>#=8 Ow>k="Ojq%@(q&? <?F?*ܿ$=g6=*Y`]56>56?<=9>j>i~}j?Aj?/W>$h -=c>Y=y,? > 3=Δ@ ?kм=*LU?=< 0v=c=?<ǀ=nNq>p=?w>l?#].0о('p? ;g=~vH l?h?a:j,b -@K&?xJ?]?A?fcp(p>(r?7y?{<BBZd@5i?5:r=<ΐ?s6??{z=;>M?ٳ?iD?}Z<@p PW@b=yP?JiŸm?aQh?q_?T"?͚=ڌ ?X-?d&?i?xa (8?mv?c"@E?s?p$.?rt=<?r?o?K4??o3y"?zJ?.ɿ*2>bA?n>A:j=Gk_kf?=h?F=HH?c>_U=V?=d˷=?Wx@<=}l?,R? 0?t/=ɖir?x?gK=FU?Ĕ?7=)=s?}?==Na؍qm2hAm4N&?}^+^?dih?5=ސv콨M=y?:ـ??ll?mq?(UN>9 7P#? ==t=VIT?@LC?~?S???8E?f?JR?'C?pQ?X?t*%?p?kx?P#hQ??{i?+?<ԖP?Pd?k^=c(O=HxX}?3B?q??D>?X>v>wC=(?J~=>n[[=d>aQ ?2?sJ?? >DS=<'>d:|:R?wڿw>S>}-tGDn=x? YЃ>)S?A>*w?qJ?}?K~,?= 0?~x?>MZ+? >=v =Nm;{jԿiy=_=.>2ʮ=0<P#<,o?ۅy=4 |?Z?t=0`p=:; ?~"h -=?*>*.iР> Bb:?Q8;=.FP´?q$:=0L??z%=5?kE@?م; ?vJ?=d^=1E?gi=BY0ȷ?m ;yc=0=Rȴ={x=ė+(Ƚ%?ug=?:-@??C>J9>Hp>Ԃ?#>8]CPovj<,v1OxR?!>?$Mg>">ې=RI=rx#=B>\VR $HU>6W>opi&>H=8 ??5>-LO?`%,]=$?bE],B8|p>=!p??S{>m=(L?|7q>$?Uo?t틿e?=lztZrf=6@?gv;=yt=Ice~=?e?z?5>E{?r?B;?eh> -?V?_58 -?U fx?zB=i]????SS>?ww$?{rU>k?~-?~l=?ݴ;J>9D?UE?l=r?(=a b>q6+zS+?,?UPZD8?HZ=ج?}r?yF?&$?R3=K\?^?U0K=D?Mwp:?Wؿ_??v/?n??iu?^?㴿|?~޾2)?j=t -Q9>alؿ??jq?Y*?n3>4v=R=;^p?:?Q?X=ҽc??-[=w% ????xf|>x?,h?r$?Y<~v3=O>`>;7?/P?FO ?u$?>?<. <7=[=J爿y#>đ>>VD>+T=ф>tf=>.s\;M>Awc"տd ?(? <~-?d]L>e?V==[?H=W; ?b>\}c8>=P~Bd:?=f.0?<1sP;@?.? dyQ^?{?I/@?TX;&@=!rd;t<<_^U?YJ=)?zW= >|u¿w-UDZ3?XpF$>Dh@??d} ??J?w=WPX?u=?tp;``Qmt ?(?/S?*d:>d&<0>y?\>o?v_/@jl`8"=M [LA>IN;?=O̼ i?۲=/^HH5f(P?j ?~ؐ?=:?j??%<%`?RM%=/Ŀg7W?h_=J;@=(X?qS?@C?C| 0?p?8>zY?b -H;_ ==Wr?s=-= -_ =?d0=d>8YOsv=޿u`=F>'\>p=Xޔ?Wv?~t=Ʉ^=8=ڌ?o?뫿[>)q>2 P!?=;&>5=L);?1>)a޿0>ya<4@?HO>ա??=J>Q=S?5JM?Q>=[?G?_=eX?>?i/?T@?`>ܾo?~g/Bg>lR?r߾]p=2? qam1Th -=|S=ƶ=dڢ@=b>>3(<zbL>?^; -`?P>f=K=\?a$~׉=8<7?l#=}`?tpH|Z8?@??nI5ژIuAŪ=ѣ=߈0?j=̊xN"g(|??x?][%`?='ȿ X=ICӿg󲽢=x'?L=̿6z?eJ:9?{Q?D.SF9`? m@?lJ=%l9Ii!=p?kq??=(,J?U?g?|??_(= -o,[?{>`0?i>D ?sr(?$=rqq>2Zt0x?,\R> -h -?fs>===R$nKT>=kx9Fi<0v???MHh3?˻FZ. ??@>z9>Y>/?^N?_Y?p=>vþ.0&{=4=6?8=&Ľ~u=j 4?cÇ?Z<@i?Z=So=fp?@V=cH ?E[fhx?mJ;?ث?w@N Zp?w6@0?6<ժ?}@?gVϮ̽ N4=J@?b4?@鉛=l7=F >jt.5?Awt>?ps5h??w?4W=n?f>*~wq=>V=kz>+? l@>[hL= 3 >v=IP>*?w;?{H`=> c?1qtyyB?M.*?v=?ZE?Ci?ٽP?,p2v>=T?o?{#pc?c} =ǡ=?wT?l=&y?<(??NP?&?t^=Ǝ?D??w=(?}V>ZHPh?l$TȽ= - >m?Y`ŻnV`i =b>?o=0=Q??x=w=挽V˨]=?p&=K>=,= d&pp?2?k?b=<>$߽H= - ?fm=ך?L ?e?=q(,r ?{p?g=$?D; ?0̻?Y7p?[L?I2?o[%;5@?(4<&€?'3lzҽ`?s/l0;hڀ?i= -x.0=㿖=y\;H?]??Y"?d?dT?U:AWS?>&fW|=Y$l>>==>G0?>G⊅?;^z R?|=ʿO8F=$?>UQ<>gy)=R=k|???ʁ0Ƽ>$=5u$?}=7=>VS&>ujn@8}=>?c?y=l!< =h= -=Ń>=d)1H" <}?; l><,?/?S8*> :_>2M?=s,xd>=㼔`g?=Zj?X>4g==?4 .?>l?Zu?zac?>]*=D1;@ 0=\?`?DR=3m=1t^lH?-2X?h7>41?`ؼ:h=N?ul}%?~X=z ?c\:?I@FO3>z@Z=@?Kv?J=*?t2)??{rY=q??Tt=l?}ry~?yD?L?[?#X`?C\Dbо_<!?kU?-̿~H?J`$?i=p(G =SĜ=Ǯ2>>d2to:=0(<>W>0:? *8@?B?_WȾ0>Z>_nL><ۿaO?X=<>k?=>5&?x?nxB |A7ӿx=,>?KZj@^??= <=f?"?]|?o =?^?*?ng>.>*]<Ù`=$?%a?CpK?Zm=/Dl)<> rK>I0??eͽ^>E?K?R?,? ?mp?? ?'?=G h??|' d?b? ?_??Hxu2??H?c=ɡ;?i6;T@H?f)K=?X?Ϟ=ؾV?(a=ҝ"}?}=)Tȼ?r[0eD#0 jȽK?w= p?s\TtBLпAz}>&7.??|?1\?.==ԣ==>oD=\< (M^+=,x=\A[A>^G=A"(>"+?=r̤==ܭ~=??=>@=&mWheS>3WMݐ=|̿~?/ҿ_31@F??^=\=r6?w:>Xt>o?[=%T=d?8>p(>R ?2u; ->>[=)Hp>O?\>砽9Ԑ=ؿN`?qGBgb>fu>G>B> E?[K?{`H^3?{2ZքB:==a?sCp?[X??q<Ͽ%R=&"> s?^O6Ā! Ż@pd=u?=K?=1T?o9;?D\?>%PX?;Tq?V?H?0>U?z p`Qn?}(j併~V({=TY =ū=_J< =(V<6TPVj<^U? C>0> ޼4`=f,>?zd!^??6?x,bAB[7?65B>=P0P=?2|zn>`#!:<=@=,`=T*=LpN>ʬ=?~>Kۿg,Uh?z2 ?_D=?pu^?XB>Wo=_:[?j|Җ=<ؿr>&j?n]2?%`nU=P<0=½C_=|==GĻ?N?D>JK8?qeQn?*;y@OBjB簦>-ө?mt?p}=, y*xv> -EJ?Ͻ+t>;x?}8v˓=ek=+&ފ?vQ=R?Y?vP\@?t'?v=An?8ѽ/ Xl?^m??d> ռ> %: ?b?4?|bT?f4,?x?uڹĸ=t);?Z<6?iͽ=j6?<]X>=\?K UT;4`=et>a_;@=<z|?h>{?m?on?z=N? S.>Fm<Ɯ?z?egs*=$a?F=}Ŀ==l>!= v>1z#@J8<(༿=^P> [\<>G|=zA?Ph<<=c"L?@?? ? ?- ?= ش?N?`?=T?p#½ج= D?-8bؼMΠr5?{j~>`̘?ɻ?M#?zTrB?gNvP?Z<= PI?nQ<@X<?_?é"w9?|ohՀ?CeP?q6p?_l` Ƚ?CVd.0/8:.o-?|ʽ^P?H?ny< @ -?NC=‡]e<;=ؿr"|?zd??Vν?a=@!?mLk?:PX?K|S?rhBA5=#4M =͚(?$w+&>9 ]?ؿgiY{3?/iC> (>wa?[?@>_ ?w?/ZyF=-ȿhT<8P?>d>%=Ն<:=;(kZ?;?f?չ>d=.=\>&?.?ʽ^>3M?&?ݱ?w=="=([VY>A&R?wN= /X=H==4<̃=Hv1mp{~>.wV<=>~)?(XyU=$?x -?Oػx=RP?x <?<=ǢL%\n*2;c`=3=\'=Ľy3t?>/iD=c=Šd=d ?Y;=YP?cGBIxp>D= (~?=F_?m=?};Ǡ?~=??b1 ü"}?t?e?`G$?hn,9?s> à?\Yv= ڠ?|(q>e??_n?n?⤽\@?=ANPju?{4<0d==&q(?r'?>9? =`'|pqu?s1}>?nۿ<޿tΠ=d?F;}L?x?/ҽ?r~mq,X?.?tkt<>|p0=c;8BXsu?05=M>T-llZ>t\>)?f>A=Og?j3Kz=>>P|=펽p,Cewf[ :m>"?ƿw]Ʃ>ckzIgh7{տ]=j>0=U=z>">=kv =ҿha==>=?BV?cs ?֭=C=(?eq=Q> >Zvz?6=z>f^B= qnj{=F4?9?iӖ=)?p\*=Af?p/پ!p>D>ɕ̽M==?>02?@f;?IfؿI'w> _\>2P=Dx?k =P< p{8= ?W?g\OT=?[]?u+~\=: ?%=bn2=:w|?ou<$x?4:? -=薨=Qfzɽ}r=d?nq?\=~t?g =T?Q?hQ=kP -|?mg|Tj?}o@;H@?2<=?SO?8?|?t=f[T?Y?u:TR4lZ@2後l=<0 U?{d=XB JO=j>?qT`@k4#=ň?F==t=>'Vѻ)H¨> 1:/)?t>sf?ZnO=?1X=箽͡=-t=@>3?{;k@=ļ@^^PoE=*Lg;³ oS2?yM>Xn?xill=f'?T=m?;??v\R?Y??z?fh> %.jBc?B -qۿ#j> <&<>!0 J?)>#[?Bƿ\_H 0?y5@:BACB뺟Bt'A?m?lP?6?ҷ=1?x׼ \ ;5>S=?V?AN^=,~d -u:?\??P?; nTdq ?UG=`q?9Lԁ=6BX?]>C=*~p?i=x<=a??WΜ?Ҿ`==DՄ=@+0=R1p?L=E}T?`M{7?;l?l<@?<*=ЪA >%?bT=jB?]l_Ϳ8;@?g>J c|>+Ͽ{9XL˿)[<Àbk>? =sV'ڽ/RbNP=R*P^D=*mDk?~$l"=C\M??j8?='#O.?X?nL?==!?zcj= d~f=.>t =^>=?Wp7?vp;@ 7CuDpoAN?H>2hv<&@?1?;=4N?۾ ?Yh='<`J e^??Cc?E?~n8?DƐ?"p_tJ??j8뿁_ -C?}?j??rP=f ?=Q?"vs`?@?z.}h? <= -n?ٛ?u`?l=>(B!׷?i&*?e -?@9=٪?aпu'= нQt@=;RCA4 3 ?h ===MrF{0>_\vh==ķ`==?h+@=d|L=84=<.]?q!A=h>Y!?6:=1 @s2Ohh=ذ?k~=*.==m?`?̝=#?hYtMRp09*?t=F???P;>Q;c>\- -?}>V?tp=9``>@?F?xeL0L@??{y)h?}Jyeؽ,lh?wb#T?w?A?xO?A4B @1??-l.׽?.G>=f?m.݅=ڼhU񰿙(?i<н*Ŀ}=ƪ?s/X??շgۀf?@5=j=v?r f?s=h?j+ ?$?g,=sZ#v?z@>Q=\?Y=t1?cX>+GtͿ>X=<=KT>"'=w0?6`.=եX?\X>i?J;?>'==w -x5?̴?hǵ?"?OyR?f=]kj?Q#H>Otl<߉c9νO?|?\ ?-;=뷼B?w ?vF ?n8='ʔ=Qk??YZIJh.S?.Jؿg=9=kSN=,x=_;S>#?fY_/|<pbqanA?^g?\><0?jj@@HI?ž@?\l?嬲=[$?>u??ݳ?=W(uqF4D?f}ɽ=Ŷ?r>}?=(Իέst=;0.L?V<@6?t?Y?aKs?^B_???f/?R ?l@9`?b:D?I7<ޓ`X^̜>8=Κ?>f+> ~=I?w=3???=2=E}?Rqm>Xp?#>(r= Cx?iK>7b9}+?*=}?d;u*=m=hl9>zE>œ?v=ʅP=X?PྙSn{=d="0?vrj=S V?>Ǽ:G=|wa^~8^nT?P5?p\+"l8ᔿ]=^=70=}Ep=2̿|?CB?[Yr :?pLg^T?'??L?@=T?þy{?aT@ f?s<~л?=<ت=?^r?$?e@?_?bY3L??of?QI?Ƚ(??>ƽ5@|_J9?xi`>';4?'+?1 9L?~ -]= ߿=Ԏ?|?߶W\jӴ?yB=ÊYY@3?yN=*?\W?m??dF!"e>?Lyz佪@@6>ted >Teb#>%wڿa> =|>_?=s1ۨ?g=yf='M?Ъc?mοtp0vH0?=Uk?S>%\j?"pG!wb>)Z=S"p>,=KHPW @F7= 0 "p8tK|D?qt?nd[h?Z//\?Y3Կ?{?zQ g??Y?܏>=XL={D=TR|&ؼ<:J&?A6Vx= -H@>*+j?J?-ZԀ? ->C?}z?|X=ο:!=~.= >*S="d?kv[i>N=l|?etU?)=(?d`8={$cc%?zQ5=7}6?kԽS @Ӿ?;*Gu?fT=Lp?m?r =H?俁Ou=,}r=Հs:ȿb?hFؼ Р?; ?% @?}_g7a=Ax=CD@ܽU_?\?B B<Q<͸?c ??m6|?ȼ>WbAȼнuU?vĽּܿf=h?t?H?f=4=zv ּI?qeI@4?&_j|?Z.@?<=S> ?@=-0>*G=k^> ?>M|xO}*?M ?p=PX?u?9V=V=>4R>S@~¼ >r?彇P ?ך==^u!f>t>MQ_oxTU=???r{=?y@<1?z?x=?39;sbp^> ?=6J={<`=57?Q"?vnW&?x=҄_1@=|C`Pa?uͿYľ<@`x꿀^?r~@cԿuG;?6}?y~h<𿟡>l =a9=~R=:<2 -B==?C>.>@=T^=/ Y?}t=4(?P欽 B<$?;`?U#\ =LCXN?׽? @ 4?uJ>E>vUb<<(=Cl>_&\o?b?W>e?zV?f+l=?,hL>/FmJ=P@>`~?~?D]?wa@J=hmh\>w^<ؽ?;?}>TkKy6<{$tg?.=X??fNܚ@t??ck?=qP?f@?=?7= T4nؼ&p=Z=%?p?C=* =j=x(ֆ4=0h?s!A?T=V☿x??p?#=W?;u9?~0>{?O^<>7=ƅP?8? =ͦ??`=3?n@S>Kq^?߸@8?YJ??dz?$~MP?}V<3;0?aA=o?rE_?R?Q=`֘/ =}6?=<<ق0<>P|쿆$uގ>a- ^'?2 =vX<0?|"*?ݚ?rp=WOH? >?E=5$k>L@ O>R)>m?i_D>qog'-=oP_=`頿{T??u.>=W\=s|>A=l?n??%\u ܿQ$>?F>26UNl0v=Ǭ?㝿M<.>s7=8?)?xe??tT~?=Qi=E=ҍ@b -=t =L m0 -R? -dT?R<}ɵ?#V=?}h`?r=2-=PĽkz72 ?C@?VϿ?wp;ä?L><>f?ꟿt?C< -'?q-?w>M>1>l?c])(?S?"=`> <@8=Uʼ?&@5>5?q?tnR?j}=֌?e?y -?q?/=#bIڽH@lD=X ?/c:?=ׇb?C^=e>2`_z?r{?O}K+c?ڎ>46-=&k[Y~?q]?e.phVg =VQL=WD??1:?=O -?t?h=-F=A>Ø=F?BL?~p?k@ϩL=$=6=o=p6x8*?[U>?i࿃_>c iP}˽R=x#?Gcl==?juD͋?}x 2>\>\L?.z<>"ng]?h6% ?rz?z|`? k5 ?}L9ݡ=^͝?ca#PR?yf=<ؽ?{b?r?P;=4$`g,pkl`q\=>ON; >Mq>=;v>D{l>he>(#N==x܌>N ;n @=%>kϽ\=GK?mȼW i,?u>a.a -=&?r> =Ŏ?p΂~[S?#dP#=rx?U $?C=0iq=>-m=,Ț`??Ñ?b?>6j>$$?q2=l=Eg$?u^?a_`= \b=/ - ?1?>?g`u=D3ôl\=ӇL=?!9RO1O ?|\= >@??u=YB?I|u!=k+>ս8;PB<À0=qP=o?:\༧ ;B?iBQt\`?,1x?tu=yK̚?d?d@~>"xkI%[?>v?%#>6w0BG?ֿhіV?x= =<9`e=>g ?w = -Ŀ?s?d?=ظ +. -,?<( -࿉oH~==]>>>H?w7cx==FH?] -=4(??=\>^oF=>V?~[UZ?+?d%/?pw?p;@?^y?~`=*ݔ=D< oH=y꾧x?C˽??xdv콣p=Y I.)*?wP%?t?z?m+j? 澑J?p>?qlC?h] -???bz1U+<Ű{+hu&Z?}=P=j?u?ԏ=K<>=0ߕl=Kp=2?xV??r -e=U?T?%=+=h?>==᭽Ө?,@y?=@=*=?h>Ø?=`~?k<# >;@X2V>>KS0d>2TR~_ft?> |A?xIμ7@it=UL>^`?=5 =3ܿY >mK==cȿo(2?w+?o?)=լ??m.H輛qP=>=.?F?lX=Q; "?һifch?Ȳv?o^<H?_?b?{Ys=Th(R?zpvT8gA?=ƽ{"ngJ"=\:=yԐj}?ʿ4??(Ԡh3?_KzH=Ŀob=?bM? ?Fp?=N,A?=?mĂ?T{9T?W? 8[z?P?P:нrH?`|Ŀr?^^|?v; iR?v=ȼl0C:l=0=$?r?M6!?1俁? ?r? ?f*ᆼX=tZ?mSPX俅?NU=gF3V?r?f< -@?&o/+?v?y4н= Ƚ -?=$?0?rdR(=5>+=1 -=.2==v>~??|?e?>'VKT>=J>||>>'?e=$>4_<ݣ?xx2?i?C? |P>(?>6=?=(@i=H=`> P> -O ?PF 0 ?=-rs?+&? i?|^?z?x#=XkBH?>4~-\>zἿTV?`JO9<S=ެ+?r=TEh0 !f?{G?x:> /?k.nb?B;?2q2?Z?t??zt500?ZVO?NP?h=a=:?n5k'[>tR>_c?yDZ8ѿWP=r&>2=Ò =)=};f<޿K?==0,x=0?z,iZ> V> ->k> 뾒>??yk=ĿNм@Z ͼO>>>2HϠ?j=V??\#@BQ??>?ic]=񸿥!~6=@ 0?i`J@>Z&@?{p>(mO?s?j5?VwvRE{z0{=.=dxp;N`8e=@?c?ӽG,V=ެ?o ̬uR潾c\g}^?Pz?k =h?=<#(151?ᬼs࿑|?xk5Πn?p{j?c\=T?\n?[?tj)CnV?c l<RD@&}?9轲n?L~4vNHZ>'?r <= q\=OԿk~?y$?xȼ=?3z.<2P|[?Th=H=؊=RU4 ?UJ @ zbq =l>1[?[⿆п|߽$p?7 = =_AY=z?x=n Oj>%Y2S:4=e=BCP?v~>mq?X=gT?q#*ͽ7<|:@b -><_&b=?H<@`?<|?{O?o=A=}>^Cm?_><*dm?uҰ#<@>YW?S=ц;E?C1t>(U8?+C=L>GY?B-w]=1?==q7=N?0һshߢ8?kb|=п`m? (pP8ռj`==?Tz??nljk'?vh> -4|@??}[)>K@k>>b+=?uv? ?WmD=ȿpRQgn>1`@'m=ѝLv`?[,-M8=n?nKgx?c=ɬVg?x/=AQxʠO&?p.5BU> w=oM?C==̻?录Z -'$=#?5?QY -=.𿍜? l=<?S?0"aR<=pE@p@??V(`/H?þ ڪ3c`&? @޼(?m?q~9P?必?1oQ?U")~_>d=3 =lF?>=8>$x=?-<`,0"ʈؿv =¼Ώؾ]>M޿W&?{?tL?(R>мɀ࿛Վ?>?^R?I~>>fd ??@ٿ. ?˺6d?d’?ȿOD+>*=Re@©?= K?vL,?ih4Xg??}?u_o?{uK;d?w$?[?*?ry?lwy?v]ui?aмF??=7BD=n?q-̿`m&?k}=h>iH=,=Ad=#l?~rB=?Jd?>7?pZ?[?1?=6"/7 p?wJ߿?`J=v?\=f?[ȶľ+U)@?kM?d92?u`9>L?z?t ?w 4?vn¿ܿi?vz;`?1? Θ9r?t򝽕t<4Ƞ?mp?;C?#?S{.`He@2l?{MԿ[dpB#f=?LW<;ܔH?=Mȿ}p=٘=>B+Y=x=Rt=8c=r33h=p?>Z.>SL=2??⿆0=k?u>5Ek?XwdU=u<=AL?=C8=)xl2?h?v!?|zD=v?e=J???m(<=eYڣ:D; ?.Ѹ> ۿyL??̥=R1=S\=7?}=:p=0 -<*@ -Hxݴ =>,D[>H> };PR?dk@zfB/WA?r?OQuϴ?PX|Ԟf@@~=*?\z1ǽX8?Y?{E ?moΡU?c`2Z=s&r??oHsO?s>/҅?g?qP@H|stR@ ?: ?l{>> MO -fkC>?`?X^> }>n\SĿz?!?_̿vBT =,n>9=:{8??f۾4ʿ{???=\=B_>=e?}F'2mtb==Th?Eo>B< -Y=G=e?yIu=m?&P< @?-&?zj?Z?wD2tD -@=M?f2?Ox?~;=v?w=bCԿ?yM@"=b> ? "> --i)?tX?r2f8E0󀿄FK??7h?b?}H=<~мtP?!s?S:=j=? [?C?Q?s"~( ?D>?(*-C1@n`c -==T>=-8ڃm~'l=K=(t=0/tS>sd=;}RD|ټw( =Jb =74==?Wc?|?"~2!E=?n{>O?x+2`?"!~d[zl_пuD n ?A7?=W?C>W(X?v ;z?<`=b_ <]P@ֿcb!?ʿoa= f?~?1xkf/?v#Oq?^?dof?w?j|=d-x<C83oܾ$h??i}}vG=h.?DF̾'J4?z)?ܿD?i?|%?}?=?>>1?_lR?!?|W &<pcj>w?w =X*=Uq?-0n ʽ?Qҿs?t(?Kg?R?ic7tȾ?r#?my?M%BwC=F^m>7- =V>Y?>?Ed;Er?Nb>?M=?͐> \XT|>8>$qg+X??=(?wc>>W6rZrǿA$>O;G=հ>ъ?9~|?Y;>+I&N?k`L=?=^? -zܼ0=?/=KNb?M)? h@?}}=2S=d>M@ kHj`͒> -= ?=~nh?X?s/X^ԿqdG軽@> 9DŽ]"L<j?x?A0p?@<%=Qdq9>#&?~C=|?p>7D?-}?u=]=^G0="h A>:5?fbZ>?a*@_s2齙{?im??x'= p<@??k?kF<=[Z?L\58?<<٘E8>w?g>!By= 0s1?h{=@<R[ ]HF?t+TD@?Ma?<\<.?Tt8?ta??пsm?srX @2X>о@4?MhP=5~=R =o?\;= -ݽf?i?{=(<̒p>u1=|=?T?l|B⾯e?z>U4?+>%G=<7>by>VU>Ԯ?t<@?j.xA?{^??pHP.=KP=?$le%=tB?i ?ab==yV?^6?ue ?00kҿ[s-_?}hUaP=i0?f?9;=(H?=r?y\D?@>3>Nu*M̾1<??{fe>=z?=z,??[\<?u?}=ڽSY/0?{0?p> ?(?j;xwl,v!zZ?t+Gh -?sDgp?> x?bг> b?_=~T^l;@w@??<?Ii\?%4?B> -pv[;Mqp>*4?jo_*=A?:s=>QL=3?AP<>?L[="ȅqL=d.x?cP⣘ ->dؾ+?T??ſt?[=:?o½|X@C"w=js?u< =3G=zD].ҽ? L?i?s&??lK޽=6Y=sP=f3y<~@BE?~SJ?z>==TAz=eFiC[~==HuKQ\ -aZJ?¼&(J==JR.<?L?x`=ȽOՠ; 昆UR>V=>3qs<=kFp?z>dp__V? -?r= =?g%]j:m$$??v?Ű?(!Ue?w{B=KN?J HrX?D?U?}6-ޤ=O?:bHH⠿ſy>d<z?L?g?h$%u+x< w?o=2><mZ|=JNk c}<,A<ְ ?u?c~?P6tYV:b?; =M8\=LnԻt=!B -=+=9z?ܽ=Sؼ((>&S -g>?fg?lĽ>/M=C^R<@?v?:#? -x½)?꿇KC??Ș.uy=Hu㿏8<n'==?a伛=(8=mx`S^f?Q=]=6y,?eN.8== 0ȿoxM=1\?jQ< xJ =c(?@>#dɫ?w?w?Ŀz?}6=?H?bG?jˍ?/<=(?q$d?T @B?i=c=Ծh?~1->;=YT>ki ]!?uP=?h4B=,?^C?qL^C?t?@d?r??u?>;͠`gF=X?Gg:S??u*p%?P#?Eb&?p:Eژ!``;g,@rP?cvlj>T?3k>Ƀ8X ,L<`;$?pu?n6tG,;,?j@"?ZOX]<?o<?@Ѫ?_z=,s==?_gBYc'^C= -?m>?~ڪ`?kg>a zxĿwV?[?dӿO[>S?=fu@=>=<,>h =L<0qvg*c? >=xy,r>G>j=txl> x>5? -:6?iëxX==<=w> ?*{>~.Qοp]>9?w?>c> -Q??"r?~I?1?rJ=#vgs?jmS~I>=?Y?}==G??h~?t==?.ֿ^NX='u=fpvr1=݂?Lz3i`?Xqq?`h?='F?>5=-?`>NЀ?<{?dKYxP?` ?m,<=*\sL?_;TN@?zZU34?s\#@0?~7m'u?b=Z(i; ^|?>\ -?ob?tfh?uጽ%!=1I>"pOejD?aޚ=BhWNp=*=5\?P $?|(a0J?\rL<%H'T`4-5q?wD?&ɿv,Ƚh=Fn??euUH8?io<)?yаhmn= x,P3X?}ū<;`?O1=o?t}l?Fʽ{?hJ?t&u>1?}sV\?GZ?Hm>73? -?OVCོ|DB݂?^> G <<=|B>ɱ|M4Me?we8=-D=,?#o?P$rTv=@=Г?Msc?:Y@Ӏ>7>MV?7¿iY?0=B?~ -=펆k->$=Sd0>+" ?4RyK=~.=Ŀcl?m?v;QEпhP?8$=PP=Z ?`>J˾C?"=@|==XuH(h<뱰?/e>?Sݠ>:F:.f=UJ V>Iֻ0P?f==꽩l>{u?~y6?2?=P= >>t[%t?Ud:</=l=#uܽ9 -.'-?uj;tO?|@ t<#(?|=F=_];?qm^sD[¼K0?i';zԽǴp&>A>y}>(>E=4?dΓ>Ş>%L?,~:=H?Z[=Z*Hfo?z>3Z=Eʾ<<`;f࿏UnN࿇ڿyJ{MT>!_!;`== п<~?I="$ ">so{%X?>=[aпmEa0[>I =l\?xB=񧰿t ȿcC>%h?mؿ` -?A=z0_?wcuſii,=JD= 4; ?E?<=gfT@~g2Kpq=,?|J(b?r答<=l=`u??? ?|ԅWR??=|3e=8 ?l;@u_ =릿=fq> >,?Q8?qG=+X=$=X@?ktr@`<3(@ƞ?W=S?w.* Ͽ#k?U}9]شĽI,ǯT Mu?`9@ -==*ܽqԿ?j!?N-?TF?d%dY?r hAg=\=m? V̐b?= >W=?sĿ0(j/?>BhXj>3<>x!e=V<@?~Jt€xNo=|MrFuf= } >Qt>dvB;o`?HgFTh?ck??FJ%=,?s>?>A]<<3?aξPUDοC@<]; >z>-0p|>z?ax%^x@?f=;_@=C?(=FY(?me=U>?_?=z.?rs>]a<x?h\Kz`??p~ -^n?\f?rA?j/܈?~H?3`?IG}࿀/[h?k@T?g-?P<Ɣ ?Hu:/> ܿn=?^Cq?_'?lG?pſ@>?]ԛ?"??Z?l98s9?kƔ:;?qy_ =ѐ?Yp?7?SI?[z3޽?ft?Wn=ީ,?ty%?MR0`!'uh=j?+?m$?w)i?lkf{(6^?x(&Ƚ4:ܸ?;V@A@>[?=Ŀm-0=h?#K??3@>Ǯ>0?ܕY= -=ǖ==\=В?b=mФ؉;ݪ>7"ÿ@?S?>_\d?J -; i?nؾ Ơ?|p}?=>=οp(XB; ^of;?=ĔE?R=>*0?0=<-\:> cD?d`IwVFwm?$<%9?y?n/=^p=Pp? 0[16H ??w=(?]?tT<&@?hה?fh<{p??绻|=H?/!4@3 -v??7^|?aF2%@?߽;0q޼uqxe:yQ\>?"?o?r5>/X$Ľ]Ƹ_?'}h?p@WH<@p;=_Dx?Y=势l;=<>Q??=P_DW&Ŀmt>r=U?|>"|>p%?K콀P?d7c5?b= <м=Zh?iv>3!F?F?o{yJ? հ?P/?_ؿjV=Fz {?ļt?e}d <0 5(p(ٿ{}l?;x?z =W=^?a| &??>Xz7?j?*?Hg?E9}?{~ FA?ccP?R}Dj`h=%p? Dg(3;D>?$HļS>Bd?vZ{h?_o ?bi=orA<+j0?P ->=n??ei:`c2PlM?BkLSBs>O?e~?K$?n)=n?w ?@?j*?ڲYy2u?|<-{!?rᅭ*=?hwIs0?Rvy?rء?Nk"?q7`?t4h=<.8~̿e=4>Zk1\?hVUZKL?t%H=lX>:>m>FD=>QJ>h@~|A,#@pc4=^/DgJ=x?Xe ={,`>$=>AdH>>N~?@2>qZ̿prhA4C$@/tj ?e7>K%ǽpMWԿҹ =1y\?=Rhd=@T,`>Ŕ?u=*ĸ= 8I?">Q=@?"?w@=4?F?347@^mؿ|;yF”?v1?N=,G8?mn`@l?vQy>tf+t?=?w9>[>\&>tL?M=?Hgp(4kjL<<8?`x?h`y(??# 𿅚?S>K=-?Np?y0=qP^?Y8,?y19=_D B0CI?mY='g>zZ?uFm|Y=EL&?G=-=Ď?>U# =f -<`&s=^>@?lhĿOݜ>!X*>Xn=Z?uV<@?q+McԿb%=d=m$?} =ƪf -?tU$?;`?m=<<+e=)=$t=-"?<޿<[?傿/@@+@!|@>Z"=4?{D*?3c=W*Hd?Wçr9-vp??D=0 uO?|U}zp?q?`H_=;̽ph:1džn^H%O?g>t[zIT?e?}'?R?=?5оi=nLu[R?<)<?j?ڞu~?aDͿk?N? -?=;d?aL=Ց" K> ?{Q=o=?y?O?[(o=X޼s0ͤ`g@㽵p=x?>\?&ؽP=JD<ސ`?8?c?#bF f@?iTuCL,?= >;?='??E>hj?_???*\;)?m<=H=o$?Y=d0??7<h?q{?^J?k{?eFp?YFpdDv<2<?뽦=_>03c̾Q錼P>b?kf=Q;ͅ?>?^m򭿆u?<4tt)铿tW.K# ?vh?n&> ?>=wƿ?*=?zb?=;%=f4?j82C=?Dd@Ji$X_?i6?g4 -,D ܽu=&|=pt_?iQ?.s=?r?+?6i>X?a,x=b!=wP?vpUȿm?j7>~T3ܿ[j -=~ >?I>4pxea?ݿ\\wYh=Ȉ>)׽8x>1{=k?sY==v>/@==f?`?slT>(h?j@=ws?>~@=l%=T 8pfUW>8?=?X?uE?\L?=t<軺?V}n=?l>05z?~q0ra:`?ڿ?^ܷo=r,>;7l=?=M?`H=i9Zd[0??y$?iþ?p5< ?i=(w?p=3&l?q?e?WXe?q߾6ؿw?0?VKºǹ?g=\;5?B??{%н]9=L?=T?ü3B@X!?v(?r$V@@2?57` ='4`=?hl~䔿X. -<}p:??k?4P?;c="u(=o>>hMrx>!j0>> CiZ-z=24q.==ehE'|\=`>V9@m??(`]\>l?5@^=?\m?C?wc==ip|yv<> _+>Gu.x==al?m^Yi=s?N?xvU=7\=Tx>JE@$=L?mj:}> ->=ێ / ?=?juPmFY=mؾTܾ!?R@WA W?uD>Y?n;Lx͊?JM?e6=^Vᅤ E?}=?{?t"'0!6u|D?av?8l?Nu?}t?8s\aԺb?T&cD=*=V<-hx7hSp=(?n@=ZD?f??M c- -t>+3<=J>K>ZPhiT = =d?(f1>{>&<='?ޥv -=#=Xֿ=Vo2>=],`=UD=6/? f@ye?0=ZP==f9=b~(-!P==1=~F8{=i䐿u^=?e=s> )q3~=wֱ?n>=1=??{0K?x??t=&H=&?ҽ?5=c>G?u5?>2 ?maYb:?q'1?cj$z?s6?+? ABg?=N,wm?v?u p`?^?ENʐ=o&пL?2?n=?#WN?ah?j?hh?O=c&Z?{?Y5~i?`?tмq(98?,w0 (ϊBz;5?zܿ}/=Ŝ"m,?y?w~?f{p?P?anpV?<н88s> r?v?d?jz=ks?Xx0|P?h%?Zk@?p"@;b?iYK5.et=>?xd8=Wb?='+?Sd??=wػ4=쿆?ju=*Dk@=W:=??s}^P5> -K=Zh6 ?YοhrsJ?_?.b?Ind?k:><Ԅp??-o ?l>?eh4?U[?ڜ?,=P -Thh<\>=8=D?eN={Y?m -P;2 ?5=_Ŀ_1LtDE?e&g?A=A=;w>]~> >^)<֖ PS?fX{ 3`@w>(%U;@?zNB?yYg@==߭$'Ƚ {,?y?m?q_l̿Ҥ4?$?%8 ?{ ?d.<Ҁ?8ub]?pd x@@>j޿!oпZ_\=/}@aer ->TV= } ?]?1F=(W??.,H?oB=lھ ?{O鿃#;@?v=T?|?r%dpX?I=@B?{=.uet='(`2 ='Ƚ?8?rgMX?m;L?n61X=`?-@=k\P?R=T??e $Œ(=ٸ?7?i-ni??Z=~>?E?d=+ U6@ -a>)ɀ?L|?MO?xJ]1m= @>!&Λ?hDy8|A0?uP?f}м 0l?N?=G =4=;>59D@=}Ƽf=$=$hҿ=7=ŀh[\>,F==?Ay?oqU8=2??V?=s%?/z*??x떽#?)T>?=T=G0ֿI=z=<?u~?g,< ?4?y)T?v|? f};"<, -$bƿu.h=.=5h2Sv༶p>f=L?J<<࿃L(?qށT?j>[=5<н Q/=Shw쿂eC>_=\s=n?)|\y=W>MB?9J`?͕=\9?p =5 -X3??w`?_[K0B{R@ 4=L> ?vD?.?um뽤MvܿjBm'$??\ ?l==Ȍ y(>/¾н($=I?h=F&x?ȼL ?a<[?_M~ ?5~?n@*?zֽId+轌qp;?f<9`?/?oɘ<``?zN?Q<Zsx=L>`e?l0W?ts*;L@?t?v߶?n_`?a =Q?rik?T0[߿=Ә?u=.Upt`==vm??6>&=(?Eg>@?c=>= -=Ř=? ?$2I?|?cr=XT>Y$?~Y@+izT?=><=aXD%??2u=ɚ?#{?>??rǖ=3ɶhě -=nm^=̽=U= -x,uF=:?>?N4t@E_u=JFh?><"ps?~?~MÈ =`p>AZv@">h˿cL=Jd?ʿhl?=Ŀl=\" x4?s[?}_~=&H@=t >H=STl?|=\?p=\=8|>@s1?F־c=@=ƿuGR=i ==L?v@W?}޿j'n< ,@??=ɡĽpd>>4g?f=wf8kV-=_<==>/$yh|a&唿h) ?c}@B@B$o==?SkK=,=3N=s6}Sn<̧>jռ$p>@?h|=5|?Կw?Tb%S0?&?Z/?(? -Z=~@+H>6n?$>x=&U?SK˛>#|=%V?2 ?wB= =j>bx?U@@D=οL=J?x`=՚t=Ծ=Sx>Am9x?`?M6J^=?wd?d{"4P?^?vo>^?S@=Ŭ?ae?||>MRQZ?k=b[`=Ŀk=O>_Hc?w_?o7<`=B3Lb-? G^?v=?%V=;޼DA$w(]>*c_==s?z?H?=?xf?u9=<> xR\<|j.?z??)u?dZ?=]?UZ=RbPZ=V~`l?D?h?r]=J? )@\>> ?V+_?Db}=?yj?k?T&ѢT?Ky.D-?p<Ⱦ65t??\\k?pȿ~Ol?vѢ?kl=ψ?t?G?62?2;><|=Pt><'=>k?=>&ؗ>B>=ɑ>oj@:T9CAA=^=Vl`R=U>7j?=y{?~?qN=+?qb?5A?C0?>=.=*!p=KLW|?:j?I@h?f>=q3=]?!8V?4<=P>e0hȿp<࿀/?t,-<ݰ<=2? 5 r?qddWx=<(@%kt?z1ʄݞT?oaJres轃 h? ?t7T0?V==Z?;=>xb?[=D?qjJ-?w/V;܈?^?I=?5=k[8?6{¿la?}?v>?vj=W@yn;7={,;=?] ¾нӀ=٤4?Z=$(p>G=} ?q`]?Gh~=? ȿa%> -APB@~b!DLJ::^?A8qgi^rz>쿀p\Ck(fsZ'pB?g=0dr?VN.8=? -vT+=Zr=d|z=-t?vQ>@?=<;TpE;=F<F=xc ? -ڿ`:=?w뿑><{Yv»逿<7xX<?AɽxZ ??;=V?AԽA<=m>%=7`?rA?i??YA佬2uH?k+z;L`i]?ori?q%l=%/`γ<#оcu ֬?kR?l82>N#> (2^H?@H KڽW ?nw\;9@=b,r`@4?zӿ?|? Ƭlr X:X+$=8=y=Lm?i؂?= r۰6??b?&Πp?.=O0Ai=xg=̡佂l=|TY?π?=?,+!?;nlԽO?wƿRKux?=XQ{Zw"~;|<?xE.=xr 8px#Ȼ9@s<p?g=&нsKȾ>s꿌ҙr?"=H=Ir|$YGT?^M ===fP?w>Exwp@U<ї?p󽤟?h?oc= ?(!࿌^ݬ;Om<}>'JBa;=!P?e!g?!=e=r}4=W?Cn S=?2=2d=?Xq=>=5,=p=ljt>+Ď?ͼL@hT`?#u@M8~?т=??5({=!=L ?~r?lJJ-w=\==0=r?:dG=N<=* 3@>n-5==? -<8=?^g=m?Sm6=ǔ?<'P?m?h=5PH=b="8>w?8/?ݏ)t?R -=住Wfqʽ^\;$?r?]=cdH9 ?釾n=2?tV?)h?|=`2}_?$OL?'ŽٿuK ?_?PF?{R= zI?(?~~?s=?MMorƼ0?j6?fbV<?d??C?oa?bq?i4s|> -E>5>LC@?=9V$v?T5\P>Vp=6N"m=t>pɿi.=H= I(=[Ƞ>:6t[>J+ ?s~V?s<Հ=X>oӒ={ =@:tl:=ih8g}_X?׿q'?>eg>9#-r??i?c>P ?`<>?~r>\x`<{D-tݽ_W?cV̔?nk8+?6?A<=NjHc= ?k:;@~XRH`>= ?w$f0=6W?|K=0P?|4?r"?=S?ij??V?GwZH?,߿xW?'gā;V̀Խ%H?A\?3UXnƻW@~?q?Jn? =[6?3)iu=p -1h)w8Xj g^e`=s9 =YsI?:y+G=νex?f5.j?HGH <$ ?p?v?k /?ߒ??>$ܼi?>9=d>k>&0/>g=b=+<a@?~?Dr\=?rBh)7?4O`>G{=:U;Hm'`n=Z$? ?F=1{+18=$\?=ZX?5 ?l?}1Q=Gh /A=࿏e+?}(m?w{?~ I*= ? M?t?s?rh?o(> |$ޤw&.Aƿˡ<4X=ԦL꽳L?5?}Zǰ=1:?p?yi\x/<?2= l=W Qi^1=h?q.?k?w5?ySL=|Qop5p^=D;H=}tr*=%|=޽2T?v<ܡIngp=.Pu>?7=LH>T?s2?{7!??=6s?T? -VsY+;?$>>y;?S?p.Ů=L?\=Ė꨽/쿕ٿr?wzU?p =G@?Uǖxr;S?M"Iz=94?J~ZOaD=n@7gHW?>?=/mUD?{\>2WEA?@ȿd=J=[8?r=X?}=\??}=""=4>==>=»?~=6<S=;ZXwexh?cg'?k]==u>Ϣ??լ=V <ཀ|f?qW?gwz=пo~V^=r?~&?0=@ePt7}@$&?yG4@h7AU}?zU7QX=x+ =,J<|?o?{?;;V??Qp?zi6?x%V?zN??Z?f<ؐkg>>̽=ʥ,? =FX=b躡]<? ">?H?{.K:;@C["J{~?Y?KWuq2?dzcK=++=x@\x<?n`d?F\KҼ~|!;`==ƿZZ> $Z=u(=l?{r>oe=flk=#̿cmTT=j<?sV?nj=|=gjm)B?qeJY?<5J?A|8==`P?s=>ZuA=!v=4??|}=@P?H ¿{I)H]-==| - Zٽl=ő& ?h?stځ4 ?ս~!?j=9A=,;=)hnѿa ?=Hv p1M?mJ=Y,=K(?B߽<ү`D?X?M? ?yc=QU?ult?A[0@}}?t"? <>4=Cx?ƿv `?hCn?n?\2?lCh?G?gMȾо2<~`?OJż>h?d@Rtp>`̿^-w?)5>N`?lʿI!=d@~^Sм x?=tv?4>K8= 8MTY='Đ=XKHпQ>=Z=Vp=f=XD>=>@6ν p|?\~oֽ>o>(6j=!=>yq -?{TZ=unq~?p =J @=#==޻*==6>2&c `?Ho ?E(;Q??S3=%֘ U @qJмD<>*l>|<ph;`W<oYLuqy̿e|?t} `?6=e8=Q8?NZ=g**kO[u=M (>?eSп=ꌿ[mC=)5y\=V,=bvZ?{8*??MhF=J`pF?l'=C@?m?~@0XfBיA?a?D2= N?Z"?=>E=,?P5*>\͕? P?I?Qƾ*>ؽ&t?Z?[ ?Iʿ?n?BZ^Pk@?uv?P\>HvR\=H>@Zh>&><=ݖʿV>. X bpXH?vfO g?e?qa=>W=RT>gL<}>2ۯ=]:?_f>R>y=Jm0?f~; (==5v =h?[ "=п'5x?j=a?;?=P?_2=(=p=$=8>W?}!~Zo?pv=޼^k ˜,\?K䠽,=q"=N~ ?fƿzx>yo=Std|?\=>@-90ZUc=ο~ƀ(b?}?gOļ =,<ߗp?xJ?< Ru?x,~ԼмWztx.HX`?&d7=N[8=[=?c:=k=P?l+R=WOHv,=@?[]?P?@?vہ==:=.a~" b>[?id?_SBh躽X -0Q - ?^Ie̾/^L?n^~L6=ȿ";tnӅ<ɿ]⼿ ?JF@}(5<?{t==_f>;8m?\P =u>h\==s=/(=% <30\?d=?>(=H?=<^?#I>F=g{(i-=?xA<jSLTzw?Gw=Z'h> vb?J=1=zTO>Hl>4q{?W9$sYq?ywH=ҡb^E=$?r%=⽔=X??q*?=?{Z>Ɨ?? =Θ=?yk=8?SNQ=?YCz=ȝ=?wj`d??Ӽ|JkԿ?f?b|er>ֽĉ@: >?i2?W?|P=8ް#&{,???}v,?^a?y=JR!B?8K/=^k?pi=TX3nǸx-=|ȾY?L:qfg?d)a?[@?i+2?aŌ!(de>f=xR<=jH<@x?Dr@MN?=H?T =v@\#=t;t;-?O<^v>#a>dX=h>=@??p}?<l=BWZ?Sj>i>!-־;($?a*U>-y|i>ѻ0m=/?>Ikb0 =p=DDн9??'D<2P?\=p?+|5(C4=?hq۪{Y?hZ=q&پ= * ?tXDw>91ͽ?`dmYiս?ze?@FFvSj5=zJXXۈlܾr=(&?Eo?[Z?*%?&?{D=6֘=H>7WFS?E@>%f=1> <>==VP<=?ּAPL[?=?hsz^?l|?:>(?f4?nN=L6=?v>8?=_?T= -dJ0?Hr"@?}>=ܽе>3( 2? Q?w?v=?=f?@W <{?o%Ec:оBx>=8@5zD/?bL=?d^Ӥ>vXPE?l8?q8E<=F+={H?xH6?sZn?lϰrA )J?z9T?l~̽[](?_zk=8w?W^=?dž@>"&,P>?:z=?x=Ƚ8ٿ?[@=h8?Atq!?f?6vb?I>Կi(V,>9K>?\=cH?#0=hH=ڜ?Իga`??==ݤ?n=.?m=;+=朿gs==30=̀==?E dbR. =d`?пP?;??rB?o?!d_RP ?޿t6?ua= ?h?5TS -=vzP?½Вp=NI@4=%l>1JR?\& z^Ծɷ0?qˣ?=x=]ؿOZ>a?t??j?mjc밾N?Q6 ?r=B?iR$=H?lUz?'j?x8j?X+= ? c;E?:F?DJ=;\V>u>0>>m?z?vOd>`< >)azf=EZ=2=zs?<°?:j&? ^e0>=n=N=s?d׿=6=NomF>"[h?ea=$俫 =b8>PҔuE=eƿ0.itu(?~V?vW7=C?Xf?MAy?jԿo Hpֈ?x􃿀D*>^?a?a=[p=]=^=m?jU?^lrA]o{>6=W<=ۭy3L2p?X5࿗긿pKM<3`=apsl8>⼺ 2?5=lhg>=N=+.?{-=l5JY[?q>+?bi2Z=~N=VkP=]x?c?f==X?M¼Ѱ`b ?®=&=@2=0q4?ߍ? ſk|<`?)܀K ?\~s~?XĽ~i`?^L??Կnc?{??]V=&"ƿC?] <9:+Ko v?{=6t=цvFp+,0>p= ?tz=d) >r?S??2>XqhV\d>=;9=G9a??ON|3?rlZ=rtU8?m`?pU?|IN&?#lԻ~?z<q''=C(?no?s'`> 1`r?\y<=0??ʝ?s?p??}͖= |>a?S?|Fւ@=(8<\?Y q |8 6< ?=`=X]V3?ZIwU?t$__y8T2=$)(?YrP?^pz `>wؿQ0ܿ8?꓿ :C?u?V??j|&P𽷀ʄVV!?P.?u?c fIȼ|=4Y?w=vB+пJ??b(*?PݿFȽZ?_GD`〿F>i=x;OT@:gA?d?{r?~얽:? =E{<8 ?@8WA=i\嗸?z9G0<?py?UJJXPJ[=<=൮?:=)~?s=,>0&l>Fh/&?i?4N>?z-?:gҰc=>>M:em ??s+?=lԻ>??=x`|fؿ -"> X?_t|@ȿrp=⿁?`޼9= -? -?[~a=6?H)9?_2<@@=?|L?Bx'0B&?ɬ?g+u?db?^B>{;A{6?hs?F?v[?k=t2?zZ?G@g=,idDY*?+`AA`> oA=e@??Z5'=,}:&e`?zlqJd,?i<ڐ?RjsfBi?Ht?I>H0u>C? =Up<0?sh֣??R??~~`?K?TX^,(SH>s1O<\X? =TԿ-<%&ѽO`>?r} =*?z{l=7*?g.?x>i?o{Լ0?|=dh?zXc!?aU<¼;V?98p=tUܼ>5JC=6-?,|;>w9G4<`<> ?zqN=$??T`D=MfVQ&?̰S?mHb==[=?=?$-=пmྎ?>J D?kkzXlx?1>y@wA a?n x[?X_0=?dc@ֻ`π=;J\+2?y?|>H>րH?.A=/: <&O1uHg|v`b^? >=ez=H{XB?NJ?m@雽6񰿊?}v==;G<*`mkZ=ç?K\?=Tw>t?dν ?umvM?n??mn=,?ti޽7`/6z Q?Yg?I`N? ?rnx?4b@1[^?czk߅?C˾|jw潧PU??Z!G=1>8tmn[?A? ?p?Od ?ԱB=(K@=dvh?`nHlA=DR==@>O?yW=3h?>E?2jF=I(>&s=x&=mh:

"z1>ڿ?ؿ=(?^ D>`=?sP= ?"?{Ly?ս-ڨ?؎?%}7n?jd?KN0x?oR?[Lüx>ej ØqT?d0Ts==}\񫸿*̄?;㽓i?e?̋?Oe.5?<#p (Wp?==z?a\*]ǝϼP?O:锽d 64=,4?tՀ?x=?Yo=T{POf>)X Pz??T;=⿎)?eּȝ1X=??6O*??p.J( o D1@ePȀP7= r?_@< t=9Xb?C?=?i2y?T?2d? ݾf?ͽD?/*?Xtn?ތ뚿4J?U-H?cAU=8Ӑ>>"=M[>0?Ϳwكjr?8?=Th==Pzk|e^Rj<h?=M>WWYi<󧸿w>s)==TAlbųB=]!R?osK?*=~?m==1> Wp=<TjW\(S`?OX>*F= ->1Yz?DsO=3l?mW꠽͑&=VZa ;b>_(==L+&?(?2X?f&+;?=\?[< ?o?X$h?:l= -g ?e?']p?u:&L켥δML.?Dn?S??yX2?Kk? =pl??mX'(zLCi`?q?a0?N=~L=?m>s>modoq;^> g?uIDt.^>t?nR?>JD=ϴ>~x#@X->G>/^x@n?kt_=IVT=zX[SY=f=f,=>gb2=1={>!;=*v?z;_ < +?}?%?俊Ee?=`=Ώ=$=:zlID??|q<P?6=D6:;&=:P=o?n?]Y%?{[(> B? '?ڿHXJ??o=~?}`x?rB=B=l|پxp>3{+w=H=?.5Ę@H=?SAٽ!p? Yq4?{*uF=DdyX?zK -쿞]<_˸gƼ0?!Zj.<2ҿzڿq;??Ts?rX)@6??v8l?lľ"V?o(R?n =x?N?l$?(?p >4>?=2B=={ؿh#?Soϫ=PڿmR=L>$q=z=OD%9pZm=@=F>2:cra??M= 0? @=5pV/8?8*=BԽ0PpI`=]6,=י? M@=~zNҿ??[־ݚT?A=Z?i蔽~лKH?=H`$01?| ?rSe@d?a?wzp:<={v?Twy|^N@L??fk??f <p<80?=\==<=öfsппb?o罱?fyaC0?h!+<.t`:l?`?t;C@ -?0>/Ǽn`oQئsWb<@=)ؽK0=.@ \, @m7=(IapJ=۬V= |?5c@ -si??&>,j?mه?kiinP$P<-`Np:?v = d<90?jk=ܾI\>?|=(D$`ClI?wu^=Dx \B.=!i kaP>>Z=`=CD'?m?Tj\؄?n??<}xnR=?=6>?;?0c@<j1>5Y\~>Eҽٜ=B?p|- ; =%l?>O?=ׄ>&5??~<@HM?"˵?t?[>=z[6ϩ7f 车n? V?o?;40?{?L f?dx?2=Jr`H=T==S|= `<]2=#?`_E-r.W+\𿇋e<:l=<1t=ς?Gr?|?ܿv}?=?5?~`>_7 ?ۆ?{N?wݼ P?n?7>n<7 +xu<#@%t?䙯kf??}s?ggT="=TFM=??\L=lp#C?|>ntuя?A@vAAAv@[tqm<Mtw_n8>E?rR:ňiʿv>08= ;>c}dܼq?U>:O7;Wy=NgHl@r?>P@=oTT?F= O=Mn?0$}?lR==%Y? >TJR;?@:{?h̾ZR=%Pt~?fxn=Y0?eF?AH?| Ao9B}p$=h?3b?h<0?a|<?f^?K<`=?n8v>:4^*Fƾ5?jﰽZ?/<`?y<شh="Va?F׽Ix?v34_?n?^Gf-?o=9B-K`}=C?hkXe?vA @ ?[RWd@ߎ?n\D=I?ꢿ%$z==˨?[iY?n>=>G*XbŇ ?y=[U==^=y[Dua?6crRm>.sfÿv?0sr?TοVGu5V?hMa,>p~=L=Ŀ?p?f?d=>v@N>u4?f^gsi?VH?zD?=<{֐=8@@"?Bn?|<,@v?~ud@+?vJAX|J?l*?@wQY\?Fȿxe?[Rwb*>>&P= <\TC>cd~>?^0<ؿZ?/wv? ʽ0R??{>yhVs=M?yz==j@a=|?H&=DG{>*=`YdR>t.4t>QI==N?~~??^>>=ڼۀ?~hi=?|?ogsA=z;PP=EQp~8k -+.9 -lp@1?7=7B?u><>H?yu3!?½(?\R?䛿iٻ =V(?q_?c=?g⿊>y5=Qh< ;T>GIC(?g,uv`!޿ߦ=Nr@=Lg~[rhi=ޘ?E?qo?ڃ?҅?},>ky4F;l@==h? <݈=7x?)?=?v%=^=<>=x=<=6? =$=ڦ?:<`=\'Ҽ6"`a#==>._~ S>!F?d>@ -0<>ep?nĴ>$f?dyf?Z>@?W+%gn<?t'u@= >=M{=5L>)?7z> -kҽi@`?{?ie==jnO+4=^x=p?GH=4;\ꀽb?b7=.ꈽ=`t8?Cz> -!ֿy?? =x&(8Oÿ}{==M?d=~(?b/@h6W߿}??RQ? =f*J=fQP?>.z/>!5> >Yx=Ӣ*?= -Zx?|K=ѐ^!*ؿqlVŜ??rd=`4X<@*n |@ x@?y==DA?thѿh7'd?l=X\9ƽL1PӽD??=x=@?iHr= H=^?^O@ =мRh=Ti>0LTϾ{Ш?҂?j=*?GY=}=,?սb=Z?J>3{?.=@kHc`=I]j?="^`v?]6G0@l=b?dڶ^係e,@"{+@o?^/h<@k`_-Nt8?m?ȁ<Ҁ?8?xva?o=0tx:`Y?H -==?t=<\?LPJ+F??l= \?s=`=<<>$I>FY?24+?wjF??b/?6?v*?ֽD` -1w ֻ=G|zs+3?ǥ@ebj?q#<<=lhh?@~??_*%@^?Qlv=4>J?zG= -Vo= P=\P:=/?Rrc?*T` =X=|>H;f<=u?*+?|poP@= 0??*AD?`?Y=>rF=SH?>Yj>o?3=T?|"?$V)x/%'?-Q*$=wƼw??}?}}1=j!L8?n_?OrF?x¿wd/??ZvS N̿\$P?e¾x?N?r?U(=γ=z0B.0n2?a:>?m?i2}?>nd=򠿑x@<ؾEbSuezsj??[0<20=̌?l(RT=2p?{@S?b\=5:7Ќ?q\F? %C|?d-MwzSP=:=\?w)JD~[= `=t?ۗI&@iCh - ޿(i"Hˆ[?L.=FI4>?wV-L=x>"sp>X=>g+ ? i>g˿nvJA*?x>,tpK`= U=c?j> ͜=˔?z:3\;&=}迗J#=E=?|6-s@: =!?_hS4=tQ *VH?65a p>E=@ؾP@N?[)t>W=zF;?$>bVH\?~?t"lC<0?hH`P=Jnz?gW="=nq??P?a^=HE\<צ8?|Pr><Ź ࿁1<`޼?zEν?5z=s;l< X?]̽οQ>櫽դ=XX?^EdC=nX5?v^C?=xi?fM2?<4p=ܽxؼ;<;:@=7=2@?пýN?hG_݄?Sƽkl?m?z<[,h=?pRvȠ='{(*^k kԻľ5;NO@=?/ܽNv??$???v?r,>rd*:OP>!m]wN>Ufj{ r>"Yo?b02?>`i?Uu[=z>S_d(?b?^ft@I^$?oň<а۴?nlO%qH?ZԼ?l>/#Qn=LlDJ?!<?=hڿf?:9?02??p=n?|?psd?sTK=R`?@?f}׀yy>@>ޔ=@o#{?y=}(8=Nƿ[>=[d]=v?|1?Ai?N>3?e|rsʿex==?d_=.= ?z?~[R$d?<5?`aJ=@l=Zv4Ϝ=??xQQyzF=Id=,M?s*>?|>eռyugFJ?(Kh?B=߄?Yfw1?wi8H=x=WTWbp><흽?a=:Rn6^2?P0k!N?5^?߿"?nuVQ?Fz?~ -hw쿁բ?[=۶?p< =NR?0=K4<| ?sO.?|y?sy)?q{Z??hw?g`>uԿ0]>2Y`<3?|e?kӮkfbȿVq?;e??r${2>, '.8=QV,i?C=#=.D?Ew|+l?"< ?5?8?H?`?w?=j=l*B|<LXʑ?X>\N?ƾ-@ ??c?y<(>b?|j?GB/=VP= H=z?6?pcT?{y/?S&<D^ =޶܆x?_~Q?t3=h?h2귈890(?oj$=8޲?lF`?|?R?(9y謿}~?g@.?d=x?v> 4s~ UP? =`=5JDw?$:?cDӆT?z8+H2=j?c>%[KT?`~¼h?)=~?uB*?Bif̲?ݽ/)(@ pתw=.P@5<5q>?p?P?!<;`gA?Xy -=͞?_GVr?ʽ??_S=m)~A,?ɿct=|= n=F΄?Vnyc{.=WW=7z?d>n=/Q= JN=S> > `-?q?x`>fG}|?c%?{m^?d?\*K=ߪ?Y<=7f ½Կ??IXX16=O̽>?w?Oo(=H?J69{/;-|?~'D&?IkD?n?pH=3?6G?|=L>@V?cG=L@/R>4a>)D>$?ػrC??=B?U.>H=Lyd]jhq>/,ǿ~ѿ}X=W>'@?wEIL<:.>==b =h f;/Y?t=?x=i2p=FZнnrAylX7`@= -;;{ =޼h=vM=-j=m8?Od ?M~JXо?V -(ҋ*|p/ȿM,.=v6Z=J%_=Jl?K޿5D)İ!Ou=?1O*?dC׌?]?MO?l*==轒R?x?b?e=˸;J$@kd 6?f?y?aa_y?ӃjW,?A?߬*B(?FinB@e?=:V?[{=<5R ?S|?D|>k/=+࿪%_?^=۳?rq==Szm=7X=y=.=H,;y.*>#l?~}bH I;=ݨ?tA]@ ==|;?Z?oK?e?zX=?{?z˖= vh~H>ulw ?oZSG}f?2мbOB|. ɶ?d?5?|3DoLb=i$?a1=ޜ<ן?=/0?wLf=)5࿎q?C پ=ĿUi]hH?S>?f3<?x?F,?/yYs <=p>:j?x?Nz=q?l^b??ru?vXګ=(`?JUxa?XM<?V<0=?]@|?=w=嚪@0x?R=GJ?&<8ldh ?glF3؈=$P?}/{)??'ݰQv+?9νA?)cbi?cAc?ݿix ?d=OS<nhp?f2b?̽,1Z@ A*`>|8ta=Nl=?T1?o>Aj_?w?=m:>cp=t@=b?]=ELu<цh>= >$>b=?Z_p>#97hH?熻l>~>C#<2l}=ll?3|?C>Eh>}[b4=b1d?2zwi?vV>8p>5k;@<=;e̽mx>=0r8?{>nJ? ?zh >̢j =2?i\rO=l??sϧ==D?=,q?L>9E=K>=#?!?v< ?h?wk?A=`yV?^P?sT<=?r?s=ۮ=F?p|?t;Y`>܈;@L@>0=""=x軾yZ6=f=&@̽gQ?j?wq>+.IО??~?M?/m?]PF?W=b>ί?q?ewc`wlT hTPo{BV?w?oP?_;e6=p?=ʽ~> -۞>,"?T*|>-N>a8=9A A:c}=|=|?U?>!,}o@>S?c=&H== iL<Ѕ;| ?l>!OCf?oL?=K$U?O͸>$v=GP==)$?/>V? r=\=e^PI`>=tK o=hYXS=Ll=v?9J?2wـb3iogg:j/H??b)=Ih[?~(l>&480#_>;ĿgxнH?|,hհ?d? RDŽ|V@=v8?~c?x`?9Fp„?rt5LR?տp?jz;Mq?h>?`?R0^#X -+@X=a>eI<֨?W=2?JAQtB)Wοl 3=6?^?h?y=>:sH?hg? >i%=r$?;op>=A[Ŀz`?<\N ?vf?L?Cט?k?6?nXf(H?hQν5a|=|=u\ HltR,x?b[H I?˖=A? ?|$?Ug?kiOg?|hmm<0?tM࿂?d=DD}`->ڽ9W?6?_пy?m=Ԁ=W^?k8lP=h*4@2< =X2Ͽ^Ŀ,?g?n h?5?_ -8?G2$?YK=)`; @|?iO,s<Ӷ<Ӳ?D0?f?y=?>Ը?N_?H@;9W=^?O=t?wM<.wyk@j>;r_<.>mɿ>lq=3>|{?kv9f?}A}MB eCZC@:?z>;C>G>h=?Zaմ=QN?|>.=Ƚxg(ֵ?i?zs?H?\xjps?A}?%ÿd.F=3?^?p%@Kd>u=?t?bf?y=qr6@3;O@rD,6?re?y2(XAZb?~^=@s=?=?{s:0=/6+?J `';|=>4R\ -=~;)HX@3Mgp(?{?D?To? =J??^މ6`<`??Y[?Vƭ?˿?iP: ?y-迓\4hܿD?mLP?hUd?65Zȿ0 -e, ?7?We??yv?a?|Z=[@f@\=*n>.<48 ?^8?sj*?g1@M0?}LSpXztH?R)6RoQ?@>~AeB[>^n6=xxS=HĽ"=x Lp?`E=?ҽ3^=P>w>8><*|h=\?r1?ʔ<9 =>¼LpTḧ~+?|d=&=X7RX?K9H?@̨ҽ8=J4Wy?g?v1-Et -xW?Vn],<{R=d>΢=ؿv..ڽi<&;$?\!a?#Ȁ+A >;>|P?kҽY?h3=f`>0{e?>bտU=RW=k?@> -,?)&@> < 0v Z=K?hx<=x?-?~@?>E<-=#->ġ?EK|R<{h5?gi?a=8?{@>t?{Q?T=?|?V=5ȿR{?Eh@ m=?/;p=f@X(>Ƚx9%?lX?bk<= E+Pi<=04 -?]8ĻՀ ?z0Ga:_x@z;QX?E<+p?\k?z`=;L?L?X={ ?DRXΖ$>=?Z]?};Tu">BU=ѾT=\9{̿=.?m=?Od?;tKy%=¿}$н<@?i̿\ż<p?w=8|D=l%?~=@XIO =8=.0~/R?_F?r)x=:.̬<Q=?1?p#.WqV>;=H?w ཮z $=7h??=="CXD?aM޺*?L ?|0??|8=82`?x@W B=[k=댽U[>gʼ6ʠ???\m>Hl=o?Hh]^&<0Zٔ.?Eg >nz=`qn<@ng̽>gB=ݰ_ =B}(AFb=A]f>C5y??f==?=*?Z>??~?qg=Vdx?nV>@=̮P=A"<`w`1?fټՅ3?sP=#h =?̿w+>=|PYvFp?sٽWP*h>Y?~: ∾.f?md@P==@?_GCH?QMs' ?x:?L?[i?f;=?>;?p#==͙?t(?V?}n@:B'N?q ?5:[=W %?p?t?X?f\;""V<<࠿߽ =뻘2)X+I=Ⱦ?-r?vؽ!y?wu=D?*52M;?;>e?rM?0eQ?dW=E=p?DN?a~?mD=;~ҋh ~=L=h?~~K?=Z=.?G?.`70?xD= i?~d?l?4)Y==Z̿s_7C=\?z*z=?P?? Q!Ut]=f?W xh| ?U r?]P޽迆h=v!?cPoP?vBB_wW@;91?>E?w?}Ơ&ֽ\R^ﴽ\R=/06Xt?8Ŀ=rH?}^‰?_7P=` `Ԥx#JL;{@?q7_^+,?#t?SKP=1?`5??C??W$< -[p?Px H?3DU|<_<;=tAlo5?d^M>-輰) -|L`S? ?8Q=?&d?`%?t=$ Cr?vD?? .?=u?y7H (y?-<|yp8?'̻@dܽE=8>Ad<=K?g>^MCd =< =ֿԅt>cu?+?s > >zB=vLKJ<א=Qvp;kst8 ?~?`b?p=H?@?o憿?i}.?$9?e]ȿ?SZ?ol^l@==P"Q(&9=U=">=xϿZ<?#=,<@2A՗-@y?A==YU@tJ<==0f?% /?%j\=1_8> +>0R>Z5 f??<`>;B1pNZV>bm~#~Vs< <@2=a=q>lؼG=#<@,c}?ja_n]d?w -;BT\e\?ht= =QkqA߿=Dōz`b6=6R4CiX-?lE@?Qn>]+<x?<0?|_Y=?o< bB?J;=P?-$??I?H]G`?n$vwg%?Y =i;@?vX?u'c==?>C?fPT14L:fJ?@`b+/od].?i?u?Z?iG?f0鿉?х?\zƾA?_VPؽ$%H?T}YcT5?OIE=пx"3?Z}Ծ3h4Q?~YJN4p0=be=j=g@?}e=8{???f_>C>ff4<7Zy>R??e"=8¿qn>C>'m=\{dkY?zM>?2:-=<=?z=u D]o=@z>25?+? ȿ -$ qe޿gN=r?r7>jq=2~a?}Zp?lD?~J>(1>> ->vOXnf=gTl%b#?hxs=b?z-r2!`d5=(>;0ze{ -=jHDh_=T=Y^?'iJ ;2?9M=L8?=$=Yx=m4?~?uTܿhཚGh$ n|*?w]"?'d?wp"?% ?궿ަ?῾.j.?W5U?ih?=<`?yn=tD [ =/>+=s>.C`BLbCwJ=T% <{]?om?{=3VaƲ=c=P?xD]0H콐8>M>*>T:> g?e=$PsW2|u~|<=pBt=԰Yw6=70?{ =J?zh=J?=*3?v|[=Գ??gClr=?uk=;?Ѧ?s]uo[CHz\?C?$?W<=z^ܿ>((L?e@=֖?}R>?a^P?V?=A=?\L?Eо St<?ql_?՗?B1d=3B?|?k?}]6`B=b\?p T:?=>sa.i]b(=':ͳ=Gؿqn=\P~;> =J?|?nI dqj= DI8=(?fX=ڽX=N?X>,5軽[m>W-NZl>$窾t8vj~cX#R係2??{Y|?Ksz=?E=]=I?l?jFG?wM?l<? =8=9P?xfBwP4Y - H -&;?QhսнмȾ =H6?_a+?\;=?9,J?gE?N<'thTh:-+BB*-?vV&Lp?q"qP<=?H>Oi=<=0=z0lP?ip>`<=o?!L >+h?2?gkh?|L>?=?B>fo=m)@<Ԑ<==h?a==ld>;?v?(.> $>Fs<0( r>B?>!H? UH=Ep=B==w?,]??>!Y?> ) >=E]m> ˿a3zf L=={hX7Zl+=9:$=`]ȿejB=ɺ=h ?V>7|2>׿Ws>_p9"?'<0=t??p==ֽ=G0C0 =1F@<;@?+?&?h= dCD?El-vev?mY߿y5Nh=UX/h @6?9;dH@=2x@;pd7?}v?F=нT=56K=<P>!ٶ;q>E=`=Cp,yc?w)=k?t>9]S>N:<20="mV)f=S!=?Uf|cW?*dې~ ?=z?t?=á*r2lɰ=y .k`?n\B= ?}$>p奄g^DB?w{= =Uv^EL>-?b,Rƥ?J>>?Wؖ?ȿvKM=I@@`,?E4?tn?o# <#?QOj%l 4< wg?}%?X⚿th=t=-HO*v- ?9A>X*8A?ul?q=nx?f22 -=$=N?O" Ƚ-umZ=Aܿ_ 0:?_?]bxN?P?%U?8=鼤?q/ks?rb?b$(?~ ̼ "?6< Xnv=j<?J׽]?g$?cg樿mܾ<p?o -B?e$P?r?F=jXg@t^?=BqAIT< ?=[DA>\ vm>3#O?#= 0=޸>1.=J?*>\=>=^s=آj=HYrF>#;@=m=\? > +!?2@=ؿtSZO0>@>oM'%=ԏ=z>P|=P{cmt\\?od ?խ=;=I-cL<4=/l?h>[ H=b$?="Aߒ&"=* ??pi1`=ZL<8=R R?=Uؽ=ڂ?+d?RP<e?}rp?=fH@%Dz=?h?Ƚ=M>"Ž/ŀ^>k=*Ǭ}?d:转~lJ,=@P?5??;"=.DHV p=+?r?_%0=}?x=,:9!=܀s?l??&?ij/ =?N[?qB.T?q%?e=#|{!?渿=6#DWm=M`?v(??tY9y?`~E? a;?s?99J> ?bEWjm`}v &=2=)Xx??h@4?=hl7{r=͐=м `?+(ӤL?J?[9%?{ ?p `?轇w( z|?=?W;?N$?iG?yy;?eX==||b>a?'J=R>>Q=`¿_E =[P=He?r=ffH:>8t=b>?H5=>5g`=<?> 0bYf$%V==ϊ=S#,}<<7P?y3=Yp=U=P=)7dqL ?7??u -h?9>?$??rRL<"?.==bb2L==xs??{s=zsp?Wd?n=^DSrr??9?ez=( =u2?` -?N}k=S?w=?b?]h= z+kO?Sy?wXr?O0?|9.D iP@e?kyR߼?<*?T=ڶ?I4/N?p??ܿ֍T?6h?nĽvGؽK?Z?A@,]5=1x?ff??⿉_rzQ?u\:Hch?t<ߧzCˬ?~-t?t_0@Kt?XJuI?DrQKBξAH<ؿn?h ==*9?Vf=K`<<=Ɗɼ>O=ҹ>7*K=L;K?Yr'?V5D>#zԿ=u?~j>?J?y?|Ž?z%?nz=}Pƽfd= ?SLP*VpT~ 0B]}?NCνпqX=6.B >S?龡4?>S'?aN?Qn ?"y?ySνkhx`H%>0Z?tW<`= ؿXս=?_?4R= Ș?8۾4j?0- =?|⿄4ȿ|>"=<о64RLY?l9<Y@?~?_wrd{S== B]=ěf=7 ȿI=L?^t/ȼ?k% -3E?}Fn`(?i??z?l?k??}<пj稾,аV 䶴g̿]*&?uB?`?O⽺@m ?nC?~Ӆ|=?vz?> cR?;%ܔ;$`=L?[$6>M>!uT(i<=R<@>L 8Tk>VC>&d? mn>8[pC >s=>/z?>F뽞?x7j="0нb>d=bR??= \["v?°=; h?v>i>)?d>{] -<.=X=$0< ?ox=J?m> >>Jh?=k1Qpcx??Md?T?L<о ?{F=K=|^ྜྷ??sí?V߿*Qn<ՠ=y> V\?֍?~]?jVm';?o޽V=I'`?o82: ?5`?g`s@?=<@~$=VP>?q>?c?|=ڼ/?Joh?s?Y?hqֿ|8ɽ(TjB/ ?G@IP_(g=ʈ(<0dֿp7A=u&=F?J5=߆diKZ=]`=g=PUC =0TQ?]֘={lY,ֿ]ֱ?tןE(e<=?#D=UL?t!2=t<.?nXrL\=!?<~=H?}9}/zG?{= ` 2lļlJZ?^(0A?g[;o;qh?|jO?.(2Ľ{?G=Pད?cpU?g==yt?q6=ND>!7[6<㛰?Ŀz2M?>&?_x)k?0?}OE?|ϒ_>Z9E?Ԩ0lm`iL?x" =m-??𖪿?q(?38Ęȏ]D?yK66f?u)?c)@PkQ?h?\6?༂<߳?H05=͞ -?v+3J??hRd -~?aڤ=(?>I?`?h=JpuP?Zp@?h?SM?dG?eYwh"=d?TξW|= X&>H??i=e|X=]j?PHUm p8J갿_B??t>?vj>Iu=[0?#%(jjf?!4a=N<4ȿ%o?/a=8?9.V>"C@?{>n}==0ZJ?v&?̽y%=*q%b?q?tY=}hyx?v;`}?R(D0?nN=P:Z6?^Np"=;}`@6: |=)?<6 0\Bm?=/?x?E;U> gT?k?pP_?kA3Au=Q?q~7d轫hFC?k?]??h> _-:Z`Sp=޿7mM47<=vl=̿}?~⿇<*5?|bpr?d=D! ?Bp????H@?dys< ?0?ZjO8;@=- nY<3*.9!O>s?j>O-x?c9?Tʿn?&7C?928?~=1T?S$U,n?WN͓?=.=C&?"?O?;y@?W󽡌ȿr⾎j?y|?F[:-=uԽN=W԰?Rz?5_9v`>>o\sXܽv< ?xF?j?[;>b&ب=/bxqݻ`x>=NR9v f迄<|?0`!+`V!y<K?R@?\@l_1.BnC&^Aν?Uɫ?c|L? =ب?~C==q =pԽWM[xF?mH?~,\)?Z -?n*?bXKk?`|j+춐4<~运"QH?frN?|ExW\?|z _ y?%E¾?pʽ5X?~?q ?]?J5?ʏ=6ƼP?x6<?;??n?]cW;+='d>D =(??~>Pd=f[]q>F?x3=G==!t4?tV?Xrє?tZ@A?偬??=}z=Fl??oGی?W=%}z,?v?u+ {?==U;`?_a2=lo`jh;(?|=ʜ?G?sjcBy#?=)l1(WV翌3x? -Zpgd?pR?x?qѹ?VQ鼱 ݿI,?c^>e?o -v>d?_D?Y˽Q - L=x:A?̯_xp<?;t?S6 ?PmJφ`=}skĿ ~ӄ.¾M#+ژ~?S @?)dl?Q?/3޿{U?h==p;cʰ% ' -??tIW? -~ƽ~ ?Hlȿ% t?0x=l?_οxľNbl7Dh $ dp{F=?s?UPy?9etx*<,(;?:p? ?sȾwVl= H-?QοY`:lKKؾ0 ?j~J=?AQ,k M.G?L<(?`Ā?i5Bnwv -UbΦ?oоtoތ ?1(c?͆<ߞI?2|?iŻlc̓W,8?O-$0X0?c6Dш|=B@E=l俉 -|??iO=n4G?~큿B}4t(%p? loȿ?O;W?a?'/?6>?`F/ilԽ?<> ?jD??y?OE0?YվIw¼@?b?Eҿ??[c?8=?h=д:v?cڽ3R?s ?N- >@E?N^?>b?M7 %=?q?H&?`׿WF{p?L˿Kw + ཌX?`| |=|~?J(.lڿ|`v?Q:kg|?5=Vt?Vr??_?Wqn?^"vBI -?E ؽȽ"\=8 U"؜X,q߻]߀?1꿜$1yMJ?LZ?g>0cؾ"=.b4=/<>%*/(~4Ἵ@=ۦ?=?_aV9w?qi轲= t?M}?{b?O'`运?Pyыr?(x?V}Ќ1}X'=F½b?zTN9oM`ZDh?n:lM_x?bP[ԽVzYfpe;~?9Q}?p=?\p -Xn^?JTԽ}gru9dP.z?i -\=֨R~?\?8a<ܿ?-$x>9~,v=|?>׽3v4' ?d[<=Cdphwbc?Y?=rv?w#S\0"o4L^??{O?b.?/Ҿ.~}<;F'Ax?o*\ wܼS!`1EEx?2p?ng^HF?Qb{%?B_'?ER?A#?I޿'{26Vɴ?_נ?d;¯?U?E!]t ;8?ٲjN?`?bPUB.?_4?0?`ַ(?a?u/?f?n8c?Jժ YՔȽ?=Sn&FA?{K#͆ ?#'X?k~@?l=ʽT~i?B3=_;o?N==U׿kxHQ?s77< -=Q콍nc̿T?!⿅y=1?YZ=%@?%="%=~w Ͻ?4J]?tԾ.?Sx=yp?kP@[=?tl?@?^ ?c?lھh?mX?٢m4?]=[ =H?_+[=-r4?AŌ?nDƽ?=bz~u -'"r?y.~?i w?GEV?ckzf?:KZ?R|0?\dI4 yV:q=s׸?p-S?$; ?Y?c3=v[=[ʾ$OB*X:(Xn?PG8]0[b?+Nt쿀u?#;ڽ41?cftd?d?(Ϻ9EV9;Ұ?N楼ܽ0 rԇf?yf?[`G>ԾD~IH=Et;s2_;Ҡ@=ɠ8V`J?Dm0?l =ʾ$=W- =?6b?΍2yL?>]=[5=={F2!ھg{?ܱThz?;T.ۀ?`h=?VwԾ?f?޾vwc:?m>m?OAbz?MdJ=?Gϻ݀=ȽL|fe6?g?'=]4F=_⿆3;??Lχ_=A80-hd?e ?f?|使yt $?X+?yBBs@s?VXP9p?pQX=ea3οbt.?M*]< -=??ubl?iw?t)?PἌTU {پ| T?QM >^ZJ~?T0mGn0?n*L+?b\nc?U$Y f:?^/\?vw~g;?9-bP'?O?u< ?~4Ĭ<@?6e7%¾#X=S?ܘn?n?A伬"$P׽,DDX_=o[sw?\|@L?Z?BM>?Tf\?=huPoؽ!}']u??m_d'ɿ$>T+?yn?ot?=?t?: d=BŢfj+#?R4x?TZ[V001?i/먽Jz?= Կ(/?OǫyfD`:R=xQ,kƿ50=-@?UW<;F?oe?J.?Bha -?J|Ҿ~\?ᒨ?u!%iV?ly?bPiVLt.?7-?W6?Ǻۀ?[.?]o>h*TM!=`{?4i.[ԿMY?C? ?pͿPD&??Gp=_R?_rv>, lݿY?-J?~X=Š?QCcWJ?a?|yM=Mx>ӽ?F>1G>@ݾ,L?vȿAr>:?D@;U|b}$H?N:=D輇X?#Q??3?V䢽̢Z$r80#":o8?Qo?VNqRƄX^?Esx_C~lROv@о/l?~߽e@?*x><>`߾hp(־ru~=ڿOϽ18)?4;c40?vۤ^AJ")?l&8=' <Bv5F<0?K $><&P?Hy<=I&=eA ?r|=a?jʈ=ug=u?^=#"v<=!H>݀ ?]?y=/A?k  44xm?YO?c;T?-[?pu;?/F> P?0?w|>ut?~"?UQ=d,?Vٽ u?A=bjvåݾ?^D:zK$?QA??aҿ{<pLּ?Tu>py7Ï?5H?K - -п-U؀hdT?-䀼(=$fNԼ?M(?`?c [?]&F? U"?fRdV?g<Ȼ4$;Ð=Z>.c.Z>?\?odD?Z~=?g= ->?0=f 5?$t *@?<+h?S?*rz?6?bo =_Kv(Pc?ej}<06Oq?o??vAY?wgѾpeG/?Nc?bu -ACɳe?E> <0??=?¾:_=~h?[2 ?Z:OMh?TʽrWXHd @?A?j?p?w?q q=x@"?l?8? -*q?Zf=g⦾:x??M=f0s=ITF Ǖ?SaybWL?ljD?AӔ?rV?Pi[? 1;律kp=w?UB>/`?*D?a@b=aT=w`쿙=c?Jl?=&H.wԾ`O<ԑ?}?0kӼ -0Z?q?CaK?Z?X#i|2rcܿt2ԠZܸgB?@Z?G_??.7j<8xO?os=b(t?Mߦᜈ{r?{?O|ؿ"kqFq?K&?gwCھ2?'T8R:7 m=ö?ؿl ܿ?,?%׊??2==38wJϾ+n!Ծu+?xkUR?M=6^?c>A?^\K=Pi}6uOܿ=ڔhY?ef?A" ?e=1g?Y/¾|=?P?MR=$=SL;k?ؼ*?ܒaHc#=V$T?e$?G_?%f=׮?4q#MH?Du#?>'dqzkn sD>3# ?fk?HþÒ*F5ؾ"\$ڃtz>BW^- -@l?R<+@ߟk%?c$羭?Z7>DŽ?8`?or^4j}NfӾ#)?HM?JΞF:-L(?Qr?D`\9'j H=5DR8?-?M87?F@9`?0$p?V?+  o?4(?O򽋁?p'X c?az?I^GU<?/vп{L?+C_?ؗ>.?Y`I꿀DV~t?@r=v 3d|x?=`g[?t=8nT?͝=,?tz nsA?^?a?`'4^AS\6?^a?sS=, ?M?ƾ.1 f̝4?T[?iLfI}+ -?CJ# H(z?/?,t?sA=LE?Kn?*s?F?2׿o? d zWXL9!'F@2?'0:9Ru|<>@?,y?p۾c^u<=%ƿ!?iѱп ÿ? _C,?B?_D=$ؿ}z?iUi=z=p?rf?]c?4u̿=Em8?uQ?JZ^P?J?a=I?4S`0?H~44?d2Qk>?{+h?憾S|>7=)?}DR?Y$?~^q?ɾJ̙y$8{G?Uo< Nd?1\4<~נ?c gq>忞+x8ZS׿Q?^TlB[ait鿃MU }?wi۾ã?>J]?|;\h?p?=ľ~Hg?_h?,ImNYHc@ -?Rl=O?e?*p־"o??"<迄?&vKbt?@WuuھxY*@N?Nq+RZ0o]x^P?if?Sb,Z=?F bʐ?9?&8;E?G-i>?F?#kۨ0?_UFĽD$?ڐ[>Wq|?0s ?/?1Tp?FO?q*M -?A"_ʚz?K=;h?^21X?.%(:0?E0?E??I?IP=?|=nO7ļ֐'?󒿅B>I?$޾=R瞚>S}J J?ȿ?-t?k(?}`2?YZjd=RD?~~?wcC@j?8}I44b.sgz=={?lƺ?p=8=>^^L8?=ĽᘿgнY?vz#@qGw 0=F%@>gu𿎂60Q?h"bs=>aR/?hؑCB]|c1?Jy=Z?=+j[V?n:*=F?yn=/??eϿte?)L2ic0?=?Sy?n/??f6w>=mT?ZОZ,?4$\$\y1 [T?3 O?Ǿ3۾b=,A49?=ֽG鈾Pmƾ%m<=q\=Ŗʽ?kW&?5<0?JZaW ??V9?qo?=?CHt!nxDFo?d?gp?D?i Z??k*h?~F5j==Fb??+￞Js~V@?*I?e?.%?NLjˁؾ5?c1iT¾.ſ@?TR=#̽r?r} ?_Ϳ .=_>ן={4 ?f0cbzܽd=ۑhaE ?l?^0BnB8N>XCjxkY?5`?8p?v_x?DI?*?J\?{u߾" (drȽ?r?Xcp>&Կz$R<84?!=Q=Y8=D#o=86?Y@?2 W\wRsڿLX?ll?`R?Nqv?y?*h|E??F:L >pF?xP2?M=Z_0i!nDJ?Z+q|9ͽ6>݊z??7?PR51 ?Sr̾NŽ㲾j/?-ӽ'!*<E?=kҿݾO!1;I?sb؂P?N>؍=&01j?NT?C?~;޻:˼==t=Q?5Lpu 9t:?A?j߈?PcOu?R?n/f?ȳ4c?/5\;h>yneb?lЁ÷uP?C^>|:=u?b}ھ>0bj̿eżQ\h?FCV?xs?L\To;6ؿu<@|Z=Ƽf^?i郾LC< mŔ?K*?qo`kts=J?s_~$24&[BP?$= -??07 ?w޿i:@?AX@| AN?i1$s?g$?M=ƽ;α@Q -A.A͚Ϯףܽn?Op?ik?LC]?c,V=O8?,¿z?:j?T{忋uK??'?!?T.?x?X ?YQ1"1?|?Hx(;}?E?KF?G?e{=@?A -pƠ`w?-_>t}?)>Mr5޽@\dȼq>S?26?e9?`?d46w?+-?RM?]߬?j8e?I(g/t`=2,=94?}<8\y^ߖ?j;?^U=ܢX?I?DI?mW?nur0=3l?2<.?{b?F =俖C4]?C?W5X=2=_8?SEs?E =?QM=L?Wⴾ]A< ?C3 hZ@?Z=Ǝ?BV<Rm@z?X/? lhl="ĺ?,C=\f?΁A>ՠ^I??n<?nK?Nff??<FV?HJ?>QVHO ->?Hē?P?A?|75?%\1?&>VBe B<?fz=A t =UC̾ ~?Qv=̾H7j d?xKٿ?<TШ?rL?:R=ԼD=wcɶ:?kϷ8'r? vxdsM?p M,e }C/0?n=фi M?\yW ~>$AW+v|?P,> HV D=J?T?oP?d?i);e׿fֽ?ܾdi> aҬ=Ծ?xxiνNEpޥ= -?=ukʽAu:?=84[tD2`@?K?jlE?|4lJ?YiֿFGģ>1?Z?\!Z?zʄ=:D?Nw_?x?FAw\g><(?Uӿx?7kl?Y(=V?);?mFᅥ\l(=yz?rրaֿ}нɌLK?=4L?dkǿ/l?f7?T 0=?f?`K5K⿝J+?nq aD?t (?Ajbh?av=O?a?E>?Ombuh-?D&X=̃>ZP?&|?^ތAP8??M?:$=t(ԽLd9L'O=8?dbn.?7J?7{r cCJ;?|6s9|c 8?XX?h~?F~C俈}u.Ȏ?<6H?Uξ ㊽R?[k=mEGf?l=i$?uo?yuƾ?31;?=츿Dn{>O?nLxPr2?.$q^?z2:?xu| ?9v K?(or>j`> 8>,\?x?bQJc#uWiw=Rڿ?=~>$㘿ҿk>u<&v@<z@s#=y.~??AB?ki9k0??rx\ӳq"?Rѿo=NL-pP?Th0<>pHp?|ÉyBcdh ZT@ye&=y 6}t?o?dԽ5=o8?U?^Ț0?j;``i)m=SbxEd -3?t&r?GB?SyQ?FY\?A=Y(=AT3\?IGF;澓@;"oG4G?9BDh?΁GAFA26?HlB?=tch⛼td?,*R=ܿ~?aNq?VwHG@#Xx$9v?BŮl?Nz?Py=D?S>wIj1$?Iflp$\CN?l?_8?>?_C-'5-?Y6rľwz 6?V(y<شG8G~P?y3?gT5l?EU(=.&0' '̾@пC?-ֿ~1 -?;[g?taDؿ|νz@?[o?j2b=0r=޽n?wg?Y?}j7?cҖpEPAP?UȾ,@=8uoC^;̾WNڬH$3;7X?K-F\;^?N?~7?)bX?N?u7̾2{?5D?X?6Xd/p?D<ɺt> -ѽsy,r81?N󿉦|?k#?вo꿌}?-NTb?n+B C&i@>( ۿ~=+?^1߽b*?_?}G?}>'ъ=w3?p=NP?wUp?Z5?D˼I@?$:?.?9&?K?]Ҋdb7&ߐ?|/?!c=D?L?fKqz>Y?*ܼ<??8 We?Ai&?Uþ :{?Hm\0Ls -L?Q~N;迅K?``|=UP?ZI=쿔# O?V?S;v?D?6?bj|X '؝?R?yr??b;;@S?X?qbWH?Dw-ќ?j@꽚r?`?7?jt?/Fϙ>yc ?F-<*?\?~@=H2t?EL=?n?W9^@G2?N(?tܾg&?N/z=VL?T=3k ?e0?e>?Hu?Ѫ?>Y 1~ 8 ?%?F<,?v?UD~||X 3oܽ-?Z ?[\h?Y>,?ORL&Ծj?\9?Mu/;<@?S;?EAp?r ?T8?m;徟SU?0g?4&)O?EW=5D>1Dx=: y?;?@^?$x?_>N{?(@6G]ʽ?%xu@ #6Z_?Y!MdW?=t?F?rM?)?iB?H|oL?U?m?h -D8hT?0T ?n誾@S?Mx?hjܽ9=鐽.ZzdW/̻?UVsd?a 0;UD?d`X?0=?p }{= Xs,?s׾Z,a?]`pF?Q$nE?Q?YM?k{?nV翓u?biT_޾ -?Fjy? ?Ag=DJ\, c*5ս D?jHؾQ?Iu?H(q ʽn’鹾/2H?oP?4A?tM;?a= {?%W??&?0пE뤾1MMC?LJ?w ?9w/Yt?jK? x?Me?|r齖?cT>.B?Z_y;B+J[GTs8<( -#;o`?KCҾ”"L7]@?.4Ƚevp/=g?=xx=<< ?: `?C⥾ -1?h?F# (?78yO@2=<,?s;E`횿q7W.?X?z#~=YoIJ@?S:>NY,b?m sa.?T/?f?`l!?s`]@mP?DV=4}?8҆HX^d=hl?vuy>:?`?D:C>VA2%+Wt `f=?)ᗿ{06,ƾS9?= a(忉];`?MMU=c8ܾcY7J?U:T?鿎t?L/*P?5?LHļV_CMy@+-,:Q<'(8ľh['0ؿ?d>0=EKؾ@4 -þ ,C)}x?{W>J,`iZ1?\&L?@_?U;d?#У(g3:VD@46 -==,?SM?:|%`???9M=俓&>*?' ?{x>Tj?Ua?zȿHg=Gϩ oDS?Q=?`?\=ý =h?f'yD?PDOžT6=2?O?7?FʽԿ}?1r@?q\w~ ?Jÿj\; q( `?8e=δ?Lc;~񄾁jk¾5L?lY;gJLi= 举?=.S?\FP?Af?K?j<;@G=q?R?Q%q9P=! |?,|xn?JӾ{1 -Y*>oj?u5R]= 9`?Ry?f2k{?]{$]%?MտqFi ?T| u=l 񿑍޿h[&R?ca*?m7z?"z潛Dkw?g?xXs?j?MޘV䌾)kڕ?ǽ ZT>PQ^콈޾$=?ƪOg?rHt{x6<i`U`??`i-?G?yt=fȾHX?gq}? #?M?aJu] h!ľjs?aڽ?<&?yؿ2X?T=d?YIM[x0Wl=lP?8&?t=XVн?xEX?x1yо=Z?1J?p&=п 5=0~ZʘLkp?b;߽r>9ȿ Y -=c?O*.QG[?Ywiz?Y?d?¿y.'cZߋ?l^p(>=z>a>8_ Lb!P?sU)?xs?R пi+m=?jF;>7b?O rܾ>6=v]T?/?<0?cS?+mP -}mc|+;U@4'QW?xd=85\]vl2.\Z=nLnh?92U==[V"?E?'"?4 ?F?#B?f:?.ʿ\1࿔&?[X?;ɾ* ?]=?W!g=_ɓP?D$bװ?]?=f?'4>b~𗐿S? * ?:6?M;Р?4 ;΀?E7?3VXaݼ?RQ<rz~?'|O??g7?2?4]㿎OӾ^PU;kӵ?C?dP0)㠾]J??I6?[NN ?9=s?/J?zL^@i;?C!?EK?ԽQ=yyo=)>C m<7??L<޸xd?)??f?>C?q -o=J涼`v?񨿽F~u2=?t?qFu|1HWb[Hؼ< x)Pt -"iR?Yժ<Z~)?V&?g|?t¾\M?%7?v=G a?U+@1?V5CW?YLƿ;ǿ?}eAξB VI鿄L7q\ҽ?H( A{=?Uɿj?=/n|4ǀ\ 8=_tP=MCI}?=貾τ=;3e?\z?D?:tȾot!?Hh~?pQ{p?T뿀?,!"?7D?rkv1ܚ )?g9Q䩽&DǾDDz?7#k,-S=@P?瀽N<^lZ=\L$Pо6Xz(?3n0{?Nx?hп,!W?!NjC? xіh?;F ݬ>L2%.iޥ?o&; ASh=ge? ?o 0?C2~`?y?UrF?Rw?L=?DܼrQ?acPY e^-{\?r?Q?c?>D5R;ʪCsM?F<]?%xN6B?7Wrz?fhӿ?`!W?V0} -?YPgBE?V̿K˾W?Y,?j)^ftf?NX+S݄Խq?Yھ?7]Vn?i6Kcj?i╾8k`I?\㘿b?h?0$>3)傼sP?(p?U?00쿶gOl]h`?BY?oH?7寲?HG?W˾sg=P?7?xrʿ^0܃=5\xdɿ>VV={ܿQy=$?R?e"z]?Z޿`V6?DB*W|l>)NqMh?xb=HFq=m(PkK._!d?7鴿t|i?S =7?eO$?Mtz?'6o0? -HP;@?j.y)C?Ry>=Wn=n?Uz=mO鿂fe c(<0r|?o:=t!r0l>!<U?p?S=?vS ?ൻĀk潤F=E3=zT?M?IY,;y>?B$?NZH=sF ?e>tz?+0p8ؼD?k#u<]l>4ې?`xܿu5?fD?O? ࿑6=?iS/#yMbe~1Cؖ@?2Խ$>`r?ui*fկ޽G =P?@O佴hq?W:*!0uNJ<|8?I޹??`F?a<k?NB?2ò=4?a?L*.,?:ͭ\ t0?M`= -??]D?0Y?Y뽸"?e{?4 -^'b?8 @L[2Q?J;=?b?qR?WF jJF]忀t?De-T= |tv@<7@P94羁͂6?B:1db鰿%B='T>*8 =_&?zN9@.CȾFf? :b?O7l?tc??P)>78B?DW"#~ϾP(=ʽڿzG-,V˾v{-'oV_?c!5Y?I翁盽}=Fh?CNvr4 ?d?P M>VtQ黦?@i˾+ؿ.o<@n"' H?>=<3_վOqؿY7o -@u;4m?0<4?L̽ J?&?}(Y@<%p?)SԾ9j^?eC!$!W5 9=,bL񝿂z\I[E*?kZ}ھ5o?~P'}z,Z콝$?j=־s0Z^w轖v`?, 8?hu5;@J>?KkϽƱt3K?h|PT?]= /:h=B^? v -C?2v)?WY@?1;Hp^T?#<?U?gM%:M|cL+?t˿qC<?C?2Wj?<?M^>P?o6?E?^jľ&jZRƽU*?:hS"?\02lI0p"!9S?N?P`[?Tda?举!BJAۿeRB??L#;`qm{V?$?Zy?6Vxvx?UQr?u ?5?%&F?5cHs0?Ok̾WseX?ov&M$nתF ѿr n?@?]c?MĽ.=4=,yO|?*.?ݾeI q?BAR <r?w9`o`>%9ٕ8"k(qt?n?>N58(?0ֽ`7<|Z?E8!KI>E0?V?L?qrt9<1?_a+j.R2dv?꽉`j?;?:wh쾂E2}?Kn7[? >x?V=̍^Q|z?T{뽫'Ҿ2>?]?d=⬌?R.?9-+V{Dq9?y8[1?=> b~Y=过I ?UԲ=Wؽ <"о쉕r?e?g#nyD,Hܸ<8=XO?tJ?rA?D?kZ^Rh?8]<?wt@ {i?l&%,?,H<PUhJ=3`!ѿd-=6?mU?k#оVP[(h@^?`t ?gRq|Bܨ?Ly{?e?gAY70?/3h<%G࿇LI4\'?am?Qx￀?[#7=6?U=| ?>,ڿUO?jrxRN!D?Aӽ}< O?v(H ~?Iy R¾ -8=X?8?qAf???iPN o=&L?]W@?Mg/?6-?< )?3??Q5eT漀?v}?1#>?IK?7L:/ݪ!y?*kۿo?Vv2?wR?R?G=T?MEnJv6?4?E=? Dbc.:?&= he?]^U;7?X?R=z=xEص=??EB>ÿ?Th2ֿ0v?v~?}f?qO?k?oՌmQ?gnNi?Uk?uN><(<о8> X=?C?%?&D=袾e<(h?b?0E?c?4B?*|@EùS4@)r?x1?Y̞m/ ?l?u7D @%tF8 O>k?H:m濈eWGo`< 0yS?-V=UCP?J=='I?6b?^?wj<%v`X,??\dpkD?lP?ZP@[?SMl?0?ma8?i"?Ϻ `?? ?j?<"?jԿhJ?Ñ(5f?3?W֪=W?m%?x2?Hƪ~H?*b?dվ}r-=kM?o7DHǼ&x?.7?bV?=H]`?DbB:?Ie[2߽??#@>BĮ?ф =-?[[C=u`뮽X˼=t?N ?eaHzl|*@8N?E?qV5Rms?j9?W4?I~=?n?L*zZ?!?u`S?JM>?)%*@࿍,K\'@?SMF=pn=VھvIRTP+)u;K@?< Ơ0=lŽ5 =V9=P?oDսqxF꿋?l=n?Y?=Խ45dȾ+" -.A@B#@*?rܾ#8^?MEtQ?u\?Pq 9?;~<숿.?axh?v> 6?=/T{v #i:?O?o.V?f2Yu M ?a-K?9%?d ?5^vmo?T: A?P2?;w;Ŧ@ʳ?Ts⿆`0?9/AA5?S PƘ?jGSVC?(O%p6տpf=_?`|VҦֽ_N?i`;p?%TԮ?: ɾTP1XpىྒྷfZ?Z?c z?PND?͢忄\6+8_>Ȫ==6=d=9 ὊFn۠@3=^¾W7̿|B?b?ljS?^|k*Y;M`GF=N?-f1.?q'ƶ`3?$k߀=V?p[(?ȥ?]!?k ?<*?q -~t7n`?Tx,9?t?E?C4Nb7޾:%p?)9pt M@0|&?;?R]; -0T=|Ua;,Ⱦ$<P=Y\6?VX=!g@?0X?ip' -Tj?r?AeyvL?E7-V UFbpdIX9?P/|?L^3G:?9 <Jb꿎lmؿ&S@?gH?Ke&=Xz=|*NuD -Rm4D*?ӿvD?8???3 - Qݴ?vO3#W=?0N?MN[?W`q@2L=gx?$Bp?D5??qL6}?:?T)8?+?UP -NpsDAXl?z-v(뭾>?R <47>6?/"?|?Cgc v\f?Iþ= B?nvz=pLljkQ H?SY˽@@? -$&??4=?CB?޾awJ6&P=U=>=4,?X(`hެ?T2>Կv?Dkx%Ϳy!ֽNd$@?W=/>?qR6?S'=.=-z-?.]M:ٿ672;{L?mQ nAb˾N?Ne|p>?o'0Nz`uc}?@(Y-갾"D2?Pm"?Z,  ?Ế%;QP̽bM `:@0&BU.?bUG?5 -?2X"?P\D>4< XR(8d?MۜM?оfG?9?L 6%Y+O ?J*>?mֿ s?~߽,=r?:j$`?<h=??F ^n>[NЮCPK?QĽy返Zx*t?m5i|?Ic;-ɿ:W?:b?a2?]?iq?Fqɼ6>2?6My= m8𿆹UcxN>Ztg/?Oxrw_s6=jI?uZ~=31P?Qm:#?6?Tf?LY?fwv? ot?^d?Xi@$?U.?9<?Ƴ j?U>o={P8?5#򽞇8 4R -0 -=ԋ8?dP: s46?a}q?YL]ȿ -#궿n?x+?f?Z>%8?v,ͮ]lv?:>=>?JC쿏B^<=?xNxɐ?^2y.}?|fm?UaQ= f<8?T낿p㾾r);;J  ?FH?9.)(H?y^Ҽ> ?N)H?Y=pmu?8󰾭?ue?U2X8.D ʿ]VBsL?eꀾ!;^u0\`Xdƿks\X; ?T?T2?3C?O?:?>?c&=-4 ?CC?t`e\e.?OlV>#a?-i?3ݾ?sݗ4~?`?G?;νm;?!Ǭ -b];],V#?^L/ά?*pd-㼻2p??*?z |{4`pCy?3 >]V|>"m̿oB?\ ->3@}3&˿m48e4?S^j~s -- x5;le1ؾ('q?+C?oֿQ?_=/?P Ľ&6࿳H?B??_Ewt?vԊ?Bн.n;9?^{+=ֿ8 4׋Nhп{Q'?KeM?PkD?I3zۂ?g⿊T?|;b<0=6hGmSQ?Uˏ?L?귴?V4ޝ)lؿiݿ=V?.ƽ짜rb@c?T?xҾ7?Rvs8!:?_y>; ?KJg{~o$ؾ(3h?)j`l?]Ϳ.?~?-pw ?l ?3Fl뾋>z=.d?qglA=|B5Խ&;d?>F?eY;A 辢ӟ5?`ھ*F?8$a½+mm{Q(,3?|?RF@]R,@BKU?4MV=R?)jݾ?\󼣘?hdH?L>" %J??ў{{Ct?"'p?H3i?p1!&꾈x»?:1޽?$ Q?tl?E9~$R@CU(?>usƮ?O~?E~?Z -(V"?5ʾ EپRr??Z@r1nx?[R?0?e ?x7y[?^by=tX$ʿh?Q?G? 򀿆p꾊j>1.<$6$:?Wr:?[T?%7`?aV)}n??sg?_{v~6M -?I_nV~Pr?6deS$濇Of?W4H?`{]>Z?$J@:eAqS@? q?_8o?aw?M?Y?á?r?4?faD?E>q\tŔu8?4 ?LXj?* ฽v?ߕ~>0\侘ZHRվ -@3gIݽZ?;?t?^4h6?L bH֬kV?O@_=?a=B?E(?d}?rr6?āƾS=?h>A:K(d\d?oWm?1=?xR<6ݾ帽?x^1?4x=G?_7(?}C?C.> ?Hh;a??: T֨`J_=(@3ǻ8:*,?jc?%qs=|g=w07?o0?duZ'{<È=Tc`<s0?ԧ?boZ?G^w2?"VZ?eN?P2)n2ӍNc4#@;`tArvu?½ -R?Iݿ?\$?Ef%3xpľ_?Q?I ?¾4A?m,IlVN;]>;=0zxX?<֒ȿ^T?)?KdD?k?r?#v=w(,{_8?Kнh?ڟ<=^^=?Ƚ޶oV=PTrwՁo¼@?TF?yp¾B v ?o.@޿r?>p}=?Nv=ഽN~?оTT0B׾̾#?Y6>?p?^ܿ|c.j?mQA|??m+Fx ?+D?ґ?R8p؞?B?e~w`J?*qAqB,B,\@el{?P?f?_=?3f>%﴾))騾h?\[M>?3=?rܿv=P;e$}?5B澏?믃:]"?UG?L1Pg%\ ?=\*+DԺ??m4at!??.:K?A8uA?<οGd|??DXd{)@.o,`kew\?F/"?Kl#?`B6U?zDR7<0_c*s8HC;(?_N=?n?N-O)| N7K)F<϶ 4dYt.Ф?ff;?Nj4/V"VP4:RO= -;<ؿn?v&=HƿL??h?bU2?c8OL=Pﺿn8?(}hZ4MB?YZ?:Kʽ`IQ=GH?HJ@}?|ix? qt׿/[`w@?(+A@Co&Bw@vB}+U?.?ifX?X?@?>]{BO1MM?[v=?^6?S?lпZkOϰc5ܽ-?WY@Bc8 -?DӾx?X(PW=O@>T?lzy j=;8?3*?OF??"{95?5`s(ىJ#@`b_L?[qb7B@@$gp?fO? -X??h$ B?E&=n,=J?=bt<܈pam9?}x?<^?.>``f?,`?_c2z}|;P Đ?Q?N2J*=WD?U1Ҽ>"}(?oz?9?0 -}\/0?a5?|Ľ!i?ukԧw;?(%wx娿G_f?:о_9SbȿR?\y[g=0H?E󿚝m~?ۿ*?.?NH?Zr@!?cw_cn?[oJ"G? ,2t?9V[h1HQ}xҿ^Fbdqt??9&>NX?o.4=c"H?2l$?O~:r=zAܾW?L{s ??6鿌Bl?EhC?:*C%?dl>\?Rj?d&@?5?fI#<#!?@Z?b9ƽ޽sؿ⓿hI?c3?{Z$?bϾ F?tA촽&= Y嵿 =(?)?}ýn=~PY>(p>p݆>y?h,?lC(?pm?M\0?LBܿyf ?Xr?N>>?k~I?R`4}I2<?Cצ?V?QwL`R?8 -Bd?Fh=D?Aoо߻Ԯ}h=ǖg);@?C?T:=D6=2???B{U?s'ݨWp?Fʾ?,5?Jؾ V?gɿc=?:ξ?SHi?zꚿ?^,N?<ʾ>?Pڤ}Q?BTkW&Ӥ?m.X6?7?+`'=%CJ?] xY?^?2ȪlF?W[;?9OΛ}h;\3KW)P?0?Fx (?H6F?zϿKu۬nw`?d?H?(ᾩ5i?s8ԽR?DlW??"տ=?/=?4?|cAb=ZW>6s?~o2$2 X#j?\Õ$?'?"1i?il?d5gs5u&?+,>ߜ\?R?zLo=|?Foku/1?v?T=l?l~?iN ?m?Yg -q]mk0??{o?D=8?dnU/O?^?:I?0'(?1-ܪY٦`p?[؞~?r??IHQ3=h5?=;q?3"D/e -#R?7@:qW?%┿w?ߍ?.)? <?#q¿b!?A촽̽inM𿧜K?90&6?M?,+Z;ܾ%^* ?JY<}pu_]???[=ZP?,ܣ*jocؽ#?Oᾂ\7?1r?a龼|%?mMO??|V@H.?H)tǽ?П(?g,)ɗK ps=X7?$z?ly?;?IJ?9l*< ?NH6,"Ŀ8$?Wwھ1XU?ds>? -?F$?\EwujS.;@vx?mI?x-?2m*z?z>u;aT-b6Ŀ*rAl#޿hft=L,?{(rg=&U"пdP~[?r/o=)v6?Tf@6|?z5ph <2i0v?{\ʽFZ?>?;l^s@}??]I ؽ5T?9D̽KZW?oq?;q}U?p 㿐r=?,?d?%]츎?33aо%Pa?~#;O=$&T1?E?T|o˝H󗿖?D_?oҙ=uuPs@¾)wJCPS?X =m?D?{Z?QeLۿAw?b?i<\=?FHMȾR=?[#n῏&]?NvN?Nin@G??L?g?]K?+`=KL?dI6-?i.?]}> -+X"X?BN?"m=4L?r|Z*L:{$ ^Bj?tRNֿ|>TO?e?F@Tx2*S54j>?BP64<[>d=\TU?w'?674??#E6d?66?cR???S?1vО?I2Ol,X?? ! /?sXP=.Vl}FlR?Hq95u >ʠ\,?UJ?Q< AP*(z2?BE?c -JĽl&9 ҽ4XӞ8 paaF{ =mK~?ld?!mtL-Cu= -p@-K3@L!ʵt-?7CнX|9=%쿗k؃lJ+?nvzE??'wzZ~ :?q ?L?B s(?Ѿ;Êtq?N8?&??}&>6?Z?I~2*FT?BR@n; @ ?Y"׽?}IX5? qq?Q Ud:E?D"+?b ww?G?z5[޿?wjgGb?Zf?J?K?;D?CQg? zBE ?fLNE?kz?=?iQgڠ(?9&ؾ6m?Td?[@A>BG@?k?O廽?; X?2?Q[Խ?ec?* -2?9)$W=:H; -?z+?f ?\M?҈?X -%6^ ~L?T :?E|>侸?fbQ?g+?#_ AG~?\.Z?_!o?L?Z? hN  -=1b?R2? -6-!2(6OQWt8 Eg=A LB@+?F ?#?G}ɿ^xmdj?IYz?W?`5޾r`㿅lD?G0ؾmh?n.?UG&9*?¿6wھm}=n?9?Q:?=&?+G\?82I^?p-39? -??0 /ڽv1d?`M䲾?[T=:޺<:{Hо 7?X暾e@+oZ?{0c98K -"?;\x?#k<{fj??8l?g?EO?N8s?3px2?Aw>9'џ2P q?U6|owRBؾݐp?DB/Bog?K=fR?\=VE3?4ᒾ$.D@*ԽҖ"?E?H+B?[Lή?4?(oDæ?2tp WU#=P4>[~?0)#H==\Ծ2'z ӽFF%p?x?0 y-H#&=`@?O<?Wzڿ"\m?= Z=?>&B)=}k/@>m/?|YSa?n㼽~?ce?K͎{g[?tx`'<9?]fkw-;)?g?S&?pؾQ -Խ6?7V=W@]>?=?>?SsZ.?HBN?羆վ澳SP]85:?,~|l?{L1-m ?PVC9r?v?]?$]R?1о3? ?l7Jd<$?)8?S\l?Vr?Q/?@D=tDXd?ZW?Mh/-?A(AカP_?1?"P޽P;r??=F?jKH [S@y?5|>4,W#L?+=?a*_y>vy\RjD@;@?M8?]?_?y@ܖ>9` =s?<ݶhՌ,>RujRD?#+ؿh?@Sm?EX@6js=4??*6?A?3?j?N[<ڠ~ Zs;?ij?GI-о1?Vk?t?f䜿m6Ip8|?o?e<*"e?F?~#@=i?I"6?? ?jLt(?5a=!+?Z?Tr:NnY~5٘kQ?Y -?G ?T5ܽGܾ?vcV`7?.Ƚ心yuM?5?{LZ3gF LH4o~h߼"$?KpV?\Td?c?'.P?d)?3 k_%IseϿ9aX-7?Q}풀3 ãSt*&7?H"<`BcdC1?LeڔIٽ 8#1(ͬ?K)տiJ0?xB?<0>=q?D?FiϽ~ ;r*?Vye[,Ͼ>美ي??:Ӓ>LT"w!?fN-= (kK?1ƽc?_`T?0>%?k:?BqR@?SN(?WmqȽt8?3?v4%?Gxo?,?)N?esFhpdM?u(?~ hx?lw?Q.v/?'?a5O*< ްfV?Q F?/?Mah?r?".w?e2B<􄀽;n?f?b?bl?/̲?U|澐?|'?^#3]oL?-0?Fs?L}?F&ѿGt=1?\祾! z侧)'?`8 ?2M?eM| Ҿ;`$qR<?Pl;q??bd4+u ]< ?A9?H;@Mw?bl˿@3S?h??hQT{?QGӿh9?6S?:ڿ{оCý8`? )|@1?$?<8?1= R/b?J}E??7zb޽R?\?O?.T ?n? &?5 -?&d=ʨ?LCR1?Gnp/?g|{@h?Vt?}2N?n/?(hI?DJx޿?[,\?/?lPk?7e<?O}?XBǞ@v?3=9$,hB?ކ?<8?Q#s߽׭l=ckο?4X=Ν0%G ??a'?jI@h?H,v|<>?QcN?y&|0Z?C~H?88è H ?v -6'=B?`V?@?7.M4?Wy?r?M=hre8=TB9V ?Nr?[/Ƚ=Z ="`?G2s=췽'hn=c e,=Ap<Xf?tJ= Yx?[?jTq?FKƿ ?E?r@W?.7;H?P0 ׾?j?_FfBWBo@VmV?1Qc?F?о`䕾??z_?:A~-2?Eپ?-?<<6?]d?A*$?<\?(6 -$j?A?>Q<^YL`Ng 0oG -?7 -ɾ -?xD =x俓ڽwZQ$?j@vdj8gCp a?f;o?[2GUf0[,sD?hP6|#(al-?f;+=>z>??9}PsӏU?_@h< ?4XM ?\vg?-n?+:?^)?70?|b?B%P=`i$8ʿ_?#V ?CY?]?F0=Ґؽ?YX?O<*~?UL ENrHz>{i?-g &T%6i0ktw?Nf{}@*ؿ1l:Լ0

p?0?Fp8S? ?Gg]qM8?( -? \G*?H -H|?3i?eDZ?R4?2V=ܽg?Rە+?5?^Xp -?j] - ?*u?9<.0 ;=T'df?"s?;2?+G?]+7Կ4?&R ޾g#x@?8]"??1bASC>tA0z?e{?.h :,=?VGK?[@.?gx?M}nuҿ?F7꽫<2;pteGU8?$+W?P!E2վ\P?f?9dw? q^=@:?*> o? f:?y?`YP@v?l^ս) =ؾX?XC?Znf-k?9 @G޿ֻa?^id?/~,|H'=,ӤϾpFk?h4<ѫp<.@@:?d}?CQ~ˠ*?Hm+=Q0?L?:>3uHȾh?=|aĽ?_ >K9t?K?Es?|T1}?eKaWf=z?|?Ո?b?J܂5~U*?;#?4տ?<#?9笿VAw ?(?edc-?i?"w`?22?@pPU?i??DQG?G9?!z?Z{J?-j99.ktN|y10> =<B#?Ep?@U3?Ux?ᒾꐽ"!!9nx?BC-V$?տ^)m h?%V?Sg?W v2c?c?З?3(@o7A.j\,&ā?p?{bWn!d7B?d}?a?9>m6"<%н -?nwx?3+@3pD=lؘH>ޖ۾q}?A n?eZRM:?N>hj??뷾Y ?D?%z> H#?;.T*?AP`?BY1yu?E/?C+>*;?_0 n.x?kɾ?Tc=~?br6=X!;?h6.?WQ5Td=lR*?W =Ȏ?:~?z;쐾f<?A !+/J??q罨3t?"}?ܹtip?)Z?Lk?لG?0mDHd?k&?m4?SJh╾ E -԰콮zh?Y?G?x|?T+?woi?Rҿ;0?O׸0???dI/ț$ ^?9!o?ڔ?b&?li?Cн/\?4#dv? x?7=˾-?ƽ^?Q(I-<M:<T?WTԿ(Lik4GUA?O7v} ??d6P?#?'F P?dv2G:65?\,;ֿ͞?Zl>(?9T?>=H -꿖vXq=vI?\!&?#??4ƿvcit@Sɽj?ln<<5F,r?y -#?;߆?/N^=@Cm?wӖ?ꤼX?,<)Q8yYpC<=8KRU?*پ#Ep̾Jɽb.?:ۿ!{1=!ľ76=,?AȦڰv?`f=]?J=X`?? B?CDq?'Ϳ=9B`z!֑?iM?Cʰ hh?=I M<,1&?BGn़g<h# ?8.i?aa(f?T?O;?JĿ5r?B l ?^?n?\yuY=J?qb<ԿE<Σ ?N*R=B+ܾD嗽 `>ÿs?A3?f2ڽ0,?V,?Z?n?1i-?*UH>)?;6#??;OJ H6@EL/~/*?P_n=V?<꼿U\#0?c?!$~* ?&q?J5?,A >M)d^uZ?X(?[F-uA?I.?mp??F;I?,mD]l?mb,쐾?S1?4?k"n }r?.?$?"}&;=>fT&u?vV+ -?sWO?j$;1x?R?z}>p<`?`J?*?Ns?"NhHcE缿~?׸i?C?P?Týgl:?8z,?G>=H㠾Zn?eH?mR?-<=[^Ŀx@?"?DAioq=.&Ck4nF?mQ9=s?8lq6?=)r!?Z$O4Bs?CF,?f*=:7(x?j&?)Z&_?V ?@Q[?WM?r?K-?jC ?D> > k٠?u4=.3Z?]C?P*?Xऽ?ܽ:T0d/UACsBb?4| )?]?p_%xy8<ߦX? ->V?EE -p?]<ȿݾU(?]?Or?yοuv;{;^v6:ypd?8ƼŇx?32;x?5SŌIt /@[U?B`?'`(ÿuq7^;>ƽuu?)e?_ <%xXz%a?NN>Sy?< 6?tnI}z8u2rѽ%ϾT]a?Fؕn;}?zuȾ"?[(|A`*EȾE@[o?/;?rpdҽ>?EE?{ܾWU ?Z*뿍m?J=3$?=!?4X?Gȥp???4k眽dnLG?BV?7T^t@^݆]Ec%Az ?.˦?H½K?=??K?`BA@pf?dB%?M/8XCÿhW?_F+?!U?QX?=侖G+?A|B?+?8?g\?؊E;f?Wbf?"q%{?D}L?FjxKj>?!,?Jٿ4d*?7?3:V?N6|?\?FڽtHо: '?=*8?ˏ?ic07?k¿ˬ??Z,=а=mz?: hB = ?4W?Q'h?cBlC:?P4?l/ը?!LEq<@?:z ?:f=R`?DL?TB?PF;L:?g?I||d?]?V.佭7޽s?(x=?9PI?;7 -W(?]״ ?+J?8bhdؽF0?W%=װ?ؽ6@D?*ZU?pK?Z -a?lfھBqM=P?7r?= ?hø?$=d@?Ft?Wj&?_?,RK[$?'BǾx?/hFAHD?hD?Q!?Euֿ_#?8=gso?HݛVBc?YG?2?Z-?\R?Vݾ~?n\w׾;@?9\?'U?>6?z?NN?PȾ0X?6hƩ?DD@pщApm?:=D2~Փ*?f2??n+?O=?[8+n?4 п VH?pA?V{ȿvƿEM @7Y?aڿ:ڽ+H=T싾+ҿV?.ڿƽ熴e?!!$98?bb?7?JO>q g(½niR>([??('9|?@+:Ě?]:8+?Lf?=z濘7?6.нT>y`{,Aq?o -?yw2?Lqվ5YѴ?<}#?)Խ.r%U?6ciཪv?ӝ?0Czry?CR?m辻?R?%O?> 4CZoC]]_ܾMq&}tY 1vc?qB }=3@P?-'cn?RT*?b?+/?8{h6q޽pR?-~ɄY?e\X`T?S8?=F?콹5%?TKs [㿓[8=Ӕj:{?J?:A@sT?yf?_F"?L?oz/?Q&t_[ᘿw(p ?Gֽ0T?Ft?T)'?4=;:C?SG ?0̖" ?T%?"J#Ŀ`!?b@x%s?PHZ,8zLh~?@?K ?!ؾ{ZV$?ڿ?`$b̾'?;uؿ'?9:?f Q3tP{N<;?L?%?\{ '?q]?"=?ؘ?CdAO 43_?;뾟?Z m(?(?n⿍T/?]?ƞ3?%` T?Z7??&to=<%bֽެpn1Ź? ?jοV?TfyspҌ?aG?8[_;h?ee:+U3NG?)߻WCB?:^Ew2H?( P?4]T?S6 1@>o'<9 ѽ?0zŭ?M!4,uc?@z?(麾WEbk@4?ؖ?S?4?I2R?&4.u?ݾY4࿍? A?Z`w?"Yzнn,ɿ]@;]$B?OC?DR?:2(Z0lP0CRv=+_?r?yCmV>ؿiTDD=h?[[B꿖 ?k(.?ܴ ?^]L<{ t_h?|QX?.'=Ab/'?XnW|Qw: U@?A=f:?*xep?NC`?-Ʋt7?Mx޽W"??V=?]g۽d?L?XK?<|X/% n?U?:C?tkoD-dc-?J~?ZNw*Ծ6Qg=>mk.W8pHؿb?:?3o?Z|cm0?Q2?Mؾy޽I>?g4-k?[S<RDq` *?^t: -`?*q:c[Mտ ; Qf XClg?E+d?E~CX?e)X?>'??]Jpy~0?U>eqk@?cD?;;?p>ڽn?'?A8Ƚk??5Nn?P>?|?ArEh:m?jX?8;b?1VM=T?R<^X@+SCnHUώ?+2 ?S -j?T8E?yJd)zZӌ?v[f>^>K@aPp!Y(=,K?|ڽ,6?#%J⿅g%?F?"<;ZuܾH?}1E=?Aؾ#'!?)OG?^w$pg?m.[>n~?7==v??ײ?,?G?qS=3QU p4AJ@+ A{@뿂SI?a}3?GA?C.Lb\ ?LĿ%)X|7\Ǿ&Sh?:b?>Ƌ,*?q?q?7;dVG?4B?c6lw-)??5rCD\0@^?tPc?Jj?U5?Ds>?X$0~r?.m?v6G?: ?#8<P`v?D?=Jq?edӽ;?z(4ྫྷν4p?1=I=?#@ܽ??I?F3Ok|J?_?[i\=XdrνŤ'~?zQ??q?K?c?9t -?W]U?8Ͽ?ܡF=V? ?:?e֎|W?ɵ?f ?6[?M,>X?K1p?tv?A[eNƾr*?M: <<򐼍c f?>=!?"?J>?_ ?[x?Z?k4?:?x:b` Sܾ)rܔ?@5>?ҔG?sj?eյտ{?8p>zx о- -Km((?T옾eHgMU>B ?D?H?Y3[?ydsYq??9sUB`f?I͟t?yQ>w?P@'ܽ?@?=a=7?I?2'? ~v?Z+"~;J_?rɷ?+aYfv=Ep2.?Fi?<]?(p9 X?- 1㙿fbן?ǽfz=N!qB;@1 ˼P?b?j󶾣hh6+?:wU=|#{輿@̔p;` bb?v=Rͤ?+<4 ?1հ?cGBUH/PO?B7jt??N)N?\˘W{]@K\&?.nb?;es?]\?FQe7{ʿ@9=D8Ma6m྽?bau?D?#gx?T\?M(??W>t1?о>?_nx}??,P?,C?Tox?-3O5Y?m࿍A/n>?C?&z?=>>42ynx?uNVK?UԾf6?T?'?]?Ps+8{(^X?5ARAP>Mi?<ـ?_8?:j:?ܫ]D6?b;n\?3?IhWH;?VD?l1b:(6Wgx?F?MJk?-4??z*[l{ЂgGF)?A?(1: m?`?T\?*b??GgQp?ZZ?cFl?$?>vھ'=vqsy3=?=>! );@M{4=(Ծ;IԿ6?Az%f?F=_nt?oݽ?D=-go= +?>8}?e;?X -?B Ȏ0 W=VA:>??T=b -}?5 @?TȿɽiпӊJ[?o=?=ͼP 0?1L?Ns>P敦?t@l-(CUC@?F=^x?F(!?uտW?NAϨ{p -l?6QؿV>Sq:=\˂rx? ?;-?EU?i17?E:x?(Ty?¾ `?K?n"%3?A۬??]#? B4nê~?!hl?q? k?P4=?hZbb?0?s a랾iyPCMnf?X4k@vᦽu ?E?*<?`+?&)?tNx?E歿yPu_?NdC$?]M>?M>T?FR?[{( ?7!ѽ7?>ľwڙ +?UK?H(Ľ#?7:ɉ?c,^U?X_@f&&޾aX?䃋,mBuYh?4?M -,NLN?'H?C{?YAݼп~HnR?d\嬻&dh?eҽc =Vi$?AzMa?Nl"`= -C\O"d?xB?Q?BŚφo lȇ`?_L?W]V|< ?)?Q?4?FEӾI}<ǧ!7z˾=Q?AFB\??B$pnƽ\v,ѾA8D=wa?Mp?ssLҿ?6e?QA4>D9C?>R .?`=ah?8lhZ?U] ?:4R}@?UE?E]?RnL?R~¿Ϳ #?\3?gn?H ?!t?D?,έz?7brzxz -pdCkw ?a(B=HRq?Q?< ?䚫?C?I0&\e>X?FP?R-=ygp𿓟+?>?S?R=}B??=! O?\Z?G~?>T?V?NF?a(?C^?]L z>(h?(HD?$-?i[U*<\R?l?!U?WL?280ܫ?sZM|.?3k?M[?@(*pMv>𩢾\>8?b(\04?84 ?ZHG^06?l>*Ύ?`+R=-=??Vr - ?3ý?I?Z?1@{/Ҿ;?g:W~T࿚ҽeO,?2?_Q?,ܿ?2ZZ࿛A:lW,4?Aa_e?Qجv@:'KA?f=>791o>r>}lX `~RoҾ=T?bwr?v˹?l}?U=jju?@;ȽȽƵpyBi=Ux?6p7=.=~ 杺$=ƽ FQ?T3`=7,пѹ2{@?D;Dw?DvE 佂DrS>0N?;cнB?IZQO?OA"?OFΘȾ6΀\V?bק]G?>*읿#?W,C\ξP7?WYͽ$T?`?"0u?1c̿J<?B=0ҿ!?S\?k9V?@a?>7822?0^1˽Ɗ?5vV?I~o?V:?0?=?94/_u8?PC?^b?޸9?DZ̝?d ??) ??'?&nj?Q;mUw9x?S?Gf?3(?8@GT۾q?IٮM20?R$!?!^?eE?:*p?C?\J@ ?.{¿L{Jp?̊ۘ6b D?R? -?_=迗w?[*p?Ki=>x?kŢ<Ȑjp?Kz?K6?_vnnԐk ?1j5x&_?/?9N}?bp,☿\?X꿅+~?1>+&?W?=?Z&P?a¾?ms?[-o?T8WUp; ->?Gr?9X?Mc'9T8$(v%?E_? - ?S.q?HලD?.q^)F~Z2?CL? Ђ?B?P?m$TLX?Gn?BWŁ Q=?BtJ=H?-b>= 3 bpξǫ(B O.?Z?Lʿ?O?gv+,??x?z96?O+$> ~11?F=v!?VWaǛ?QX?"pmL?P L1Untz?-1?6Xg? C[I樾D>?X:?4>쿝){+p??uϷ;=;vt? 8/k?¾Sѥ?K$?c[3ݼ^)'\xSѾs +V?GM"?-@0ؿ?jQ?`B?' ?=?K ?:?1?UJ?*?Tp0?EL0S??K[ c0$e;?$-d ?]?@]&?W =XT!ٿ⤿?g}?Ny9?wd?A>?o^>\?K$D/?.?B]ȽGA;!wj=P8#̽1?w*)-x ?q?PS8C?J:=vxo8@6c?Qt?<ν4$۾.?^4PN?l~x?G?Au7Zpo?S?0HH|?k/?9*j̾!A>Ǜ?=?j??{TJ?? Z:澁6>aX?*@?AaD?V?ZˆβEQ=EؾV?O]5?:.?S\5?7?ZB?&S?ff2J?{ب?*t)ͨ?0R?.o-ű?j?T?2KT@?n:O,a?8(N$$?k@qZ?r?>z͚ a?L?N2澎?Gm?Ps?E,?j_?C ̾]J?>< ?0?1?)?2p?His?N\hӾ3i?.O -1?^Bؾ;Jg̾Ҿ?E?D/h:߄q?B>SrVkٿ;r>뿛D?{P?,fܽ81i?Qof>*?=xȽ@D?tFƾ}+?p/?;$?alǀ?J ?>8\,:'e@?.<:t(r; Y?LS9=n?I9r pbH?Mp<*L>?RpоCLOq&>c!φE_h?4xݾY.q<?;{ῄ%<:?C?o?6bʉhetR,?Ѿ?опpؾAW<Ӣ "?ؓ?u9{?OƿH;?:ľ*?H> =M<?CVYh@?k?C=^0i?9۾?w?Tɢ??UNS<0ྪy@t6?I?cI?,k],?U??Aӿҥ?I?4cD?Z%4~?rnT=\Z?\oyRc[?H ?6#?;;X^?PQ?$?_8G??;Ľ?\r?,k?S?:E-?Ko`pm]?闁Zk^?8MоRDSp65??'`,Wľ1PN?K*??߿?SWL?Jvʿn;P@@?0=.!G?)<'7?4 v?* оŞ?)?j>彠޽2?^w?:I;?Q?TcĹ?G0?(g@?1e R?B B?m?d?Mڿ#2(iP)dCB,zNcQ?0n=pΠ?:~a?p.nH(?,yЖ¾RH~pb?8>,?[LV E?d_?Dy? A<~2?n98?eؽD5\H/2Zp?0齻o&7:?RI(?6z?Bbn?/z[d?'c?KI?6#pKAp?9O/ 9aPx0 ^?'<0?8Kū?O?Y?"2|{?Dhs]ӭj?tPpp?R(X?B?E-$Y?X=vrty?W靽D?( ?LU㿌xYTR׾Ux?=+侸z?m?#?mw430&?`@+;?-FW?㽖.?BX?b,ҹ?l?8.(u?hVv顿'H? g=ῖ:?= v nz?y! -?C2 ?f*^ #!}Nl?NZ%$D>?8?!?x,쾅ĮD?/p̼*ZwA\~7?kI?U[=6,?q#?(?E2*'#a?Yѿ|Q?h?ZwA@zBB?S'S?3$A%CLq=¿y?tw ;@=0C,`@=}m??#:񪚽5?= oJG2?K?2|Q*?@b?^]P0d?P='?U="?yLc?gؾ+df?瘿)h^[;?޶W~O?F\<TpJ,=W!Cc<~4c?/ -X?M?9???Y}4?>xs?)ƽ?;&?Q  !8о#b(?Rj?Wh/? `F̾g?7?i ʽh~?tgh{𿈽̾:4i$ElX1ۿrg 2!b?@?0?}?Nٞ$5v6?cV^?ADN -nW?F@?"H?N׽_}?gWӿue?|V{ؿY< -8r ?@q߽5)y!(e ;?lL?JWLԽ ʽאv?.<)=^$W^?N!?;?A";1-P?\J?2(?b~TcD?3(?>?vZ?Wq?1?Lv?Lj?E8?־HJXVƽזԾ^Q¿?A<]>7?>ZtP?\ -l?7\Wv?|@?!J?=m*?Oj5QOx l?`@WT?F1׾MXz z??󸿋[?T%?O g(?$ֿտzco ?4"|پI[?:Ž<-$pC?0P?S'$<X^? پ?s?Pń] T?F ?[x?N ?6 ?;?E?.t?>?W?N{?!&|ȝ&eCR?N\;?Z[?6U?C%?P?o?'Y%?r>N(V?Z]=b?9f?v2z!'pb㿄޻T?Lx?@A@Bŧ?D|M`M3_Ln@?EJڽsP?M>mϿ࿃aD?l ?;/㿃\۾ǾK.I=r? aOu?KF(?\<|z<p?UMP?M=?b=:?cO?0Li6?Dd*?Rl'>k6?%~<<??*?|w>Ky_?8:F?IЦ?nd?Rs?g?%?o?1k6H?Y~5[?_n?[|C|?f>`?I()@3뚼,(XP?-{?Bh<?Q=C6vziX@WBAB[zH?m4{|?tj#D?P?.>?XVB!B@fUaAş̿R2K?p?/ž -@)2?Ƹ?aȨ?KϿx^LÈ?6?LvgmLlf??>c.\Fƀ?Lr?`5̾&;ľms?[ٽqì?A85Nоgf?),s??h?tC@'?Cf?1? ?b,?9>?=!T?2D*?D&r?F7ⱾT9yI߾bp;[}?VVl>TU"?8嗾uF?Ev鮼6|W+h3J; @?O&?T?HrX9\>K?H!T`0?g^Zcp ; -l?Oyz3?G?84?X?MӾ8&&?'OK ?I[7?@v?3zi9 ?IBX2uV$?[-ph?G~?RXߤFl?̈_?۴Xz,.?6`?k$Fv?lnnYi=ڿ2H3>ޏt?4?erؿ=rؿ#]hxg?/?P$ܿ};?9?`N9R?`u??Q&j%_?)~?=Prl?L彈H?_^l?z!?<50۾YqF?R?t]?ܽ?&z?dtBzAgxAxR?sZ^?Ii<0X?X6O?i2?6I ->?B?V?,T?J?MznuxOJ=s{c?B?{l -?Qz?+=澩? $j:?L7$?߱3?Q?]=`@2'l?4'`2jz |R?Y;*#|{?!%jhW!?hq?TW? 2O?/k?QYq?ž!ڽp?ۘ?5ܾOt?8aRŽ$z>U???9X?lV?Q}?MdlL?ic ?i}?7|,CuAnZB>6L¾$?Fs?ocp?OVHx8=p?DA@C7BGN_Wp=?2P?hSj.tN?7sھ#e?\0?[/?Qdi['?@־-?oR?H#+;fq?7?dhH0N?P'>AA5Je?#L?Q?%y?j^?6}?Q?s?e ?C,N?ȴ1?4A3Bf -?Jr?;m?e/ؿ?Y.O@qx&-?c|1?8?K5?D-+*D"پ-?s"???!Z ?9K -Ar}?UfB'ſr?8_?,"??;?>"L?Z!ٽy`'? A&Acbb?c~IZ?׾lҎT[?.+`?D?J?.dr"l?,_'?@su%?g?O ?)ܽȿ?L17XfV?6lD_?"?BKwh?Fv?E5M?Ktv xK S wƢ??T??Ģ?4R~@=!ueо*tݾR?;JA?M,V|'? Ͼ` ξUlj>ԗ&?sY?D?<"?d4]v?ܴ?G,+0?"JE#?W``>6?_y8D*u-J R+?7k?R?=+@\B?dArj\@S}p׾N/ -?8d{ ?"^JVB*B -!@e?:?[O@$Hm?O?]1?H+=?Uʬn>[?%%u)j?Qd4d;&9 -~?nf9X+|E$?[At?+L_?H5~:1`d<5 ?/.?d-?ftb/B?> 5?{QP|\'ؒc6?K@?> ?p?Ma⫿f?P࿒HjX?@MTb|\xwZn?5~ a8??:?>5p3?sN}q`N?M=k? @ ?V#?|/~ ?Cv?`?O?XCAB -6Rj ?LX=ݶ&<"P|i׻րh*ͧ@MYh?;?o SAeB%@zss?U8?gƜx㓿| ?[?Kpg?tǁ?@=80p?LY"OM=3P?TT⾜5=?Pw?Gw^g|?\T>?KJU?&f?g??i;L@v."lܴ?4xV.?.3C s@Tv?O6PA*¾ ݢ?XJyP?\$?6?O*?5wzcj?x>ʋ#X?.澌0\?B?Nt?\ϡ?Pܿv,?,?(q?)["?0н?,v?.f~?ov?vӽx0>i?fQǿe1F@wnYCGA>j{?m?_ -<:z?,X/ -O?B?wZ؛G?cB?nBA?:jh?Jm? n?ZJ~?< >W=wD]ݿk?@@c>b?'ᚿwZ?|vP&??+dFfYVWϾ>D?wr??oFH[@= -"?Ҽ'4?`Lt?^p '?$O+;x*<(??6@05?:a?(xe$A?<\ƾm8?D?}?v?a\26?' ?O3QQ?HaS  "?%h{z?8R$DP"Q?X)i&a2}bW޾@?I?0žͫ5*pw?Cֿ?5ܧp8}?,@b[?];,?lݾA?[n`?9н ?TツX59"Q?H? I?L]?_bg:x?,S2!DaP?' ?_T?}oz:u6?D?P?>)l7l5?62N?M0?&A;\t?BP?2 ?I0ɾ(G?SC?GTWn?Pп0 -B?S!?&R ԤB?%?NS*?'ls?I@t?I?@%?ss$u?]?&?F?1y3/20?GU?!˾c5[jFӽ qf?m84?{?ؾ@>M?iH?b6?4WP;s`?Jb{?>.ms?+;2{A?`:F?Z\CW̬Rt&53s?E˼hE<(?%[ad\[w掽\N?թ,>&} ;C (࿇@^?>?g?H;`?E8?\gy?[K:uB?KYNA@C,@r? ɿV꽃Puq,uy ᾐ~t`S?8ҌHPdG?@3?M>=0=,/?.(v]^?RVU忏`-!`M?"%Hu?M.+?Iab[-??XN?%JP>Ji|M~RZ?(f2?a?(a?\JS?%潽5$mo?[)?J{?ąvn?g+?5?ST?% -!gd?Y?c?|E-o3?^?.!#&8? t?H?=`'X}i2?_O?!>_?^a??N(?M>w2?1d&@O`*?!?y?XH-d>??TʿNՊ?v񿌶Կ5ɼP?ݪ?c*B C{OAK?zZ?S*cɽ~?OU(uȽ?d??n?b?ָ߽?n&T?c%&?@)w?m?Og,#\=0?,b@?JtӾtCo?|?5(?PK=?T_̽?g?4n&j?IW)v'??>=NcJ@?rf?Oå{?4,?M㿜/?Ne?Ҕu?M?S:?!;L .־pL?Q -(?PV?<,F>3p7?;5y?3>,?4?\|վ1T?!6꽵x@(6C?;۸9щ?{=5?:ۿ>0WX? ?9?1p?Lc޾;Ę?3N&?+Խl?\Y?"?3A޼?,?OKɾ>H?|k+8?`>#?k?dkԽXC=AM|?w?[O@I;F@?jc90kD(AB͖+@|Z=[*=.? w0?0f>JYl?1Ѿh?o(??$=P?.K?i)C?@O2=JJu?U?Z ?A?k?!/TA{?Eh::/پoy<7ټ9H?tVvq=3H?E?S=D%2;w6?}fm@T?\=7@7A??qG2_BP?-A(!k40>cB1n x?'1?'-?=?DDA ?E?#K?+s&D?ҿ5i+ -?!f??6KQ?]?GH?GvB_?3?ľ&G^?Qct0?@ƾT?M?˝Th60ؿԽ?E?qS?Xh?d̿SS ??2鷾M7?S7}6ο!I#?vľ(wf?L?4 2??]` -8'r?^r{ -?ZzA?]B<*tC[xB~Aa(BW@;þ<0?WU.F7<?٥ȿ?ZS5=>S J?vP?9]w"#=?8+^k5歽_ޔ?B?&L>־IzD>|?bB,><?u:|-?O?s*E"y!?h~?af?GxоP^? -0?TkX= ?TL:n?<H:n?i%?a©=&ؿ5e?XvNȿm@;?C0=zZClp?_?N)>̎?3qɿ?6n rHk?(?ZQ^?wƾ+ "-6(TX?3C8z?R!=伂\?'K?sBH=ɢ35;PF98>@(TAGyB+@{?B :qBz?X?vo;@?U}ܘ?*UG?.=ʽ?GQ|a?zDzs?),j8pb?[V?]&a?4im徝!@8@@;+vHuICgK'?c͢?&9@=o]?dӽd?@?J?0 A?Wؾ4y&XE?:?3&<Ky?RMɬȾB7%?] ?Na{k89<8Z5?AH?R<?KC쾇޺?#xk??p6<\e ?QFb?牾WXJmP?[3??!?Vw?8$(Qq`޾’?bP?p<0>͂?QM?S@hGG?VվJ=8?F8>t=]\AAr@6?S)?p-ھ!5tY<;?,B?hjɓڢ!nB9?W?QZ?Fl?{\8=X?{?O ?HR>?1V?dɿA<X=`byw®?di>v-K?1˒?]jMIL?O?uO?!L?)P)ܿxK?tD?<,{2Ƚ?Eq?أM'Խ?b{?57 -?tsü&h??پ) ?0y -?S뗾!ݾ/ྊ]; -?<&e¼9?'9ѿ?SN?BS?K17j-?A?Wf?T?($?:?ξ`x?xD?_ߣ<?7ھ?6*.?e?d0%ϭ;?")"<\?V> -.m??+V?OBf?^ {ˍ?8Y??! 74A+ AK??&wfg1j?UHU+s}^֊?+80K??uּ?SyfE?O=Z? ?iN9zν=g?3 -A ~@-??>?5ƿ!7??#|?O(%n?ˍ ?{&膊,h?BY?a˽BP?̿˹<??WXD<?8|Ծ?/?:޾$ꪾLB=p=t?;?+D?LƉ?CO?e3Td*ٽn]?AɎV -8?.??zO?׌{?D7?3?v?@"p?5?l?>ެ:?2kE(n?: ??R6; v?V?gWr?&OA!E>?5?^>κ ׾W? Mhm --6@]X?%y;?A??ۜ?`sf ?bؾ8WЎɾMď3_?T?1? AK?HqAPBI?b)<.8?J=3ȽhYٽ/7`t=߬8=&J?g4?4Ľ:zH8I3?e?Fu:^2;D^^@1!?eg?=U?^;K+^oӾvXP; ?[C>Dt.,?K;=`i]콇c?Co\?-x?;?%ԾI/s?Ot ?i}?Wz־Eo5:d4?g^vE_Ð>Ǿ,?c,?7ɾ"_9~o8?J\8ý?XG?ת(S*'?ԔA7@󯽥S p̾\ -?&,Iv?^]Y\r#?@R ?:k?8;y (?9^?1la)e\Z?$t?^E?Bv?_Ng?jfBE ۿe?=k"?a*n@D@??? -?)c ھyI!?[8?)^kӺ?,6?K+k>C?C?:V1?T.?`d?jTv&j(?HQ4r&?H?;h '?R.?\ȽZZ? e=?h޽ȭ??QiM -?qyg ʽފ>V ?B鿏U?sE*NGL?ok2< }{= 4?)diP֖?Ec?]%V> -9m?Ca`wn?́*|?qV? Q?u<7=pjMg(=?w?^?_M?L ?-hS?^X=;4?+t8Јwȿp׾1[T9?y!ohn?Q?Nl?;u?RȾ "p^Q0?U`>D(?clx~?k?t?W;ü> nH.pBB?N ;?/U -/D?`羠9~-?`?>+?L.[?TP@LGpRum0̾Cw?g=ٽLq&?+@EȽ!"z?b9 -ŋ,D?$%=?.?L?.f0?J_8@ Qfݾ`J@ xT?K3 -VfŚ>QԾL%D?@<޵?+?2u -?j[&?Ɀ,?10iX?2k?'q %0$h=4@?3 ->˽?>!fDHc?Daă?ᡨ5@?Hu+:^?L`BGھF?cDrqu?]4Z֕{Լ?@F?=&j?Ι?7. ƾXQag¼T?)Q?!P+2?T(v?`JJXdH7⿖ߛ;L`^[nQ@?&LkԵ)?NP۝?mWD7C<m?]:?=_9鲿W x?W?Kl`=U1꿅cR\@O¼sW?.x?Y^|s>+J+5Ծu<<}?=43h *?GN?%?O˿V&\?Xp<%?q=<3ؾ3@:eJԀ?H㤼ȺbU??x?&?.ˬ?92-W*W?I?d}⏀`< lV@T?@?u"!C󼮔/1<|}#+M: ?.?0]'4?2h@7@+4?Q;Ӣ`?5?6:?+݆?gu?ؾB -a俕@gub=]]X?! |$I?,c 8/F)?JdLQAzq\&}>(J?T˽R$0N*0@? ̿?: CNf0,|? ٿ?@?P?Ǿ@WȾHV?X0^z膾Z?E? i ?:ξ0#?"?2e?cb:i?.C?H z -ܾ -iOdd?-޿ -gx;L?B@_V@5|%l8?eᨼd=?Sվz??nx?5i?|pW);,|V?Xؽhhvt8?P!Pq?L -~&tP?EZ?R?UtY >e@?oߙ\kD?/& ѽ%?9$?ZYo҈OF d'?X?@`&?6@d)0ξ̾)?@l?\R?`Fl\|Zi8mJ `?Wf2?1Ŵ?Uw!N1"[.?9?˾!祿D -'(> *?/J?JX ś"/?OK?,S9*?-E?H4??;l?F? *!6?'?L=&dh?L;?JA*?M-^н[? ~%'I@>l=?9\﮾̖?/ᦽ>*^zE?6?UN?8=-S@:\$>fs'P Z?¶?vU?\Wd(z@o?;?{۽y=0 ?pY.?F/ ?P5?QW .v?:8?mվ' ?ejz?bV?Jv, [" -?{.;w??ɠ?0 -?6AlXyxPKR?蠿xq?6gK<d,GFҥې45?A604\r7?-P49$?FyKNR@+U:E?Iҽ$_?d? Hh ?"]ynr@(ھ?P?vB -L,ֿ{O?Ј -=+@?&cþ -v@,h)Zt`M?"p2?W8C{):?YFX7Ì?,w#aS2.bpV!?^Ⱦ5?L+Ș?<:?-S?CT~?7[|?g?AL?<s}?W(}?X'4?3)" ?(T|*Pְҿ辏@ᅤ?5Y˿ľ?G -K~=x`,hw/ls&^L"/?,=݆?N>H=0k?g:?6D?#?Lpl=4WT;;忒>?L1?v*K)Hnv?'fa=>tF{?Կam?Y0W{?_?@W?.%&hC+?S2^?X>XAb?@j.8?XGr&?)0?(;?OWO vg4Ljgei> ?@27?OAp?=ݭ{(d~u;?zMkHҿx^?7*Ơ?H?Aο{Հ?Xf?>?U ̽DX ?JsF?%ľ8Լö?U0ν[E&AGN?".?gҿr?-r ?faEK!?\BٽMн:RJm?$ }Ծ?z^ASB?3?a<@0?<x?/Hx-4l?Ga?pqbѵ?U{l?7]vپ ?)-?F?C?c+2D;澢L?#0?6OJ6*jS(P???Vu~v?7fX?E*-ct!^kxby?! -Sj?S?!AfþL(?>{̾?U>뭿cwɔAa$? -*?Z>y0y͊?V -=?ý6$Nw߾|Ծ¾Bm??dLpR!?^sT?@?RT=J8@?;ͽ1?"`n?eL n= >Tn??Df?9??ZP??a? k?;r?EW;?e2?6 P??Oc*T*?D)Ao2?:?f5?-aJw1l迤N|`I,xo/4?P2VB?7?_@,6?8N,?L<-嚾 b{ c?Enq?ef?7 ?/>ܱP?G ?J.?4>Ҏ?FX?G=5?F-u> ?NMx2?Id/?dZ?W?o>b潑 '?KJ?<T?Vm?|?ptyz@\?@'gt?&v) A?0C9e Ƶ.^r,?$#fN}?F0?I!@+ƿ?b8?-, -+?cl\ W?DtJ쾩J,9Yz/ܤD[?-c?E?;W?&Z?$?kCl\??gaX -,ף?8csJ0>p=5>9ʀ A=`phr??@'n?]P?Sx?Z<֎n?=3K?APm?c`-?+B?7?@??K{+ p>§.?$]=%T?o;W?`8?7"Կv >+?w?>W?Rj^?y?9פ@?=?E?կ@3?>|??=S?[ݿ,b?P?0sP5&鿘4R?+?(?Utbo?t⿖=kX?(R?)r?\?m)?U.0D?K>?6颾?*{?MC2ȹ?@ѽ??M@? &\E>Ծch?KGʿ{Rs?nf/YCD]&Hjۆ迚xxC-.?YԾyxȜL~W޿Ċ?ڏ?\un?c.2k? S^?Q?=.?`ae{?7ힿM?,N$0? vd? U?>?-R;྘h?ج???ED&wg?+^8?XĽI?>O"|Q?N0j?c?u~7gH?O=[;`7bX?2:>EɔP^8?Dsi?\`Ծ ?n?PƔ? x쿃ݾ©VpuO|?Ӎ\?)T?D(x ?F?[@T/PP?SC)LzDY?#>?# >-?t?(k:@?Q4?Pk?UJ?P?8?vhPھx?_-?Ո?Dн1m?/s?K:? %?нx+澰?bt1?5y?Z#],?=j?Q== ?7XbLʾ5ؽT?%7rO̽g?+hF?9ؽ,؜?*>C̾pjI?zNň?0?\JX򚾍b?QN@.Y?[,,$V?O?5mcq?+m?Pw?G@?T0'~;>_?8?)?/DLE~?c\xpw"錾BQ\nl羒k_Sƺ=bwp>R(P!Ͽ?N蛿2MƀJ¿xW RMt=T@I<?BϜ^t=|fǜ` ?Dnȿ?_Hh1"?7?k˙e]VR$?N,Vo> ?c?FoԿۗl}=?cҾ?I? 4$_<$??q?9?.kk"|?>Ι?L?o @_?:=m0?P%@?YmSRLDl>?Hq?J>6.?a%?H!?NTھ?:)?Vo?C"?BuǾ 6?%1νr?4?|?jȤ?V?lq⿛FN?܀?X BAKQ?J?;?ȸ?(?F?:޾0q?1ƘZ?~??2+?WU=gDŽ=7[qB=$?Z0??^? ^߲H#^&w̿Y)?)(n>^}?W'L>hc?UR?%н̾>?`Vþ.;2 (1?0z?9oվIm?66XGA?/:x?56??rw" ?;翐unG?IAi\W?RM?*՟?-?d &??;O?S`?1qǒ?1?RPhk?IZ<Ï?VjHPd?Pc??U,\t?Ayw~pd?fk@1T?X0WD˾z?aȧ?9b]M?1#?TdS%?J;c?2@?k=\Rl?H;{?,?Ǘ5@}kY;@[?R26 `>inT) ?鿘3oA?9?0?dJ&?EX?0%|TD*:ϥ?Z?u!?RBtD?29?idvO="39??濖4z.Y6?ဿf?]??W4۾4 =?R@? ῌa?R?5?}??zd?.s?9"N$L? ZcwY?fAGz<'062?(#"?&r?Of?d@?J߿⮿m?5+cB,TyԾz?뿜?Q?)m -?HT?;3tD$?q?5?n`?2 F@>?&?A?k??0#%迈nthő?"?=yP?\H?J?bz?D z?S ?MK?G?1t?琮?~D?H ?N?k̾@ a?T?4?^U"<࿍ -h{?(?I`L?.M,]HÔ?z?yq>V̿r\N?2̋@L>(? 8O?I?-依2~罌Ct78yC6-?HT22 v) ƿl8޿ )r@W?e!?p?<<P>ռ,ҿn?T?꿏<8佮d?=7?\OY?nHhZ15$Dɤ?Fp?:.xu -/Lߞ#PcɱLjbh*׽@T?WϽDjl[`?IqоY?u *?TW:GW?R?A!޽w8?H۽cu?:x ?=2N?JT=oTgg?p[Z?G ?`3?*;>?V+5dY4C:?ĿƽB p?F=͔";[t8[n?;Q?#7ܿ~oZ?@?_F?2D?$?te.ν覰E8?7M?=1?Ho⿌햾f.9?4l?'?XK?ܲٿ&uv޾/]^P?)u?B2?@*@5L?+ݾ徖,ol}0n?ۭf?ֿ}? &V?G?8žg v/?t?`F?I@ .?Z?"ྱ*vտRu.;x`?V -?\M!Z?z[?Y[A=tҾǞJӐƾhuEY?]N˵"@0+rȾ d7=tCh#|!=-?!.t`g?MDYW?uؾFzM.`uAfA?E&B?K,M?~?P _oGBDT? bQa޾A m?7?.l?]jP?`RY?xa?Ί?@B?Ffᾢ8.??*3g?tN⹽P(Y+?6 ?Lj?5FŘG8ES?G3?+?B(W)>?)R&0ʾZf?p?[b^ t쿥 ?I?z?NT??|R?;N?Q(<ft:%>$5VHp@?<о?Dl?>?N -?>0 L ۩nwfO}?^f(;㾑!?/z7!l?)p5龀,X d?J?Ih?QCc U9þs0x,v?;ˣ?N dU @ʽX?JJ?Y?S?X䰾RtCzΈ?FXלDft }<`CȽK?]k=lֿ<_?H)hS ?,꿒Qy?7s&?N1 CQІ 0?7$fP XjC -?*n?Wɽcsw+`?/v=`览/?K"@͇?⽸*?D߾G &T=d`?>CB?,位I?&[;P"?gpLe|?dE}?#czw 4wY -ould*x?_=oT,ܐ2?JJ?Fn?۪/,?!r?z?0vz?DA@--F[?V?AhU?4Nx?cu:̾N?lr@?O=-럾 ?-̿}VA?^I?)Y0`?;S$~?KψY?Fqޒ=߽?\?=?VR?9ӽ6(?*p,ZP?'/?ti?6e1DD; l=[~{>3f?(`R0bRyfJv?K}?QOT%?h?[i?vI?˿i󢽉g*`3;=2?-Iu?OF?Z?>_^ľ"?F&??f'?+*?nDr?J?eQk4>ܽ?0D?C6Ŏ~?֦ϾJ?ZSjƿ-}^Yn??ѿ\=7?k?}b?E0JV?u#?Y?G?JQ|? }>?'v,{f?׭?M{?L,R8v9vpy˼>ѽ?&<&,b?:V: =],?9z?Jk<@8"J?~d-y?KF6侎?n ⊾?@=z(P=?/y?XBB4Z?^;=_^?+?]>!H?ha?[K)?0 ?@Y=?I i< ?K*A|V?Z~p?Mdk5ܽB?9Y9??#j?]ā?\߾6VpWPʽ+c}XV?Ѷ俊 ?:??L\?]AUv@sC h?UԿQ?-iT=2O?W ?b@Apr?: -y?S?t?[?9?-?SG?^^!W|@:@'$jC2XB?\߾!b?#M[9ߍ;4@R8=?>iR`S:2f-uדUe?K?q@QF.g?@*J?!-! J:?+L9?zMa1Pe2???3@?+F#ֽ f ҽw#h M?_IB?S;?: Ȫn?B9?]>?]?a1?8⽣?@r?5?j3?Gx4R䎽@ؾV?%C%A?d= -潷 ??? ?ٖ佇:\?]+#?:;?dTH$yonՋ{??eX6?]~?;?p&?=aHNO?zh]־'?G5?^QB?? I@*ȫDB?*?>Ի6f?? ~4Q|?9?>Nʀ?r\ 6?(]?E_?qK?~ˬ?N*d?}?y_?^e2?C>u"McA?Mbjrܾ}V? 忄ܾP?a|:ƽh_ξ}vve??Ml/K"?X|JV?)s?'8K?X:q?*a?R?mkTz?]Scv?c½BGpQ2?4%e?eq?J-uu?C cAPj?`c &?a?U4?KsO0¬o@uH'M?N(?ݰ?Vd}ҽ?ܙFdegИ?=}=AK>?6i?h}?/]?ވ? -׿Ȓ?r?1i>XA=?Edռ3?s<85<@ =, ?X=^)?R6#=0a< )?5?@?4w?gdQte%j=?O;-/?]X?'}H?`h?]NXD?N@ھ'??mepqbv}Vt-=?C?x?%I>DwÒ@-@q2?HݾU*l?O/"O>BHt?LD?nsM`=?JtU*?2Wo?<?Pd?l?X>μ%?E7<2v@?8?:|U>+ ?7?/E?F0%U뿚!??"29οX?:Dܾh$!>=ƿA{YCL@*m?!Z?v?10#T1?ԚUNd*?Δ?XW ؽ??ڱ?\ƿ] ?"?(Ο?Y?Wf#1"kX?D]Tf?E侚?@8k!=B ?:8IzY(\G?Qm}Mܽ$?BV?޴2?R¿ D?c翃p|J?Fп ?7#(R ,KJMZ?Q,< UÐĿ?jW?2y?.Ŀ? ?U/&?kǿ]FS?MW.>J>?+'P2?U>=z Q?{ i?I`Dhŀ???Mt?I?9 -<*'06 dL0; ?M~?Tc<~8@ ⽈?^r<:byHzd?5@?hOQF+^p<`Op?|?A*?9GqD?M?>=t`?2-?gr?H?\?E?^oܿL?J? *?\DL~?%6?e#F>ɿ`j6?yF?N>νnhRR??Mr4 ?H?A0?)Y=zI?H}z)@,ڸB"A}"?0?# 0ghOl~$p??L5@+G?<Ť]0~vj9F ?<۬o\L@f?G?,?K#.s0?Ym?&?A#?4Vھ???"sο?HI(S p_>ʍ?Ǟy*ɾe?U?4!=?Q𬿎7ƾ~g?nV~\.㿄 W=1t;f@ȼ[-刿DK]d?8=Kڼ4p%ftgh!w q㥾@z5?<?x?5>G?%B;=@/?QFB?+D?fU?&1w?JJ5?<*?{t]?Z?2@g_)t4??&?(q_?qH# F?bP~?4?hf_}? 7N5\6|5?X=͢?/=0|ᾟľln۾U&Z?^V?Lֽ$ l z~.?GB3M6A?B侗jD?F:7 ?Bƙ?Uun0^t5?@%T?%,?l>u?((r?C ?>¾?a?M忆5!W޽(PӅIjP< -H?`B]?(-?\zH?@(j?4%?,&_8B?![t?^?U - ?7۾qZZ?8*?#>?`D&l?^efMF~w:?kQ?Q:W R"H>gMy{?Swq3pt%?cP<= h_p Mdn?(u<,ĨuЉ?a?O$?xHFf1轏+qfJsܽ&Ҩ?&?/,`4IZ?Z龐vȌX^?tP-nhlQ־fi?C0Ծ47 ? ? ?Z-2?<9࿖:=ƍD>,u=^??D(5̽ܙreӲ?IZ5Ӕ?-5? Y퍾ξĵW?;7?> -J?DN9 ?0CF?𛾉C"t?BT;J y??\1~?3&:4 ȿZ?U$?,U?Tl#Jq@?I& /?1TiO -? ?/jb@?#?ڋ>x0>A}=q0z|ɾM|tI?jSKe?+?*L??St?E=?=!b?I2?\(=tRCz?NGֽ@ڿwDx=ؾŽܽrc#/]_N> 1޾5BR?I7 V -?r??y$?:xj?t3?M8nh*7`S!?VLd ?9[?/ ?^aP?` ?dp H?r,)><= ^l1c꿕ymʾl83?//?4?4ܿJq(?gDRPs ?[Y -?6;?,K?Hǽ@y⽕? u=lqX?#%:?8ż@?< Է>0Gg?+M[\?2w "ֶ{?B=b?b.?l?y dFJ7YB?RIp=޺s?h;?sܞ@@%#T?h޿e??b?=:o{ҽ%n?S_" -?B(Y)̿\Z?YW8{:?N߾~)i=KxF<?ߟ? -<͝?OG&I$33?,b?:ݏ?O%?F]Ƚ迁e?0?S?N?D!?K?n?-G?LS6?NX:,a@*?4?$?ƽ??%|dϽP̾)߿}`~?Q?ԥSbF?FTw?Oʬ?KEJL`?2$?{?0?W'0?^YS@ѽ&"?$&~~?5Ľr??@V?.T?J?1p>Ih?Ps^Q?(K)?QʾWξQ۵?2?!(?F1ܿV@?G/R\bl?G?$6MHSֿ j,B{Uqݾ??M\'o%?Pg|OAd?]l?̾g??q.f?B?J -X?rc꾆Ľrv%45?ٽ?8wl?Z!$ 8&%ԯ0?++;?{5K=?c׽ ?Ћ辈%~?8a߾]tat0?:?g?Sc2?"}?ʾr4<5hCl,p?ѾF?`z Ya?迈Iᙽl?]?3u? bU ?.KU?.??J9=Fc8? ew>B?0F8l-(?4@.?@>|`žj0齪{وԾ ?k+U 1?5ξvp=l?>T?E(~?bh?Yh> p˙-+%f^2_ ?}(Yҳ<0?-?\Q ?WV?]z?y/? -k8)E@,?N?'H-m*>-4d?hߤ*RF?N?>`< ?E͎F,+P?*[Ǿ ?@!wܞl?dx|AB??B$?aqQ?Ʈ*O=gV5SvF1?E0{s(B?+?^ݗCFiJ ?UA(ľJ?L~nny?Eп?>Ȭľys\BU?0׫?꽆}>?J_>G>q:?-Nq~n?'^0h?:翁Bi վO޾þS޿? k?02r?1zyf?_FоW迖>=c*?D#hB.?!hBfE ?ۮ ?wW~,u=pxb0C -M?T?QBR>i|=Y ?,F?W^g7A?|1iYܾFa?꽠3\=S4cu<'m0b?c~޾r{bu远v?ڿ. ~?FоF%aȾlɝ?Lj ?yI@(b=L?Z9@Y^s$?>A,{܃;?9O7?=5`]?C"쾎?]\]5XG>mLAO3?B1Sõྜ'k8+w:?ؖF=.?LhI?NOGrIj޻`>?_ *~2?A`Y(+Ľv?μ8>?\`X?O?H 'f?Gz?6SV?<\ټ{M?b@?'&=N?W??-X*?S6Dཥ*8i>D)R-13&X>?-҇?;%?v lO?S?3;2G,T?2?Q-p?Gd?CXG)gH4v?%2x?kn?R?B?Na?PJ?ꭒ?d?%?]꿋bG=q`?0w,?3X?c,?p+ ?U=޾!h?e8?[?E?'nXDGɾ{L?~U? -ڴҿ!?n(qp@(3d?H=lhͿ]?`OFnG?eQ?>J -!?o??M;rX?EvZ?;Zu擾*H?Jd/?!x;E ?Dd\,!ڼŌнk|?_??):O>Ac<"o=⌚?Ok?D?H?I?zɾA}y?`tÿ?m'7Ee?Y$? W?h -e'^*1?cL?>ҿs%o?]Ѿ-?/]G?xാhIx??w.<A.ʣ?A?Į1?"ٿz?C , ?ڵ}?S?~F?H&=Å?8O?s]Zr?@MH?p;>%Ҽ\?+PVH7?8Y(?JmRa*F؉~?/p?Bb?0*?b? JGi|?;:@?z~?-1t`?N!?%a:8n9FP[?KG$?2k_?3k?+8h}8X/i?:?8ݠ>D&\?9'>H?Ԣ?Y!?̈́?H&?!?+!?i -E?6͹?F??I;?1 ĽJpV?K?h[ǽajzf6^L4?F??7Fʾ+0ɸ?2Z)D^ ?Z%t? @?7G?ϴ?bl?MEY\|$ ~?c?@Tƿ.?W ?fٿ\5?;B?mn#=.vT6?F?qg^?ThlҌ1M z-77?`켱8=(?HEu?,fw`?a+K?\S i[08?WF?>@/Z оa9?o]C?H"Fmd#?<?<)?r?Ok?ۏo?D?q0?EH?.ԾA?JĔ!d?{S7J?8C?]p?=s?j?ؾ??^ ?FSx>&?[?D"k ?,g?6d?-xɽ"HB?` p?3?L'?NM?Y?8V?Wۚ?AK?z-L ??ȿؾ\06?ndt@:㾘A콤2!hwFY_nX[?MD?<8@:xy<85><2³B?‚hR<H?&O ?h]3=I?[n־Q0?1C}L?d\z ?8t?Fп}:.H?9?bR DR6/f(2?a+?pq o?e?9 쪾8?cf?1M ?`]4?CPMY;'F4?:5??,/5R?,̿kO?If?(Akl?2?.B?53ž[-Z@?BDX -?;6?>|"x?Tbξ?$p@kYr??a?4X??\r?8UF? :4??O>q?c9/B>@q$==%',A|Oɔ9<ꭿv&@ AJ ?8_܄9?ahA>2~<&@<>`?(H ʿ?j\4ApiN~?sJ$8?9&TWj: -?vf~;a?IdU:=.@V70>$F'? Cx ?(=?9D0f?S"?{Kf1vȿX2> -?I_>qW?`fu Y?)Y?Llp5X?kE<sw"?0t?H=j?){c(|_?Q?Op?Aذ?Rw?q - ?C[BfE7Ҿ/辁A9n?*s_1`rx?9v @o[\Nrrƿ?9 ?;'M:u?zRhb>?0T?Tak?sBY*?/v% @/4?W?$ǽ&,0.8[+= ȿ]=tBK?1%BKMŸ?<%H@-NѤj`?.?0?u_xy|`?وBh怾ZK?I߾= yFQ?Z?0Q?FrO\i4)&N̾Gs?,8zH<7c?e ?);>? qLz̾H -ܾfh(?%?E]F?e?="C<@XE?+P?!` ?N_濇 Fߴx?16$?8濏D?$?{"?dY.?a%οT?~.ƿ?drp?H8)p?ϾJ4.?l8Q@־~bmZ?='?[YY,?1X3Hw3>\K\?8ܿ+zӾ μym=s|"m +J?.9h`|H?S?gD8J? ߾V?e߶ھ<?w ;?WB?|OED?Rkݾ85-˰?Y2?u@?8?KMοpͤ= ?"Ṩ<8]v?>޾6L?'P?@qv?ྕ>|?F7?yPX0k?kC?>=14?BHԾh#?f ?8O%?FO? ?2?Р1v?%˾`>-??Ⱦn'̾?IuD/*8?+}L,?a/B ?'>a\ժ?D.,ξVv#?)3?Bm{ƽ?C?lA?/$@1(=?-H).Y[ i%w^(?Fc7?Z)VC$sﰿ¢?G`?It?`}0?IN&Q+p?hȤEy4*~F?uf^ɾW̽r?F WX?RY?>3 -?iJ -R?X:3@G1I?c< -?sa/3Wl)7X'\ϝ׾往?:(8?"L@?*Ҿ:1΁?+&t_j?{h q[?F?Mr??\T?=~?)d޸?(D?YDf?ӟ?De: 1.?ྊ$0t> ?rľܼ??^?[Mþ7.=̾~?Q\?EP>.N'?GFL??N+K=2?x޿uM}?VS=9 l"?@y?Dʾ? ?nȾx+?SS?-?HJ!)u?j?,=ⴠ?5?\FĿj޾?1Ƚ?KT?P~D}&?AB\?JN?٪? hR?=?>V?;|俩%!m.?555|-t?;0? ->UhY?j ?žg?Նw͕{0d)gοvP?d"_lԫw?Ic   ?HBh?Yx<&` ?? =*F:?d/e?L?.a:*{l6?{ÿνF.p?Em?H^Ȭ5[?QVJ?)뽿?4%?El \~_1꾀<)&'?vl?]$?f?P־n?ּ?`翧?qzAv08z?2u?=(Aд* -o0J>md??KM'ހ?GrDQmþx?#p!t$OG?84?BM\#%]!h??K?M,HrvξTU5ſ?M??L?*J?f?!dH}\t ?0T6'/׾uB?R0?㈿v@?7@ĿY?C!t?euHQNxV?8mKR?/D?=?/0XZl?4?Q=|y?l?х?d4b?B':tg?K[0?+,N=?.?Re@ ? ^q?TÉ?fb?^9??H?F@z/6?P* ?3,mOܾ?>?aMV?5D??$Œ?Oc ?*N>k8|-?J-?*L?Lr?&{!?J5?7?ArqP?i tWҾ>N??Nlv=P?T|?[` -ou? ܾ_@ܾ!8?L\?'Z轗濕 -?OZPJ?K^\ D?;侄% -YT]`\? yh$?h?x?@ X::?ڌܾ!?6./l?AX,{Vq[?Ov>ٜ?FU"? ?̾-.?G^78R| 6ǖ?HƼJ8?9䀽2@t>? tMM`?Wϥ&?.8$-C?舽>\E?>I^?dੀ?L?2T[⿎>_?^ʿ~lI۽[(?}u P0KS_⿟{4ƽ|N@} ?9̿y?BYr"᜾a[s?y?GFN]H?Lf@ֿ4ٽuT?rGн°?@?Yt.?g?eń ?k?TqL?.z:*,?^{?X{Y?a6z6x?"?>?VDyCľT[e?^WjƤ?- -=Ӡ??GGleW? _P˳ l?<оيA?'2Dd -Z?%F<,?^&d?8<%4?!߽hcؽ>e^ -\OV$?G?SDL?MξlLx;?LR?G6U?8>FOܾ` =`CAcPa?;wUFP? "佱?tƽlre ?'?Sq +þ1?;*[)Ⱦ/J?o݈WB?[RW?R-])|m!T6wN'0Կ)===q?H6>(.5l, -?ZC׾xѽ֠ʩ?[aq?87v.ྂjP?/.?C<??ou:?1]- Z?`!B q̽࿙ -ۊ@ý^Ӝ@?AT?+V?N%?5V?Ji?N?Irz)yNV_ľ>?p~?VD?AjN@+*?J6ex }{?B-?Ҿ|^@350Gi\??[?/(?R?M?YN>?9wT?$ZEAd@,?REY˘P+?(uxe`?S͔ Fq??򿘪`Bn?<ڐ? ?E?1%>(h?濝+?^ÿGs?P/?O?5.ln?W  ?q? -X0xR<ͫw?$ɿdϽN?n??H4l?' ?1?V~?AJ>fT2mVH?y*(ռ .?DŲ?N7bOFN@;R,?/L-:"?@#d¼v?<"k +缿4.H?.º?#Z?T'Lnڿ?E?>!}p]k0|%6J`? -?O?Ͻ꽌I?C:?Acpf?yA?4Bb?Z7qV޾ҳ?;Y=F?UĐh?Q e?;?b*?ȾFT?@ s`.v?fW۾*6:|?뛛[?u]<^C¿ ̽S?E©;UN<>^??FDMp?V@?Cs P?;+ ?]Y辅:Z?ij&; ?TJwIT?E_?TS?,T%̽QM??Q&z<?v+}:?q(vؿy?mfoR?c}#|?>h=cھVQL?Y-?L ?B?\c??g1M?L"?L -Ohr.?Hs=?SDuy?Al0?Rf?g,)???Y쿯Ng?g>Jh ؽh4>[=qX?"qj@!D?=}]В?;&!ϾPr큠4, ?V=nC?L, UMڠތ Mz?\;,>hb?%-*?St#?+ƾZ澐|?KeT]?OM?nlܾgS%?=#_SX|?L?nzn?ǽ(N|>UR?u?J>?ƾ(E?j{+?D4:? d%az?'ؽ J?=m4m¾?4q?18L?.^4xoQ?XZgę?:?V1پV?PLz?`?>f ?Tb5d0wM1K=?%NAlyb?OY?Z6̿yQj?I0;6俢tyX%xJh|<2`?R=dq?l; ta6?l?:?=*?D?,T?F?Iҽ-7?-2?^<+B?=? $/?[r?^k`'?L?К5nB?^O_Ǿ\?E[2>#?]?PYcՊ?5 8?Q?i?!YAf@ 8.??v?諽p/?*̿{,]XԾ^L?Y1?B?t w?Ey?]Q?V06?@V?Zla?; u94~YH? -3.m$bJAC6k?֚vZLοt z?I?fڽ7tAпtl߿ @kr?E?*W?1kp4뾫/-H5o=ZPx?l<,sl?ZfӽDi p1ο?C!?N?f9?kQ?Zl;?/?q,!?p :J?%~b8?+ꁿp;{pr1?ߣ:b,._)>=zK8.< P?Y?/Ei?/u??܌p?Y\Y?½$ܽʀJ?q/r?(?j1:8|"/A?';? <?ZX?F1î~th+*D?\s?g?1+ -D?C?X?H?"=!=$ X ?|+?0J>R#i?<5?GsR ) ?B+⿋??Y~l䄽"?4s'+ҶճsNd?d?}?a?2=,?3qV,@Z??־sq?t`,~x9x3KH?Ɇ?4U?fӿ>ythm<@?bƾ ^AQͿe@2Ⱦuj{Ly?Zʼ?3C쾊> -ɽ璾2(?݋ACAN?J;)?U?Kn?2?]Fޞ`eb?O/Ͼx-?O̜3F GU]?+Y'Cw l"d?1P? -ѽ?\~Y]俟?޿?I%|N?E4^?d첾?J??ep?`޽CҴc^?J-QĽ_?aRWzؾ~3>d|m)d ?HӾ -]DQ?9s?B+G?if?Uؾ{n?2kt(D?|)N?>GNf{?Cor?MT8ݽ]?$?jl?X.?vzz?X!?R&F.&?P(?-,@ /w? -0?y@?Oܶ?V\"?3_8FN?G?Q_?&:?{F?ֿE?ƾʿsA$?,?);.-eR0?'?|x?S/Ѿ'X?h8{I?@?+:D.Ŀeq~ <ؾ*н*?iK(0l),:?TI?~?L{s`tsX -,Pս ˠ/9d'YxS[ -NA%?^bx! }̽ -wT?|?f9}uȿ`?UgEu.Ҿ<ѕ?V?J$辰)Ӵ&Ǒ?)*D?TR>r? gD@[ <<(Խ(?澷B>-?)t?] R/ i?@Au:0l?)Fn4x .z>?Q"q\??>;$4?+f?P@?8p51̾݇ۗDg?%(?CR~޾q[?3v#/") "?;##PJ@?/6H_u%?"F?Cǿ -F?Ctm??C5|\?9.q?;V -ux?gXt(?45F>=O^[M?&} -5r?,?Ҿ?~m?gdƾC]Z?i U?@2?LH(?_?2sR?qBTܰۗ#;,5v?T=+(?Gv"> f?+?Fl=2оgd.鼽Pv?=۔h?H*?:nY?K{/?O?v??hǿ?l@i7@rp=? =<?A?=H?U?Q??Wd?3>A?\l0??.C5#MܽNl'EJ?e?RNP:?B/@sO7-u]t¾ ^:?QY{W$]+?;f-u?F޾.bI?L?IھS>&?E ?9V?#-_?QYr|?g?P?W褼%?o?q` 4 ?^:?,9Gα} ?#_ ?<?/Y0?AS?߾b:?I?58?Q 4=?ƉJ\пc* ?!fd?P?Pf?Lӿ?'Qξ>u?,?@?HO -S26?.e>Ⱦ? 7)(rcʿZֿ ?H`Ő>?"l iem?O?/@5Fྌ ?3H?¡k?@У-RY?+`N,:g7R?H<3?8J<Ƚd=w? 8;!Ts}>%~y%ھ-j=qm?:"+>-?HF߼8ZץE;>?;bZ:;4JL?O+?H?BJy?A ?Ph7:?F׳:w$aPĘع(?d} <!?Z? ?wZ@?=il?r?R -ʾ{P߽?*&l ?mi?x*Xy^?;0{\A꿉?{技?3?8m>?Ii2g&>v?JN@0: i(L8xvI>Z2:=,?<?ֿ?L0?m7?fzX?Uh?m?`ʽSvw8?4䊽n -?% ?0!.?ÉEse?;-r?s5a?"?IO<0q?m6Dݸ?::H?AD~?4y4 Jk?0,f?7?]-$?gx`>>?G?W?R?=Q$?Y%?0 "WV? ?^Pb.z?Xߢ?H4?7쾣JսCnۿ꾋@oBn?9ؽV??־@?Y hD?r?C?6?|?2:.Q)M?]?'j6?-?DD9Py.L?er]}>idN?`?' p:>?gܾ͈[?Fr?#4?[?%'bR"(?d?t??l???-`st?c?&B9x+A2׿}{T?ο^|?|ER[?-}ܓ?[y? nPT\|?X6"?M䬾cވ?x$RnB8(DZvz?E 39@ ps3.?ZVWO;U?S lG?=?Mt6J??о$2Ek?f`F??m."?KD?CW?FFbّ֧ixž"ʾ)y3?S⿔?X?@Nl?>N?>|޽X?8'?®?NZ2?,_쿋Z?&f?G߽b4wWХ>̢?Qx޾|0rͳb :?2?4n_<>?E,ci?Nk?l@_6o?UaPz>5yq+뿋+?LI-?Zؿ,ý {̾:?HL??&>'/S*wO(T?$C.AN@#?;?c?"F=@2A?dǿ?W?Ev<?Ր?6eFuG^?J=7>,! z?.p$!놾-1"Ŀ??4ֽ*ED4:?p:Iի?%z :?z?9>zs?=gr?LX?L?Bg|H?˿J?CI?2޾?T&?/Q:оOe?I]sfqrp??Uz8?BYcVh^_= ?w5?8?Vs5t]TDgH?[(>?'IV&?]?Y;*`bGw?Hؾn"`9M-6)<*P(_#2?`Y>>a?C*?갼,`?CT|O?[Ծ/?\6s }?fJL(K>m?0?jj,?^Je5[-[?yh`9,U?3U??NZj?;վ^?)?NA?JצD?5L -?(d6?!{><?MM> -h}OR?_?<|?<V}4?G?</ؾx?B>?)[Yr?S HSkü 5?1.I?cn;䣾>?3?9i|i?JʾLo?7 -xv?=&?:а6h?Lr޿Jl?G?-Wھ.H?4X(ɾK_? ?a'?O7?(d?f^?2<*?0@@?=vP?ҽJ= ?I,?оBm<Զ?<֘5<&7P ?jTa?8=ķ@= ?CkA?q-A3?jqax?gxf?a~@?|V?zr?HQd0*hp< ߢ-?H#u9-?J?I=?5?VQh8ҾR?($*?Eߋǽ$%A C f?vB?Tfҿ@? &rf?:[?bE'?8^!T?,r=PXsv ox?O?"'0(|jX???"d??A?iTY5lɄB(BbCB8?C)߽B?Hn?g]ǾAt?h?Pȫ 7?G%ӽW"?R8"?%ھm1'ޒ=?*?9Y?؛>ֿv?c|nտ?%B?Ɯg]d9TL?=M?&叾d#ƾu-UI? 0?J;?>#??A+=[.?0?Ω?L?9sd͞?;w4d->?C0ץ?5G[w"p?.?A\:?NC?dp0nPCP)>K?D޿d??9z?xO:!lL?ە>jH g?!?'Ba0?7?~?RZ?Џn?j??$&?HE*6>xj*$UN?EMÿ&-bS<@?=6?6*?RW?HrQa6NM09:Y$v$>Wn> n*-?B?bV$0w?>?C-?ڿVw?ݗ?L?-?φ?70=Lоsɿ?Iȿƙ?S:?K3Ѿf]?P4?Őo )\8?8^|?YK?R6Ym:?iZ4־s>߾?3ɾ*?a~?P>uɼXr>A{l?Ar*?ׂ?N?b z?U7t>y?F)о5(?P^?AE?H @V?L3۾^+R?1?ּ(0?Ӿ09el|%Pǜםiwi=澄D+;7t"e Gfo -i=ξF?`>?# -8?G ؀ľW8y?T??Eybh?2?~?t5kB?q,?)??Aap?S?-?E~ -Qgh>t 4?dх?fモ;ɾ( k{d?1??G&,+ ࿀>f$?%2?L?jP ׻?3?}?Bq <@?=k?mk?^l5& ic$?p:!tf?km?A;b?`B=PNVٿ?[q,y4*5+{G?OZob,?K=,?H8rwƽf ԩ?{*?Z?aԙ;5$x?XU-YxMh7?'FֽrR?].?ſ8tf6Z>?2vsG>M?;?(?F?M"?D^+d߾lY?f,?K:S?%{OF??PL?gRz?78?ɾ>wx?F ?)Ux?'L?A? оpzH?aR2?QQ?M?6о?8(3?`?MA}?T@*{>?Bi?N3R"9F?19n?-?;/9A}?>H?O+ վ<XT?Q^2?AJ/a龷וh?+H?Rz?GL?3#?Q޽b?;?9 }?!/?Juz{8?cnM?KjrY?43ޗ??ɲ?4 ?Xe?,S\?mʠ?-(UE?TǸ?$)fV?jLmE6\k;aU?؞x{V^?Q/?cMk=5ބ!a?VFgujB?qJ:Y=3*Ċ>⯾dQ4?j|J@n#?jVB6LTyxä̯d;??i\??ѐ?}?W2?8o?QM?CҿQ?Od LuY?A7d>?hu|Jl ?CYw+{Bi]R>&T~ɒ?BA?B? (Z?%Nꚾ?k]?7PP2h>M ?Mj?8֖e󿞳vPZ~<?4+j?X?0mVvto?s? -(h?&i?~r=Z?=ZL??v?ԚP$bƲ??Hʿ{栾?hq?BU?(⾺0ܽ]??Tn?3ζ;6q?B~?(TL?%?R(3?4&࿕i{#H?C6?h?9ä?BG?&9??7/?Bn:4.\?L9l?6?F?ʿ? -N@l?| X^?\ vRB?S=꺿?bDj==j?81ٮH?#F %?a^8?nbA? e\%r ;#uƼF\L\0?K1iL}f(E!?S,J?Z ޾l?j*?.$x+??9Ve?V=;T?7 -~u?FvI?A*󾖁;?,9"'?H~{$?:b6?O;?SCʾ}Q?Eb_cʿm/?Ihd Ը7/&??Zǝsn .'ݰ?B'6D?[:?:A-K?;?T GZkvdkg?&?B&Ծp?8?,NwLB?i9k?hp;ijwΠےbSYc=>?C\?Y޽8?"?R˰?;h!e]ྥq?`P`ξ*v?/LfǾRO\F?ar?%꽨>?Uk?1ؾ%t?@ѽX^@?P?)"$y8?,m?Go?7M2l̕?QtXxҿ?19M?B= ?L)dB/T P??IVeܾ`8?KUnp6h?G?fI^Xm6?а?Ds?^p_H,`"`?5?Occ7?$ʖϿ\B%1KK0?-.?h?5f>xu?l=c pU<є=xsZbV?XU'"=B>M>B?G?:zkxuC)&ZD`лN՘Ѿ*R:-?u?R?X 3Vh?El?Uxott%H=r?Vz?{^/?J ?ERϽG@?Z"xgid\J;{]?a%x?ӿv?,?fs.Z?UF(mF?DY?O?@yP=[@ǹ?W.⿚;?/O?(ߖ}3?m'?Fhc)E?qf޾j@ ҽέ4?@TQ>?%?/s=?"2?<~?H -[€@s$6WH틽Z"?@*?}<++?N㼽T?/?؟ʾt [?萴?-Ѡ?![T??!p*?I5 #p?H꿈Hx?]?RKl|/!?&zA2}M"1?ϗoI쿿_2?X nK'?+־d?0ɜ?;$r3?5v?;Dm?:HE._ͦ +>g?Nཌ|?,]?):m\8+?@u??;Iz21|7?O\?,T4?7[@ ]ɾ}=-D?X?=$¼?LK8?f z>fp5t?+?oG+?y> ?d:k&>PٿV?h/?`W م -?_K-?$q?f%?l}^?6?&oQ@7p?., ?xbn <=QtؾV9?éy3-?<k&?2?KX޾?D?@?W??f nݯ?3?u`?e}?9 0|ZRsN?S(]*w4?1r<ӂ?L[!?jŽ3̾{?.ud?9,?W?#cͽN C>?gZb.?M?1<:DY\ H?3p?&?]U|?8r-B<1? ֮?L9g>#?BM+?\x?l?h ? 6=m$?]? Im=hb\WyO?FRHr?I?9y&XĽ{L?҃?Ok?ӣ'ͫ?#>^ʿ5:70='N=F?8K?7+o)?ccTQ4{j3@?vr8?i:$?[6ҿHl\(莽x?={ѽXwN?U}TɤM{?\F?-?V6$?g?/L?3>="F?-ϝ5]Ǿ?8v?k婿nu?{?>5R^?鼝?#z ?Qꢾ&h?/?GJ)K?7B=?#?Uv>?Md?.׽Y?jξRV ?8 Xi7>.U^`输{?D?.?{;3(?BA?TZý@uNǾ Z[?GY@(鿍h?42 ??2?a|?#e?[?Z?ڕ?߿)C?AӾ lj9\?`Y7¾A?Q?'u`?ɷ˻S?$U!K㾠[{ ?[:I?m?9h?3 7 þ:?@?(?h?T}` "?Lr]u?TSd?dʾgD?9HyR?`Q ?'辌m lyW?-Y?MXdk?B+?7侲|?հ;?^Os? GB4?5־)?.}D0?-K?? E`?H9:?0(ھ!6?452s%N?)QU?q?'lU?&OhȾ龆N־3?8׾H~?^?);־1??/{?Bܾ?1h?+>ײG܀?+Z?|?@ʾ2sj/@BfH2X&J(?ؼ?<6`P%5bFf?&'@?>]h?=XNϿ(?t7tE?GLUf̿gG?/.0?`aΒ?W6& -C6\?Wz -? Y?=H?BA?]?:?COB}?IN?ab?`. ɀ?[𽿐Vc:z?m$?5?Uо*|3:qkO?vb⾎H=8?>7?U6?;==j*N!?$:lc?\|v? ?V-R ?Z=Cļ ?Q/fsV?0o?`@?F~nM<~`?=qd%?eGϢP?Z~̿¿?Z?O=5⿖$?6 }2˿ ?=1N?#zA?mE _?ʾ&Bʿ?oazn?/?R?PM?K?K.a@ǘ?=?7#i?G_?6 ?a? sx?m?? k?Ds]?<?_?M5=?0:R?@G?'%?˽=$@0abK?R@(xa|?7? +?K0us&rG? &??^Hɾ|'ܾɤ?.$[J@ Nx࿇(aLS?.?,ET?bZ[=-?t?2+\ε?"Bl:B)?)@nݾ?^پlרX<5?2 x4?7x?(ڿs|?NԾk^\,?>־Þ ip?/?KP2[?C?d2=^P>=8?c;H?=g<(`xԼ8x-8"?k`Wn* Mj`-R^LBgT`E( Z?c2@5>^?Q?޴=y,pI]?i?Z?Ox8?B@'H?ˢSY^?WhΔrriz?)9???'v _ls0cS}x?_kpX??"4?2?&';Yڼ?QY ?&XV>ꯦ?1 -$߭hN?1?' -B?-?KW?Qῗ?^VJ\?D?m{??S>ʾ{?j?2ϖC1z&??=ʼEp?)p?+@AEBw?&$ZϾZDxC뻆2n>\?1P?`R:?*n`P<0?Kɽrx?i:9?K~?q?1;/?AȾ?HF p?(?GeN?eTп?6?с?M>\?GRҾ?b~,4?Amxz@&0u@TP>?8'VpV?>p?E&?>c>Pdƛ ?.v?J( TĽ@?9޾W'Ⱦ@<^b=9 ?g?>Հ=VTN:8?k>.?^g\M?d2nì?ZT?״T'ni/w4y?9Oٿ ?BV=I.Hz+7'?\D_CЬ? 4?z[ힾī9?az0k6=R8?>YbzO$!?Qzb(?L?d?ٮ<-B?Iɰ?Nz??Qf5gh?L[?"rpD?G?(? 9?JA? _ -?6?U?e ҾL[?$e?& ?_L??\i'dq,c?D>?P?+?@wb?IU?q[?5?7.?H#X?B۾'%ǽݿvR?/F? 3"Rh ?S1?B?5?B ywۊ3`(?>aְ?rgDz9?VfV?2Ʒ7wIܿ_cc]lDO(^>B?Sſu߂$`?q (<ɨ?Dt?n鿏(u?p?4uBL:?w?-?w徃dh[7?>z?\h?E{d)Yu?[X*,?5Tq?*6?{S ?F ]钽@@B@MB꾸&o?Ne?V{?-d۾-[Pa? i=P"P<<6vy " -?\3p?յ!? ?/??S?PKK?IGE4)?'޾s?A,?+R?\o?fZ?8+?JfMȼ6?5Ǿ\zIvEΌ?r?(Ծ:)I?Cf?`.U?0ǏNc?G|-?b$?$?EѨ$?R?PB?<`?0/'S?$>?- -1?*?&Wm@~/6ۏ?ǁ?:?Y7??=ǀ?UZ>?P>??Ie?u5qz?8n?̊?DO?Ykn?E"k,{s)9 k6?ffO?Eլmr1XI1={ؿ M?Rޯ?IB⿗qbҿÜF?C ?A|! -?JMKĽk(?Rb?(5Ev夿^?PB?/o?Jv#z?kCx?py?V\P\'=qjOn?T㲿?1;ž:C<0?<HX1??0?fY?ѠW? > ?k?:Ν~*Ѹ?;?@۾8#?23UP?|4?4?V?W}#8?*%/P>濃X*?!m" .?o^?K;?:1?\rxj>V(^?$FuM}o??r?g`Ԧ?{.?P@*;B+r(4?+?7ʦ@ $c?AN?;2k?^/l ?a0ʾDLn3?/WI?,?8{,)wP?&q(˓mz?E]f:D_&b j¾_?@?@ҽI??>ֽꞿ 6?hc4?O ?Wz?xtU?RѾ Bпf;?rڽ뚼k?`f?>忔>???(7?jaܾ1B)?@?B-?4P}?!?M޽j?U1?:Լҏ@:G[T.t6?[?O崾"?92>G?*#ȿ ?S?Q)?Bs>L-?S`?*@?U?*?A\>A=f=`?418?!4?{hOq忉k¾?S?g?,ؿѫϾLdN'p>B,g~4"?ɾտ*Mx=]1?"T egR?3?L.~?8*?gܿ{P?/;ỴP??LoU4bǾy]^LH9s?My0?42񽩄~?3? ;ǵX?墽?-yT>HD?,N"?[?W.??M.E?Ž:u(p-B24M??pC?B\H-º#"]f?R?dE<1?L?EǗ =?M?lW~|Nξ'?DT?;J?BA[W?־R8r?񂿏/<|?N^S@ҽ緎>ǐ^(ƾp4>_h[2?ʞ@L>߸?4⽞ Y?\*?1lο?L H?,Z罕p -k翓37o5?FC?O?3.>N:?O=?=D{?<ԾC݆?vʄ]V3mN?_)?5fžݾN\?dX0?66|}-."?X̛Aw?G6h?SzTd?VNz?8?FR?;Bdm,?r?OᅡGq~8V/tʾ?8p>:?T?X>?p;?-s*. ?@ ?>y? -?72Gf?:2zٔR+?EHW~9#r9>?Cc? #I??7?2:?tg~?"+Z?=($?0@۾ud!G?-'?=|Ti7&ݾvX?>~Ýӕܾvw%?/t?g\H;PDv/?2A?\Pº??Wa<.?>AX?q>?6ؿCXƦ|T?W_u3i kY?v? -0&Ht?I?+?7(-h?2ib?K쾕I?C92/АOzظ?'1&=p8섽(@!?zӾ*'?ROEuR?i[?CQ__ zB?AD4e?_ž,Tr?#C?&븾~?5Uw?8J-Կ48?ON]򿆃@?(|=$?3޾$V?3Ml"ܽ?nL?ؖ־??!V?EAwY?F"O?l)?HC?d,?B?(dL?Fy?!wL[?. YF}%? ?`?*H?,?\7?::n&¾p?v^?;޿.?(L?ef?M+=Dh6C??/:?8z:t?B ~?a"?,?:{?=) ?RuоǼq>=8?;?f<NtȀA?5<?+?Z)h?Tgdwg}$m?at9ަg2h?TL7h?E?-?0jb?[ d?a??R͒?M= ?fEHE6=t?9?·|?dz1O@pn=z?KeC ?XԾz9$?(׿H?+4`pL`?PX?>k(p޿i6?;lL?Y?}fj Eؾt?~d`0?\+/?JW7Bwʀ?,G#??[HqhB4??JȽxJR,?320 >? };?=, 7'Dq\hǾ?/ܿ)Ō>?c4?U ?N MDULgx :hv` %!\V3?#z??μ螸\^?lr|"?m?3r)@.?ep?ۮ?T?k*?(нhl>aۂ?BjH?:? ?ދ?z\En?<;?T;>??`?D俣 -?\l?1򊿏ᾌ (?d:?6~%8?''꿗j?-m?R;?F_Np$Tw6?CLٽi?HU?ARվƖbf?GLe??x?#F3&?A ?lڽҾ[&77Ƹ?,kξξt?I[򿓚?JMKZ+?M.? ?߉X}7~lryZ-վNسE˿c?idڴxR@VDfGpt ?t?h!G-?W@OϾPz?:k?*ј@,1@J?%,?H?-bG0?;p?[?, ( -?A? ?3]?f(>?*F?>O\R?e{wS?Rbҽ"4 (?Il?1?Y:?:j?^XF?5O -?^W?5:VPo9>h??_:7?>?4'?dc?ľtE?HВ?@G?q%οj?V?Z?"?!?Z-;0d&DA$?UJ? Կ49s?0\?H~?)y^;ق{v|Nq` ?*:؀*b?}1٢~?}ᮾ(?,ͪ~T0p\?O?6D?~꿕!?D5HL@@&2+迍&w*l?9?,z@?3:7l -?;憽@?>YLֽ!;?(m>Mtƻ?K>{?J.l(P`>i?4ξ'Bj2?*o?H^|\?ӻ?&t?j/Q>?^?ϻ?] LԽ[>ko~?%?FP5 ?$?FM4JCL? ~Zz׾Q?-'<[@??罬>??F z? n`a?GϿӾY?#4@?{ $0Ū^t?SpN?[LJ?=N?Tz?DA B?m֍?V?!?ʞ -< >"{?:O??@B{Y<.t^=˾=Z&s(?<\~(& o?x?X?Y??I#X@?e?f!?N?)?硱^{Ͽp?GB?4}?QB\^?.ގ?AK<q?:?[\͵?88F2(N???-MKBYfI?38[e@?#{?^-?3켿 ?h?4E;>W4?FpN%<{r?j斾*?΋?ZLUSH?&%lHօBj#X??o>?6I -?:>,x¿Љx?qwE?MͿ??3? ھ6ᴾܦ?`a῍|Du|\#=<?)gJ?/7! Jw=q?=+)?bӠ~ ?pLGx?e>۟O$)i) -<&`>ރ?\E ߿7"x?=TA?^Ҿ$=꽟p?.?jZ%)(rHD?qs>n?n?FX??aX?;FH?XHԾS =l? [*!Ml?`?ʊ.? 1d?Mܠ?C]?_B?SA?L~?ܴ?51'?G x>O?CbԾ?8m?ܖ>A??5N?Vֈ8Nց??~Uڿ we?e7?#9Z?.R-6?$S|?1D?CsFX?0aA?.?]?輶迚6 ,Mޯ0Ӕj|;?ZG!? -V?RӼD ?w -O?Q0־/K̾R 9tgҾ9z*$Q/?XF?W?6?a;?B̶=󤾽h8?h긾?9/@+>zBk .]?U?BK%q?+%?CJ]>ſB?=1?S/b;`!9?`v?YM?Bp@?]$xN}^kf#?O*/Q?QܿBӿ̿Ծwj?N3\?*&+??^2g&Pz?3=N?4?]A*1?4A-x>¿U?1(x?4B>;|?=SqOP?Tm:3?UzR -0?Vg1?ֿ>澦m r0;\(i @?;?p!?"?8h?:/?J̐V;ȀΣ?'B?hkZ?;ݿ!<(?jOB?4;?0sҶ?8Qs!?2py"D? m ˸ྊPd?(/޾' HsWLv;gO_(ƾaTMl?s@.v?+s?+@?L?V}dM ?;ߺ?@C.zG7?R{g?#XjԔ3,?61MI$|[~z0?/R[?Bf ̾Ȍ?WR?~?Xп"=?.Ͳ?%'33־/N^ZGRҐ??TO8Y?UjA?ls0sJ??<4jl \?:@YX*>?L+?6bO`?N_ˠ_: b?{Կc?RN;cM?<l?S !?5?B?L@h?Rv ?DW%?fn%"S_Ms?176.?':Sn?ߔ?%Wxȿ?2?j7OнMuʽiڽ6?$g?]>e?6D!GVל?R?wz`⾹ӀM=< P?H/?T,ʾ?|❾;6?PuGt½ n?O>ɠ?a(yH%JA?e?-=2?iuǽ^?o־\BA>^BgCLB3U?D?^&? o=Y_?]8X̾W ?h~YH?DN?Zj?KqPࢽ?y?9zȼ?-꿡m7a?P%]"D=k9V2,?@?`\򿶢F?kj]?%?EFXt=#D?3?7_t:7?)Xr?5_`bcdE6#?:?`?AF?g5tg?8F<ǃ?*X{l?:PUʽϪ4dƾ5L?9?_^r?hd?e?0B?L0?<>?C.>?p?v^>`O۾GYؾB4oH?az?+vXF.p?WD#n2_?ݤ?T?9?Dy_?;֌4?X?/1?Ss {;97Sqľ%UBʽ41%2 B3l?7^ڿz?k*?.T?h4?9 ~?/KV?*B?'R*.C%?˰?!_*"?P?"ҽcT? ~?8?1?E*?J>?NHz?m?c?꾰+RL?/0=Œ=J|X?֬G>W?9$>?K@/9|T>?3B?<~?T 92@0A6|BgM?蛽EAx?c?BY'?Ur ?Wx?OBQ?Ff?k"9?G&?\o?6=.Pn&S -.}ڒ?M9.s?V9?I?c]J߶u @ھbϺ?NPL \ J? Z?5)3?]?I+?yrOV"ڰTo?d ?=Q8?(!8?1?4?ۡ(?7SN˾<8?cj?'s>8?T ?L /B'pka?&n?A]j?ި@Qӿql8?! ?:8оGƿ?M7}Sb?G\%?ǥ?I$?$Sk?L{[B!HA?K4???ބ|vz??"?1rV? HBߒ?5>g{?F')@..)Z[ݾᎾ -ӛ>p?JSh?'?Wʾoѓ\?Q`?̾ Q¢?Iac-߃*[WI?O>?>DZ? -?$K?Z?Aó+龿?b?g{*$? ?G?H ?Cz?${%ԾT$"?&n|3?PF@n6R?4?U9?D,K>ڿʿ~C̽ rxQJ;?6?i?aZmI?eÔj켽)=!?UV?lx?S?v-=D~;tT@?ioѽ̈́ -0?YP]?Hi`?t(<4q?fjzG?n}?I0y?^?FJ^?3b-;?)ҧ?G4?H6?.o?&; 9XDM>IL?T?'WԾ?X&4?oC?T$Kxý? ?qbvg;a-^"?: -Dʽ= `.=O?ֶ@/`?lƾk?ϖ?565^z`ir?BlI(?m?W?Gf{?o<̾O@ 6|rh? C;V@1ssl??)Ig{:? ?$?TVU?>^?HZ(G?.꽝!c_?j?' ?3&?~bs&4b4I?Z,ӽ*޾X;ڣ4?n(>NJ?Q .t F?6wX?Z~C1#o?N4c?m0vb??Ad?2@6 0?$Y@G⿉xp?Rнyl>?XԿo l==@? Ħ?G<+PԾW0 N?Q>ľJJ,?.~tۼ?S?Fcֻ7ۀpi?AVI'=x&(!;&?B.?]:F,짿˾T0 SPоX?iKcG2yb罵;?]=^+\d?3??:۾R/;F?Mt>"?2DoP?x?R?d#.pR?P?.T~R?{a??8=3\ (?fxybRN$?H{9?4X?3ă+n?'T?O(-o?թwY^]?@n?<%>5?81^,Ⱦ^k?>?cip :B?>Jk?˃?0[?Qub97 S'uC@1|?\@:و?\+?t?BDup(feU)?9?C?Ŀ6'?iBᅳ]?Y&v_?<u?aZ侯qr?>ױ4?2?dξڽaIbKN?2?NAΨ?ox'I?/"9UL?A)%k?P!tMqQ2??lz?Z8,m?U?6au/4侒@L8ƾ?N;h?fل?,7ҼP?Hg*o?::>hOzLĮ~CоrN?A32=9T޽вOߙ9?־:;?T`3I̘x?m?Ɂ[?SG?JұT?9 ;aϽ?߼?o ?,ܾ7?p>nQ?1Կ2t?'EM?ViD?d?޿P_m?7<"?򾃴&i?E?HVZdz$P?co?b55rܾD?EimzxI[o?]վ"?̮? RM?==*D;"?D3­%=ꀽ:*JX?Du￟XIK?A˒?fT?e~. ȸ_6¿/L?9<`M@?aԾPjz?-??g?7o?;L?Ir%.T?Hq?'?kR?3Eݒd?$5??Ԯ˾8W?;zF)(?FrE?^ Tܾ쾇_Ҿdg?O1B>Z?h +mUy? ž(L?1ܾq߫K!2w< -@ϩn>գԾႾa(?L?2p?C k?B濕L?l4?0?9?*K?%??G6?3l^?B8?@Mŀ?L? l@U?60?3;?$??N?4 h+rJ?Sdi6?Al?S`꾌|Nf>??>t?K(r|L?8-]Sp?rT_H??#?&TI_lMU?ٗ?'2V?ބ޿ ?8*? Aa4?9Q<:qH㿃 -?HX?NTh|?i̷<'q6;q?A=Nl=?_>? ?=>H?inP?t@(?e?\?WV=g<;04<{Đ>?zʾT]? ?mA?d< =[z-X?kRo(?}z?ڸYg0?S,<2?b#AnBC?P3?Yn0?*?B)> ?}P?C^5?T֑?jR!?[?DSL ?U6Q(;oN?Zx?oLv"?+o?s̿?$=&p?A uD?Nc|?K:?G?T _/Jk2?Cs?FϾ*qȿ?2%x[d@-Bp V_?F•?`l?A?N @^NtC>?ͳ?7DмpR?+bɽȣx?2?Tqʽ?"љn_r?@۾Ӛ۫?=|?"(?>ge?L^H00QD1v$>"Z?>0&?D&].?p* -?J?nd{-TY<ޔ?eIe>?O˿?|p++`?l% ?em #=?6>w?R8_d@?pQV=?8Pu?g?Lb+dSp?-tq@? ?s?2LX?]lw?V!@?k]N97?^9?Bt?\tK.,?J뾅Z־Ƚ4 GyF?X[CԘB?@o??E=|s!x?/:?m޾ic^{h_T?Pb?*/?l?-r?Nv(?J4Ӌ?X8KH?]e? oD<ЍD!>Sc= ?R?h%?7`L?>J^\?=~?ß?y!1?~@ANaOoyۤ.#?O +]_@? e?Y8Q[XP?Luc?F龛fnwp?M?6.2~@H7?m. `tcV<\?^0j},?A lx {]? '?EڈRUdP4 ?I`? -?@h'\`=ǡ?E]K?Cؾx?G짾J8ݿt1?^!\졽^`?7RĿpت?HkC?,?NO?)MA?@uD?>r?P ,k2MB?30,?0ܿ5|?L_Ѿ\@lh|?#/ ?zQ?1p:-m#+?;:l>ؿnTI =B`2?GB̿վ:?j?"[8?D|,rÈc(?٦?Axc=LM -A?` :-?Y5<7?5<`?(=\`?X Rw,Yп_Q.?1?jX߾J/> -h?5AK?2Tn +~=?5I?E6LؽO,Tr?Mj?,> ?:@BJNA?I?*ҽ~?,Ł?U#?jfZu:$j?=%;lM<辠]?gy ^E>dT?4Tƪ @/ ?.?VcorX??Ewc6??P?.Rh `?5f ?Uپv?-াLk?b2;?}>Z?kx9?+F?Jv䨨<(?B,?:>a9/Ǿ$@$?=Z?YԿ?$?6<˫!Wϐ?!K?N;ޫgT=ܩ>P?p?Vڨ.oP5?%>?Y<?Cy*dF?B8?IB?}?ꩫ?Z??] MOά?uJ+P?̛?P4?VU:&??`ZĽN?l?+ KQ?Dd;2N??A9%^{TĽ2P?r?ZUоu@?8-?- GO$?W؇c9?x ?_+P?sT,C@?R "=`?I2l=[2&WȻ?*?T&?@ۿw-=?ܵ< ?ڿ%`BW\Ph<=y྅Z=?sV -q?m>?%@?H?:?g'?1C?$W?l?0`?JV.? ,D?BE6oCf՜C -A,?? -U?NϚ?Y??<-?(xk?`_c<|3̗ν"(Ⱦ%7\?%|H0J( ?1dT4 MW?dtO?0^B?[?(sr.۬s)o?2AH?쾉F?裮#?R?+?AU??.係Jz׽?;f?3jqxUh?tIҏ MH?:Ӿy?GiM@)j?&V>h".?<%?KU?- ?-Zܾ??H^D?//p.b@?4mվ9 ?4j?a(?l?-Yx:?/?1tb=?T?-?X@??Dx<o{L?N -?e?9QJ? 2(?Up==v?AP?xH -?ܾ?QǾlhI?fm`?T!?G?F|?63?A(?:?O<,k?.c?J}@F@?H3? }ꄾN.JZ,-?ZK7?:?i刿?MI?=B?7 @2:n M$$?M?=dD)^(ξ6< -.?P,?.|l$̽ҽk?59T>ve?;*L?<D;V?F?=?IZl?,?DyI&,:G`*`?3?Q^yɽ(?R\:k&?);?-.?JgQL??X?*0?̑h?K?4aR?1?-ҾòO?)T܎+W f -ؾ ʾX:4<? -?SN@?係nQu`?pP?\ -?.ڱ?K?1TXRtGF`2?T?3MތB2jl9j?'2+?Q?zp?cWv?Aſ4sǐ=sQ?GؽԾ]IO$? (!??߿k'?d~v?;Fv?!Ƚ??J۽?9h= 8?gtά?Pkt?M?>uO?6jg@?f"B?H?/̊?,%bp??2k?V?^;ԿX,/ڊ??L7.?KCh?+?Pv{WD͜?@־=<\H=; (>@?:0迅˾ѻwℽ!THJzXi=𫸾GJ,KVɿ ][?L.,˼x|L?,2deо\?=0c;uـ ?SY?I?ratz,-^?&?ME?9*gD?R,??E?X"!$Eʾówj.:ITHxw4??Iv#@5 ?Y?2=He}?N0r?]h -' -t5>zʻL?ɗ𿃏&?\?Pt/[";P?_Xg9?.BAƿxy=l0U@=j?4e?q[;?]?ZRD>?D\?]t?P -8?EH̨$?(k$?s&>;?J~0s? -?WP ?i >g=q&l?0b?@^?`?ZG>iz?qɾr?d?:|??W\ټ@*ފ?_ 08Su'e?*?Dأ?k?@I?+/?Xm?DrýD?BP?RFF?mZ1<>„9Y|mԽV?,.N rEBr@jDKVcB -@v?Jv-.?%<4?i?MzZb?E?aRվX@k)3K<'D?`?Tlfi -?twF wO`?'?4OhXf?SpL*??Z8(?FFX?SHe?T)n?:F -]ܬ= -Z?w?볬=?Tڭ????m?M0~?Ufx?tE?Vǭ59?9Ⱦimc iK?Ё52Q&?Cb?jR?at -㤿\n 4?fm?@f?J?C)n?:^n?Fo辖vpq>n?M\_ -?<"?1yݑH?9cfE|%=ʤ?%p^o8?2~I#@?FhGJzgI5?dD?)?,V?N?ٔT?򟿁N;\$?T ]?_d ?A]?\!?:.?1G?gFra(>? -y?F?0+q?I?;SnԾOKп}?; iԾ%A(&w?=HLkV?XRA `Ծe?*??i޾₩?T?7?M1x? >?bž| ?SؾTֽiS?fz?(߻[aAH@C+AϪ?VKT8x4߿*?[L? ?q?zBA'>X@?MB޾ 44?qjξv?;j|齭uF?`m=Fc\4.Հ?^?&??5W?`?I6?UX?P?DR=s?N"?"vȾnѾS}wFg?tӾ ?e?/?B;\?8)Ҿ=pJ>6?D^?et?$f<%~C?p?J5+"?܎tY9LD?b`L?CТy?9LWx?@o?g?%Ol?F 7 W,lgJ5Jk?L3 E6/1?1᤿?7,¾ 7r3?ek\t?;,?W"뿘\tB$'?Ჿ?Vl~k<?ds>!;u`g侒܎?g8n\?;?X `q?Gk??0\v?,A?]<5Z2弾!??Dx?R#B9?D?̒ξb?#>M4kg$?ؾD?.q.@'$A!k=X?:HUVd6ZIj?YD?p ?IK| 6=zꍾY?t%teA2ZJ|?k>_`?L{;\kXV?SwU?Vֿq>?QYT?Xؽ6ܿ?ZALR6xnF?2?ٜ?06?T =ۢa?Af?m:뽳2u?"!`I|gj@)cs?@Tv7TS[P<?>ML?5[ ܿ d?x?Z~ ?nV?ms???+ij~V3OV??YT@(\kԾa A?I[?b?a3G?J?@TTv,M6FP`:DpUsf?dB~?U 8~kt?j輾DY?RiؾCL,x>?4?DR `?L?D0?_@rj?\?L=# >?)?T?Q1þt PlнϞ@/-Av?*6? -\{??-?N?ݶƿp~ Ѿ-x?0?3T?BG ?HXTENSION= 'TABLE ' / Ascii table extension BITPIX = 8 / 8-bits per 'pixels' NAXIS = 2 / Simple 2-D matrix NAXIS1 = 796 / Number of characters per row NAXIS2 = 4 / The number of rows PCOUNT = 0 / No 'random' parameters GCOUNT = 1 / Only one group TFIELDS = 49 / Number of fields per row EXTNAME = 'u5780205r_cvt.c0h.tab' / Name of table TTYPE1 = 'CRVAL1 ' / TBCOL1 = 1 / TFORM1 = 'D25.17 ' / TUNIT1 = ' ' / TDISP1 = 'G25.16 ' / %25.16g TTYPE2 = 'CRVAL2 ' / TBCOL2 = 27 / TFORM2 = 'D25.17 ' / TUNIT2 = ' ' / TDISP2 = 'G25.16 ' / %25.16g TTYPE3 = 'CRPIX1 ' / TBCOL3 = 53 / TFORM3 = 'E15.7 ' / TUNIT3 = ' ' / TDISP3 = 'G15.7 ' / %15.7g TTYPE4 = 'CRPIX2 ' / TBCOL4 = 69 / TFORM4 = 'E15.7 ' / TUNIT4 = ' ' / TDISP4 = 'G15.7 ' / %15.7g TTYPE5 = 'CD1_1 ' / TBCOL5 = 85 / TFORM5 = 'E15.7 ' / TUNIT5 = ' ' / TDISP5 = 'G15.7 ' / %15.7g TTYPE6 = 'CD1_2 ' / TBCOL6 = 101 / TFORM6 = 'E15.7 ' / TUNIT6 = ' ' / TDISP6 = 'G15.7 ' / %15.7g TTYPE7 = 'CD2_1 ' / TBCOL7 = 117 / TFORM7 = 'E15.7 ' / TUNIT7 = ' ' / TDISP7 = 'G15.7 ' / %15.7g TTYPE8 = 'CD2_2 ' / TBCOL8 = 133 / TFORM8 = 'E15.7 ' / TUNIT8 = ' ' / TDISP8 = 'G15.7 ' / %15.7g TTYPE9 = 'DATAMIN ' / TBCOL9 = 149 / TFORM9 = 'E15.7 ' / TUNIT9 = ' ' / TDISP9 = 'G15.7 ' / %15.7g TTYPE10 = 'DATAMAX ' / TBCOL10 = 165 / TFORM10 = 'E15.7 ' / TUNIT10 = ' ' / TDISP10 = 'G15.7 ' / %15.7g TTYPE11 = 'MIR_REVR' / TBCOL11 = 181 / TFORM11 = 'A1 ' / TUNIT11 = 'LOGICAL-' / TDISP11 = 'L1 ' / %1b TTYPE12 = 'ORIENTAT' / TBCOL12 = 183 / TFORM12 = 'E15.7 ' / TUNIT12 = ' ' / TDISP12 = 'G15.7 ' / %15.7g TTYPE13 = 'FILLCNT ' / TBCOL13 = 199 / TFORM13 = 'I12 ' / TUNIT13 = ' ' / TDISP13 = 'I11 ' / %11d TTYPE14 = 'ERRCNT ' / TBCOL14 = 212 / TFORM14 = 'I12 ' / TUNIT14 = ' ' / TDISP14 = 'I11 ' / %11d TTYPE15 = 'FPKTTIME' / TBCOL15 = 225 / TFORM15 = 'D25.17 ' / TUNIT15 = ' ' / TDISP15 = 'G25.16 ' / %25.16g TTYPE16 = 'LPKTTIME' / TBCOL16 = 251 / TFORM16 = 'D25.17 ' / TUNIT16 = ' ' / TDISP16 = 'G25.16 ' / %25.16g TTYPE17 = 'CTYPE1 ' / TBCOL17 = 277 / TFORM17 = 'A8 ' / TUNIT17 = 'CHARACTER*8' / TDISP17 = 'A8 ' / %-8s TTYPE18 = 'CTYPE2 ' / TBCOL18 = 286 / TFORM18 = 'A8 ' / TUNIT18 = 'CHARACTER*8' / TDISP18 = 'A8 ' / %-8s TTYPE19 = 'DETECTOR' / TBCOL19 = 295 / TFORM19 = 'I12 ' / TUNIT19 = ' ' / TDISP19 = 'I11 ' / %11d TTYPE20 = 'DEZERO ' / TBCOL20 = 308 / TFORM20 = 'E15.7 ' / TUNIT20 = ' ' / TDISP20 = 'G15.7 ' / %15.7g TTYPE21 = 'BIASEVEN' / TBCOL21 = 324 / TFORM21 = 'E15.7 ' / TUNIT21 = ' ' / TDISP21 = 'G15.7 ' / %15.7g TTYPE22 = 'BIASODD ' / TBCOL22 = 340 / TFORM22 = 'E15.7 ' / TUNIT22 = ' ' / TDISP22 = 'G15.7 ' / %15.7g TTYPE23 = 'GOODMIN ' / TBCOL23 = 356 / TFORM23 = 'E15.7 ' / TUNIT23 = ' ' / TDISP23 = 'G15.7 ' / %15.7g TTYPE24 = 'GOODMAX ' / TBCOL24 = 372 / TFORM24 = 'E15.7 ' / TUNIT24 = ' ' / TDISP24 = 'G15.7 ' / %15.7g TTYPE25 = 'DATAMEAN' / TBCOL25 = 388 / TFORM25 = 'E15.7 ' / TUNIT25 = ' ' / TDISP25 = 'G15.7 ' / %15.7g TTYPE26 = 'GPIXELS ' / TBCOL26 = 404 / TFORM26 = 'I12 ' / TUNIT26 = ' ' / TDISP26 = 'I11 ' / %11d TTYPE27 = 'SOFTERRS' / TBCOL27 = 417 / TFORM27 = 'I12 ' / TUNIT27 = ' ' / TDISP27 = 'I11 ' / %11d TTYPE28 = 'CALIBDEF' / TBCOL28 = 430 / TFORM28 = 'I12 ' / TUNIT28 = ' ' / TDISP28 = 'I11 ' / %11d TTYPE29 = 'STATICD ' / TBCOL29 = 443 / TFORM29 = 'I12 ' / TUNIT29 = ' ' / TDISP29 = 'I11 ' / %11d TTYPE30 = 'ATODSAT ' / TBCOL30 = 456 / TFORM30 = 'I12 ' / TUNIT30 = ' ' / TDISP30 = 'I11 ' / %11d TTYPE31 = 'DATALOST' / TBCOL31 = 469 / TFORM31 = 'I12 ' / TUNIT31 = ' ' / TDISP31 = 'I11 ' / %11d TTYPE32 = 'BADPIXEL' / TBCOL32 = 482 / TFORM32 = 'I12 ' / TUNIT32 = ' ' / TDISP32 = 'I11 ' / %11d TTYPE33 = 'OVERLAP ' / TBCOL33 = 495 / TFORM33 = 'I12 ' / TUNIT33 = ' ' / TDISP33 = 'I11 ' / %11d TTYPE34 = 'PHOTMODE' / TBCOL34 = 508 / TFORM34 = 'A48 ' / TUNIT34 = 'CHARACTER*48' / TDISP34 = 'A48 ' / %-48s TTYPE35 = 'PHOTFLAM' / TBCOL35 = 557 / TFORM35 = 'E15.7 ' / TUNIT35 = ' ' / TDISP35 = 'G15.7 ' / %15.7g TTYPE36 = 'PHOTZPT ' / TBCOL36 = 573 / TFORM36 = 'E15.7 ' / TUNIT36 = ' ' / TDISP36 = 'G15.7 ' / %15.7g TTYPE37 = 'PHOTPLAM' / TBCOL37 = 589 / TFORM37 = 'E15.7 ' / TUNIT37 = ' ' / TDISP37 = 'G15.7 ' / %15.7g TTYPE38 = 'PHOTBW ' / TBCOL38 = 605 / TFORM38 = 'E15.7 ' / TUNIT38 = ' ' / TDISP38 = 'G15.7 ' / %15.7g TTYPE39 = 'MEDIAN ' / TBCOL39 = 621 / TFORM39 = 'E15.7 ' / TUNIT39 = ' ' / TDISP39 = 'G15.7 ' / %15.7g TTYPE40 = 'MEDSHADO' / TBCOL40 = 637 / TFORM40 = 'E15.7 ' / TUNIT40 = ' ' / TDISP40 = 'G15.7 ' / %15.7g TTYPE41 = 'HISTWIDE' / TBCOL41 = 653 / TFORM41 = 'E15.7 ' / TUNIT41 = ' ' / TDISP41 = 'G15.7 ' / %15.7g TTYPE42 = 'SKEWNESS' / TBCOL42 = 669 / TFORM42 = 'E15.7 ' / TUNIT42 = ' ' / TDISP42 = 'G15.7 ' / %15.7g TTYPE43 = 'MEANC10 ' / TBCOL43 = 685 / TFORM43 = 'E15.7 ' / TUNIT43 = ' ' / TDISP43 = 'G15.7 ' / %15.7g TTYPE44 = 'MEANC25 ' / TBCOL44 = 701 / TFORM44 = 'E15.7 ' / TUNIT44 = ' ' / TDISP44 = 'G15.7 ' / %15.7g TTYPE45 = 'MEANC50 ' / TBCOL45 = 717 / TFORM45 = 'E15.7 ' / TUNIT45 = ' ' / TDISP45 = 'G15.7 ' / %15.7g TTYPE46 = 'MEANC100' / TBCOL46 = 733 / TFORM46 = 'E15.7 ' / TUNIT46 = ' ' / TDISP46 = 'G15.7 ' / %15.7g TTYPE47 = 'MEANC200' / TBCOL47 = 749 / TFORM47 = 'E15.7 ' / TUNIT47 = ' ' / TDISP47 = 'G15.7 ' / %15.7g TTYPE48 = 'MEANC300' / TBCOL48 = 765 / TFORM48 = 'E15.7 ' / TUNIT48 = ' ' / TDISP48 = 'G15.7 ' / %15.7g TTYPE49 = 'BACKGRND' / TBCOL49 = 781 / TFORM49 = 'E15.7 ' / TUNIT49 = ' ' / TDISP49 = 'G15.7 ' / %15.7g CRVAL1 = 'right ascension of reference pixel (deg)' / CRVAL2 = 'declination of reference pixel (deg)' / CRPIX1 = 'x-coordinate of reference pixel' / CRPIX2 = 'y-coordinate of reference pixel' / CD1_1 = 'partial of the right ascension w.r.t. x' / CD1_2 = 'partial of the right ascension w.r.t. y' / CD2_1 = 'partial of the declination w.r.t. x' / CD2_2 = 'partial of the declination w.r.t. y' / DATAMIN = 'minimum value of the data' / DATAMAX = 'maximum value of the data' / MIR_REVR= 'is the image mirror reversed?' / ORIENTAT= 'orientation of the image (deg)' / FILLCNT = 'number of segments containing fill' / ERRCNT = 'number of segments containing errors' / FPKTTIME= 'time of the first packet (Modified Julian Date)' / LPKTTIME= 'time of the last packet (Modified Julian Date)' / CTYPE1 = 'first coordinate type' / CTYPE2 = 'second coordinate type' / DETECTOR= 'CCD detector: PC 1, WFC 2-4' / DEZERO = 'mean bias level from EED extended register' / BIASEVEN= 'bias level for even-numbered columns' / BIASODD = 'bias level for odd-numbered columns' / GOODMIN = 'minimum value of the "good" pixels' / GOODMAX = 'maximum value of the "good" pixels' / DATAMEAN= 'mean value of the "good" pixels' / GPIXELS = 'number of "good" pixels (DQF = 0)' / SOFTERRS= 'number of "soft error" pixels (DQF = 1)' / CALIBDEF= 'number of "calibration defect" pixels (DQF = 2)' / STATICD = 'number of "static defect" pixels (DQF = 4)' / ATODSAT = 'number of "AtoD saturated" pixels (DQF = 8)' / DATALOST= 'number of "data lost" pixels (DQF = 16)' / BADPIXEL= 'number of "generic bad" pixels (DQF = 32)' / OVERLAP = 'number of "image overlap" pixels (DQF = 64)' / PHOTMODE= 'Photometry mode' / PHOTFLAM= 'Inverse Sensitivity' / PHOTZPT = 'Zero point' / PHOTPLAM= 'Pivot wavelength' / PHOTBW = 'RMS bandwidth of the filter' / MEDIAN = 'middle data value when good qual pixels sorted' / MEDSHADO= 'median pixel value in shadow of pyramid edge' / HISTWIDE= 'width of the histogram' / SKEWNESS= 'skewness of the histogram' / MEANC10 = 'mean of a 10x10 region at center of chip' / MEANC25 = 'mean of a 25x25 region at center of chip' / MEANC50 = 'mean of a 50x50 region at center of chip' / MEANC100= 'mean of a 100x100 region at center of chip' / MEANC200= 'mean of a 200x200 region at center of chip' / MEANC300= 'mean of a 300x300 region at center of chip' / BACKGRND= 'estimated background level' / END 1.8263118863080002E2 3.9396336734110001E1 4.200000E2 4.245000E2 -1.067040E-6 -1.259580E-5 -1.260160E-5 1.066550E-6 -7.319537E1 3.777701E3 T -8.516000E1 0 0 5.1229798573999989E4 5.1229798742000003E4 RA---TAN DEC--TAN 1 3.166452E2 3.166715E2 3.166189E2 -5.064006E0 2.552170E3 4.182382E-1 632387 0 1466 0 16 0 0 0 WFPC2,1,A2D7,LRF#4877.0,,CAL 3.447460E-16 -2.110000E1 4.884258E3 2.020996E1 -1.756510E-1 -1.216810E-1 1.033711E0 -1.983727E0 1.295800E-1 3.129676E-1 4.577668E-1 3.916293E-1 3.115222E-1 3.295493E-1 -3.676353E-1 1.8262552336340000E2 3.9412143138150002E1 4.235000E2 4.140000E2 -2.756050E-5 2.082210E-6 2.080210E-6 2.758710E-5 -1.995751E1 3.740623E3 T 4.316380E0 0 0 5.1229798742000003E4 5.1229798910000017E4 RA---TAN DEC--TAN 2 3.540573E2 3.540761E2 3.540386E2 -3.379329E0 3.720573E3 6.385469E-1 631340 0 2072 0 25 0 0 0 WFPC2,2,A2D7,LRF#4877.0,,CAL 3.382652E-16 -2.110000E1 4.884261E3 2.020992E1 -1.896807E-1 -1.899146E-1 1.053666E0 -1.947547E0 2.564496E-1 1.057321E-1 9.952926E-1 8.409855E-1 6.534808E-1 5.836062E-1 2.101429E-1 1.8265237923050001E2 3.9410944281389994E1 4.360000E2 4.245000E2 2.239130E-6 2.754260E-5 2.756840E-5 -2.237040E-6 -5.853249E1 3.282136E3 T 9.464340E1 0 0 5.1229798910000017E4 5.1229799077999995E4 RA---TAN DEC--TAN 3 3.066676E2 3.066541E2 3.066810E2 -3.713645E0 3.282136E3 5.217843E-1 633259 0 1551 0 7 0 0 0 WFPC2,3,A2D7,LRF#4877.0,,CAL 3.372288E-16 -2.110000E1 4.884255E3 2.021006E1 1.109185E-2 6.184989E-2 1.003236E0 2.821703E1 1.669304E0 3.472891E-1 3.272150E-1 6.145074E-1 7.027547E-1 5.681439E-1 4.761558E-1 1.8265002235500000E2 3.9389460441680004E1 4.230000E2 4.210000E2 2.753580E-5 -2.509310E-6 -2.506890E-6 -2.756240E-5 -7.241166E1 3.420240E3 T -1.747980E2 0 0 5.1229799078999995E4 5.1229799245999991E4 RA---TAN DEC--TAN 4 3.117072E2 3.117648E2 3.116496E2 -3.289304E0 3.420240E3 7.084697E-1 628289 0 1816 0 57 0 0 0 WFPC2,4,A2D7,LRF#4877.0,,CAL 3.464660E-16 -2.110000E1 4.884256E3 2.020999E1 -6.813275E-2 -3.253493E-2 9.846212E-1 -4.591252E0 1.359666E-1 4.015671E-2 1.129934E-1 1.897491E0 9.687142E-1 1.053770E0 3.466465E-1 \ No newline at end of file diff --git a/tests/FITS/multi_private.cpp b/tests/FITS/multi_private.cpp index 9206224c..3cdb246b 100644 --- a/tests/FITS/multi_private.cpp +++ b/tests/FITS/multi_private.cpp @@ -163,15 +163,14 @@ void displaycube(double *cube,struct patch *list,int n) } void median_calc(int n,struct patch *list,double *cube_median,float **d) { - int i,j,k; int lx=list[0].ex; int ly=list[0].ey; - for (k=1;k<=n;k++) + for (uint64_t k=1;k<=n;k++) { - for (i=list[k].sy; imax) max=num; j+=step; - //printf("j:%llu\n",j); - //fprintf(stdout,"m:%6.5lf\n",num); } - //fprintf(stdout,"Max:%6.5lf\nMin:%6.5lf\n",max,min); while (1) { guess = (min+max)/2; @@ -118,7 +114,6 @@ double torben(float *m, int n,uint64_t step) for (j=0; jguess) { greater++; - //printf("%6.5lf, %6.5lf\n",m_swaped,mingtguess); if (m_swapedgreater) max = maxltguess ; else min = mingtguess; } - //fprintf(stdout,"guess: %6.5lf less:%d greater:%d equal:%d all:%d\n",guess,less,greater,equal,(n+1)/2); int half=(n+1)/2; if (less>=half) min=maxltguess; else min=mingtguess; @@ -164,30 +157,15 @@ void displaycube(double *cube,struct patch *list,int n) } void median_calc(int n,struct patch *list,double *cube_median,float *cube) { - uint64_t i,j; - int k; uint64_t lx=list[0].ex; uint64_t ly=list[0].ey; - for (k=1;k<=n;k++) + for (uint64_t k=1;k<=n;k++) { - for (i=list[k].sy; i -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define NUMPAGES 10000 -#define NUMTHREADS 1 -#define BUFFERSIZE 100 - -#include "umap.h" -#include "umaptest.h" - -extern "C" -{ -#include "qfits.h" -} - -umt_optstruct_t options; -/*----------------------------------------------------------------------------- - Private functions - -----------------------------------------------------------------------------*/ - -/* - * Swap pixels between position p1 and p2, regardless of the pixel - * type and endian-ness of the local host. - */ - -static void swap_pix(char * buf,char * buf2, int p1, int p2, int psize) -{ - int i ; - char c ; - //uint16_t *a=&buf[p1]; - //uint16_t *b=&buf[p2]; - - //printf("%u %u\n",*a,*b); - //if ((la)&&(la!=*a)) printf("Here!"); - //la=*a; - //lb=*b; - //printf(""); - for (i=0 ; ifd,p->base_addr); - - //uint64_t* array = (uint64_t*) p->base_addr; // feed it the mmaped region - //uint64_t array_length = num_pages * 512; // in number of 8-byte integers. - //uint64_t experiment_count = 100000; // Size of experiment, number of accesses - //uint64_t batch_size = 1000; // Set a batch size MUST BE MULTIPLE OF experiment_count - - if ( ! options.usemmap ) - { - fprintf(stdout, "Using UserfaultHandler Buffer\n"); - p->pagesize = pagesize; - p->bufsize = options.bufsize; - p->faultnum = 0; - p->uffd = uffd_init(p->base_addr, pagesize, options.numpages); - - pthread_create(&uffd_thread, NULL, uffd_handler, p); - sleep(1); - } - else - { - fprintf(stdout, "Using vanilla mmap()\n"); - } - - - char * sval ; - int dstart; - int dstart2; - int lx, ly ; - int bpp ; - int i, j ; - char * buf ; - char * fbuf ; - char * buf2; - char * fbuf2; - int psize; - struct stat fileinfo2; - int fd ; - int fdnew; - - printf("processing %s\n",filename); - - /* Retrieve image attributes */ - if (qfits_is_fits(filename)!=1) { - printf("not a FITS file\n"); - return -1 ; - } - - sval = qfits_query_hdr(filename, "NAXIS1"); - if (sval==NULL) { - printf("cannot read NAXIS1\n"); - return -1 ; - } - lx = atoi(sval); - sval = qfits_query_hdr(filename, "NAXIS2"); - if (sval==NULL) { - printf("cannot read NAXIS2\n"); - return -1 ; - } - ly = atoi(sval); - sval = qfits_query_hdr(filename, "BITPIX"); - if (sval==NULL) { - printf("cannot read BITPIX\n"); - return -1 ; - } - bpp = atoi(sval); - - psize = bpp/8 ; - //printf("psize: %d uint32: %d\n",psize,sizeof(uint32_t)); - if (psize<0) psize=-psize ; - - /* Retrieve start of first data section */ - if (qfits_get_datinfo(filename, 0, &dstart, NULL)!=0) { - printf("reading header information\n"); - return -1 ; - } - - printf("psize:%d\n",psize); - printf("dstart:%d\n",dstart); - //Map the input file in read/write mode (input file is modified) - /* if ((fd=open(filename, O_RDWR))==-1) { */ - /* perror("open"); */ - /* printf("reading file\n"); */ - /* return -1 ; */ - /* } */ - /* fbuf = (char*)mmap(0, */ - /* fileinfo.st_size, */ - /* PROT_READ | PROT_WRITE, */ - /* MAP_SHARED, */ - /* fd , */ - /* 0); */ - /* if (fbuf==(char*)-1) { */ - /* perror("mmap"); */ - /* printf("mapping file\n"); */ - /* return -1 ; */ - /* } */ - - //options.fn = filename; - //fprintf(stdout, "USEFILE enabled %s\n", options.fn); - // p->fd = open(options.fn, O_RDWR, S_IRUSR|S_IWUSR);// | O_DIRECT); - // if (p->fd == -1) { - // perror("file open"); - // exit(1); - // } - - //printf("file opened!\n"); - // if ((fdnew=open("new.fits", O_RDWR))==-1) - // { - // perror("open"); - // printf("reading file\n"); - // return -1 ; - // } - - // if (stat("new.fits", &fileinfo2)!=0) { - // return -1 ; - // } - // fbuf2 = (char*)mmap(0, - // fileinfo2.st_size, - // PROT_READ | PROT_WRITE, - // MAP_SHARED, - // fdnew, - // 0); - // if (fbuf2==(char*)-1) { - // perror("mmap"); - // printf("mapping file\n"); - // return -1 ; - // } - - // buf2=fbuf2+dstart2; - buf2=NULL; - //pthread_create(&uffd_thread, NULL, uffd_handler, p); - - sleep(1); - - fbuf=(char *)p->base_addr; - buf = fbuf + dstart ; - //printf("%p\n"); - - /* Double loop */ - //printf("lx ly:%d %d\n",lx,ly); - /* for (i=0;ibase_addr, fileinfo.st_size); - } - - // if (munmap(fbuf2, fileinfo2.st_size)!=0) { - // printf("unmapping file\n"); - // return -1 ; - // } - /* if (munmap(fbuf, fileinfo.st_size)!=0) { */ - /* printf("unmapping file\n"); */ - /* return -1 ; */ - /* } */ - return 0 ; -} - -/*----------------------------------------------------------------------------- - Main - -----------------------------------------------------------------------------*/ -int main(int argc, char * argv[]) -{ - int i ; - int err ; - umt_getoptions(options, argc, argv); - err=0; - err += fits_flip(options.fn); - if (err>0) - { - fprintf(stderr, "%s: %d error(s) occurred\n", argv[0], err); - return -1 ; - } - return 0 ; -} diff --git a/tests/FITS/setup.sh b/tests/FITS/setup.sh deleted file mode 100755 index b57dc93a..00000000 --- a/tests/FITS/setup.sh +++ /dev/null @@ -1,3 +0,0 @@ -File=./WFPC2ASSNu5780205bx.fits -env LD_LIBRARY_PATH=/home/liu61/qfits/lib ~/install/bin/FITS -f $File -p 10 -#export LD_LIBRARY_PATH diff --git a/tests/FITS/simple.sh b/tests/FITS/simple.sh new file mode 100755 index 00000000..4b98be9e --- /dev/null +++ b/tests/FITS/simple.sh @@ -0,0 +1,6 @@ +~/../perma/drop_buffer_cache +File=/mnt/intel/xiao/asteroid_sim_epoch +File1=/mnt/intel/xiao/real/asteroid_sim_epoch +#env LD_LIBRARY_PATH=/home/liu61/qfits/lib ~/develop/install/bin/simple -f $File -n 50 -t 8 +env LD_LIBRARY_PATH=/home/liu61/qfits/lib ~/develop/install/bin/simple -f $File1 -n 10 -t 8 +#r -f /mnt/intel/xiao/asteroid_sim_epoch -n 50 -t 8 diff --git a/tests/FITS/simple_loader.cpp b/tests/FITS/simple_loader.cpp index fdaeb527..f8ac00d9 100644 --- a/tests/FITS/simple_loader.cpp +++ b/tests/FITS/simple_loader.cpp @@ -158,19 +158,17 @@ void displaycube(double *cube,struct patch *list,int n) void median_calc(int n,struct patch *list,double *cube_median,float **d) { - int k; - uint64_t i,j; uint64_t lx=list[0].ex; uint64_t ly=list[0].ey; - for (k=1;k<=n;k++) + for (uint64_t k=1;k<=n;k++) { - for (i=list[k].sy; i Date: Thu, 24 Aug 2017 09:35:07 -0700 Subject: [PATCH 17/32] Checkpoint (debugging). (#15) Changed some spurious tabs back to spaces Checking error return from posix_memalign Now always turning of WP after marking page dirty Made umaperr() exist even in non-debug builds Prepend timestamp on umaplog() messages --- src/umap.cpp | 84 ++++++++++++++++++++++++++++--------------------- src/umaplog.cpp | 3 -- src/umaplog.h | 33 +++++++++++-------- 3 files changed, 68 insertions(+), 52 deletions(-) diff --git a/src/umap.cpp b/src/umap.cpp index 513af520..76812e47 100644 --- a/src/umap.cpp +++ b/src/umap.cpp @@ -113,6 +113,7 @@ void* umap(void* addr, size_t length, int prot, int flags, int fd, off_t offset) struct umap_backing_file file1={.fd = fd, .data_size = file.st_size, .data_offset = offset}; return umap_mf(addr, length, prot, flags, 1, &file1); } + //--------------------------for multi-file support---------------------- void* umap_mf(void* addr, size_t length, int prot, int flags, int num_backing_file, umap_backing_file* backing_files) { @@ -126,7 +127,7 @@ void* umap_mf(void* addr, size_t length, int prot, int flags, int num_backing_fi void* region = mmap(addr, length, prot, flags, -1, 0); if (region == MAP_FAILED) { - perror("mmap failed: "); + perror("ERROR: mmap failed: "); return UMAP_FAILED; } @@ -170,21 +171,21 @@ void umap_cfg_set_bufsize( int page_bufsize ) //--------------------------for multi-file support---------------------- _umap::_umap(void* _mmap_addr, size_t _mmap_length,int num_backing_file,umap_backing_file* backing_files) : segment_address{_mmap_addr}, segment_length{_mmap_length}, - time_to_stop{false}, fault_count{0}, next_page_alloc_index{0} + time_to_stop{false}, fault_count{0}, next_page_alloc_index{0} { for (int i=0;i= 0) { if (msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) { #ifdef DEBUG @@ -307,15 +312,20 @@ void _umap::pagefault_event(const struct uffd_msg& msg) umapdbg("PF(WRITE) (In Memory Already) @(%p)=%lu %s\n", page_begin, *(uint64_t*)page_begin, pages_in_memory[bufidx].page_is_dirty() ? "Already Dirty" : "Clean"); #endif // DEBUG - // - // Check to see if this page is already marked as dirty which means that - // some other thread got a WP/WRITE PF ahead of us so we don't need to do - // this again. - // - if ( !pages_in_memory[bufidx].page_is_dirty() ) { - pages_in_memory[bufidx].mark_page_dirty(); - disable_wp_on_pages((uint64_t)page_begin, 1); - } + pages_in_memory[bufidx].mark_page_dirty(); + //memcpy(tmppagebuf, page_begin, page_size); + + //struct uffdio_copy copy; + //copy.src = (uint64_t)tmppagebuf; + //copy.dst = (uint64_t)page_begin; + //copy.len = page_size; + //copy.mode = UFFDIO_COPY_MODE_DONTWAKE; + //if (ioctl(userfault_fd, UFFDIO_COPY, ©) == -1) { + //perror("ERROR: ioctl(UFFDIO_COPY3 nowake)"); + //exit(1); + //} + + disable_wp_on_pages((uint64_t)page_begin, 1); } #ifdef DEBUG else { @@ -328,7 +338,7 @@ void _umap::pagefault_event(const struct uffd_msg& msg) wake.len = page_size; if (ioctl(userfault_fd, UFFDIO_WAKE, &wake) == -1) { - perror("ioctl(UFFDIO_WAKE)"); + perror("ERROR: ioctl(UFFDIO_WAKE)"); exit(1); } return; @@ -337,15 +347,16 @@ void _umap::pagefault_event(const struct uffd_msg& msg) // // Page not in memory, read it in and (potentially) evict someone // -//-----------------------for multi-file support-------------------- + // + //-----------------------for multi-file support-------------------- int file_id=0; off_t offset=(uint64_t)page_begin - (uint64_t)segment_address; - //find the file id and offset number + //find the file id and offset number file_id=offset/bk_files[0].data_size; offset%=bk_files[0].data_size; if (pread(bk_files[file_id].fd, tmppagebuf, page_size, offset+bk_files[file_id].data_offset) == -1) { - perror("pread failed"); + perror("ERROR: pread failed"); exit(1); } @@ -366,7 +377,7 @@ void _umap::pagefault_event(const struct uffd_msg& msg) copy.mode = UFFDIO_COPY_MODE_DONTWAKE; if (ioctl(userfault_fd, UFFDIO_COPY, ©) == -1) { - perror("ioctl(UFFDIO_COPY nowake)"); + perror("ERROR: ioctl(UFFDIO_COPY nowake)"); exit(1); } @@ -386,7 +397,7 @@ void _umap::pagefault_event(const struct uffd_msg& msg) wake.len = page_size; if (ioctl(userfault_fd, UFFDIO_WAKE, &wake) == -1) { - perror("ioctl(UFFDIO_WAKE)"); + perror("ERROR: ioctl(UFFDIO_WAKE)"); exit(1); } } @@ -395,7 +406,7 @@ void _umap::pagefault_event(const struct uffd_msg& msg) copy.mode = UFFDIO_COPY_MODE_DONTWAKE; if (ioctl(userfault_fd, UFFDIO_COPY, ©) == -1) { - perror("ioctl(UFFDIO_COPY nowake)"); + perror("ERROR: ioctl(UFFDIO_COPY nowake)"); exit(1); } @@ -410,6 +421,7 @@ void _umap::pagefault_event(const struct uffd_msg& msg) // if (memcmp(tmppagebuf, page_begin, page_size)) { pages_in_memory[next_page_alloc_index].mark_page_dirty(); + disable_wp_on_pages((uint64_t)page_begin, 1); umapdbg("PF(READ) %p changed after UFFDIO_COPY\n", page_begin); } @@ -418,7 +430,7 @@ void _umap::pagefault_event(const struct uffd_msg& msg) wake.len = page_size; if (ioctl(userfault_fd, UFFDIO_WAKE, &wake) == -1) { - perror("ioctl(UFFDIO_WAKE)"); + perror("ERROR: ioctl(UFFDIO_WAKE)"); exit(1); } } @@ -443,7 +455,7 @@ void _umap::evict_page(umap_page& pb) umapdbg("EVICT(DIRTY) @(%p)=%lu\n", page, *page); if (pwrite(backingfile_fd, (void*)page, page_size, (off_t)((uint64_t)page - (uint64_t)segment_address)) == -1) { - perror("pwrite failed"); + perror("ERROR: pwrite failed"); assert(0); } } @@ -454,7 +466,7 @@ void _umap::evict_page(umap_page& pb) #endif // DEBUG if (madvise((void*)page, page_size, MADV_DONTNEED) == -1) { - perror("madvise"); + perror("ERROR: madvise"); assert(0); } @@ -478,7 +490,7 @@ void _umap::enable_wp_on_pages_and_wake(uint64_t start, int64_t num_pages) umapdbg("+WRITEPROTECT (%p -- %p)\n", (void*)start, (void*)(start+(num_pages*page_size))); if (ioctl(userfault_fd, UFFDIO_WRITEPROTECT, &wp) == -1) { - perror("ioctl(UFFDIO_WRITEPROTECT Enable)"); + perror("ERROR: ioctl(UFFDIO_WRITEPROTECT Enable)"); exit(1); } } @@ -496,7 +508,7 @@ void _umap::disable_wp_on_pages(uint64_t start, int64_t num_pages) umapdbg("-WRITEPROTECT (%p -- %p)\n", (void*)start, (void*)(start+(num_pages*page_size))); if (ioctl(userfault_fd, UFFDIO_WRITEPROTECT, &wp) == -1) { - perror("ioctl(UFFDIO_WRITEPROTECT Disable)"); + perror("ERROR: ioctl(UFFDIO_WRITEPROTECT Disable)"); exit(1); } } @@ -517,7 +529,7 @@ void _umap::uffd_finalize() uffdio_register.range.len = segment_length; if (ioctl(userfault_fd, UFFDIO_UNREGISTER, &uffdio_register.range)) { - perror("UFFDIO_UNREGISTER"); + perror("ERROR: UFFDIO_UNREGISTER"); exit(1); } } @@ -556,21 +568,21 @@ void __attribute ((constructor)) init_umap_lib( void ) umaplog_init(); if ((page_size = sysconf(_SC_PAGESIZE)) == -1) { - perror("sysconf(_SC_PAGESIZE)"); + perror("ERROR: sysconf(_SC_PAGESIZE)"); throw -1; } act.sa_handler = NULL; act.sa_sigaction = sighandler; if (sigemptyset(&act.sa_mask) == -1) { - perror("sigemptyset: "); + perror("ERROR: sigemptyset: "); exit(1); } act.sa_flags = SA_NODEFER | SA_SIGINFO; if (sigaction(SIGBUS, &act, &saved_sa) == -1) { - perror("sigaction: "); + perror("ERROR: sigaction: "); exit(1); } } @@ -578,7 +590,7 @@ void __attribute ((constructor)) init_umap_lib( void ) void __attribute ((destructor)) fine_umap_lib( void ) { if (sigaction(SIGBUS, &saved_sa, NULL) == -1) { - perror("sigaction restore: "); + perror("ERROR: sigaction restore: "); exit(1); } diff --git a/src/umaplog.cpp b/src/umaplog.cpp index d582fe29..5862e7cb 100644 --- a/src/umaplog.cpp +++ b/src/umaplog.cpp @@ -1,5 +1,4 @@ /* This file is part of UMAP. For copyright information see the COPYRIGHT file in the top level directory, or at https://github.com/LLNL/umap/blob/master/COPYRIGHT This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License (as published by the Free Software Foundation) version 2.1 dated February 1999. 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 terms and conditions of the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifdef DEBUG #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif // _GNU_SOURCE @@ -33,5 +32,3 @@ void __umaplog_init(void) else umap_logging = false; } - -#endif // DEBUG diff --git a/src/umaplog.h b/src/umaplog.h index e610ea5b..c97d6958 100644 --- a/src/umaplog.h +++ b/src/umaplog.h @@ -4,35 +4,42 @@ #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif // _GNU_SOURCE - -#ifdef DEBUG +// // Usage: This logging facility is available in Debug builds of the library. It is enabled by setting the UMAP_LOGGING to a value (if unset, it will be disabled. #include +#include extern void __umaplog_init(void); extern void umaplog_lock(void); extern void umaplog_unlock(void); extern bool umap_logging; +#define umaperr(format, ...)\ + do {\ + struct timespec t;\ + char _s[120];\ + (void)clock_gettime(CLOCK_MONOTONIC_RAW, &t);\ + umaplog_lock();\ + sprintf(_s, "%ld.%09ld " format, t.tv_sec, t.tv_nsec, ## __VA_ARGS__);\ + fprintf(stderr, "%s", _s);\ + umaplog_unlock();\ + } while (0) +#define umaplog_init __umaplog_init + +#ifdef DEBUG #define umapdbg(format, ...)\ do {\ if (umap_logging) {\ + struct timespec t;\ + char _s[120];\ + (void)clock_gettime(CLOCK_MONOTONIC_RAW, &t);\ umaplog_lock();\ - fprintf(stdout, format, ## __VA_ARGS__);\ + sprintf(_s, "%ld.%09ld " format, t.tv_sec, t.tv_nsec, ## __VA_ARGS__);\ + fprintf(stdout, "%s", _s);\ umaplog_unlock();\ }\ } while (0) - -#define umaperr(format, ...)\ - do {\ - umaplog_lock();\ - fprintf(stderr, format, ## __VA_ARGS__);\ - umaplog_unlock();\ - } while (0) -#define umaplog_init __umaplog_init #else -#define umaperr(format, ...) #define umapdbg(format, ...) -#define umaplog_init() #endif #endif From b02b8687fb5c6ab6634e44297fcfc52c4095bf0b Mon Sep 17 00:00:00 2001 From: Marty McFadden Date: Thu, 21 Sep 2017 15:23:01 -0700 Subject: [PATCH 18/32] Bugfix/buserr2 (#16) * Added logging to track page faults * Added workaround to evict page and retry if WP is stuck on * Removed old log file checked in by mistake --- include/umap.h | 4 +- src/lfile | 4554 ----------------- src/results/latencies-madv-handler-ap.png | Bin 23614 -> 0 bytes src/results/threads-timings-madv-in-app.txt | 11 - .../threads-timings-madv-in-handler.txt | 11 - src/results/threads-timings.numbers | Bin 149964 -> 0 bytes src/umap.cpp | 411 +- src/umaplog.h | 12 +- tests/umapsort/umapsort.cpp | 33 +- 9 files changed, 279 insertions(+), 4757 deletions(-) delete mode 100644 src/lfile delete mode 100644 src/results/latencies-madv-handler-ap.png delete mode 100644 src/results/threads-timings-madv-in-app.txt delete mode 100644 src/results/threads-timings-madv-in-handler.txt delete mode 100644 src/results/threads-timings.numbers diff --git a/include/umap.h b/include/umap.h index 59e25f86..81f26310 100644 --- a/include/umap.h +++ b/include/umap.h @@ -44,8 +44,8 @@ void* umap_mf(void* addr, int num_backing_file, umap_backing_file* backing_files ); -int umap_cfg_get_bufsize( void ); -void umap_cfg_set_bufsize( int page_bufsize ); +unsigned long umap_cfg_get_bufsize( void ); +void umap_cfg_set_bufsize( unsigned long page_bufsize ); #ifdef __cplusplus } #endif diff --git a/src/lfile b/src/lfile deleted file mode 100644 index 6ad7a1b9..00000000 --- a/src/lfile +++ /dev/null @@ -1,4554 +0,0 @@ -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2f000) -Churn Test: - 2 Pages in page buffer - 1 Read Load (focus) pages from 0x7f2e29b2b000 - 0x7f2e29b2bfff - 1 Write Load (focus) pages from 0x7f2e29b2c000 - 0x7f2e29b2cfff - 2 Churn pages from 0x7f2e29b2d000 - 0x7f2e29b2efff - 1 Churn threads - 32 Load Reader threads - 1 Load Writer threads - /mnt/intel/marty.0 Backing file - 600 seconds for test duration. - -... -... -... - -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039863808 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3039873536 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039873536 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3039885312 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039885312 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3039891456 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039891456 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3039901184 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039901184 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3039910912 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039910912 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3039922688 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039922688 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3039934976 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039934976 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3039943680 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039943680 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3039953408 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039953408 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3039962624 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039962624 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3039973376 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039973376 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3039982592 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039982592 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3039991808 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3039991808 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040004096 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040004096 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040013312 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040013312 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040025088 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040025088 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040034304 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040034304 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040045056 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040045056 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040054784 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040054784 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040698880 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040698880 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040709120 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040709120 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040721408 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040721408 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040736256 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040736256 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040750592 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040750592 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040761344 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040761344 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040770560 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040770560 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040783872 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040783872 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040793088 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040793088 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040830464 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040830464 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040843776 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040843776 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040868864 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040868864 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040897024 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040897024 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040919552 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040919552 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040929280 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040929280 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040939520 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040939520 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040954368 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040954368 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040964096 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040964096 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040974848 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040974848 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040980992 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040980992 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040986112 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040986112 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3040991744 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3040991744 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041001984 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041001984 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041020416 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041020416 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041029632 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041029632 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041036288 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041036288 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041047552 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041047552 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041054720 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041054720 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041067008 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041067008 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041080832 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041080832 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041091072 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041091072 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041101824 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041101824 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041111552 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041111552 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041120256 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041120256 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041129984 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041129984 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041160704 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041160704 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041174528 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041174528 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041183232 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041183232 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041192960 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041192960 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041204224 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041204224 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041211392 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041211392 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041230336 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041230336 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041253888 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041253888 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041267200 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041267200 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041281024 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041281024 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041299456 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041299456 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041314816 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041314816 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041328128 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041328128 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041338368 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041338368 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041348608 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041348608 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041359872 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041359872 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041372672 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041372672 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041389568 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041389568 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041401856 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041401856 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041414144 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041414144 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041421312 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041421312 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041437696 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041437696 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041468416 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041468416 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041481216 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041481216 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041501696 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041501696 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041529344 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041529344 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041553408 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041553408 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041583104 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041583104 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041602560 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041602560 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041614848 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041614848 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041627136 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041627136 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041637376 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041637376 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041647104 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041647104 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041658880 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041658880 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041670656 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041670656 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041681920 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041681920 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041692160 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041692160 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041704448 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041704448 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041713152 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041713152 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041725952 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041725952 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041739264 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041739264 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041751552 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041751552 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041760768 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041760768 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041772544 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041772544 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041793024 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041793024 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041804288 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041804288 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041815552 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041815552 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041827840 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041827840 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041840640 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041840640 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041858560 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041858560 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041870848 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041870848 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041883648 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041883648 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041895936 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041895936 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041912832 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041912832 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041920000 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041920000 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041929216 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041929216 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041939968 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041939968 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041970176 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041970176 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041982976 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041982976 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3041995776 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3041995776 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042007040 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042007040 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042026496 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042026496 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042034176 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042034176 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042046464 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042046464 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042057728 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042057728 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042071552 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042071552 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042083840 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042083840 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042097152 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042097152 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042109440 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042109440 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042122240 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042122240 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042133504 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042133504 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042146304 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042146304 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042159616 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042159616 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042169344 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042169344 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042180096 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042180096 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042189824 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042189824 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042201088 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042201088 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042210304 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042210304 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042221056 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042221056 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042229760 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042229760 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042242048 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042242048 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042253312 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042253312 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042262016 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042262016 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042275840 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042275840 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042281472 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042281472 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042291200 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042291200 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042301440 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042301440 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042310656 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042310656 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042320384 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042320384 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042330112 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042330112 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042342912 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042342912 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042355712 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042355712 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042364416 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042364416 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042376704 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042376704 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042405376 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042405376 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042415104 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042415104 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042423296 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042423296 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042435584 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042435584 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042445312 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042445312 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042589184 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042589184 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042610176 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042610176 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042618368 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042618368 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042628608 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042628608 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042639360 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042639360 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042650112 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042650112 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042663936 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042663936 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042674176 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042674176 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042681856 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042681856 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042700288 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042700288 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042707456 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042707456 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042722304 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042722304 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042736128 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042736128 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042745856 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042745856 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042757120 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042757120 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042770432 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042770432 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042782720 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042782720 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042795520 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042795520 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042808320 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042808320 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042818560 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042818560 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042828800 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042828800 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042839552 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042839552 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042852352 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042852352 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042864128 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042864128 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042880512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042880512 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042890752 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042890752 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042900992 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042900992 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042910720 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042910720 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042922496 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042922496 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042935808 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042935808 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042954240 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042954240 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042965504 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042965504 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042976256 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042976256 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3042994688 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3042994688 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043004928 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043004928 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043010048 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043010048 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043025920 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043025920 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043036160 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043036160 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043048960 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043048960 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043059712 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043059712 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043068928 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043068928 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043081216 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043081216 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043092992 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043092992 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043101696 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043101696 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043113472 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043113472 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043123712 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043123712 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043133952 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043133952 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043143680 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043143680 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043152896 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043152896 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043165696 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043165696 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043178496 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043178496 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043190784 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043190784 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043197440 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043197440 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043209728 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043209728 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043219968 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043219968 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043228160 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043228160 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043240448 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043240448 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043251200 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043251200 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043265536 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043265536 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043278336 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043278336 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043288064 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043288064 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043863552 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043863552 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043872768 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043872768 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043885056 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043885056 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043898880 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043898880 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043908096 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043908096 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043917824 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043917824 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043928064 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043928064 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043940864 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043940864 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043950080 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043950080 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043966464 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043966464 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043978752 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043978752 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043987968 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043987968 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3043998208 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3043998208 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044008448 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044008448 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044016128 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044016128 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044026368 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044026368 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044037632 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044037632 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044047872 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044047872 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044058112 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044058112 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044070912 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044070912 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044084736 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044084736 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044104704 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044104704 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044116992 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044116992 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044128768 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044128768 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044146688 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044146688 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044158464 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044158464 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044171776 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044171776 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044183552 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044183552 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044200448 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044200448 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044209664 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044209664 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044221440 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044221440 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044234240 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044234240 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044244992 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044244992 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044256256 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044256256 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044272128 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044272128 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044282880 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044282880 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044305408 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044305408 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044328448 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044328448 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044336640 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044336640 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044343808 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044343808 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044356096 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044356096 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044371968 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044371968 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044377600 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044377600 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044381184 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044381184 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044394496 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044394496 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044408320 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044408320 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044412416 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044412416 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044422144 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044422144 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044434944 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044434944 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044446720 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044446720 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044480000 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044480000 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044498944 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044498944 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044505600 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044505600 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044521984 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044521984 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044547584 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044547584 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044570624 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044570624 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044588544 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044588544 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044602880 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044602880 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044628992 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044628992 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044661760 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044661760 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044680704 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044680704 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044701184 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044701184 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044707840 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044707840 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044731392 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044731392 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044749312 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044749312 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044777984 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044777984 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044787712 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044787712 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044803584 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044803584 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044820480 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044820480 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044843520 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044843520 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044863488 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044863488 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044870144 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044870144 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044874240 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044874240 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044882944 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044882944 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044887040 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044887040 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044896768 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044896768 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044904448 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044904448 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044913664 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044913664 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044927488 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044927488 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044940288 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044940288 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044950528 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044950528 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044965888 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044965888 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044978688 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044978688 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044990976 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044990976 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3044998656 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3044998656 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045002240 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045002240 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045012992 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045012992 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045021184 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045021184 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045026816 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045026816 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045038080 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045038080 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045047296 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045047296 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045058560 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045058560 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045067776 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045067776 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045075968 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045075968 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045086720 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045086720 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045110272 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045110272 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045120512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045120512 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045136384 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045136384 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045157376 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045157376 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045176832 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045176832 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045187584 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045187584 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045202432 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045202432 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045209088 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045209088 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045217280 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045217280 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045229568 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045229568 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045241344 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045241344 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045251584 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045251584 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045266944 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045266944 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045276160 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045276160 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045294080 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045294080 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045319168 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045319168 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045343232 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045343232 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045353472 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045353472 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045369344 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045369344 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045378560 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045378560 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045405696 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045405696 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045432832 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045432832 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045451776 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045451776 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045465088 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045465088 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045484032 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045484032 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045505024 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045505024 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045526016 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045526016 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045547520 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045547520 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045569536 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045569536 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045589504 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045589504 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045612544 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045612544 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045627904 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045627904 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045652480 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045652480 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045671424 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045671424 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045685760 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045685760 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045687296 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045687296 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045697536 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045697536 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045702144 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045702144 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045714944 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045714944 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045727744 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045727744 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045734400 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045734400 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045756928 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045756928 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045770752 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045770752 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045775872 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045775872 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045788160 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045788160 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045797376 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045797376 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045807616 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045807616 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045815808 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045815808 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045827584 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045827584 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045839360 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045839360 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045848576 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045848576 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045854720 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045854720 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045874176 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045874176 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045876224 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045876224 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045885440 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045885440 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045903360 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2b000)=0 -+WRITEPROTECT (0x7f2e29b2b000 -- 0x7f2e29b2c000) -EVICT(CLEAN) @(0x7f2e29b2e000)=512 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2d000)=0 -+WRITEPROTECT (0x7f2e29b2d000 -- 0x7f2e29b2e000) -EVICT(CLEAN) @(0x7f2e29b2b000)=0 -PF(WP+WRITE) (UFFDIO_COPY) @(0x7f2e29b2c000)=3045903360 --WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(CLEAN) @(0x7f2e29b2d000)=0 -PF(READ) (UFFDIO_COPY) @(0x7f2e29b2e000)=512 -+WRITEPROTECT (0x7f2e29b2e000 -- 0x7f2e29b2f000) -4638765198933581824 -+WRITEPROTECT (0x7f2e29b2c000 -- 0x7f2e29b2d000) -EVICT(DIRTY) @(0x7f2e29b2c000)=3045903872 -EVICT(CLEAN) @(0x7f2e29b2e000)=512 diff --git a/src/results/latencies-madv-handler-ap.png b/src/results/latencies-madv-handler-ap.png deleted file mode 100644 index 15e6179f16b2cd411a4f579992b3184c16960032..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23614 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 diff --git a/src/results/threads-timings-madv-in-app.txt b/src/results/threads-timings-madv-in-app.txt deleted file mode 100644 index 5ef2e3a4..00000000 --- a/src/results/threads-timings-madv-in-app.txt +++ /dev/null @@ -1,11 +0,0 @@ -1,2,4,8 -9531,11499,16505,32238 -10063,11700,16686,11879 -10500,11680,12143,32238 -10228,12033,16513,11877 -10254,11660,16682,32239 -10760,11501,12142,32238 -10642,11700,16513,32239 -10149,11680,16683,32238 -9916,12026,16513,32244 -10222,11661,16674,32244 diff --git a/src/results/threads-timings-madv-in-handler.txt b/src/results/threads-timings-madv-in-handler.txt deleted file mode 100644 index c37c34f7..00000000 --- a/src/results/threads-timings-madv-in-handler.txt +++ /dev/null @@ -1,11 +0,0 @@ -1 2 3 4 -9705 10388 22698 44446 -10109 10400 22489 10360 -9702 10345 10654 44446 -10526 10668 22699 10360 -10287 10767 22489 44446 -9907 10388 10654 44446 -10111 10400 22699 44446 -10507 10345 22489 44446 -10310 10668 22698 44446 -10419 10767 22490 44446 diff --git a/src/results/threads-timings.numbers b/src/results/threads-timings.numbers deleted file mode 100644 index c62315599dde4196e541d5bedb319186b34e24b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149964 zcmd3Od0Z36|M$#h1Dhoz%aVi;*xe8bLTWGsq)H`$s8p#^#iN#riV9WhRYbnpS_KvF z1FhnHfOsEOtY^Kjo>Z;cdQ|IuTSdkDXnZ~s)M{(Lzvp?qet$f9&3ooEvoo`^pPhT& zo8}+MXbmF2;{JV-H;mb}W|S{N1U!T_>D48(f9;07JNN6E*()cq+kY}pfiIe4xzpIh zU|s~sFp}$MVGDm&Iwzf%HcJ~E)6(w}D`PfGCK+>1vdEYVl3m7}mt4(Rtx2BQ zt3&ISaWdw2DOoO8hBrqBDzg{FJT2i`c}9qMR!Tt0LSmmjJ-T(y$m!O*S8Z31j9y>V zZk3(Ur5on%BxUsIBx5cbQ-#LOW8ROp^~~zipa?VjLXi+8J}kVkj&> z95dI`71!?MulBR#PSu^$j?+ES4%Lm<4b$c8E@(&UChCUhM(ZZ)e$}4V9@Q2|H^e;M z4eih350YCuPx?)JS(u=Et{tl@(hb)g)1J^i)BdS_Ap9we6TcTH=?ZkmwYP*(x)Hix zv}d(fwFTm1ZK3X4-AU~f-3#qB-5A|dtsVQaEBy>|GmT6kt=gsP7%brDgPrCVF9tiU z`0-$89fb0na=mT)1EX-FxX*cjt+KM zF&n7o$U8Sk26uRJvF1PFKG_U=tuG6{zH~XNT(YQP4L#KK2Jb$OFE)LIgn#+$TIIY(f zUlJP2`v))gvpB6cn|Ftd{%G6NX`Z!5a#}afs|Oh!ZJ6pbKW^uCSSKD@6d%}M-Z*$u z{cR5G#`c>9n_M5fp-Z&Gn)|C9k{)jTvC};Md)8rHx49Ph*G!6ZntwR7FW$Ow@k*hi zZPpdRX&%0Hl*79AQQi1ewqwmtIL!T*V~4e10ZG5$&Ju@tO4nKO)}JenL;T0j`#8+K zwui)9#|`>cp|4-!HIrr2__hqHF^H|3%7heji^$hDV# zDoU`oL&=RP7uccHq;?4B#WnQ!jMTz*C^p<92YcjDkE|!LlIwb84b{FK((@*Rk)sTW zVI4pIc~`voy{oL#`mnIJv(AD2O`Ud%@l8NNXpHK^Lk{z;Vyn}7DIng_CKSaCJ<`u< zJ|ElOX)SNJBOXG`Cz&nJRsD{kgrpwG*!n^Xr#b%2mH2K?Qwx!8;QZ|lbK7-Fhc)if z<;X%r8?236FP)Xpu_kV zbOi4B3&_9XZSQ(H=pxCFQixB`IJ()5}b$8DK1tSo&~ z)2j{<8zhyGh(8?hz}*9pXB1t+-p2lB{0P_y z*ag@P*aO%L*axTp`~=t!Hw7YAe8q9$4F}XB58#* zU)m@wlU7RKOY5Z#(kiJ~S}LuPzLOS6>!eLmnY2V&ER{%WrBZ33v^sHQc(DXkqeOzL zF(2+ys`_1t7N}M!(L(So0xSkB0W1Y9OKgf(fV&d#9bgq;HJ}Wz20*I!TEIF$_4CV{ zZiI>#2n0Q|Gn*&>gM7Q07fgDdrI!kCA3d!=-7`IBA45ODdA4OJk)%X{0ns znj(#sMoHtP$1k3`=1|83V@*WS)?%!o}!qE}4KYg6?lWDE*iCS|df9A5ltC+`;JU`1< zDYsBJ@U-w7QVr&Y1T(IyHbr35dKUhia7MT&+|yQR&k7fW^TMV4!NK>mpyDd60q$VJ za#c$e62R&&Kxc7IfDY-rkSt@)2&pi064GSMC7~noXCB1mB6JPsa@XJ%*T9o-N2n4W zYVQg6g-W==UE#Ji7d^y(p$g>NfIEP@fJ(qUoU6Ytbfo;5KS_Rn;N0LpBs24e#2ba1 zO*PMjN80<^r;y!4;gRr6cq}~8_J>}eKYH{MPhYx^!F_`JYaWtfKEwTkp9>vj{>(Tr zwhM-~)StTw#k?9=LWD;iDZ(R<65)}D zi;&kC5gvK0*iqh)`QFiq-d-lo5*Ldr#Wms#u~b|n7K`7B%fy-D9C5xlTU;T|6_<(& z#UinhV;7-W3%CN&ueP4Q=k7^%|}(2fU+h zH!XuU7rpw3w#lWW&SOKJO``79+1sp)TO;~2x8inVbTcF+_@-2oxhe6c_}vM*o5FSB z58;Y%Rk*LcCOpt4Zbmoi>}|9T-4EG|9sq6tt^%$Bt^=+B{s`HtzbSOY{!BsKUW~5e zuej^*ny$wsP>u7&A>uIc1-yE?h@rZTKG(y-{V45}wo2vFHfe{nMcOX0-YvUkX66{9pnC3<^f(;b za6F8>+Y(T!2Bzh0T`(cwRHbY}TbCImS6kE(_e5x3Vm}yZM`IbYMVbWmR=F42Cil{B zmu7&k9DFm3&Q7ws*rYBt}ItUVO0H%zWzMAF(B){B8L zUytJawA?S+<~Um$K<~g>A4bb;b+}I>23qp)e30>m>m+&*J&P{V)42x-O~ON zmC6}px3_H`^a)1EQJv_^Qd%b*tY$8gHN`XQx==5c;@~c7W((HQR|6vUE1`JX-RF?& z95VXDN(fr_0j%gk+V-XMGVYS3WiH{Ket{a+LT{FC;UIJ?qcyh~dV*VV^$_&ffem*` zYFO^T4bHq=a-rsLE!@1mFAHQaLInP=7jA93W&WpSPDW0qXXQp?bbuNO1u#MZj=anV z%CL6;44!)jhyXs2d79441Mj3P!WQMh0S5-`8&EM||A3zcFv!prqQPr!0dH)clPBvb zv;$ro+98k?h{Y3tNC1MV8FI0{2ll%fY7gvBZJ5jk1_w8nrKur@{m@$+!1Bfi2iQ;_ zs81s?%$o2tjG^(gQ+$M$MncAAV8M&QjbUhNK!&E6p9VmERWk<%fDSGPD9$Rua{zPb zx$m)XZ%@I9#`oa>`V`jIgd|*2O$38kfKU_CdJe*^@_Ja zMvu<@dU#fzje33Ftyi@IPx_$wwma=LuukRG%sd#-$l|x$&q7_4_+k}1L(b~C2@f70 zWA!V}3@K9>xBfZzsVw~I&s#?M@~df9O)8%aCwn)~%NxdY#1H^a@G@XzbpXZrnb25; zAChTJs1RIQ>xU+TD+hNPxL&?~OnzP-NZ!7FXo#O5V!#~=t^(X);IiNrfa?S9aB!92 zjsVve+>zj_z#Rpy8r;#~a^Q{u*ALvW;PT*(1J@ti@!)E}odB*D+(K}5;7$ZL0NhF7 z>cRaM+(2+AgKGeH3b;Yw&IC6Y+!^2s;7$iu1a}&^61Y>rHG*3t_iJlFCS)<1RLl#^ zy?7zhzraRtEO9VNw+}I)kuH>s*sh@BN2^!v#QFo0Q^7B%*f@AADtIgQ#zWyXH6BZ>F_y99|4Y^onM9%?av``cp)6z?lV!-?%29t< zULnK!LgCd=czNUT_(#SUN~MN~BHU07H&jDjYPyhd_n=zz;9!v4DYgEx?bs7@7E$_# zljmKK8%I3Za7Pxt_VA7^jN6-v^QIC{wVirx!cH&!)=Aq=s*OYUJzhzNuU!lqjqQ$t4M#8=4E=AX=3X2KnD6u_r2&EB z_3Z~^5+vh0sb~^JL(mQxk>nuBF_FAL8i(@?FlCX9GE4Q&k!{A@Vfp7*y_nQF?h?hG zr&ukM@snoMf)|TIxr}}Fua#^rpN)Bjr8%P>TAZ9kl9ojxKmY^-f&d0UAV3cY0O$Z( zfCk_X-~oOB4xk380KNbvzz4tr6aa4k1MmXK0W?4cpa2MfF*~iv`%fG9t@ZWR#8m&p zo|)OOsa3ma@4g)pdwrhSBeSnRJREe%^CjIerXh65SICO(io^kUAEwlBo1tgV49&gd=ebQ;S1Q1wMecnqgb9{5MHh{!b3;85TXx)g^A=vB#KB3kz_<- zi9{1gNhCRukivzivauL>C6kL~V0jbCi%1NS7$PZ%#1e@ml9EV1L{bq+NhA&=`z%>A z4)G*Rl{^d~4UyF3s*Xq;k@Q6JBa(qgJduKle>WOH^O*__=k)y1&u>cy(QRNQHZQW4DU zev&%Lm;+KDdI(IoZcAh;cF;2wtME+0ewIoga1K;;uL! zqY#}E*%L-7SSGJ+0{(!$Ab@oitaj&wrI7NxunOZHAl%bdfL*0M0&}{Pa<7DI7*|2S zMd2~Vc@!Q+$y@gUMNXn%D?yq8_Fbt2>`Ou!*j3Uds#AYu^9vNkpc@p~3b-d#!G-(M zQ%cpAO`G7`YKTk*%c{{}KY*Fk12R=Bj^g>%{-IvblDzdWf4hfu;t3WvO>3lrE#W&D z=3+KQ0u#*Y+o$<*dYD~Q;aX_FZ!P{5t2e?MRWo<7KC&T78}A2~Ip)49+Xp@KZFs*- zw%Qx|q+16|OV19!v~4Hm&Qz7odN!=;63uFuo9piGTmSR?OSQSX$96oKG_vA$9f-Ve z#Do*~|2%y27Uq_0n=owk!(%0>5WIKM#L4>$m)=|lVD_wnOX#T7n2e*>&vwy5VwQlLd-?w1y z)T|w)>(_jH_$lVRV6Pi-a*pO?P+y_O>b>-GJ*}7Nkx9c;KB`*z!?>d>OELFsRQaUq z8_#?Lp+B9zS-S1dNu>?A`9trVfAD?DPjZu%IeKdH#j{g(PP~t~E62}IxOsnnl>&m@ zzfZk+b$W5xG0g2+xo+;owSR0^L-4lBd-on5sQdxO`LdfA7LO`fF+&4cKf8Tt<@0;_ z-}U6y9$a|i>CQc6dI+69@5cT+lZr}ebDNgj7*n!fb9o?SQMGg3lpPBrkN0Kt>C9i6iIhacvhz}(Nb zZ>`!lYr&yzkjJw5k9H27vU9@6+^)ji_fFoJa zekL6=V&1Zu)5?+un47eqD*x!psx!k$_`18l zomy5jZr+cWn|pP|l0Oa{e!h@|&l&n`o%_40%k!aL6<$17wJ-1BViLZ+>i+lZW?UaJ z4|7v@Rm>kf;=svO7>a)K@aTPeHY_buaBJp2*?jx=!rMDY^wqzX-q=_*x?(-%ZkCLg z`{Mf36Guq&X*>4cz4+|6o9}bOONU%JIDg;MlO+1l8|OwmIRE3Kq$g0m$d+?L(j_f9x?Wyci~JYiYUsI3PkF6_&#KDDQC*W8U8uH$guaDBLc zxFTE`E(;F|=fZu$wc+w`zi=j;3TMM{I11;(1HujA-r;n(CfqAr9Ud623fI{sz~FMovc4ZhdpCQJ!^`4u+_vYUl=`Q+W_sy(pj=9}d5r<*ZK%roGBC z7_zNiY5XJ0xAOe??L67P=jmUkWzMTS|Gk*@H;Z}j?JSwUXPG=<<*Ya;9>Kq7SPQ$Sn5CxAA9)__)kmVi`13qW(g$AA<-GeA?oM}TBN6F_6YhkztN zBS1qy1Aq&V2uJ`p0S-Vszz&E4*Z{QwkpL^87T`UA1rPxU2h;?F0nC6SkJhb)!)rYjKafd z%Wq_2O&gj!j1;1hV<-MC?{zL)a=<=13k!n;EvVt2#!SkSR++8*A zH1@6qGVamq&ocrXe|{lNWQ3RIHYe zA}^*%v&fzlYC=-~oCGh(`QK}ZmgLc%)Q|~D%_!80ywhVOUGl3cmhj&*(2)!}kjDui z?Xxw>z&ok4h(4;W---V{c>qb?ktF|=)bBRc^}8wLLaMjxzgH|hNt{6vZzKBqq&ji4 z>KiwJJlrYjcbeD~H3}q&JCVc%NpP#Ss%p{O@-*ki?xKF{(lC{OQZYA46hj zF^&Fv;vkZ^OZ78@l=d=lbK*kkq<>GHK9080Zx5bdoL6QnK?o82`@|~NGk7jQXs+xW z2WxT|?_N!E#>-%E@iOeA$QWbUL9yE?R;b<#f(;+C8KmWqXBP-_upl)eHdaEkjLVi_ z1j_}>n^+2B`4G#OSZZSV5zF5pp@!ZJ$1TQs)=(eDR@xHF#>81L!VWuX>cjYjK+)kB zngHi09G9d2+dOXhZzm07;W|Me;H|Oz)uh?;d?OK@`JUil_u-A_E5a~{D-3!D=A;I` zXGWLYZhbS2-Fg|jX7uXPBQx6&%y`2UonUC1(Wj3wr)zd*Mwh+@H3REdgQBhgd*s*; z#ehp=KiY2ei#BRORg^&;WmDj`#;lBfJ#zXQRAlSSz(l>w;O&>R&@Wlt3W`n;`u9g@ z4EM{-Zkf|NJLB_ASHI3*WL8t+nj_S6q#AZsU>f}J<>VwCc3gZIGNsw+BJTn`*w2>> z1eYQw95V0(fQKd?xu0(giQ)A+`rD;4eeGNHKhL|~e{` zeZMW`CX`72v5c80t6nTFZDhG2s}TPXuM31?_(;3fb1wZ<*b67qv!s08B5{ars5n{o zShyqP>7IMee3!%N^eQ0Xl!#?gIj~tC3VXz<(in+wNsfy}x)a*laE8BIe5k!IE|X4p z*d$|t=TIq*((Mz^YBz|5x+%J6z$g=b#V6Xuz@M1`N9-%5 z3)*AiMBQ}hvUpcmCXx-xquSfTZ1INn9GpMT6Ca5)qzBqO;M80czLh5EE(zzwg~0q6 zDy^2Dz+wL%!f@RSV76?OMgW=UJK*9x2Ug2dIA1@dT>_NHZ*`lbliJZhA}Wz~iei9FC^A+!qmD=h+spB z^c}IviS;|N&Jmi{LLx0Dk$)i4GZMCnNH2&rlU(?NgsmXnVYogj1!C1S9e8eHtL7ZZ zy9DIxwg9vX%4V17zIJr{8dA=IB3M|S4JO_*g{010x>v`4`m z0eAv&CPO}DaGjj=odjHfJobW1XlpA#J_~yM6PG zYrua2t`V0oqDDiiqi`3(jav<+m;)|hZY>5(h9@CRq(e|LI5tNMK$FYi4uqvfXoiIS zMOa_g0C(^=@CI4n?y#U~JDg=E0b`B4Whf0`D%NPOliF21mKFA>IV2LRX-0HzDjG#38SG3dCOm*M=mU^1*)_T7ve+%i3 zgFF_}jtBVyJkV7r=tzjO8Nx}S2#fMp0HHWefPAVTd=cOmfE$!R?s*r=v|1hrIY5y? zm2AwEI(#6@=a3TflF6imi_|b*x=s5@xTD=@DY!BorMt327=tUStClD_g}_voo_Yvom{j&TI;t zjSe=*cCPd(?cy;GL63xD*MBfB*6bGfP*#XMjTOb32EBXq>)9*n9J-c%4%LamxFcE^ z|1pY++k$Fs5c&7m(45TvIaYi8IMg>IhPJlK_z)T89g#63LUUis2eBG_LzB@NRAW_y z8GH5X(F5-JSR0#!QB2Yh3gtIiP^)iFx6WS-XwbVSd_$2q+8!mNXXxr#g+lo-O@~;B zJ}o{4qAEc;9iQUrE5j~&xtMV~xLZ${Wy+pzib88vY<+jka6y zd-9G%t@nh%u8(B-erQSDbQ(oBtB3{XvGAd5GId@~ual-1q)(2h6Vg zMYPo}9EoUYGrGEc4p|)4@=>fs9!f{mbG*Q)<@sV{j9RGtq-(bve3QPd)efVh>SjkH z)kiSrpT1C7ZLZ4)Fz8u97iG`hx!v-+z)KWJ;l9tQ|b2G9-CZpftC%b%Pcp<$|TzlI(|ypTOp{yau?c@?qw=vLW=2S627eXEVPalKK{x4ym$5h z{-GkIJz8LjVI#j{Y+VQR$;^hj{sk22Nn8bu>e#^=la81uYqqOYfes2AT?N#69o%_7 zM$vY#o|@+?wjx{7R)pq&vgcCyzoIijh^sw?2cs1W_9!x-!Db*d`t*{16GG~uxt8%h zu1`^;foL`KWn~!IY$@5(CkY__HWFX*)u62G26%)1!m;L8k+-s8AzrjK%5|JUjrp}or7_Hy#6R^V z@8{NUztZ;DIDgvS);nVe{ZKol97V+*Ms&U|*{HzLs4)H*ib{e7+Qx5gq3FX(To*ks z<6T`Kzt}I;^c6uh#0QEIO*)x}v*)_Z6h}stA`q8Q=j)=&LVr{zHXVv9ET1wRw?<2a z)-IP!9>O10%F7mPL3NTo1(H;wv*z_E=5%{yQ~37k);)AQF4tT1SH|Xg)8_{tA)L{duF{6BQK6W)hrVc(aMTqg%dd-8Our4?8H%!}$k8A1qh0l6A?ML^%S<>k zi5rMCzleM|8)Ei__M7-4*R9v*##EkBpbLNIxSBwnMdfi{V-#f=%vuZ#eO0Ij-ACML zgl1a?`l0A4I`l`}uPn0rwvHWx={tgBr?0DzpXR&(gdf$C@AY-yi?Po$d#REcR1!bX zwTBAXh`tp<;;%eugf65nH+4~j{0E&B0zrTtaog-0u3Z$)L5ngCyi!dRc}9iC7up4YR+P5{+ZfePM^Ij5=>Z-~TD= zS6Y=(>>RIzXMDjh;ZQ9YNu*(cbjR$nLVl`Do;V8U>=c#(`Sq z1Edz*PY*>gpN66lVf8sfr6ThZ>34?eK0QRb?jH0J(PZ!y7R%$5)>hqec)1pxo~?`I zWHW8sX=Bo7X6m7m-mDm8C`(~vOA-{1s1D>!IMZX9gT|24sE9sTufIcX?UQ_y}s51J<+r*z$Y*)7I*D1#uNT1cJrusIi z>B=A-hy+7LCsU>Z)lq$`i5o$qm~r;mBhU-WEdPFMJoWCkZ_NGHfReYuRlnA;5G5~t zmT)GbU->jLp9lrV5=Wr- z(?=K^X7ud}iae?PGz-}QhvWB78JzDxi{mi#K)QAcvx{hdY<#&ZR+gBKrh=gIN}P&* z7hEnqjOu7vw@)lb)R9U4Xf!{IY4X_RM2#M!RnV=_6m%;;flx~Nmn$GFh7dYm8j$Bw zK;J{plInehq5$jSQTz*Y#;)Jd%6OM+AmYdj;!nYqbRLnr?+E){ZQa%=oyZ00`=)3- zdYsR%_BHog@EG**2$uoU|uTWmvLbf#BRs(f7VOv#8WEGrB7SSe$s)R8MgJ>N{M z3bO&_^Mpp}!(3787Kd_^C>G|aJ$cu2MAx&Zj)#tH9+Osp34a&J&IySYMdQpKxtTDr z%ZMXiWWwIht8Xdm*FnIBPJmScu-H*o)DPAQ-vCQA595&-&xX^$;CUDW?`aptwUm1? zJ}uWO&td#P&ewX3Q67axQg|Bm!VkB?^C-Luw3x|I1{~>O#)sp0+*F?c#OUTI9sAVn zE*Hp0dwo!USQfIr*dM+ZgoT#;6UEnPfxHJ=A@>Tdz_1*|Cos;8QJ=%G*ufhpyqAI} zo}+{(o>McT2DcYxvb-T)G?XjNdJTL~wIawD@6zxqY1X@8vposJG3%4mtw#@I1NaU& zGn>~0j*hZ2c}@e?fvv?3B*1;m08^?CX{-nK?|0aN$c_|;{i2Kr0ksS#>sTCYGbX}j zTAxHv*_}i)eiX_>xz!E3WoLF)g$HUfdKf>-98ft9`HoY9qMcde5K6`4VyJC-TeaaE z{k91oc4@p#F-}>4S=OxMQoDWLHK%eU@*T;59)@c%z1P)H985_ghJ1xh-U3cX;wcpq8A3Gi;>yXl#m6g>! zhO(Mb;}A1!x{QZ(?idP8lNew-kIZNisl!au-v8;O#Tk2wj>+J}4b9PF2AK3wTB8Z5 z;%v*_Svk$#bN8Z8_M(w3@dMO2as>`CLqG}yz0+)sqEOsBuRtKV*jg2?;L=d1kJ+?_D!!qDfjwE(Cn`-|g1si})HVQ? zfv$%N)`T!(GhI=(s*lQ;=PbYo85750FUD1fRee>;#aO0R&3RABGWR2OzxgT~upzvq zWw7JGd;DeJ@aA+{Fz|6{TWGltPK2U@8*sVfaRX}!CS>A)jwl|>3 zcN}aF1oDQ%LC9t~9Awoi(_jy3;m0yWP5M}tc#ClwtXT_W;d!$gKqG+G)tQ5o(Cmxd1^heB83~c zx2TKUB_Uw4OG1!ZHS+_8WfmGrLX=;#B5xR2%eChNa|%(!C)t7@osh7*heppMz03&p zc4|ymD~-~@2J@DtA6Uv`OkfP#tsQ7`V$K9UIFUSrybWL?C-cM=QN_!m(D(AZlbM+;=Mt4q9;yq7CmHPgiDu~8mphtEDJqufPY znNglhT-qp41vgx7l&8J?;+#*@*hZQdr@8FNdWUs&54*11pP!>qO*fIx&uw=mS31n7 z#XyI3HV)Q?!k4%MO+XHi*UEFkI9mNVdM9@~)V&=--K$+XTW?myJbU`oVb0G(PU{P| z+rj^=L0`FZQTJQ~L}GV3>Yfe@EpU6KqlSe*kH_>pOfSYht1!C((_+i;808`CeFA%* z!^&&eyQ=#W_-+ePs_i-@+?nMIYm`4hPlwwOd>k&==pj_rr{2CD?Ka320+k8yUAeXp zP0EIV7}X;aN#v#St0~{!X9k5zD72J9n<%t{LKPG`LZOosxFaRUC}09vs1 z*on4HI`cOIB5CiU5Iw5$O=aXy2kU+eSCT(n_-5{In7BXnO>Luv&e)!cig-CaM5cI{ zmWnE#dZW?4sUZ#Ajd4U{G|4v=gnEt93=kfoz=x;=gi;h(ikAAOrj??Ko0u+>Eoqco zis(%;_jS7absFvP?XQvtsq`Xp^6DU1SXKB2C4Y<1kt`TfPlDV6^*<-W*JS994Cm2k zB#jDbG>t~{Xtb7w|ArX61*p`!00-n=^if*nBhe@6ZeHWRr;6Ij&<(irR$KuRJXm#M z;9)!hJwzVSxD7lVs(6U#aq^JM%0f9cTdv^d$*HCCUM;=Q{o;FYFxFQ2q@Cnw-8Pryt9iJTGRX7tN`{ zV!{?Gx$P8dOPoCu9AW+2x1Eyd@oYlWvXFJg)LYuke{^{e97>f~DEn)T=e1qC3F71=hL2aljGwrCWd#3%XnRZK{5iL^vqC!`i)ru^Sb~WWq z?L*z=(bZ;Mc{CLM&t|+HM*#5EX?Z3G&8GQ~mmb*WerF|@e-eYJaO(|zm z?0aJS8sdl;T>;OJt!s%&P{8ut%~4=lbEuO$R+bSL!caQ%`Zi-c6<&Ta(`t zp{i8r;_IqbGZk6b-A&f1n@kD2LOu_s>nCA0hZT5Bc7207j%VT(=NVaAi(5r)&Y;+a zRMF>ZWpi1YzI{h;xbvV!^{QM)ExKK;#C!D>r9+Nd(EZ4j-stp$m60=RqUc*IzdGDX z@ug*fE~&g`vcY%IV((sVMaq2Uzl7Jtc~i(;7}Ul}#a>hv z4bX@SgGi6IQ&$~fCFD@ug&A4}CAao<`Rj_lQISZ{jjd3_L$&FPF64N<&aM(dKEemv z${-{Q5|eHZqC@v`utE!AVGDy)l|e@Hav%6_mgyBIO=iWx$!O5RAi7MlEK)}Hv$z^G z)6q2}7x^W%;@ppXt4-x2U)>{LRIXa66bA%G=5wxD5vC8-?tJdG(dBdKmymj>#842y zRZy&fH}vlwnf{4xg@Fw3OUkFwuzCrKu&ocR=QMA$)N@*Y2&tzF7LhiiLF8wlMV%SC zu8a>)ff=7e`4z0LboB*#eGPX<sXLNF(oQ-}G@dSP&PgeA=t1_Vi*(1%C-sL4^%z zAAX3!Cn$W5!q+I%n3&{eCZtuZZMWOTiDP1*hS7Nr7^KC^dUq-cOnvQ+iK+H`;-G|z z85k~+3h5C%*HD>ZR3Hg@h|s3&YIg@*alxoq@zOo=(mnaoz3|e#@zUi~0l8u8LL)ne zySC}vox`imh0ftqLy(9{Ac6*#ps-kmlkEGd;#XY*3aU^f28+F5=37oJL&Qh*F6wH=;CMfZjGZ z6gkZWP2s9CF)t5l?*uR6t$$yz6vZj6RG zhZ2@J(+pk-O0QK|Zt(){r${WfSHhcSj#q;1et53KJe`{CuztT`l}=mJwJb>Wdk~G# zpuL}oU;89apg@g9e+Gd}x|W{}AdFvGzvv+%A*IM3;Zp>!t@^4b(A_aKsbeU)^bi%@ z#MvD~J7v;tF|^uLilJ!(afOirZx#f4x)?E(yuMTLUp1j&VyNwl5}VV!VQ`$&suAj5 zk3QL38YG6IO{ys&sMIhe1hgDBOJTa5ZJMP(Kf7lsUYjbG_(SwpxJNcYs-7gU+Ejv9 zjWfCuy?8RH*2^FT=mi2ELaAHSz3wn44m3KgyJt1Lo)4jEgA`~RlvvkELl3!Iol&(t z39iUv-(eY^^R>p0Q8~@uHsGDsG2a+g@^3yq$mm(}-j=$7s=uqD-TUr;nA~>n!=sn$ zDkgc0&-uSU|3kFyf9>J(zD#hMcjq>8T0dJB56_ql1w9@KR-t8Du<8BL$j-+^lYyej z{hWVo+C1mOH6>ntyw8W(nedNw(}QU$E(vygC?n+}uFOa!6PGqpso*klBV{O7)Ecu* z=`@eqrF2>gx5gHGYR4Awe z_+Pp0kKupi>fLri!tTWirJ5uD$XpUuGElRNVl6CVYEXg#`Go^h+LtJ%GhS_Fu)o4(rso`XR&THz zaxWbSrfBIvxz(Dh%QAIbLONDr4hN7?ycNE zx`zDdg4xpG%+R{$?mCT>b=c)O{MZf`;M&RYxhKb4obAv(l|4b+?fUA2G|SS35gptg zq*a@;57MBZn&n~9)<{<)SF}~PGQd5UDjQ6>*Y^gqV|{N%0|dpkZPD6pPvZjf=sLV1 zFweDNPUN7rb$XlX4n@W`U-yljc|x#g0xV(US(Se-dDBD6S2B>ZQ)2Sw1s=Pg$o|~ zbEL!E^wWBVS-lO$2$=k(fC7+3?1`2|K8!`zENNDgYOZb@OB!Q^yS?GHY17_dRF-%t zcv(`vUi_E+168VC#QK6*U5S<1U)Q@v!=FYpb(#;4Z|b!ERM6B}CptP>9N=k!uk5Vj zHHcoo3wrU`?g5H_nq0U9EzYlEoHxWGkKfq~Vr79`-QubPp~bxs2(k&%flgj!Sqa`( zI`KrT*2w_U;tpPB+`q(z{Ss@dzY$iz^p3&skA>?7L+9Mun%3HiPDE<`Q;*j$eVFAw zUgNb{db|dbLGV8;=t|!Hheq9g-eB-2bpx8c$4;4%sZ+53e|0!Py(ouydBhWkb)}^i zJY{!yG)}c?Z&-6FduUT#o;C96Y-GFfV_)~cRbZA5T!pqq?qpM^CYpW|+*1=@oAFZ< z5gi*?_ivW?gJ9bo`=i5LHoDAVy_RytUd(#5@zT!vLGUPq_4L5Rb{Dh%G`W!KE7CW5J62q^4dhz$LS z?3F;j667GnYit`f#W>C1Z;x?W*Kdev5(Gg+9kV=DWR}AA!=_CR^VA}p(>k%RP(E|2wk7%_q4gRR@BS-UtL4W@1E1 zucl&^;C-bePsC~^&GHOWvlI`Zl=W`HIC}No=b)tPpF@i|Bcz=X&?wa`MM_d`r23#~ zuEL#^``VNx!5^2Y`e{-=!;#iA?$7XRbMP|^V~uHVm}!FXJ2+?nhVD>GbtDe;Rkc5^ zS{02M%h*XAn|2Yikt=4XR`)lWU;SUGu87U(Z2!98?SBb1wHcWDb%9~ze^edf$PtK#?(a6Ge7C91l=Wys`v`et z@I`lo{Ixk4A%`1WJJ#mbrbzC1ldmneHrbx)pF7NzTkklmryrkK8+@?C7pep{`_?Ad zT2y^C8+Lvx<5gSsfXJ92t?z}v4QL*};0N9E1Y~!0EMlm%Jn@rniU+s{$(Ia5hVCn8 z(x{bu4U=H>(yoCN?_X?_B6n>auj?M{K3e~^$vs*hF7ij_05n9=5HHt>rYYKeNVRo!WNND4jv)sj;u@td`-Vf`S(+sKgF5aAe$gdsGB-XwW$Q}tGellSY0=D8q$Dunuj`# z?NT?`w<&FV9sYUu)Ryb{sx@52Xq?jXgUB(9(PPylUvwo|wZL_d)lKz{+@MM_B_~hy zao0}Ds-5JnH+xRK+309U4e>^|)PQKyjc)FM=+|axKy)n>_t%sZT`?p0$e>lP>b0Ss ztO@_R>ZkK84yz}qh)hs($l_2Bb2cozePrZ0#D2X%MA-_%KUatfLvq(Q*N9EY8u8^; zK3OKhRz93@uWPs$Gp}~@8M2#?t@3lQr}g^8Tz*aiN5WJC0mslr7V9+R4`JWh-XGEt zy=!xyj&Uirb6#-R+*H0j=f7_4e{A-7wYSfay?sZN50~eJL(C9S?>WPyv>`Q-J|fy& z7fvwAu6V<@7P5{yutEz-KUlr%pIj6Emp5c-WGNhmOoDCumplI`ft(7wz4!mJHqF3j zMy{tak?nsDjuM>akTIUKgl?x?GjI`P1;+v7Ju6%|4j7dT#{p;)Z1lqs;||{-d{hCX z^h~|y9H7Nt=K%P_xc`@vfZ(GvIgvd{H`zHpn<}zkauNWwH{>8J6#w7P0{qBXz-lFe zGs?s+a2oKX=QQ9Gdc4D&wLH{mJrUHV$)Nmma2Rms>;K_2fcZ&;Q`jr&>MvqEhXR4s zEa<4eSk4}jbcZOLg?vHdIqCaXM#f)92yhsp*cko>A*1}mzY#Lf((akwf1MLXgzh@Z z072vKX&T5GE)O~5^6mdia>jta$QcZfGtS2Z|HaJ+=|g*{8H?XR&1m%&HA4-5TnQhO z-H(iD(UqK$8$3*L4;8!4UsUXtA+2Ef)1v-g$L1PeAfF^;=H%N@LcUFtz%jtLZc~cs z7^|ZcBfFv{is@B~@tMozsI&A3Z(wJ9sb)+ZmO;qwX6-^%N zUv8Kth9wplB7NT6E^YLr`P;jtH{lF{xvq}*EcoRyf-aM)24*QCh&@< z$QYDJBQOcvl;wH%48N7H>z0cWpi;n zkb^S106#UeZ!xQMa?IJtC0>#1K>ZH697Vg<{s(&+I%(A8_fu5j^^ANsqs*Me3y)-3Dex%i0nG92vP+q za-7xd9}h<>2mTBHZ3a;BErj-M{qjsT2?*uokAMyJg2t*;1??mpAkM=9+7%P{A$%$m z1smgaUs8bHuk|Jc=rY&zF9r~yg8y$YfQqlz`CniF*`ukq=|5;Mf74gzP;mVJDg{Ut z1OLkb)57`Kb34@~<^S(oAYQ=$7ieLIf6)&b58G#7z(3eNCwUEF`!FLTL zOkBWHIUnNrIwQ7Tv`)(lHTeIigP|o88W5*C=BvyjJfLfV)jS~nR$xqa zohDB6=FvKbb#waq`h2M1ZsecU$e)mdmTnK!Cv1m#NW%6(+XEZJam`;OA;Ohoj;X%o zV7K^NUb%QX5f&G-1uA_#PSEXXqak_WzAWgq7g$)t^}jc48)ME(?Jz z!469|KM`UxTHp>dmLUpUU5{ zKfNB@lv5QozL+1;Q7VXm9s9YPpS{?Qxvhm6^L5CwH#3BeBvL}?5`=gR7D5*#X?`w2 z0_nvIog{4*;vXuaXCb0XJKLlrVikrNZb4YICM6kA!3X#$(21=`49G#u5(%cBoc{0f zJUzK(^4F6?o@2@4NDpm{epys-z2r!bq4!;UTIje0Zp; z%QQz-g>BM)X22RGnHsQ0N`t%-gnY0a3L+HwQ)+-j5G9?_kd#N{6#y0F&fZF(XR)7@ zkk!gQYh*q5`-PV-wsGu?RIZ;cvkgq6^P)I-eu;x1Q1mn6{RFfU62q)da!aeV6v8}6HHcAmGcJ) z1lmMN1=p5%tS>Y*YKAWY3Tg^itn~vI#eM)5>yYXj7OOW|GYizOshGJeqEmKP0sMe93XIsL`=gJRp0Ss!_l&M) z7;0M6{aa~70RE5w0f;*cCMpIzFQG5JU_G=5q57ZX#=>NXh3#BR*HjTHr7CMe*U|@T z43(#;vP>qLDssy(I=`J1brrzMVJd_Pt7gy!%tz3niwHV&89^7Uqhb0@r;ZYP7C0n7 zy|!-rk(#=TkDfC@2Dd9UoFnO~OKjaDtw`Cq2UHALYAgN|bPl;pjiw%YqVf+&IUYy# zuXL583J^5yU1I(@o9I^j4M$NWuy}YX`?raK#pr957A6@ieBcIg=a(%6g+W|VoZzQI zx_r^C4M6ao$*A=r8bmZAmd8jk~juEEgbMmI6+(5DE} zznKAu9IHb%nRy$LE^6LJdBDH&b?3?Nw~>(7 zq9{^|HzJy9PP?eZ8vzTu?IMyzKfV(RSL z8p8)^{Y0b3d_qlEqrCnMX44kRr?#IFha%83K45gz$X4|F3gMm#Wq@miiL%28xYqik zl&|(6zRX}zW)f3vW|I<~SGZR|9ff-(aFQog?YF~7j9U9P5NABlz727t8*eh&ETnI| z$zNHLA}$F#ZSC8rr@kgIkHQKW$8p%5BR#WNX*p#A!}65L(3A-ctWTNUBFwO@`rRVD zu&vAF5w;adn`==^pOzNsqbN^H!v||xx^lCC*P^P!TcTsCI$F!T766zcdt@;_-~hNR zB`3ki1w%RQq(QD}j*ilpIqcm>{F@0Azmp;AI=u^21BoMR5Dpq-$|ErDy5WhN#fac(7Abtyo zwehx~0vg+b!r=rCR0>5wo}w}hK*(YKX<^lrE(+{bQ%=zpDU@9@)D6-qWHXRE7aaP8 z-JtDisHpf*$;AaueM(M&Q=hP#r*ZzNPjqz8u@!5yoyh*z#VJR>LKH5nSVLK12BX%B zHPp>NX#iC6tP^P(Xf>&EUl5j zyQQPl;q_EU{l=kCs+}_J<#D1%4#*13Ly}uh!qNa9KjWM05VZkW-pk{EB_oIkoMBsP z)xui($4sKb0E~FGQCEHDqi$g6K*9r{8U(v8Mz19^k4nORId9?@0kus00&OQAHawW4 z;`+a0yz?^4G zcT>m;HopVz*2;u(?ROD%4I}H{k` zx;-cb0V6H+jBdyxJ9sx_li_~%n^;u8!=4u^Dxj87&>BHXBT71preC;%mqlA9pDY^q zmB3)f#7X*Bgs2}#^W;PXR3aw=ejdzTO(cgRDo=T$38Jz_y_zCHDDPWamv3#cPgh-@ z)jag*dkN?o?%3pdy8K!K4Yy(&q6Jns?}q3BgFN}Q%XCbBt>POv9Iet9*33eSSU6aI z@v(41i&!`z0t?5-PkO0gz>HjZ-`Hz}ZY^E%J=%EY4g<)gSwSXQ{eO9+s-G&00Xwag!<& zg&J{QmB}*sSD7F}I)7tmR+(&B`1TK7r6*}{4rJ_OWv+>Km5EkCl#Z@aP%=#6+L4A2 zmAPWrkZ%h^9An05yj5zpW#Ks+y5c>5*aBj$cdBVR4dRZMfGc;

zNq&!*on&M}`_L!sGjp8;OoC|l6C`>ke}w`Y(Vb*VutNd%i}|ZaEV@I}Uv?KjJv+(N z?(IbD4<`#~DEtjtBAjdq&itYc=c6UU$y4EEygzMV>1|RC2sHVjPk@IVDn`HY0aH8< z(c)2bmT8Wn1BKqs{FI4AQ$JWCSotC&$5hRY zge9(T)a%*!rI`s6K`D3RhxR4W_9ZC{{0W1b3-g8$Q$+{IXevk2@ZnI0-;(xj;HlM$~; zahd#^6cI${Zw$>QMU8f^C>r@tiwWR3hZAsM%M1yt0c><(oz4{ zt9>9L!Txn|cz~q&;{@#x`Ou#yncf=~M+k5ij1Wr}7}`bYa+J! zU5XE0=B?yOiCapEL#_`%d_pur-~c5D79H>rj0?xad3+i=CcZc>922($7k=YCCQghC z$Hb?OiOXI6CXQ$7V^Yg>eN0M%Kn^O* zeSn~}F{$;^nDP;14MlM;*tQ&juO6mJn9943?CGn(0&5@)(QE`}G}&_35u%yEBQz7f zsn#LJ+jZoxWCS6hrMRrF8e2*4SOW8Oh*^SN&{D>hR%35DLPixJS!gN$BVe9dk{Co# z9+TSBSohQ#drpCE->acwFfXw=JNPN0RRYGOO}`kgP<@&F3)R(%#1K@W5Kxndkl-dP zxQPgEqHxoye*17^-Th~1{d|Pel4)6}P80+@LP79NUK{;AVuFhmMcIl%f3_dWqS&U2 zw-Uk(Wcm>`=FI2%QpczV48X!;el^GZ ziWlnYAL%g4DPYaR5g=A8&xi^&}NzZ3vCb~&A%9Q|IfARl@IAE zrRHhss^6Fj(P0+a5N#+;Twq%Ie@+w~JVMd&Ob<p*jI!#y=Jm5nR%>0*u{7YC#2T{p2C?1F)19Z|lP&W4}sv(+iq{3m$Oa{}xO;T7%!M-mBcDN>SF3{;e@E|IjbizRCz7ohS zs?Bba5{0hALnH|OZj={26uaFZORQxULH{gJ0<=#^D#*o&96D8UI)`^8@Z^y|o~K{D zryueXJB`6&dzGcy$vXQsfV8A%7(E!7ye%2pc2 zM<1K>KTGDAp-Gry0vdwHr6$1-sPX&WR!yb5RG8z}ntomx(h^PN;TS*elsTqxGM%ogw6WJj zSH1goj&u((Png+=SYr%vx~9V(^$O@HYVO)QrvPZ6rRUIhsHu_U=73^$#kA1 z)0?J$DT2qjB%l_~C8;%_e2juA6j$%97t%yAvLadZ6GDp{g-SW`Gi*_u_*oP-WL5!> z2Icc;7@s*4Jeu3N)g;g{V7-o(TMa9>Gz^h(K}BdnB&=g4QDsR?Cn08atiG%()oHKD zVXfrqSmZ+nf%GzbSJw!Essd#r@>VG71DZMDsCY@fQV!sS$nYUuVJIs8M*j%q|6~0l zBM06=x!|Nw0`wEPNdWp0U{01)AHLBJD1iIG;xA4J__KgK`HYNCYrP}4rz<)wx`EJ1 z!5}ZHq!0}PG}i_tML=@_97Xgoa-N~G3`a5f7UmXZ-y)1Pi-?q~Um+x28B{h;_2?2F z1(XEuLq&Cp2=N0(Ju;&7#d}~Be?nhz4}ei*Ko2*l-}_GKD+8_fu}WG>-+uqkKqbcc zcSN0)&YRs3B7v3|bOg?uh)31Q=m&c1MDxCk(2!o%VgTwO7*{0-gd8tH2lh~3=bhFD5U_k28Ke*y9ycKw4%U#2Vsj4q7>bdvuk8IWoHH4rWd|oZ>eUZ+t-GJCZj9 zhx~m&eywmr^^3X zFTp2{OV~xeUINuHeOWO?=+yD+a08^`BAW0MKAP|auVopdNG!Sv#Fo&BRX@D1mw*^y zFN^rUi%sOcM0daZk61*#;!ny@GDrBo35&=VTKm6?MHE5yQJW+X9d;@oiuh9gg07PA zFZ#ObzojSL@`q7A@V~+#`Uuco)HzA50zTYJpoVh?FpMcvlGF;al!#dvKrtx{lF>?u zV#O*g^r*fRMe@MK%jW^RbmX+f_ZNR%54?08ysyqnVem9Y6!OH zix4D(@tRO?A#DAvXpz>EE(1+I4iKv*i&%lGDAYpHYTx31j02`FE;7zkO#xOoBSnIM z6{4*GWJ_6Mg~y31Mzeqw9t8$`HSFtv6F$0Heo5FEy=;xuwxE~4Kx+YoO1r=%?*Hcq z8GkR2eI<{?V&BMFs>SpOBbxGqJ zCFBX1)c8gzzPhA6W(6CsuUF`~s?66HbXEECRb{C~T}juJrJ4k~l8#aL3S{{R1&@3k zrm{+UpbM7J-KzS*>UFBxf0gUA{(MPslEtR~q&NxtfJ$)%-Kk5elSFif=^h+I^K59y8`f%6gc?bjP zfEl$VJZcN_K<{VJc5qLb33g3zTc)9?EfjDY1K!sr6=F+$6Qr*X#vpH#$}%0>q_QYm z&X+^v%a#KOg4jRU&Np}SOt*z$G;SU^nt9l78z zF%i*4xnR*nxnR*nxnNO3>;h!+Ma`&ED(^8OPN~s)wh=|RB%Sw{omcRNQUz~VQSnWX z$Nek)SF*wW^B}Rt-?V_`(En5M;CGn~ep?|yGqxDgiLu2FiLX_gT}KsP%j?u#CXY^C zm{f8w@wN0mX(<4-t*20_8GGMS_N(ooPjFj<*U|21@I3UDJ@f_KR;-x@?AG74`0Uml z`XwX!)VPn9d97ahZ}VEeF~A94s}Sa;FUM!L22v@?L0X6d$w0<~NMwPdDLhK4Emy&dV7ZD_Es!A?(LEZ)Ab=&<`5goDL^wi4 zzU2sZ1&9cpU@7-Q@VK--<_8pPnG8rk7l1%h@B*Sgt=Cn0y6U8^`pCb-Uu*|gHF#A- ztzHMog33f9jcggP;bhBLrXgDf1>E{zU^##>Um58i0FA5E^iQsCI)r6O@~L8Bcv+*pVd$5eXuR*|4;ps0?he^J;t@JYxtOR(-VKeoY(ClFy}aF z1XEi@SEiXH!I7`@Hc4KR#xili4LS5T28}_}Fv+gnu5{n28qiCQ>#18*!Hwv{OXj;G zaMb1vgb#FLFrgFkO+NQv%v7KzWy}=Rq!0#g%=B#vA2WSVO-jEeB~+4meuICr4Bbv2 zdOWdo+aUvK5}g|cPzKEs>;gWq#HPg_zvQ^cCr;8JdOU+BpdrZ5Qjg~c6!drojp*?V z+7!I5#so=Asjq1Tpq+9LgIHpX6tUZ$qybYbTc)BZ@`wsXnlc#M^%ZnUBr{(O>|avm zOf?Kj&*>_$4(EdWv}LkFB@GrDOrD~DvasSF5@p3lr!CI?s7d)j`U2BbZb^?Nb;wkL zfMH`~T?eKq5`}#$b4X$x01YJ8Ez^+1I*P(G9(KrSMLUaBSPpbW83DkSm z`AZFUcBGC{bbh3cdU!_U7iVf$3qv421eaE(!oM@&`4}R5OrS}~Wd>0Lhb2u&Y5%J} zBErhvrvD+E2cSGqZRam#7BwI7oWCq_{*ttPdwSIu$LOMKjV`OTz)VSWtzZR`_OakD zy7rI>f}K!hM#%W5Q@|S@AHk|*(H~ODbpG{oU#ShqtTaf5S(Q%~E?Z z&TAB{P}5a1kyO)FHxX5%ifqKLZmRO8&^0zgFYSld;)9<5dMElYRKaFG%PbhZuvrT0 z-Nvkw^1q-?IKsyrh5&{%J>$Hfw}az9CH1%NP)iS)XU}QDuBtM5g+OEgl-jQRQSJ0O zFwm;Pu|s^YbzA87_5(z? z=8XQBFEw79(AydU>`PzdFgWPxQV!|?9Dz)+p_+Ylp6B2XH00n?7Fk4di!7tLqql0j%KTkd z$@{U7j{3EIHiHtL^ zNthfpP+dppj5=ztOz}qz0KM=x2JNVU#&?L-2TCPghC1rrR|BbQ^}&t!(hAIS@prKd zRDh#^4}59Cgi~)o7a#9Ou<%gvztUBdU^429ll`T|=qR7bxB=kB;+9~CP6h5vnMHS) zG%vdg@FuAENh1+nAz45}h2%xmVufT&aO4+WApte1-An{gE+lVxGSm2h(m-U4j{0;P z&E}658TCWpaUcx%ZXwu6oCs?ZH6TO)ex($BB?rg(@K2YZN;oW|Un$4M<5zI~BM5-p zFvcL$hdyHZodpJ--`TfG0o-~R-_f;YuL_+|*eT0XOwyI@LAxI=5GFwy=9*~=5DTViO9>9apq7c8{qrBoEyl?UkB3f7T4{D5>pVw6yJat}I zeZcHIwOfaGDer$H^0}1P(rckTkr|vWP3x#Pl9s}bQ>(UoN)IG7Q`W*BRiUiltDS$4 zaDYv%!bOdfixvnHq`Me4|KNLJmm~d+&s#yY4Ny8jvg}hR5_S5$i8En6_h`P2~!9htHRZA9Gp`(zCnDP{J4=Co!1P8s+ zKfirDJPj%4QWSGRiLDS~LeCYGhDC!LGx3^66Tl~WrO6<0u#O_dFd> z)N}bDBq*=ID&QTb0nv}sK*P=JT2*DJQvW{jsUGbbZsZF>aXoghWmZ& zbJ;_`YQb*kuUh|$(;Q?oi+NCmIsB1+t14`>41cst9>X6&O-*2*ZKAWfB?!$2*q&61 zgc{|73eEb2+C>#YgEB4j=VJ+LYO7Y`d}Rk_A67w}Y~}=t_^NddADBQ7TwBdsqdK=n zmFH>_?rMVE!$xsBmB~~@)z}oJQse|r5fxC6B8s>%6fFmYXs$g<%G4Er@fW&1AOs`C z^m@wxP+<430CkOb&{Wi?Y8SxcCi9pu(@;bIm@w#U=5>A{ppwon;A_|qQn7o)KS8#Y zfDx|uC+t;ge!!G8hEYh;_-#@Ew+_a4sVkTdh4fb?@MgCOsAYB=ypj!bT9~Q2LSI*l zr@BHwJ*q2^uE>vtc*pAn)OEZbxxxHc2u?@RrU^yu0+l0#Vr+rBoGek0Dbo#G$CoM7J@=a{9VSn z7GLWiXtUHIv<~Ws{tah6_ODw1OW~{#E8Pn8UCsZ1fv_AvNlVIs^iYuGCX@rAHgA;w zXTpxo`+EQ1Q4RE8aMwBSbJwSY5FsBhfVckcKF!!0)_OGJA1u7YS_j2HFNOa`@sHR0 z%ykJu@elhs4y@IgKb=+o2NeHUlL^H?_P73DE^VsA*uw<0obBH32Kda^Psix z`sg*&f8w?y%Vz+rBH8h!VKz}i#RSL|YKYjr?e9WYPH500#Q?pcx)W0pqs)_v!xgrQ zfndx|bk~w#Os_z9keI8KFL9cHteD%Dx6VdAf_aijC$?=9^&p@)|8Rj**% z-_sE!1xjH+ClE-F5lVpsCpJ+IlKuy^0=;!)6JINkkCZ?w5SBxxHIe`Eyr#YH!KLDu zpNf8G3n`r zs!lN?s9;l*LIOK6DSj>r!7afq*whp_!t8j-QLw2AJU!5l2%01y0hlo_{l^eIE^Th| zBM2tSDg*+w_68ZkDXWNMm&E0jVx6J0-E#GX?af5K)-@GzL_|SF9QfvN^w%ndFtW^ul^1M9qR34enBF`gV&Li&=u*gAE zh!n|Hfbi%NH)s@`P61~ggW4cIv;!+8qa>vrs+(lUf+H%ZKTBws25@zhnCEWlsGnY2 zNM(pw{8lv~vVS)mQ4uOhD6x=~0#s+Hq%mKK#XCZnsHVwFs(^z$1Y($}-`s;E`M#9f zug$wBA)tP6DTR-`lmMhg9gzeCmm*5tAR{;`=j5>DI~X)%hc)f`uq3F&dLsQsB^EV& z73DJ!=E8vfC5It7jKiQOin?#rA_H&R;Vnx?brJ{qDp#)}B@0P{Mm5@*Z{F1srK;ER zjj$qLdXo6UokCAYfb=9Pc@mUFokUijr0!X@#L^Q1#rkZVQXoq;rY)iJusj@N(SQq7 ziW8cm-e&m?uiC|D`3ZqyeLl-C4EuA{p(q^D(n%NMMd1SKh{6FbH^+wcg(4Jn9{sv?m`UY$Z(eO zkt>(a{CMih>B|>?`Qh|xeJP=DA(>aqEr`Zi@+vZE|M^R&Eq*@pv-BpM1RnFuO^Bil z87GTyHDyCW_YDR;jpfmvZd+^kS za~IW3PW|x9Ig86yC~=g)$>UY%QL-pZ7&`U%w{P{yD2Bv}twcJ-R*Fb`Br1ofz=Hu? z-@^3=TyAg$i><_CKY~>svjj2NL59OG`AV(j_0GX5Zx)v%he4+!P094|J8BGc_%of; z=;2R=MF67+KlX2zj8>($`%%G8TnxBAf!F$NtKNkR7q3_lI-T@>xpMmAqKq#OSXYVRf8!`Mhq5}LU@@}Gz;Q|9?3UG)+=;%jbBn>gONp(g$5#s#WZF}G#D@D?MBMDRo&PG)tb;(o2j-5I6>k()%A0C$1TnRdy z@;At!`;(5U5zS=n`>pBVjXl>8jcJtBzJap(Ba3t2{c=u}iSNJg!cwa1-S=a&(@1=f}`H0 zVag?qJOu=GB^=ILE=fV2K!9pVNu(RxYS9fy9V$9!da5jk z{V|?m{V*^ozajN|vvs7>4HPP=xGLJOBBnR862%LeMiv}yFGSd)->T5kcS6ZgC`%27 zzt;Hq^eNC}C$~q4BncNLdios56-$wBcR7z{r1VCe!h`B3@>@F!d@jHrr=qqK-=P5w z?D1FruOlgVSo_SQ+N>PkD`qs3^9G7EDJFdqI0#aa_t*-~}hY!zV8N ziDPK-5Qm1x+~GwxPCDD0LXs|2NHTifBi|!FF1iiHZEd}Jf+}1b+fm31DDsjf#rCi> zZM>>tKESg>{2WII9=FXCez8P8eJe|c{TqFv8&N!cpv&snNJ66s_*oHteor4I3_S~v z>_hRq$+*!XpTuSowdBS;U&*G+~W4&a)E2yR2hm@vOn-n3)%|_C#iyr6Du<5BuB3;@B~N;K_{% z=~a_G?h5b@5yU(2l6lqKxGq*Ziu*UD_;`AGzdQqfH%;WFU?!o4>(jYY(PYTIcO zc^nV(?9H8NY;XPz{>TnJpFL;Q^O%=y6J?0!CKcK@rTclc5{1}Cltw}JR9jc72X`YL z7<0cWpgTF{ChCm1p%+GsUiBt=J?{efJ)-$3)$BP!~Z)6p-bD`3D z!~9sW#VJ2R83Je++GLq)a&*RRP78`VJaO=TQZt?zgT$3Q4di(wV|Oa&$)8m8+Ausq3)(bx1(DZGFUOnxO?j} zM_a!vuj}wv4c1D=wFTkP8Fo#PrBIXeHgnIC9w(Q;5-$PWWg5htzU`h686$*yIXd!c zXI?lTfnu_S0<`0CZrioxa20UpB-YEAnxU3I;H_SxG3M=gkZeT}j#d2$TOkjT zsGNCNVsb!?vj-~}#jPht=U!$#$U6dFa|}nrvG&RM{?OsbbGThhazIU2{0lBRi;SZ& zrhP6BS%Xi;*z57^@~XJ$`jG515GO}(wc*S5!UoU54z?B^m(Ubi=i+lS5_Lshpcl=P zrv1{QTgJKbDDGZ8W;^-f;XM_IR1EF1v^DO2{Ht*oP$Q$dg1WP+%iEw-M^RVvhd$$_ zeZ`&8Pf^@2FSN`isfFg>{E-gGkwEv3W|1YfV6YH5W!o z`@);)_Va#&M5pgVi;cT@FYUs71|y+OvYMwe`W^<3Tr7?)?Fp&?r)zE1Cm2YO!LFUr`&WDkMa$x81)=} zz=BO?D~ljQTlf1><0B6_HINHO-`IiLfYklA$YX}H;nY~GgKrpzrHcoQd)8U8Y;D>h zJy5YrC3)w$J@QX1i19*k-@GboZU=852=#<%f~R4}sBcwM`CybO?i&-?k?xp`3^_NxaP12p|9I!a{GEaIT}#p)2O?7 zdq7{^{pLt^K8icG<~k0{dEV6nFF(dB!%By~tOjmp6x2q(=WKCMQ(P`IutD^aG217j z{O*J;dki|w^OTsLI8O&%te?a_6_4W%Fy=dem zr)}X|h>?yun|eII(-6ffjrkL}ltOIz@rlSwy;R!Z&&x33n zExv~tW3*vBD|33FD<*0q&US8@tz#DkPovR@9r(;=On8mjG;x*jfb^*8^2A0iG!7&Z zI>ZxhN0LkHLUbyMCl$w)CuPRn)ntn>wwg~oc75hwT+fCPI;g?ls=wSiMhQC61Bg@B z8C>$Xj1$uYji7fp#k(?X_9cS_;$-U$2VOsJZ746~B*VDQE=a1s8$NO>99G}Qia2f! z`TnCp(a@-Zr|;Z)Q0G=D59z%kCK9}=k>nSXC9DV(&xuL2f1Y)_)E+H%N7ox?H{``P zKZ@XZqj*N%U~Po8ZFoPU5D8*@ZqQn3?c-VDu86xniJVzTeBeBTcEeEjlYw1t`>c0+ zW{ffJSNy2lW6sx?VnsqK878LQ?d_G1((gyo@d(G@mqp3NudhOxvY{U4W*?6g#BK77`bGtirYUI5j`=gqx4`>n1CET~}{#5S0>DM&&K8BNFtAEI|+}L_zlH#A| z71hHUeaBM%eeEik`%| zIt3Ox7o%>-2pVe`?lS6~;BuF1io1k8vwt+3^m+saCU1*>8%H<}&$Y~qb0(k<-^zH< z7djFf%s2$Q3FA6K1s(yiYbwu3_p9f6culJpRaU^>rB8b<;KqMt*ncTXwnEQ{^f zABFUy@#Z5Aj~~tWw?>Ua6YAyMY%07}yAcY=srZ@c{d+MLPvTgSmvK+utla$EVw;`N z7&`UV7~dL>Xmsq%iGosfYJYSu|86$V33@TtTG_a_z^1aTCMO0Om(Q?IdaZMGN+Q|? zqgjXP6f4W#Jq z9@qGdTG`xVk#YB1!&cAwUN~Qa>^VSlsLHf^9?ETi-k;PQuyFfDk*g3S*HQeTas7Ps zB$t=Pg+a!rJ=o>mXy5B{1{Ybd?l(_s?MV-gFJ;G}IM?}Mer`~(%VsFpCYT#^HKz9V zlvZ$Hj>H`vzI~^zw(A-s7>0HlKh3$(6To(5!}sz=+#}vl;Y4Ky`i1!i_XkzM>jvYM`Qrz(xAXEE*|o3$s*XyHxHDJ&J$SuDkILA$W*0WO1!0#Y zHEhaloyt==UgA&~cNwy#HG#Dc>icb@n7EDo!*Tb*Y>qkPJ(O|IxZ}>#{H)n5?qd`W z@dmKY?ct33Xe=_JCoPjdopm>;)f;uw$ak)*zdQ4+{xU@J(Fn%tzvE9V47`2w zGahAo_*O7Dpk(c|Y3+FZ02i$X+^n*D%V7ZC&fbij>Af7W!+v zZra<~z(DP)H)UE1WB7p8!^j`;{NZSyF01~~Pa)sk=p9qXuqQW)vtu|Io-p3iA8O<5 zZvk1zL+==-aP2yMOKOOvveo?H&@kI+=#(Wgz?d~|n@eUz*Sz4uN7nvUb-8U$%JX@& z6LGWNY&cw)=5wdL1}65l)lQKG9o30_P#N*i3!fH+rrLQ=NA1V0ZQHFAB15{O!N&%A zb#~i)XIAGzR5QHmsGn=jxTB{<1k%EAGO(>0%&AXFiP?&K$JoD!zh73i{|u4_QHl$) zTkpljM4rG|#liFAPDTDz=xaC}^r?YMU655lOB#1CWbKy6WOPH8-s6fcVzFGpeOdoJ z&?8C@_r6u^J$S1xY9! zW39wfW_iBuU9G_tkn2`GOY@@QqLFTPIkyaEE~&K-C#)*E&O&-@w8LPq-Z{9!W{$fX zPm774=^A-CML8;o%%UZRLw*JK+wBL~n{nIcb2(0*q042{DdzP>d*I~A1$Q~ihp=c32CQFhiZ zkRS^Q!w2qu&)jQ^xD`<21v7EIE)Jy}GZ-i14PL$M3k;Z>;b`HRlOfqb1JNmzhh)Ul zTHo-&bYk#$!ChqgcaAR7tM}N@t@if(>`*{t4h)8+^{)%+10(D|LJHAD zgSn2j=CNlBte4pwr(rtVT{IT$lEt}-dnP@|zT3(RTL&fQ#jZBZ z8mXA5w+&+N#N#HL3PS?&>`uZ9C8KV}oScWL_Ux%h4$LhF0`7H$hs_Q$)*%jPsrh(f zkX3cj5VrxvJsa*+hUfU+y9DLkfw~$Nhc$<}bhpNg%%|zv78sc1A z@ASSX7S^zi8;XsO2z#&={;7v?#JDxxe|UV@m$LxNgMz|R&yf7Y3dRx8w|K-jD6**S zVeLE{*4ybZldoc4mxWfsH|9z4Rb%@bt|3i#!lI$Ty*VAvpAGSbI?e^^ZnFI3*|^IA7qF06Zo{c7 zsOp+e8i1;pMB@!Z*kzrS&QD`{;QKcjYo8oc?TB?sA--&X)A9NHxwYKdXc}&xRoL`6 zJ%w!mH9LS_G%WA0N#&JyN8N%gwx$eTOm|XQaV2sG-u0PdcjKe-{^(aI9^Res>}IkZ z7hAUq2?4Lp>dD6GT8}6hyfE)YXF+SH5y)^uUWipR+tfU_lCs*`h*YI5o*PzJ8B0+<_^ zw@(P>a?j!!^I?NcUEQzkw;*wh8RJ0@-@bvc!KeTj9;;KspB7qWvS7o*8Wtx}&oX$9 zE(sh(nD;%)uZ-{=EYg!gnqg}7EF&rOQCk!%8fF0V&i;`%JlrYm(nu;=X26ZQ>(Tu* zIA#+b?A_Aaot@rdzZr2x0xU)Cn*_F3FZVlPjQo1nYsh*VKgp>2@A}`+< zZJZn6`EVhoxx55&V1t$!K6;()+SBA7c?3`Qj!U|o@RSz`J}nkD#-80#x%XONO#!R< z**^aVzWMo8Fj<^|DMRPYdzqQ9#<<{>?mOM@9+%NZgE8a2#SaD*WkuC_Hn!1Q@X)y2 z*8}q|>DX>5fNAeEZ+V{ScF$)x(hA1M##f$!zFB{?Iwl zEBWqIGzJ+)FPT@di>e}qt2oexZ#=26<`oRw#voQXOwVtPFO1jqwM4_nm0ms^;_TC! zKv^q>M4-FP%N{or-SM!BsfKzQ7@aSlcFop?3{LA&4N9V%JBzJtqb}lEp7pU!_b1#e z43R+gAErE;e7nq&39cG$wwh>~gXok834l!cK-n9S7Mg}BSSCatU>il*AkDa7qG$UV>?q_5}z~*{Uu2+*D#t} zKjc*v8od`UeD%t1aImm07Wzv&8f)G#TbN;8H^^Rrd(ZOjhV;~C-zPS2Z!yjoM;FcK zG~H`p7sC{?@P@rlRBe4FG!+ME$Dv-{{VqjStTni6mS15dD?0Hxe{lNA@M*5gV0LV9 z@4jq9W-G_QGvY(-*j`Qx#vHckpm>}p~v+`U{PS3>>4=>}4yI#%c%r!oJSpK!m% z#wRHQr3F7gtPq$E@>;UWBQpb|w&SVK`_iHxmM4TUiiqtw1Dj7Om*#xt+7rt-ThqCHSN+M0E@sXy># zBYFgRr59rA)iY?-0jqFb+^)B4BB8wQ)hfu`1k7CSxz`PP4EwTG@%ZO)4{}~N-u;X% zV)2pj-PXj37jF`I)fSH)id7 z>EY8?fsZ}H*)Z{q8-F>_88k9t_^li*Sqct_C()BPDA&lriNzD^kuaK?oJbB`3`a^O zNk}SOad6gx9o#+Px*6I3P5m{0L=>P{C@C=v4k(-jZh$~f0Lu7ir7zuF$*L&cb zEvbTJ!Tr9Z4B`l(nk6qGu3*oED+S!G;EIQf4Ob7OI1KkFxcnggID`)YyAOnY2=OK) zZz4{TMc^-wIDmVfw(ry#P0VxI*E21kXtjJa9Eh@-V!=3K9cPeUOpY@W<_tcs;}# z2e&8S_Y&?AlKYTYaGM2tE!-#J8igwYt|YiTAf5}{o#665`Cc* zmHdLtL7Z@~M?)BA$Y?d(8{wLPs{pQ7a9P9UCwU86AP#ZAMJnO$4Dp6m<4}ce;CmZV zxC3`bNMRh>Rs#I<1cWF9x5wxtRPlPql{zvd`ETSgxY>Z+U-AoRM>w?MT}UC^bHP0T z(kTbK3%E_eKM@sE4DM-=ZX~$h1bZS}T(~-+s3s%>A$PkVmpIZ3|L4VTQaCg*9NIGu zO^N6iGWh8})Vb`GjVE0I-cWnofp0T>4*WfvvzQ+shA#ONC%K(4#o}7sUyTGAJu0I;oaDhxL(ET<5~` z?e2&|ta*s#lb#$mUJ(q7;hU{V`3`Zd4%h=4@XIfl7y0DR7k0IC0%4|AU*OqWUGIlM zHVV-r=1;n(ds+UOk+2hO%Z_Z14ZoL30xx@XmwB06d~L$Lp=g*aZUp#EWA)1w{>54fSgS{xl792~t-J#HxZKN)s#n3l|XKza@p-} zi7%QGnpg(7Tf!4=eMoLu9l<3;Ve>F5IH~JS(<>Hy5mS=f+zNd=Ubw<%IS*dhDm>=t z4UQMb6J}L4g?+612}Oq>?{`pF)25c`>?BThv=r_VGt0HD931%&e2U=1m-^f~th;WA zbqV)=(o{a~;MVmk{8IsHGGgi+(9zuaFgnH$CWM0%b9wQ1{4agWQ22}_Ns*ce3Hqe; zn9x{++0KODPT#n=`xnv$n$*u{&R;rr>coYMXMR3)Li0D~*-NK>P}>0biXTp0-m0N- z;>zh$=TB|@Sz8(DR4^xD6e;SCp90Hgy?1mNMunWQc=Bh<<%&rf?X<<^@4vfv_0;7P zCqYg6sVgT=p0oJwN9LsqKd34Hu;(~(Y|H<}-g|&GwQTXDn8`Dd8_d>K;_lwwGi2Z|ZS57>JN|gR`Qw|@rw7T%DJZE9P}9&Jq@%ZHV!jQ+ zTYhZXzw%Uo1~>|w1h=772DAV};09n1!~yX@4KVdvf06&*Z@>@e`EQ@? z{UxLMnHd;2v@p0gFR*uV{w*{9z_4iF0`Xa}+b~;~J$CFB+dKYv{T0H0e&C7pPv;JU zjoUlH9kl++eN}hZom;;%PYdL}lZ)41#bB@W-tot)A_R%J!}~kil=#m`oaX1Xb+mE1 z1FMbyabvHPgpCtoub}H666&=F&=Lo4khtY`iywT< zZ?*r_9PrZ{E-p8`ln>G>x`Kd0M?2+fw%`!F;byDAt9s{#Bb@hy)af&_;-}AvpOND| zb4Ed0`lO=d??wN5ldiOcoP?CPl&m}`PJjJgQS$fN6(xT>T>0S7-K?sQu2%$iE89Ei zz;3>~Hyms|!C`N=$H%>o_l`eaNuNoR0MjK6Z4H17{6-7>2au+K%j!tjZ2-{K1x|s5 zX#lbi7(fYL?cKbG;sXGRG%|n!d?nla4BW`+_ixF&(+&e&3TbFXLJb3)L7W#3?)Xx<;90RtC%pxjX~<8IcTb$vQ&798uA!-= zed+2oLnC7oQ!|@ewzuuYAqJme#iRcke&+_Vo`84t*XTnL>g=9DEl?S?*G4{>@S4_R)n}PyV-jv`$MNPGL zP}5NVIB0%9K(sD+(Cr-ze>q5CC1hY7;LQiX{|vO$w14^TmoG?Tpje8NM!=r|BLjtr zf*F7SyM*-c6Ttu2NkQuVA8mKfzo^|+U0g_tCKABBZipcP5ouLbCEC4T4F++Gjf8&s zSH7d#FCIpo+44jvwW+kv%s$0JTT{tVb|iofpD{V2{R)`^4cr!K;bDJ%g|5@H)2_^} zvZ|)K-@QP2ymthBtJX+IT4}WSgZbkq!?zIImqnj;pkXK$Urww@yYk5rENiUKl%E=U zD5&=I__4b36kRP;lUf$idw8a-e#b2H<`)aj@=9|}BdxjHcW-@E=9xl`giOx`)pH<~ zC23$DN%b+44M7k_+0L8OhC3V;S)PR>kf*r1tNKGS6UA*yPOneK4Q@n!9d1ULJfpyo zhi^&adXrntJR8r+k^owKh9PF4?RgQ>sf*)kJDs)p7+g-S*SteM!BHS8&PZf=t)+9* zGD!+sIp_xHs~`DipJb%oKiE1~Yw72ng@>B;FI#`8F6%4I3BqvRiEa6qLr-&-_c)Vg z0pKQM+=jxuR^~%>`#TX1l#+nyBdDf#_#hH+VXFbd(M19x^+Yq4KZs64@TNRW4f7Cr zB84dlz=lJnZuzQ`fHcAco&n@t+X=e=o?=DvEfb-!@5v?VB!nKm=q$)liTvU}Jz!6l z>Y#6Zj0EhXP#+XM0W{k#^(+Z^3x^QTs95sc{$DLs@WpB&Dco-0tQipn=$*iNBdc4E&Coluac8>}e7)rJ^0~UH2NO6m^|4Mv(DS zV37?IMWx#^yZoXn9G|9SmSpwrj}P1mdcgERFa0d;B|v}O`2Mem5cg)L?;*Ts8Zx1y z&6_bmQ8F7Jc)2pVx5KckCx5cOqB8i4ndT8==BC%}9Oh)?uZro|R^QUK>Uv>pCUGyk zrp7ctX{_g{euH^n)Q$A^a*NPR)C&KYXPy-yb8%FV{?$#B@CUp{8_Dba_tTZJkIMly z%2k7IN{3s#T^G3d`c~X^j#-`L9>g7~x|c%BYVxF=*H-u(v!(ViBfVxy3bV)9RDxJc zsP#HeG6^8dCjt0Yo_$J!st0F#^jC{nc7en3VH=nGg0_^#vyl-uPeaIBbN9fXgl}&6 z(J$yDHqHO?Vyy_QJes#Anyg5td^-01j(E097C-_Lcvd({{-kOw{+9;apE&kIT@;R@ zom#XrBu3WL!UV5?8b{!D%+`(hQ|rSt-a`dL?N+DE@3#rJ5ZXSm#*dF7Hp)+I^DX87{C=JST_gH@$0-IipMne|0p#mY zqM1H!f|~^NC}OFJRP(8Xva|^4^z`b93j8K9Y%Uank-SI(zGm?tu-|qMcQK(Rt-?rP z9uWD*`Im*BEA>hwAl(biNTBP1Y{4`~eSJv4#qTXVc(!!ZT5mw9!l{4!Jh4yV;dB0@ z(-YewDZHS%sXGjc=_9|&_J(z+;sp|L&s&59h@YU7PJiWTy|hdMmOugSF))Jeds?YP zxiv?WwOViT6tTY2yL>&NLO;2HbF)tq=IZi}-NDD0safFbhoX+i)l)RA=gm%{rg-pg z!1lI-?d3^Bt&PXvHHi{n-DkkQpq}R;RHliwq$d)YK?Aa3{j%>~Tehjew#<`&2Piby zA3R`x_}>Hj!<+o$rTB^iE|0i3!Lawyy(WThH&$ zrG3(-5H164mwf{yp!ksiXm;!q3ZDG}p<)`QF8L>+==pmRM)l-BR^y{oqAC+==vc%0 ziN&wCJ2HI@EpHEY)^jYOy%2@Bw1{IbY~$nu&fD#n+mBdk&{EC?+;z_RyEHubZ&wn( z+`gC_AXsWQ`lz3;qZ4mCkX)KgqfiO}G5zVz&Kl@Jb z`e5pxINi-a`#-?{uxlGUThwEq1VGjg8~bvF{Xp)DM}- z@)aWiB`KREK!4?SP0d$X#;udqbdY7cIug+DW17ZjiVbOf>3a;zsDjbRO&^y?Er4yO zWQc@vn;eE#SV{;dnOq9vn9BZ4@vJ5G&N&uo^1$Y0l!Fti1KS8Ru{Qz5nBJ(f~{I#Lrg<6)o;bEV`Enyk7%K7x~d^tPmnUu#WmeJ)gyE*+WNqQDa- zt0vu*mbGo(l%Gz^rvKo=>BpB6oZ?rf5-Go@j5B8wKX7yRBJy*}utgEjP#LG?cV$p! zUAgDVSy{vOxJsNyLabPlkLeeUgzbVgnZ$%4HWt6M+IX4Rrk;Qs_7ml`3LUNJ3scTE zljfpz0_xZUyj<2rP_vZKEtt5O}*_}f-RKNI`M#rh@7 zQmJzSRuHvz=<=Q-U-|4Y_|zTS-iFc zQ)@}dHDn>*J;xQ^B>UCPh%lU>M9G^NbG#QezD1cA#k^q6_J-RvG$swmcZ<;Of7t_)t^y;w}2ld20rL`p>@SIkE=k!eqa(EsoSZ zj()6MfTk_TtmSY_D5X2E&gwDv@J>*nqu_TA;S|lMA79rqouFo%bQ+0i^ykAE-zPxP zqe^PciT-E0^WDorb|Ct1iYwt`3VwR#3>QsXDNBV4%04yT_18P|l>bmyL_;~xgL*c+ ze{+k6oIE%G{nxp6+6dqzWHlhFhu&}!I%CmRm5kZZsr?|>14~UH9OzDrCl&t9X`>SWI7#v?#ny* zjNO=8F3+i1%(n~gdVI+_v0sy)0qdCfssC$O_sOCtuEq4X%CxLi@r+* zn4L3Jx>WDgjj~gs(83qNu!#m(*78DR_@}ofnL|CWyS3qnxN$Y{)`aJ9Pceg|Uc`6b z%O82Nl*O9288C{@I{>25-C5BL(AM}59+}>mj_rly3xgNeafNMFV=R=_{fd?dK0e$2 z9`@)egxtI1KHb#uNE_Tsyb^lXVN|8(HkPdVjaFvZYOQ#onfartvbb$>M+q^Tpv$

0%l`eXQJODrTzQ9U2dR!J0kYWLl?qUYI&qIV?6BgKjY-R;r$h~uXv zvYiq*5f}~DbAt3_D+p{vQ{^~CF+ON&t7RKOth+IV#o?XA1jE;sOd~EP9pi(WN(fX1 zuZ&AdXzBY7&vk*N$t_hr;xTQ*NKcafXJ zwmO^yT=jU(Mm{s4d9*oMC)DP72KlX9AD9@6?ZN3Y&0fPFwc_=MtqsKdnO<`uAiMnFmY$8GwaTKr`( zVO*(CtgukbQDQZPrm)~3-4nsYOJ#;}0;g(kUKDX*)3AJdi#gWZdfx+PWf)L~y2dS$ z^_=}PQV!0gr{3Rq()C%K4es~`grGP*DsDdH`VfFX>W?p^ax3y=7DXzGxKF!`43^xm zdkHfu4C5%njQGk|QtMSkBjnCEI`0$c zRXNEM-cVLpuShtj+O-V^SN8Ed<7d%P;j%sY9`v+-X8E6mr<>YT-39fJC>_+d zNc~wBV}2GK!2R)iJT>v6^&!+};dU@2CbVCaW)%+?Ef(XYF9bsv7G2X}2@bE@g#xsJ zAi$Q0fuGIW5_m4Bn;{xe4tfXyM?TLEnz@eI^L+epoawJtXJc7Dw@I+5Uw zvnu`T318Msm@Z9>7F#E*L|a7VwMl894`_iV=YFyJh0cCt3`R8ny99tObxjGzgQFcl zt@{PJKmMBNO?>5Rm-W$CJ~zZt+CZN8mA1ky^)m^#nu4Gy%m;jIuZPFXhzPb8H1nwLeSQdNV8?}EJ z{TFg}Z)op;LmP}@e-_>W$F|a+$2Ov9u@ot76%1uqyeqJf7~cC{=$=+%P~&Y{kItY) zkKD8Kv_Ho7Zw3k@Y4BHVfPLYOJ?rGxLL9b3L?PW5zE?4o&GOxnSs^XB%FUAnTgBp$ zP@7{Om7fLS!OtS)&j^|yx)}L3?RzRav5y1tKoPVBXl{)k!%_`bV$~Ca3kwU%Iz}IR zG<2_SJjpK6fx|lIH7ZO*uASmNWc&E>;aOarO=FEwB|4Q6U$d$`_`TU0AqV3;5f-(s zdQ9={wUVZoMEWWvSBvtwCMA{~G*wZ{Nq2EAs9kPjzIskxBaYecz*C>hV_K)d1$`fw zw_4HjO1CpoLA&3Q$U4mZ`x>ar={WtMm-=OuR7ci2wCl?f`qT!5%^we4MBJbkLTJU! z-g<0V(Es#Bq+-0FeRPN85H1>j6)9tiD3X<{7_uuXt$c%EGte<{k}S&V<14Fqx?(8q zSU*9T(0k#G_KnA?A4*nrzgTuHhhRR;OFB)DEpY;pRvpoJad~WrdE$k{m5^pg~nsIJB0)rZ@z?? z(M8b{!Bh-l$ugtTB}X38Rh&+XjURvGJ&BOn97t~4zUJwv;A3U&_uO%L*kJZcN4Dw9 z1Xg!<)5GTo`U&8~WUow0%|DL_5qQ zGW*80R#pggR)UqnKI*2-EO0M@q-#&LVlM3F5vY972=iutp^^cD;$UI|Zjg;F$tYvS zl9q7Z3C$n(;m#l@{N2jP4T?k1k1Y%lDRzDa|C!f3Wg$r0-P>^q*Ye^JcRyg*=cIKX<46xvOQrh{D?; zySgNui&a&1+#H~3VEME~F1F?9a@dns8W}5)(=Di)GzPfjh~|_!?nM@?!#&TuzIfZ$ zS=;M{L&C$+j=T?;1+0~hQa;R1b~>9cda`ZVN`g9-@u?N#h~1QI)04qzv*@kNKAXVH ziOt((-dRJqT2E=y^128!x~E23cM3CamZY9K?`38!rqN;x=XpKUTwsSTsBFy@eiNu4 z(RaSN*a*7i#gkXk6USH=bE2{4g8tZk@ zPDno8Fa(b1tN%EU&UE8Dv@wj0D*~+?O`S4E+eS~1$W=6&&91F}<-b4JJ7yYdg`V|d zVSn^GIJTeVfYwIRnjhqC3LTaNG^f%mjGyf;+w~r4>eKBP=kG^kRO|S>E2t2}(jKk2 zlqc}2W-8z&S)&ZuCvc^aOWaABi*OPI zHW#;TQZXM;D>nRewkssH{9Cg%2VPVY%bf);fN|7kWY5d@*#}-6D0DO=sFX%H+f#*W z`#9b%ua0s|kN994(Rtp+&1Qc5IG%G#lG^ty2HGrn(9(Lr+bQ5yUuN$ruRX^?XTS-f zR~&U1aWLl87iNz5**6+Cev#EyM|Yq59-d;j+U#AQ?DMKaK4_hX5$W*}Dkc^Ko2n|O zDX`KjJ}FhRc=gz&$3~};4No@)h*a!m5RZ<388`j>WwG+=NXC20yYt@3&oxebo9+`# zgtit+z6f8lpH47$6?D#z{jgkIqxGdBlmx&fgOaR+vj*2i`rY$NU_wp9>RArjI8XDf zva%SxhoVxTUxfsO8ntFa)YTk@3($_d^)S?ZsaqsrXHS1B< zh&-#MGv*d2`s6Oq%bP`wqz{Ydp8j~#WwB%#*eoLRy@v5@Y4#;DCg2vw8;2RbjQEWe zWVOAYD|baWE1qe+%L<1X)@I*K6J=u28s25C6`cxs%ScBM#ioWUdS*FzM`z^X3&hd2 z@XyNv%9i=@idMH0j66!MKBV7Fg*C)2&fUB>`!!Q?wd@bX9@%?*A5jHI0&uK74eQeg ztE1R&xJTunYhulS^gu|pZEbuOc{A#hSNPP`ovUsjE6;4nKTT$U$a zrR5E$ZW&?;C>BgkRI-jzW}Z(ui=`?Gm1WQ|D3hDhh9Shc$(&rah4T>kri%5qShVO} zM;|F$gmRqBq^I+8;yLQKbDD6jzg7|r8s82q6Jw^x&T?8O#qWqS_kDKFzL|Z$p)Eeb zKe(9~*(3H|%*Q6`miFnLx8f7TJ``ehJwp;%?QF=>wJa97Rtvxn#v>sudpG z?DI>{G`@Q|Td)3(6m9whlO6lG=x$#9QT$bN4#bzu0vnif{)ODd5Z!*(Hpb<%6Dtvj zyW$*l3+Xj<4w%t*y|g+nsnD^;pM14<4iF@;kl_4US---i(*8-RO)vV$~fx`7FT&VkcC}We4-q;yEG~juMoS6 z`xVutzf6p22=MA)oM`-ve|iT9Q;d^YUUec#=94?eE1a@v)MTahR$k9 zKcc{bM?UE z`w3^Ja+UcBXDZ{hOYF0;;^=q5BT|JKDue6?IPa?1Qd3t^mwPL@B!v(j6$Pc@q{m6X zqEdc0bq@*?fM+8Hb%Ne2a2=%W1V|h8+lF-s7z9s24T7yLZI6)cg)Jy1t+&}^QVC>% zBp@_{$izbqhV7~|Nx&pM4?*4iksdWz1r6gp)VxJ63Uh#w$RC4O@dXhIs zdvs7=<#;NAR~d|4zHrqB`;Hxg4=?hZ>Thu z>Lq2|6<}rvW@V0TZ!#KJ!k?LLpd25w_}mCWp$+>oYf4|o8&m~3B5p<28r>!07KS{G zXoz0WceTZ7hm>kvcTN>OU_&2922QQvO;?F;Yo_XY+nx*|Mc%Rb5aK1s&daa9T`>CQ zdv!+&_8RFeu4#-B%EMRl#Wyd>eo8(z&^!66WsvWQU+yi57xdZYlC-Iv&(_)N#@oG@$lsPa%&b%xxj3N3%TvbFAd&}<=~{#Je8L7L0(#p`k3H`aILikH%E8F z9VfcQZMz^@Eyr>mT4Z#y`H&k4pm$)jb4H1knXY;6@R(P4TiLa`tnEy$lk^dJ{TA3nKH?a*NxFgwvIE+ zcudd0^?=EuL%LnA-Js-5WYH6kATed8>hj*H-G}~U7EATiScbWX+EWvUR#Z_E2*mF?G6=s{PPh+tp>E-l&GGvplLKoGlIpP0$4`pn9Ppf;nb%r6vF)A3~tU ziZ+KB#k}1vO!k7yhr83Ae_*(CG1*sB)Gx)3S~tih@x!>eU;ilpqN2#f^A=PX-e<9F z0c=ev!o872Kz&c^h`XoBa{4!h{HN{nrN&k|}AU8e;>(lAa zO4^qFa-UE3y{YY5@he^})B4Dt*LQ$@lBB;+bJct}L9rLs|49*Q?$=yPdz09HMaZ*H zpNi(E2Plr3_4+d*9d(s?m`#yRI`PJ}G0?t2oT!dRZEdo$Wi7c%wrMK$9azHIvqv9$ z$-lLPw0S@dNzPz`DkEgiaxAuAc=EaZm8JR1*d!AK=i&G4CbmM4X~^ZzZCz2c!_`${ z7GWvW1GAWv95f>{tX>M!x)FtonMz*q{(hy;ZP({=-GB-72Fz9Hm25uMQ#t{QJ0lT% zmKh(fm*8_Jzm1?;jK}x9&F2kMGT7C}K61}@BV(o_is&Rm?jR(JR^45*-{CeBN=H6C z9I1FgcT6D4h&;aZ1K9>!NbQ9kIb_9-ai8MJTqKWKZTHa$qsqRyzQXLjLAg`23;eh3 z$zK=S@LDikn1?IOwUL0=b%}v1%6wLE62Lf#DcJ2PDH{^1?d`ib3sP+%e*x(mapu1#=XKM#lk@BI|=^|F76!ZW*@%4i8*>1sZRk+k5(--pv4!7^H z8r#k<#<(>H=8u_{n(QWQofm|;#_2I)*m)~ne9-iYD_Y~R&}K`huVMOPJr5?~h1{#{ zvU+w)X}#xeK6L^HwPn2>UG6YA*TBoQ>B_*(!edq{j5QlEj0E|CTG1?gNV9@tm{-oC zXObW;aqzUc4%I-`*w>1oaFhQ0Slz>z50`4>@4~^Qs-NY?%5ajiAygi;9ct-(u%@QI zV0JcQ10_XS_GFB6)Us2C`S20x;>IL!=Jh-t^jKL>be;p)TPylW+5M|U)Nw*@H&ucF zbH|ML&NY@IE7~NLmo7vt^BCS24-?)JYm`o3j^z{!K-enLe3FQoh73EkSaA>dT2AeH zzU4>>dO@X7m}}>mZDDFc{Z;oP_Ko@>P2J_{B60jZ*IaxKE)jo6<|tPEYfO;rb5%?D zr8k()fx>$ZQ7;xNrVT3xZxx40I36oZFK5M$Lyv@=*69IIuxDql)vEheW8xTyQ~OpfWwKm)l2 zhMYDa9P?JE@%PX=1=c15z7Whe(-cdHaoqTTZ-lO-UXSqO<@DG0=^zzQd)9?GQ@Yl> z%O!;NB41^E&W$v@h)QyE3V)vyWXhZ%*gMqhZ58PJ3YIjUHML@do}Je1-+=N@+V^}W z59yLO`gGspac0$;p$he)`ow)-_Il~w72^wilv1#yM=|WBAvTJxrc^iIoW2xtol%c{ zI=3)&zoPnib>Pvz)W+MVZucf`aE0riW_TtbH5--bt9x_e<}UOJIp;3+1pAydc@RyU zVs^Qj{whcx{56b8W9U95AG3b}{nwQFImkY<7EEmW$u=&04I%^ng~QjCTMh#a6jwY} zWN9|9a7$V(+e-U*>~K?IbaAzj5e*G*aP6XSNng@EB!f-;LmvljmkY}$QE|b z#~FrfvBs1kV~D{j!*uKH9uXTzC1NX+yDWWU$lgxD3ZDs+GL-uCenQ9~^kr4C+}? zpSyfWz)M`I3Xl43X}k404d}hVAt2a7AJ@f&>J|X~lt$1WCEWYr2>pAC_=dP*`_N8- zZamSTchI7ASTznB?Ck?LlS@svw0I|Rr}IIgzM7|}^AS{oXXvW^%7B0oKzlIZI%B5t z@O05OCFs2EC89k%v11qAFweZ_r46EpDn(swyQKs>yBCYw!a06mC@&du#B9N%Ud)eE zPxs*T#YF9X+1vdq>yPS_aO;=ce3ox%D>zpoQo>>W$m19`5 zoTf(WT-&8A@lK{#F;*#?azxyrs718@M-q60rKdo7YU~kgJMM4TDwLP~Mn1La^dh z5^%%5VSUV2g?d!c9rWy@KtFXaBXy06=MHvgmmKtI_wrHS{pOzjo60b@aHbv~#zPFM z@J#)1V2R8xtz`qCQm4mn5~jSc&FF%OMo6GF8v&Ay z^h4AlMDC@wps}m99rgrMpRD0BZ}(bXX^NLxXw$+oOktXd%4>QQ3)U6LCE`5}C~+^B zcIM#E(jnTSd|=`xSCaE!9G(wqP0^OZ6VPZA!Lk}me_C^v z^~7%a>@g>a<;?IkcOAIv&G?I%7GAF=DZY__pIZik5j>}5F}Lqm)L1aWa1RJ)xz&1xh9(*fM?#Nq^W8=8}JbwYq ztBUu5JGr`hi98&V+tgP-@w|8TL>yXC^Hlg|Dgg31VybJ0@-rB$dXPr3lA-`&ku*U4 z6$mCDZ;{9R+^8QG{=ccr+PCNw2tEe0Qp@=YuiAdGy1Sh5sJ()4gG842`#LSzPJ_P7 zktWRt#WYlgG&B-m_tPRzgsW~r&lm5$D38*_Jscn&vm7&<_dnjf5vq7L3=$#>e=m#B znAQrpW>7U+bwD21}%;N$-J5msZ)fR8`&(&q@D zOY&Q=nWV(_iHLDlyc)K-m3X>O@eE^_GW+6+9gHe+(_q2btRrJVA*pt)YX*wMHS7Cz z9P#LK|4M_7mcMIHvDo#q!0*!!GnPEll`Uha$#2p1{O#x%I+(Ms{D7=UxsuhlCbObM zRL(+;d)<1ZjCOg1u9|Lj)GYF{@!?B-G=uj2nu_ipkR7;uP^9Nfx@CAmA;P@wbh}egyocVd`*(c{e47UH05^G&F zWB5+D+}4W3Yy}i-u_duTTdj8D3mZGDZc~Nov#$Y^K_d1G`&#>_xcPr6!J<#F<>2^k zOj;X*dEdJGTneLwUA(Hbn4+_KD*HVJlLGk%+G&9T@8>T5%AiTf)`G&(f~e0PMi4u9 zL|=spJb6gJZ!hwX%-41hB#PHuhRhXg62Xih>z-6fXZ} zqW1)9(r*ZiGh`5%cNn*pK;Y@UO>2V351{G4p^j=@HR2`Xrmmf1-%uOegK)KY zorkCm2I}j0i2kxpgyV}4Li`^XM79hP(A5TlQv;uCg1B6JupcDBi_|C(-AkFA+%TBBRDJ)y) zdTLmWd)wpudHFfr2xxTgEqfbtyVBx{y2wVyZ}fMDBw9_%g0)rODZzhkohE_L8$uvB zOyJM;qqc+tlsyu0=P^fz9;~c$X|{0l)()(Lv2y!y;XXyp6MY9VvM2EVW8yO3UXNx! zOEObK+$rEty<;jZ7#BMy|3t7KWdp8hj3fPrnmv?xvBHT?5;-KOi7_f7-1mkfrkqA19Z3m7ME}jAc#vb{s=chHtAQnQH<>`qnhvGXS8@?Eyic zKlND*UUeO{g&%0ZxV{8UTwTEZ2Yl_HB@|Sttn>0IBABnZz#9dN+{aTkDB-yaaEGCU z>AT`z=|+9t_}1KiP%9a9)0iQco6&hkYWO|I6%5u>E)!7bQ7(~2g9RxQYZaNRFE7_n zwXm64xR%viekf(yfgn?Tn4u*=eml{16tg6`35+hy#txZs+9PdNjvJOfxK*kNOBA|Lb zit0Dex@X+9Q^q;D?%t>g?JS4W=@$K06Y z*<#+4iR;NcyG)N#_tQEHf-$&G%{3-5e2ibb@wHEE?16VV!Jba_!OF!dL;d+z07U?h z#&~rPJN`5G|J-dq(BnU;g#Cl=cSQR>bpVd~pJgcRkiaw#$XL9EnMZ6E6kLC2LYhrz z^)GJ(S<=8VzgR6)>RAnIpXry`Srso7?^VC{xzI(3MFN=HfDU&wc{jA2C3v~#!+CBi ztfYn)5)?T;F0iHW_T^8PRP@`9**meCya*;22wyx)|1hIWy)tnFwU0QFpCvy)**6BK zf?>p2y+|8F2DT(BT(uv`zL#cN-kPaBMof8h-6V2IN$1dI#PO7nv-+k7rVgnbZ{s@B% zuEhE^|E#;fFv0!~;?&0bfYIw9YdSZ^5F-2cWN6O@1HWv-*T<_8Lh)Dco30Aqx~3-c z{d@=CHFb$OhnH`;JFQI7-)I($wy&{hDral=uRq$_fNvcTY^c22Y{5iB{nhc+-47Rl zXfT@huU6}O`11c})pBfYff_C zY?mG7*Qjv}cEzBCHL5Cm_sM!*hc&n95(xFMDqxE#*HQAA>q4Aj?JM__F{R^NVk_$t z9~LU-a8HZ6Ev-7P`c%LJMz`bi4;tfTSh>73)rJ|&1G}6FA83K49OuI-KStNN8uT-S zTRJ3qpEvPKqMa^(U0H5!EvXA`5HNM0ADc@L4#64}4?!>xtz4dC2~QCke9^r;GNO~p zFcLx8=T0jwLG^+2snz=ph5~*Kp>WZv7mo#K`K4s;ZGYP*k$)a;=06*vYaID%YM=ZE>{Zttxw86WOsG0*8J#_7SK+4-_W@aTy6i;RP!S<=d^z?FZT=ODgHDhfLW=A^v4)jxgPFs}JbYO$Hb;Ft%QATV+AM)2`DUcmeLzcq8p zWrDLn`M9;O7?!G`wF56RK~r86b;YOPlCJP*hr|nkq}h`NpEbpTZ0tLhpU6LIeEcD` zE9z=1gjy0}!#JFWrjArJ%odsramBoaZOU`Z#X3|bco&8yH7oK@A!e(qmtus{ z#RzTm)w`#EO-4R}K)~nVLIm7WttBawNIxV?QGh%&^mbdhB!^3_h0ULPkfE+_mjr}3 z){h-G!i;pvt_-wvn{^6Ac(6$ni_xc^MS5GBG1#CVfGh9r404;THHr8AWjd59gAg+@ zZ8h%L!Ks8c2+QTTvQ4&<+|vu0>U1q?ncOZsr~L=_XDWhij`%s}v75RzwK#Ej1{#`J z&yuLdP17&Sb!z8wF{V3WhfS;B@ecDhx6za0rHH!~5B;JfB>2wT)$QoKZu^>HU9L#6 zr#nMH5FzNYrL)9?iF4Q8Fn>v&EVOF`Gj|vRW!P;n<2ee#PjBamxtLHsq|rN|x9RZN zF~cP=I*t1TMgPA$U2~>k)Y<^AKQ+o2JT8jGHQ1ytDL`XtPr9a)0DCyY4Yr3#xF@nY z_Z<4#o#cm?&7g8H0aquw`eR2&Jx>vHXs;ynu$lNFTGn=)0-b>VocjdWY(8P3oLHz*I<#KyvdG2*Gs zKF|PvX-rP*s5o^q^Jm|S{n3wouuV!LCMDHF!cgT|p9g^kCc?Fkl=`IA6&*N?POnB? zGG5r%iakF5P427;j}if>dQ-g{SI;8*-QvBXw`Sm!S7Bh71pVRR_PH2Y18WJt`a4!P z^S181c_gQ@-Bw%LIzr5ocuf8tOxa?RRT8RHOrT_`#4WRZePfd-;DC*ct-2Sd@SjiF z!iq#oD08NcioRtVKUj}ZZ>y8YeQAcQ7*Y>rC&1Yf(;OUx2UgRcXZrCOBCftmp}|?u z!B}rMwOd`qB(|YSo(~1pi~C;dNo@kLeKhNq5}&3Ux9!WnORUJ~yh)e!gK7t|w9Dlv zE;v!LF>m!K`UOY z?P|%?E@O){Y?}n!Cx{|3DhFbZI9oM4O0s?|+oXd@33__EzCZY$mfNn&O18l~RGDp& zTi8!w$fB>Flfe6?Ps|ruGu@WBxs>;5Qx9+EflT2t9F)}=rj*)!ku)rEE8xrp`8oUb58Ln`&$j>8OzdAwdZhRh7P>=GplGoKb~WFhvwxQQ z>OiuK_H{rUb+^?YUVcv1qmupId2M!)oWIBHe^UDJKR55uA~mLAMjgwud*7*HT@4H; z?8}ucv}pr}x_qGQ{4G$&lPf<(7Kp`}9EoJNV7;Dr=d)FgLws~V%ASt@J^%1mw@3W{ zuqRW&AJ6)c<2ZY^!TwFBq$a)^&B%=x)x(VCG`%tIum1%8ctBCPuF{?H6)Oncrq zYw^LeNgiiMK3x?uUih$Or@xy@utpa^(PKr?iq<(}cpG#|jB?~1w*nSRh<@MAHLJm~ z-fhcEt0z;=d+~hiOs5qdSrkyYd7b_nxqtTrld_OGK0^hA3ao{APFqvq!(@~k8wvVS z_T5c`-$X51b0r@3eYB~L);TF)&Rj8j(%4z6<5}lbTpBj2s4+@l8uxti{7C};wjxKx zYYAV~itYQ-pRW7(@gFHkVldEr3)k?8xLEt0kNNofweM`GlFcX~{Eb&gwkud-VzxDW zh(jo$K&dE1B<4yDrXmQAvoB-5BkSy)uu1vmOXqHy?L(--$%_vuS3rO$Cm06``&LVh zR76bT5w#4=Nn9+@1D5qc!g)tRmW{E)t!Nr6x#G%$2_@PxJ*^T;LF5-`1ITruxC{=@ z6>93Y8$B|^M!GH&7i@Mb^3dd)9OnkwUK|R;8QkvGLuI`8khrI9U_JIYENok}IdzR4 z3*8L@=h{B^$G$7C{6E%YXJEaZc#6W7uXnE!Y;y2u^gH{^r9k~Ywe`}5<`A2DPzyC5Ks9nAJ>cN)=h<&O_`nt`HcWIzArjhL ziYzj!h~%^s=6vIG_X*bDl!u7PCsu?ncFufoqzmh#SL1qn)F}>(q|~1(YEFHCI+RZo zn2))EsUM+{xbv-6)Y&;}X$|JAekfLUEZ_UfVd`RL+WUT4lW|LTW`)kEmIT-%mvD8j zF~+UB0*#DQPbFkTyO`~{nd=5_)txCQqX0Q;yXPt=DlH49d)xbsbS!${7}{(9x0wm)A=L;x!X?CHWG# z@{sg!X>bqD6JF0eLI3zxIhL(0A~k#sAKuF@JFF<_g{G5Sju-#3S%0+VK8|O3>Al3T z+m8A0a=!8y?R}4@V$=GkP9LhPg-{cPEPS<7(JAHVU2;n}6hkacLwe==$||L+B$eSj zK{@g-IKRlPX3}(&A1-@7O91BnnJgDWG3|@uEbBV_C7-&Agf+ zDhs!xtF~Nm+cLtV)?WiG~@*_80DKfYnRT51B_v*HqX#V-EB%KgXA>*%FJ({SWW4mO7f3r0^ z85+f|ECx@dbFAebv|_0maw}p&hG=(}i|acTtnl_~l%Nnf7x=RD0@Gh$t%x%wnSgL{1h1}e^%RNSe#&0ULvcs%k z5{OSz=PtSjBrf`&C!E1fwCZwR?D6G7M~OC{fqBn9F0zozO4rSoZEXuf!CwxidzmGq ze$|{CB|Ck7-8$8H%dgO_Xs1d8p>7y~>0U%k4%nSKerw7Oun!9H2D*e%3dD$5jmv#i|hx4=alx``Wz!4|VSy z*3`PSd!q=5NRcXC1w^GOQlv``MhYw!0xe{kvYn#?uJGsiQYXWZj=pDZYu9p~vsE8vK^ z2p3DmcO#zqi!Qd+jS*nuZ;pek!=ui6xhQS*Q`8<0Gdl?KO-oVZ`$%?D0W#fuB=ZfU zj280`6%uP3K`z;4@uL>#ntm7Oln&3&e)HZQGYbAaC=E`z@KotXOrw|vl|Xz(QwELi z<%+W8E1|8f2#9%1uPw7MJ<{DyvF$w-BT7}CirTYXcF_|DFqr%Vn_~l2kC5O3FHXKv zRuTQW>6QY3{2(C|>b3z8mBArqZO=NzoZ~#3F06sNZW{x+z8dh!^9#= z)|3IkbU<pQ>n|6g$bi}1@PwXzaGRdpWN{qzM?i_0p4BS1#K$_*6o8zhk51uDNjKWwm2 z0N|qzPar2a8_BV{>o)*=6fL}QDG~}Gv35G`w$1?fs6hFNjaJ}XLOt7wNWd{7b!iI^ zl;`8-T_UJjDDN5p$yV3KHqj9fbFCt6pgm60 zNmlqqQAE%T$3T`nanBv;#8TaAj&Xc{cvLiMGFG?P=qgYwPb8F6+I%Lqbt_V+Hl-*> zx~wT7X%NabY=RsNV3SkYw;2_ywl@Jh)S=(|NZfa}N^*gsd84@(Q2MI3jlMF1Y^Q323O0;rF5Wn(vaJmFhw z03M1%kPzc2xGFO@u`$1chdMJaHYv#F=&wLB!9lUHS9^UOi|12vLw!{}x6iDYr7%?X z7H9Q}K4E|$o=0Gh9=DGhJkB(D43*k>?wBBK&;Ji7AP4Qaa+8^jKxGI#mt=%z%xGPN zw%wz!_sVurUnLYL=8|$vkQ@f?C9uzCBsWNFeXL>XwPz|7^CR22?;?EO1ZX-lZH^Nw zgNX&WWK1``?+sE~zQz2eE~bR0{!66HTe4TdSH+Z1O^TmF8FOA@=S_~7w+&9r#FPc_G!kN4Lj zcDF$}^tY_Ys)W@p{1_c(P*t>+&|>a%pR+i{E{x_&=u+`azbzVKZRgHdkB4Z&kGeUx z$a}d_J{MrtH$v4upTlQtF=+orl`{`CHR1m2ujxnY(BCq2ULjePmDD20M+)rEI$}#g z!0+k&f!Um+f_&}8;d%Du*0YiCuU>r{A*_A7r}lygG+MMDeXGR3Q?PuZWftJ7GDsM` zCz;4)C3yuLUCWmpGt#K6Q;bSwd_UJ?aN%5d(rM+v^TI(V-!KE;*Pq-tZi3TSgV>e4 zD2n&9wkWTuCu9UFYfr)%hcV9hdR^VKB@xj@)pe8>RFxdIa(;BVOy5T>c^dM#N;~QF zcMYv0v^v!M0}d0Qp%P=pGJmLau6D1#-qc-!&j8`seWQdoS&-&-!0|Wo173jri&%S!PC4(guh?8&f$h+P|pU zbTSt=FZOl=;fDPL8zQQ-E|h`1yv|>az&$!+-gc1g6Lim4y7$7r>t^~wN!f6MRIBP~ zqRa+XH>%;duL997Y_-URnF~61+76jL4l&z)GAn;}6o#db@Vj*Ir9FQ-O?Yd6jy+a) zO^wm953RIjvnK>vvtV_W= zW}JWt#SF(UFIEP2Q3<*t>Mjo4?tKnZ*3W;>l$%vN6!V74oHC~ATN&XN^v%lkk^FvX zW`keeXo(`BGH%M5dNL!x!ysHSVs2dQbu5N+b71-0BMWG&r+sZgk=NJHb)BUfY5bGnK?EcdXl5b>pScD9B>>F7mudhwU z8zd7&@_YK(LFYB*1HRJLJ)U*^w;81_Ti#m-GP?5Z(riWz!ODhAzV*_q6N4-M=1R5^ z(DAEuUt7l?zKZ3Zy_>=6U^9BT|H&om*W)j2%V;igrrsTWs9@-pd4TZ^phDYo4^q1s z2tT_=_spID&RPHOn@)Bz5kQ3cl?UMDEdpq8fRndogN+*oIC-B=!&7Ws4Ua|eKeXq95X>Hts>0aA!Q{|*JQ!}zp) zQOMVOuP=O6pZTMHs=r821wa$Wb_A#<6Qq5ffU((5+z-G|yrIZR8X&vn`AM2!Wnlh3 z4W!TyxS(VQ0O=^M_9bzHLS>00zWNE7`0qFepg?Vrqu)`WE^-h}(ICWo+6<5P>K|o; zzhBp^i7~zV{E_ti{koY$r}K~g|*5OB@^34<;Ml=^yUD9Qq|2W3VnqjMJJQO z1{S3Ft-;A`4r=7+-={=aCZI@d0P^7gXF!M=xASoNb`+_8fFkt(7C3>>Ke`4}>;XmU z5}-&;1wN?H4r(}=9zc;g0VLN=a=4*Z-KPo}7mx8^2DCjliX4|++9PzAK1Ga{0& z6LUkAX<*riKnqClfUKj`!7ez`x5|yan5L`c9!R_yc3uD2J*7{yPH`z4hX`P?^(cbK zdMc3@(!WqK!91IBm{or*vIq`JZ|Q<@lv~OUWTOKY4Vy~&PM^)xd*}Q5-Hk9B1yx@E z59bk=q^PbG04`Sdj(y%gb}bVHq%cT)>Gs?;E4mI^4qay3M~)RnP`cIg2(8 zQCJA@2v1P=(OLbHlTZ2XJIR~d#>!B%>larO=8l+Wd1-M~>e;2hrcCTJZ}Fv4soY<& z1U5lEZ~5iHOomJpEf(FaWw4B^@#Y_h`qcUiviaxgG{xhR4C!@kL>*b&Jeav)*Blyz z?orSnvoi=zkd;w#9fUUzp5QTi`F%ii*LI2HJ_PEN2;&eWq zwo#itE~|tqJY}813Hor4l6k-;9V@5?BWLeFMM9 zc241hXDMrN0YuyA8&&p3qRrsb0!Ps82or;k3pV|p49WKn#$gU<3Mbu4c8hDP@#a5b z7Me5%MIi%a0NFN>LA^IO2$NcE3@@`6%K_Qta$A?iwwyN`#e(v>(Gc^JROJ3dX;d-D z`}C>kcMqIC*{jjQm36Za%}Y%z;1Y!YnD}b6p}`>w+4T(Pqc{@ zd#g`(FppX=(7NPzMvS`xd>advkeNTw&#D{rE}17tzB`WX4#x2mUDR5;5Uvp$i~ACe zwk#lN^mdxXIIDpMD(bjf3%#t(`&N}OxBOHy9BpK~$N@?(rnSmOwKnW#D$G7|Qt=N3 zJ}2EGECInH=!e`gHpHVu_RAI%z&|KpfXiKmBhN5sffpYpwOygh)}PGaf*Fq={^*<) zXe7n?)Hcex7yenpn4QisyH1Q*$55RwK--FRgD3_fRZZprTU9V@Qrv+dY|gWF#g@}> zKe&4q)B-j{FLSNq%nP|5`Bbo%g{cSXQ zROkMoQn^Gz#FsWX;)NQr5IqfGl|7eW)4R=b8&fdm-G!z<-!Qiy`OQ z=32x=%HH%w+8>~2J9?M3S=4)Y6aU6W&V*nhCus$z5I)X8hYNw6dF z(ht8IzF{#(KqrHPyTg{8eCc3t*Qo<3YDYj^K{@)eLDds8MOzY&&glQcmFNv$lKO`rKbhM2G+rQ8%h^dPqvf-g))w>OAao%ts~0i~Ks25Bsd|M#NI1UYfDmcR!ZrqwTJqa~AmaXOV9Jcp?(*cn@J>bLhT0cq8q z*FDfaLYh)1Jtfp(1X0Tf z-9W_etLHfbZyahB#_5t4>oq5!|QHe^J| zH2t&scE)sgitu%5norj>5+2ZankdpWrA{1y2}q#{+UU)V(8b<9y#ZlD){;-|XnWlq z<0{&>9S0oiE3=$l$@4LR?*Qa@AZt+ zC4r(1`BhERu?S(E%DRlZX|(e6``r~Y7M%%{5Bv<*`#hYHraiKLycpHvwF3)9i^fCx zeacX`!IT@VpS`%QTAocY{XAaz(L(uBRPULnJJkKfWXo*%sMWeS+T2o^F8zawV3IF- zQ0o?B!;IkRPAZLO`_*l_fhF(m81!Lyou(kRvjFblv?OhxoeVnFBL8(SAO} zcFed)Af{F-wBh7eHhZj2?yXmr4vN7AtqKfqzHytHPV?3z?MBvJ#;kFPZ498jWi_>U*)G z52b?!dgVHo%0_g#LpH7_eP39Zt{t?CU%A?_;@`y*kHhN=zk$6BC> zU{FlHLQ)K#Gsjk_jTp70#4d9A5C!Hef$|XMesVYp$>CQ#H-}ubl(sz4JWf|uiUPrp z)2vMgC$^4FU>|oLrgs@!oX*N!5ZtXm_S^NMhR!`VN4%eF5N4T6xn12q#hTP-d$W6; zLF3TF`*k{FnFmVWie5N=@kgKCFd101tNV%mMnz);tQhGawP~v?q zqg+$t9NW?(Mgdb-F)$iZg2EL&2&dB++K`;$WgAMx(r@ znkX9P*=hT+0+e<|F1CfIVy3X?t&7Lj{%DsWf4wt&dThv!w7@mGo|6LB!9K>defwjX=aTL}yW1>*8q@Tyk?Uepa#~hD z%xRH$)CeIq<)6Q$)jE~IHjJ<~CP+rbY2pwj=Jl2JJ>&S{_PmJ>>+NK5uH+S&Soq

71*q~RuL$l55>>%eP-!LkkW$%@x4 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 +#include +#include +#include + #include #include #include #include -#include +#include +#include +#include #include #include #include @@ -29,12 +36,39 @@ using namespace std; const int UMAP_VERSION_MAJOR = 0; const int UMAP_VERSION_MINOR = 0; const int UMAP_VERSION_PATCH = 1; -const int UMAP_DEFAULT_PBSIZE = 16; -static int umap_page_bufsize = UMAP_DEFAULT_PBSIZE; +const unsigned long UMAP_DEFAULT_PBSIZE = 16; +static unsigned long umap_page_bufsize = UMAP_DEFAULT_PBSIZE; static long page_size; class umap_page; +class umap_umap; +class umap_stats { + public: + umap_stats(): stat_faults{0}, dirty_evicts{0}, clean_evicts{0}, wp_messages{0}, read_faults{0}, write_faults{0}, stuck_wp{0}, early_writes{0} {}; + + void print_stats(void) { + cerr << stat_faults << " Faults\n" + << read_faults << " READ Faults" << endl + << write_faults << " WRITE Faults" << endl + << wp_messages << " WP Messages" << endl + << dirty_evicts << " Dirty Evictions" << endl + << clean_evicts << " Clean Evictions" << endl + << stuck_wp << " Stuck WP Workarounds" << endl + << early_writes << " Early Write Workarounds" << endl; + } + + uint64_t stat_faults; + uint64_t dirty_evicts; + uint64_t clean_evicts; + uint64_t wp_messages; + uint64_t read_faults; + uint64_t write_faults; + uint64_t stuck_wp; + uint64_t early_writes; +}; + class _umap { + friend class umap_page; public: _umap(void* _mmap_addr, size_t _mmap_length, int num_backing_file, umap_backing_file* backing_files); void uffd_finalize(void); @@ -57,21 +91,21 @@ class _umap { size_t segment_length; int backingfile_fd; vector bk_files; - int page_buffer_size; + unsigned long page_buffer_size; bool time_to_stop; - uint64_t fault_count; int userfault_fd; int next_page_alloc_index; thread *listener; - vector pages_in_memory; + vector pages_in_memory; char* tmppagebuf; + unordered_map page_index; + umap_stats stat; - map page_index; - - void evict_page(umap_page& page); + void evict_page(umap_page* page); void remove_page_index(void* _p) { page_index.erase(_p); } void uffd_handler(void); void pagefault_event(const struct uffd_msg& msg); + void logpagefault_event(const struct uffd_msg& msg); inline void stop_faultlistener( void ) noexcept { time_to_stop = true; listener->join(); @@ -93,18 +127,37 @@ class _umap { class umap_page { public: - umap_page(): page{nullptr}, dirty{false} {}; + umap_page(_umap* _u): u{_u}, page{nullptr}, dirty{false} {} bool page_is_dirty() { return dirty; } void mark_page_dirty() { dirty = true; } void mark_page_clean() { dirty = false; } void* get_page(void) { return page; } - void set_page(void* _p) { page = _p; } + + void set_page(void* _p) { + page = _p; + snapshot = u->stat; + } + + string statstring() { + stringstream ss; + + ss << "ED(" << (u->stat.dirty_evicts - snapshot.dirty_evicts) + << ") EC(" << (u->stat.clean_evicts - snapshot.clean_evicts) + << ") WP(" << (u->stat.wp_messages - snapshot.wp_messages) + << ") RF(" << (u->stat.read_faults - snapshot.read_faults) + << ") WF(" << (u->stat.write_faults - snapshot.write_faults) + << ")"; + return ss.str(); + } + private: + _umap* u; void* page; bool dirty; + umap_stats snapshot; }; -static map active_umaps; +static unordered_map active_umaps; void* umap(void* addr, size_t length, int prot, int flags, int fd, off_t offset) { @@ -158,12 +211,12 @@ int uunmap(void* addr, size_t length) return 0; } -int umap_cfg_get_bufsize( void ) +unsigned long umap_cfg_get_bufsize( void ) { return umap_page_bufsize; } -void umap_cfg_set_bufsize( int page_bufsize ) +void umap_cfg_set_bufsize( unsigned long page_bufsize ) { umap_page_bufsize = page_bufsize; } @@ -171,7 +224,7 @@ void umap_cfg_set_bufsize( int page_bufsize ) //--------------------------for multi-file support---------------------- _umap::_umap(void* _mmap_addr, size_t _mmap_length,int num_backing_file,umap_backing_file* backing_files) : segment_address{_mmap_addr}, segment_length{_mmap_length}, - time_to_stop{false}, fault_count{0}, next_page_alloc_index{0} + time_to_stop{false}, next_page_alloc_index{0} { for (int i=0;i= 0) { - if (msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) { -#ifdef DEBUG - if ((msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) == (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) - umapdbg("PF(WP+WRITE) (In Memory Already) @(%p)=%lu %s\n", page_begin, *(uint64_t*)page_begin, pages_in_memory[bufidx].page_is_dirty() ? "Already Dirty" : "Clean"); - else if (msg.arg.pagefault.flags & UFFD_PAGEFAULT_FLAG_WP) - umapdbg("PF(WP) (In Memory Already) @(%p)=%lu %s\n", page_begin, *(uint64_t*)page_begin, pages_in_memory[bufidx].page_is_dirty() ? "Already Dirty" : "Clean"); - else if (msg.arg.pagefault.flags & UFFD_PAGEFAULT_FLAG_WRITE) - umapdbg("PF(WRITE) (In Memory Already) @(%p)=%lu %s\n", page_begin, *(uint64_t*)page_begin, pages_in_memory[bufidx].page_is_dirty() ? "Already Dirty" : "Clean"); -#endif // DEBUG - - pages_in_memory[bufidx].mark_page_dirty(); - //memcpy(tmppagebuf, page_begin, page_size); - - //struct uffdio_copy copy; - //copy.src = (uint64_t)tmppagebuf; - //copy.dst = (uint64_t)page_begin; - //copy.len = page_size; - //copy.mode = UFFDIO_COPY_MODE_DONTWAKE; - //if (ioctl(userfault_fd, UFFDIO_COPY, ©) == -1) { - //perror("ERROR: ioctl(UFFDIO_COPY3 nowake)"); - //exit(1); - //} - - disable_wp_on_pages((uint64_t)page_begin, 1); - } -#ifdef DEBUG - else { - umapdbg("PF(READ) (In Memory Already) @(%p)=%lu\n", page_begin, *(uint64_t*)page_begin); - } -#endif // DEBUG + void* page_begin = (void*)msg.arg.pagefault.address; + int bufidx = get_page_index(page_begin); + umap_page* pm; - struct uffdio_range wake; - wake.start = (uint64_t)page_begin; - wake.len = page_size; + stat.stat_faults++; - if (ioctl(userfault_fd, UFFDIO_WAKE, &wake) == -1) { - perror("ERROR: ioctl(UFFDIO_WAKE)"); - exit(1); - } - return; - } + assert(page_begin == UMAP_PAGE_BEGIN(page_begin)); - // - // Page not in memory, read it in and (potentially) evict someone - // - // - //-----------------------for multi-file support-------------------- - int file_id=0; - off_t offset=(uint64_t)page_begin - (uint64_t)segment_address; - //find the file id and offset number - file_id=offset/bk_files[0].data_size; - offset%=bk_files[0].data_size; - - if (pread(bk_files[file_id].fd, tmppagebuf, page_size, offset+bk_files[file_id].data_offset) == -1) { - perror("ERROR: pread failed"); - exit(1); - } - - if (pages_in_memory[next_page_alloc_index].get_page()) { - delete_page_index(pages_in_memory[next_page_alloc_index].get_page()); - evict_page(pages_in_memory[next_page_alloc_index]); - } - pages_in_memory[next_page_alloc_index].set_page(page_begin); - add_page_index(next_page_alloc_index, page_begin); - - struct uffdio_copy copy; - copy.src = (uint64_t)tmppagebuf; - copy.dst = (uint64_t)page_begin; - copy.len = page_size; + if (bufidx >= 0) { + pm = pages_in_memory[bufidx]; if (msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) { - pages_in_memory[next_page_alloc_index].mark_page_dirty(); + if (!pm->page_is_dirty()) { + pm->mark_page_dirty(); + disable_wp_on_pages((uint64_t)page_begin, 1); + stat.wp_messages++; + } + else { + struct uffdio_copy copy; + copy.src = (uint64_t)tmppagebuf; + copy.dst = (uint64_t)page_begin; + copy.len = page_size; + copy.mode = 0; + + stat.stuck_wp++; + umapdbg("EVICT WORKAROUND FOR %p\n", page_begin); + + pm->mark_page_clean(); + memcpy(tmppagebuf, page_begin, page_size); // Save our data + evict_page(pm); // Evict ourselves + pm->set_page(page_begin); // Bring ourselves back in - copy.mode = UFFDIO_COPY_MODE_DONTWAKE; if (ioctl(userfault_fd, UFFDIO_COPY, ©) == -1) { - perror("ERROR: ioctl(UFFDIO_COPY nowake)"); - exit(1); + perror("ERROR12: ioctl(UFFDIO_COPY nowake)"); + exit(1); } + } + } -#ifdef DEBUG - if ((msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) == (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) - umapdbg("PF(WP+WRITE) (UFFDIO_COPY) @(%p)=%lu\n", page_begin, *(uint64_t*)page_begin); - else if (msg.arg.pagefault.flags & UFFD_PAGEFAULT_FLAG_WP) - umapdbg("PF(WP) (UFFDIO_COPY) @(%p)=%lu\n", page_begin, *(uint64_t*)page_begin); - else if (msg.arg.pagefault.flags & UFFD_PAGEFAULT_FLAG_WRITE) - umapdbg("PF(WRITE) (UFFDIO_COPY) @(%p)=%lu\n", page_begin, *(uint64_t*)page_begin); -#endif // DEBUG + struct uffdio_range wake; + wake.start = (uint64_t)page_begin; + wake.len = page_size; - disable_wp_on_pages((uint64_t)page_begin, 1); + if (ioctl(userfault_fd, UFFDIO_WAKE, &wake) == -1) { + perror("ERROR: ioctl(UFFDIO_WAKE)"); + exit(1); + } + return; + } + + // + // Page not in memory, read it in and (potentially) evict someone + // + int file_id=0; + off_t offset=(uint64_t)page_begin - (uint64_t)segment_address; + + file_id = offset/bk_files[0].data_size; //find the file id and offset number + offset %= bk_files[0].data_size; + + assert(file_id == 0); + if (pread(bk_files[file_id].fd, tmppagebuf, page_size, offset+bk_files[file_id].data_offset) == -1) { + perror("ERROR: pread failed"); + exit(1); + } + + pm = pages_in_memory[next_page_alloc_index]; + + if (pm->get_page()) { + delete_page_index(pm->get_page()); + evict_page(pm); + } + pm->set_page(page_begin); + add_page_index(next_page_alloc_index, page_begin); + + struct uffdio_copy copy; + copy.src = (uint64_t)tmppagebuf; + copy.dst = (uint64_t)page_begin; + copy.len = page_size; + copy.mode = 0; + + if (msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) { + stat.write_faults++; + pm->mark_page_dirty(); + + if (ioctl(userfault_fd, UFFDIO_COPY, ©) == -1) { + perror("ERROR: ioctl(UFFDIO_COPY nowake)"); + exit(1); + } + } + else { + stat.read_faults++; + pm->mark_page_clean(); + + copy.mode = UFFDIO_COPY_MODE_DONTWAKE; + if (ioctl(userfault_fd, UFFDIO_COPY, ©) == -1) { + perror("ERROR: ioctl(UFFDIO_COPY nowake)"); + exit(1); + } - struct uffdio_range wake; - wake.start = (uint64_t)page_begin; - wake.len = page_size; + enable_wp_on_pages_and_wake((uint64_t)page_begin, 1); - if (ioctl(userfault_fd, UFFDIO_WAKE, &wake) == -1) { - perror("ERROR: ioctl(UFFDIO_WAKE)"); - exit(1); - } + // + // There is a very small window between UFFDIO_COPY_MODE and enable_wp_on_pages_and_wake where + // a write may occur before we re-enable WP (the UFFDIO_COPY appears to clear any previously + // set WP settings). + // + if (memcmp(tmppagebuf, page_begin, page_size)) { + stat.early_writes++; + umapdbg("PF(0x%llx READ) (EARLY_WRITE!) @(%p)u %s\n", + msg.arg.pagefault.flags, + page_begin, + pm->statstring().c_str()); + + pm->mark_page_dirty(); + disable_wp_on_pages((uint64_t)page_begin, 1); } - else { - pages_in_memory[next_page_alloc_index].mark_page_clean(); - copy.mode = UFFDIO_COPY_MODE_DONTWAKE; - if (ioctl(userfault_fd, UFFDIO_COPY, ©) == -1) { - perror("ERROR: ioctl(UFFDIO_COPY nowake)"); - exit(1); - } + struct uffdio_range wake; + wake.start = (uint64_t)page_begin; + wake.len = page_size; - umapdbg("PF(READ) (UFFDIO_COPY) @(%p)=%lu\n", page_begin, *(uint64_t*)page_begin); + if (ioctl(userfault_fd, UFFDIO_WAKE, &wake) == -1) { + perror("ERROR: ioctl(UFFDIO_WAKE)"); + exit(1); + } + } + next_page_alloc_index = (next_page_alloc_index +1) % page_buffer_size; +} - enable_wp_on_pages_and_wake((uint64_t)page_begin, 1); +void _umap::logpagefault_event(const struct uffd_msg& msg) +{ + stringstream ss; + void* page_begin = (void*)msg.arg.pagefault.address; + umap_page* pm; - // - // There is a very small window between UFFDIO_COPY_MODE and enable_wp_on_pages_and_wake where - // a write may occur before we re-enable WP (the UFFDIO_COPY appears to clear any previously - // set WP settings. - // - if (memcmp(tmppagebuf, page_begin, page_size)) { - pages_in_memory[next_page_alloc_index].mark_page_dirty(); - disable_wp_on_pages((uint64_t)page_begin, 1); - umapdbg("PF(READ) %p changed after UFFDIO_COPY\n", page_begin); - } + assert(page_begin == UMAP_PAGE_BEGIN(page_begin)); - struct uffdio_range wake; - wake.start = (uint64_t)page_begin; - wake.len = page_size; + int bufidx = get_page_index(page_begin); - if (ioctl(userfault_fd, UFFDIO_WAKE, &wake) == -1) { - perror("ERROR: ioctl(UFFDIO_WAKE)"); - exit(1); - } + if (bufidx >= 0) { + pm = pages_in_memory[bufidx]; + + assert((msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) == (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)); + ss << "PF(" << msg.arg.pagefault.flags << " WP+WRITE) (In Memory Already) @(" + << page_begin << ") " + << (pm->page_is_dirty() ? "Already Dirty " : "Clean ") + << pm->statstring(); + } + else { + pm = pages_in_memory[next_page_alloc_index]; + if (msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) { + ss << "PF(" << msg.arg.pagefault.flags << " WRITE) (UFFDIO_COPY) @(" << page_begin << ")" + << "ED(0) EC(0) WP(0) RF(0) WF(0)"; + } + else { + ss << "PF(" << msg.arg.pagefault.flags << " READ) (UFFDIO_COPY) @(" << page_begin << ")" + << "ED(0) EC(0) WP(0) RF(0) WF(0)"; + } + + if (pm->get_page()) { + ss << " Evicting " + << (pm->page_is_dirty() ? "Dirty" : "Clean") + << "Page " << pm->get_page(); } - next_page_alloc_index = (next_page_alloc_index +1) % page_buffer_size; + } + umapdbg("%s\n", ss.str().c_str()); } -void _umap::evict_page(umap_page& pb) +void _umap::evict_page(umap_page* pb) { - uint64_t* page = (uint64_t*)pb.get_page(); + uint64_t* page = (uint64_t*)pb->get_page(); - if (pb.page_is_dirty()) { - // Prevent further writes. No need to do this if not dirty because WP is already on. - // - // Preventing further writes is problematic because the kernel module will wake up any threads that might be waiting for a fault - // to be handled in this page. - // - // It is possible to work around this by making sure that all faults and WP exceptions for this page have been handled prior to - // evicting the page. - // - enable_wp_on_pages_and_wake((uint64_t)page, 1); + if (pb->page_is_dirty()) { + stat.dirty_evicts++; - umapdbg("EVICT(DIRTY) @(%p)=%lu\n", page, *page); + // Prevent further writes. No need to do this if not dirty because WP is already on. + enable_wp_on_pages_and_wake((uint64_t)page, 1); if (pwrite(backingfile_fd, (void*)page, page_size, (off_t)((uint64_t)page - (uint64_t)segment_address)) == -1) { perror("ERROR: pwrite failed"); assert(0); } } -#ifdef DEBUG else { - umapdbg("EVICT(CLEAN) @(%p)=%lu\n", page, *page); + stat.clean_evicts++; } -#endif // DEBUG if (madvise((void*)page, page_size, MADV_DONTNEED) == -1) { perror("ERROR: madvise"); assert(0); - } + } - pb.set_page(nullptr); + disable_wp_on_pages((uint64_t)page, 1); + pb->set_page(nullptr); } // @@ -487,7 +559,7 @@ void _umap::enable_wp_on_pages_and_wake(uint64_t start, int64_t num_pages) wp.range.len = num_pages * page_size; wp.mode = UFFDIO_WRITEPROTECT_MODE_WP; - umapdbg("+WRITEPROTECT (%p -- %p)\n", (void*)start, (void*)(start+(num_pages*page_size))); + //umapdbg("+WRITEPROTECT (%p -- %p)\n", (void*)start, (void*)(start+((num_pages*page_size)-1))); if (ioctl(userfault_fd, UFFDIO_WRITEPROTECT, &wp) == -1) { perror("ERROR: ioctl(UFFDIO_WRITEPROTECT Enable)"); @@ -505,7 +577,7 @@ void _umap::disable_wp_on_pages(uint64_t start, int64_t num_pages) wp.range.len = page_size * num_pages; wp.mode = UFFDIO_WRITEPROTECT_MODE_DONTWAKE; - umapdbg("-WRITEPROTECT (%p -- %p)\n", (void*)start, (void*)(start+(num_pages*page_size))); + //umapdbg("-WRITEPROTECT (%p -- %p)\n", (void*)start, (void*)(start+((num_pages*page_size)-1))); if (ioctl(userfault_fd, UFFDIO_WRITEPROTECT, &wp) == -1) { perror("ERROR: ioctl(UFFDIO_WRITEPROTECT Disable)"); @@ -516,12 +588,15 @@ void _umap::disable_wp_on_pages(uint64_t start, int64_t num_pages) void _umap::uffd_finalize() { for (auto it : pages_in_memory) { - if (it.get_page()) { - delete_page_index(it.get_page()); + if (it->get_page()) { + delete_page_index(it->get_page()); evict_page(it); + delete (it); } } + stat.print_stats(); + stop_faultlistener(); struct uffdio_register uffdio_register; @@ -546,19 +621,21 @@ void sighandler(int signum, siginfo_t *info, void* buf) void* page_begin = _umap::UMAP_PAGE_BEGIN(info->si_addr); + assert(info->si_addr == _umap::UMAP_PAGE_BEGIN(info->si_addr)); for (auto it : active_umaps) { if (it.second->is_in_umap(page_begin)) { num_bus_errs++; -#ifdef DEBUG + if (it.second->get_page_index(page_begin) >= 0) umapdbg("SIGBUS %p (page=%p) ALREADY IN UMAP PAGE BUFFER!\n", info->si_addr, page_begin); else umapdbg("SIGBUS %p (page=%p) Not currently in umap page buffer\n", info->si_addr, page_begin); -#endif // DEBUG + assert(0); return; } } umapdbg("SIGBUS %p (page=%p) ADDRESS OUTSIDE OF UMAP RANGE\n", info->si_addr, page_begin); + assert(0); } void __attribute ((constructor)) init_umap_lib( void ) diff --git a/src/umaplog.h b/src/umaplog.h index c97d6958..8131dda3 100644 --- a/src/umaplog.h +++ b/src/umaplog.h @@ -17,29 +17,21 @@ extern bool umap_logging; #define umaperr(format, ...)\ do {\ struct timespec t;\ - char _s[120];\ (void)clock_gettime(CLOCK_MONOTONIC_RAW, &t);\ umaplog_lock();\ - sprintf(_s, "%ld.%09ld " format, t.tv_sec, t.tv_nsec, ## __VA_ARGS__);\ - fprintf(stderr, "%s", _s);\ + fprintf(stderr, "%ld.%09ld " format, t.tv_sec, t.tv_nsec, ## __VA_ARGS__);\ umaplog_unlock();\ } while (0) #define umaplog_init __umaplog_init -#ifdef DEBUG #define umapdbg(format, ...)\ do {\ if (umap_logging) {\ struct timespec t;\ - char _s[120];\ (void)clock_gettime(CLOCK_MONOTONIC_RAW, &t);\ umaplog_lock();\ - sprintf(_s, "%ld.%09ld " format, t.tv_sec, t.tv_nsec, ## __VA_ARGS__);\ - fprintf(stdout, "%s", _s);\ + fprintf(stderr, "%ld.%09ld " format, t.tv_sec, t.tv_nsec, ## __VA_ARGS__);\ umaplog_unlock();\ }\ } while (0) -#else -#define umapdbg(format, ...) -#endif #endif diff --git a/tests/umapsort/umapsort.cpp b/tests/umapsort/umapsort.cpp index e907f4d0..f3730c05 100644 --- a/tests/umapsort/umapsort.cpp +++ b/tests/umapsort/umapsort.cpp @@ -1,6 +1,11 @@ /* This file is part of UMAP. For copyright information see the COPYRIGHT file in the top level directory, or at https://github.com/LLNL/umap/blob/master/COPYRIGHT This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License (as published by the Free Software Foundation) version 2.1 dated February 1999. 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 terms and conditions of the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ // uffd sort benchmark +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif // _GNU_SOURCE + +#include #include #include #include @@ -92,13 +97,37 @@ int main(int argc, char **argv) umt_getoptions(&options, argc, argv); + omp_set_num_threads(options.numthreads); +#ifdef TAKEN_OUT + int s; + cpu_set_t cpuset; + pthread_t thread; + + thread = pthread_self(); + + CPU_ZERO(&cpuset); + CPU_SET(6, &cpuset); + + s = pthread_setaffinity_np(thread, sizeof(cpu_set_t), &cpuset); + if (s != 0) { + perror("ERROR: pthread_setaffinity_np"); + return -1; + } + s = pthread_getaffinity_np(thread, sizeof(cpu_set_t), &cpuset); + if (s != 0) { + perror("ERROR: pthread_getaffinity_np"); + return -1; + } + for (int j = 0; j < CPU_SETSIZE; j++) + if (CPU_ISSET(j, &cpuset)) + std::cerr << __FUNCTION__ << " affinity constrained to CPU " << j << std::endl; +#endif // TAKEN_OUT + totalbytes = options.numpages*pagesize; fd = umt_openandmap(&options, totalbytes, &base_addr); fprintf(stdout, "%lu pages, %lu threads\n", options.numpages, options.numthreads); - omp_set_num_threads(options.numthreads); - uint64_t *arr = (uint64_t *) base_addr; arraysize = totalbytes/sizeof(int64_t); From 0a027ee7561fb9a24e5782a6f20cd2668eda1401 Mon Sep 17 00:00:00 2001 From: Marty McFadden Date: Wed, 11 Oct 2017 14:16:13 -0700 Subject: [PATCH 19/32] Implemented UFFDIO_COPY_MODE_WP --- src/umap.cpp | 41 ++++++++--------------------------------- 1 file changed, 8 insertions(+), 33 deletions(-) diff --git a/src/umap.cpp b/src/umap.cpp index 3687a00b..0a03a249 100644 --- a/src/umap.cpp +++ b/src/umap.cpp @@ -44,7 +44,7 @@ class umap_page; class umap_umap; class umap_stats { public: - umap_stats(): stat_faults{0}, dirty_evicts{0}, clean_evicts{0}, wp_messages{0}, read_faults{0}, write_faults{0}, stuck_wp{0}, early_writes{0} {}; + umap_stats(): stat_faults{0}, dirty_evicts{0}, clean_evicts{0}, wp_messages{0}, read_faults{0}, write_faults{0}, sigbus{0}, stuck_wp{0}, early_writes{0} {}; void print_stats(void) { cerr << stat_faults << " Faults\n" @@ -53,6 +53,7 @@ class umap_stats { << wp_messages << " WP Messages" << endl << dirty_evicts << " Dirty Evictions" << endl << clean_evicts << " Clean Evictions" << endl + << sigbus << " SIGBUS Errors" << endl << stuck_wp << " Stuck WP Workarounds" << endl << early_writes << " Early Write Workarounds" << endl; } @@ -63,6 +64,7 @@ class umap_stats { uint64_t wp_messages; uint64_t read_faults; uint64_t write_faults; + uint64_t sigbus; uint64_t stuck_wp; uint64_t early_writes; }; @@ -86,6 +88,8 @@ class _umap { return (void*)((uint64_t)a & ~(page_size-1)); } + umap_stats stat; + private: void* segment_address; size_t segment_length; @@ -99,7 +103,6 @@ class _umap { vector pages_in_memory; char* tmppagebuf; unordered_map page_index; - umap_stats stat; void evict_page(umap_page* page); void remove_page_index(void* _p) { page_index.erase(_p); } @@ -442,38 +445,13 @@ void _umap::pagefault_event(const struct uffd_msg& msg) stat.read_faults++; pm->mark_page_clean(); - copy.mode = UFFDIO_COPY_MODE_DONTWAKE; + copy.mode = UFFDIO_COPY_MODE_WP; if (ioctl(userfault_fd, UFFDIO_COPY, ©) == -1) { perror("ERROR: ioctl(UFFDIO_COPY nowake)"); exit(1); } - enable_wp_on_pages_and_wake((uint64_t)page_begin, 1); - - // - // There is a very small window between UFFDIO_COPY_MODE and enable_wp_on_pages_and_wake where - // a write may occur before we re-enable WP (the UFFDIO_COPY appears to clear any previously - // set WP settings). - // - if (memcmp(tmppagebuf, page_begin, page_size)) { - stat.early_writes++; - umapdbg("PF(0x%llx READ) (EARLY_WRITE!) @(%p)u %s\n", - msg.arg.pagefault.flags, - page_begin, - pm->statstring().c_str()); - - pm->mark_page_dirty(); - disable_wp_on_pages((uint64_t)page_begin, 1); - } - - struct uffdio_range wake; - wake.start = (uint64_t)page_begin; - wake.len = page_size; - - if (ioctl(userfault_fd, UFFDIO_WAKE, &wake) == -1) { - perror("ERROR: ioctl(UFFDIO_WAKE)"); - exit(1); - } + assert(memcmp(tmppagebuf, page_begin, page_size) == 0); } next_page_alloc_index = (next_page_alloc_index +1) % page_buffer_size; } @@ -610,7 +588,6 @@ void _umap::uffd_finalize() } static struct sigaction saved_sa; -static uint64_t num_bus_errs = 0; void sighandler(int signum, siginfo_t *info, void* buf) { @@ -621,16 +598,14 @@ void sighandler(int signum, siginfo_t *info, void* buf) void* page_begin = _umap::UMAP_PAGE_BEGIN(info->si_addr); - assert(info->si_addr == _umap::UMAP_PAGE_BEGIN(info->si_addr)); for (auto it : active_umaps) { if (it.second->is_in_umap(page_begin)) { - num_bus_errs++; + it.second->stat.sigbus++; if (it.second->get_page_index(page_begin) >= 0) umapdbg("SIGBUS %p (page=%p) ALREADY IN UMAP PAGE BUFFER!\n", info->si_addr, page_begin); else umapdbg("SIGBUS %p (page=%p) Not currently in umap page buffer\n", info->si_addr, page_begin); - assert(0); return; } } From 20d118550f8d29e38c5409ab3a394f74b627aa75 Mon Sep 17 00:00:00 2001 From: Marty McFadden Date: Thu, 12 Oct 2017 15:40:21 -0700 Subject: [PATCH 20/32] I now have a reproducer with umapcpu --directio -t 1 -b 5000 -p 15000 /mnt/intel/foo --- tests/CMakeLists.txt | 1 + tests/umapcpu/CMakeLists.txt | 23 ++++++ tests/umapcpu/umapcpu.cpp | 142 +++++++++++++++++++++++++++++++++++ 3 files changed, 166 insertions(+) create mode 100644 tests/umapcpu/CMakeLists.txt create mode 100644 tests/umapcpu/umapcpu.cpp diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 8374ab14..a85e131b 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,4 +1,5 @@ add_subdirectory(libumaptest) +add_subdirectory(umapcpu) add_subdirectory(umapsort) add_subdirectory(umaptest) add_subdirectory(median) diff --git a/tests/umapcpu/CMakeLists.txt b/tests/umapcpu/CMakeLists.txt new file mode 100644 index 00000000..c49fdef2 --- /dev/null +++ b/tests/umapcpu/CMakeLists.txt @@ -0,0 +1,23 @@ +project(umapcpu) + +FIND_PACKAGE( OpenMP REQUIRED ) +if(OPENMP_FOUND) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") + add_executable(umapcpu umapcpu.cpp) + + target_link_libraries(umapcpu libumap_static) + target_link_libraries(umapcpu libumaptest_static) + + include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_BINARY_DIR}/include ) + + install(TARGETS umapcpu + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib/static + RUNTIME DESTINATION bin ) +else() + message("Skpping umapcpu, OpenMP required") +endif() + + diff --git a/tests/umapcpu/umapcpu.cpp b/tests/umapcpu/umapcpu.cpp new file mode 100644 index 00000000..363b0c22 --- /dev/null +++ b/tests/umapcpu/umapcpu.cpp @@ -0,0 +1,142 @@ +/* This file is part of UMAP. For copyright information see the COPYRIGHT file in the top level directory, or at https://github.com/LLNL/umap/blob/master/COPYRIGHT This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License (as published by the Free Software Foundation) version 2.1 dated February 1999. 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 terms and conditions of the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +// uffd sort benchmark + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif // _GNU_SOURCE + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // optind +#include +#include +#include + +#ifdef _OPENMP +#include +#endif + +#include "umap.h" +#include "umaptest.h" + +#define handle_error_en(en, msg) \ + do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0) + +void cpu_setcpu(int cpu) +{ + int s; + cpu_set_t cpuset; + pthread_t thread; + + thread = pthread_self(); + + CPU_ZERO(&cpuset); + CPU_SET(cpu, &cpuset); + + s = pthread_setaffinity_np(thread, sizeof(cpu_set_t), &cpuset); + if (s != 0) + handle_error_en(s, "pthread_setaffinity_np"); + + /* Check the actual affinity mask assigned to the thread */ + + s = pthread_getaffinity_np(thread, sizeof(cpu_set_t), &cpuset); + if (s != 0) + handle_error_en(s, "pthread_getaffinity_np"); +} +static inline uint64_t getns(void) +{ + struct timespec ts; + int ret = clock_gettime(CLOCK_MONOTONIC, &ts); + assert(ret == 0); + return (((uint64_t)ts.tv_sec) * 1000000000ULL) + ts.tv_nsec; +} + +void initdata(uint64_t *region, int64_t rlen) { + fprintf(stdout, "initdata: %p, %ld\n", region, rlen); +#pragma omp parallel for + for(int64_t i=0; i< rlen; ++i) { + region[i] = (uint64_t) (rlen - i); + } +} + +int main(int argc, char **argv) +{ + umt_optstruct_t options; + long pagesize; + int64_t totalbytes; + uint64_t arraysize; + void* base_addr; + int fd; + std::random_device rd; + std::mt19937 gen(rd()); + std::uniform_int_distribution rnd_int(0, 39); + + pagesize = umt_getpagesize(); + + umt_getoptions(&options, argc, argv); + + omp_set_num_threads(options.numthreads); + + totalbytes = options.numpages*pagesize; + fd = umt_openandmap(&options, totalbytes, &base_addr); + + fprintf(stdout, "%lu pages, %lu threads\n", options.numpages, options.numthreads); + + uint64_t *arr = (uint64_t *) base_addr; + arraysize = totalbytes/sizeof(int64_t); + + uint64_t start = getns(); + if ( !options.noinit ) { + // init data + initdata(arr, arraysize); + fprintf(stdout, "Init took %f us\n", (double)(getns() - start)/1000000.0); + } + + const int testpages = 400; + + if ( !options.initonly ) + { + std::vector cpus{0, 10, 20, 30}; + + start = getns(); +#pragma omp parallel for + for (uint64_t page = 0; page < options.numpages - testpages; page += testpages) { + uint64_t sum = 0; + + //cpu_setcpu(10); + for (int x = 0; x < testpages; x++) { + uint64_t* p = &arr[(page+x)*(pagesize/sizeof(uint64_t*))]; + sum += *p; + } + + cpu_setcpu(rnd_int(gen)); + + //cpu_setcpu(30); + for (int x = 0; x < testpages; ++x) { + uint64_t* p = &arr[(page+x)*(pagesize/sizeof(uint64_t*))]; + *p = sum; + } + } + + fprintf(stdout, "test took %f us\n", (double)(getns() - start)/1000000.0); + } + + umt_closeandunmap(&options, totalbytes, base_addr, fd); + + return 0; +} From 6d7053a250521b312b3826ff8eac5cb4007b74d0 Mon Sep 17 00:00:00 2001 From: Marty McFadden Date: Fri, 13 Oct 2017 13:54:40 -0700 Subject: [PATCH 21/32] Removed early_write statistic since it is no longer used. --- src/umap.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/umap.cpp b/src/umap.cpp index 0a03a249..2597cfea 100644 --- a/src/umap.cpp +++ b/src/umap.cpp @@ -44,7 +44,7 @@ class umap_page; class umap_umap; class umap_stats { public: - umap_stats(): stat_faults{0}, dirty_evicts{0}, clean_evicts{0}, wp_messages{0}, read_faults{0}, write_faults{0}, sigbus{0}, stuck_wp{0}, early_writes{0} {}; + umap_stats(): stat_faults{0}, dirty_evicts{0}, clean_evicts{0}, wp_messages{0}, read_faults{0}, write_faults{0}, sigbus{0}, stuck_wp{0} {}; void print_stats(void) { cerr << stat_faults << " Faults\n" @@ -54,8 +54,7 @@ class umap_stats { << dirty_evicts << " Dirty Evictions" << endl << clean_evicts << " Clean Evictions" << endl << sigbus << " SIGBUS Errors" << endl - << stuck_wp << " Stuck WP Workarounds" << endl - << early_writes << " Early Write Workarounds" << endl; + << stuck_wp << " Stuck WP Workarounds" << endl; } uint64_t stat_faults; @@ -66,7 +65,6 @@ class umap_stats { uint64_t write_faults; uint64_t sigbus; uint64_t stuck_wp; - uint64_t early_writes; }; class _umap { From 34a5e98eaa63287d639fff340349e624d8e4df38 Mon Sep 17 00:00:00 2001 From: Marty McFadden Date: Thu, 19 Oct 2017 15:04:16 -0700 Subject: [PATCH 22/32] Fixed bug in stuck_wp workaround. Now we are re-enabling WP after our eviction and during our UFFDIO_COPY. --- src/umap.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/umap.cpp b/src/umap.cpp index 2597cfea..e8676fc9 100644 --- a/src/umap.cpp +++ b/src/umap.cpp @@ -372,13 +372,13 @@ void _umap::pagefault_event(const struct uffd_msg& msg) copy.src = (uint64_t)tmppagebuf; copy.dst = (uint64_t)page_begin; copy.len = page_size; - copy.mode = 0; + copy.mode = UFFDIO_COPY_MODE_WP; stat.stuck_wp++; umapdbg("EVICT WORKAROUND FOR %p\n", page_begin); pm->mark_page_clean(); - memcpy(tmppagebuf, page_begin, page_size); // Save our data + memcpy(tmppagebuf, page_begin, page_size); // Save our data evict_page(pm); // Evict ourselves pm->set_page(page_begin); // Bring ourselves back in From b0b11d9134f49cac7c67686005f4ea830e683f61 Mon Sep 17 00:00:00 2001 From: Marty McFadden Date: Wed, 13 Dec 2017 12:38:10 -0800 Subject: [PATCH 23/32] 1. Removed assertion that stopped umap_mf from handling > 1 file. 2. Made FITS compilation optional with BUILD_FITS option. --- CMakeLists.txt | 2 ++ src/umap.cpp | 1 - tests/CMakeLists.txt | 6 ++++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dbd5f949..1fead3c7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,8 @@ if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Build type (default Debug)" FORCE) endif() +OPTION (BUILD_FITS "Build FITS-based Tests (requires qfits library)" FALSE) + set (FLAGS_ALL "-Wall") set (FLAGS_DEBUG_ALL "-g -O0 -DDEBUG") set (FLAGS_RELEASE_ALL "-O3") diff --git a/src/umap.cpp b/src/umap.cpp index e8676fc9..b406e825 100644 --- a/src/umap.cpp +++ b/src/umap.cpp @@ -409,7 +409,6 @@ void _umap::pagefault_event(const struct uffd_msg& msg) file_id = offset/bk_files[0].data_size; //find the file id and offset number offset %= bk_files[0].data_size; - assert(file_id == 0); if (pread(bk_files[file_id].fd, tmppagebuf, page_size, offset+bk_files[file_id].data_offset) == -1) { perror("ERROR: pread failed"); exit(1); diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index a85e131b..2c011e58 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -7,3 +7,9 @@ add_subdirectory(readload) add_subdirectory(uffd_test) add_subdirectory(churn) add_subdirectory(rwseq) +if (BUILD_FITS) + message(STATUS "Building FITS") + add_subdirectory(FITS) +else() + message(STATUS "Not building FITS") +endif() From 1b0a79d7b08dd7792d8f5d83657d87efcceb0b2a Mon Sep 17 00:00:00 2001 From: Marty McFadden Date: Thu, 14 Dec 2017 13:27:19 -0800 Subject: [PATCH 24/32] Make umap threaded (#18) * Worker threads each handle block of contiguous pages. * Removed assertion preventing umap_mf from handling > 1 file * Made FITS compilation optional with BUILD_FITS option * Dynamically determining number of uffd_threads --- include/umap.h | 4 +- src/umap.cpp | 1047 ++++++++++++++++----------- tests/CMakeLists.txt | 4 +- tests/FITS/multiple.cpp | 4 + tests/tools/adjust_free_mem | 82 +++ tests/tools/flush_cache | 29 + tests/tools/freemem | 4 + tests/tools/waste_memory | 8 + tests/umapmillions/CMakeLists.txt | 23 + tests/umapmillions/umapmillions.cpp | 97 +++ 10 files changed, 874 insertions(+), 428 deletions(-) create mode 100755 tests/tools/adjust_free_mem create mode 100755 tests/tools/flush_cache create mode 100755 tests/tools/freemem create mode 100644 tests/umapmillions/CMakeLists.txt create mode 100644 tests/umapmillions/umapmillions.cpp diff --git a/include/umap.h b/include/umap.h index 81f26310..b2a71cc1 100644 --- a/include/umap.h +++ b/include/umap.h @@ -44,8 +44,8 @@ void* umap_mf(void* addr, int num_backing_file, umap_backing_file* backing_files ); -unsigned long umap_cfg_get_bufsize( void ); -void umap_cfg_set_bufsize( unsigned long page_bufsize ); +uint64_t umap_cfg_get_bufsize( void ); +void umap_cfg_set_bufsize( uint64_t page_bufsize ); #ifdef __cplusplus } #endif diff --git a/src/umap.cpp b/src/umap.cpp index b406e825..4b173cfc 100644 --- a/src/umap.cpp +++ b/src/umap.cpp @@ -11,9 +11,11 @@ #include #include #include +#include #include #include #include +#include #include #include #include @@ -28,6 +30,7 @@ #include // sched_getcpu() #include #include +#include #include "umap.h" // API to library #include "umaplog.h" // umap_log() @@ -36,345 +39,576 @@ using namespace std; const int UMAP_VERSION_MAJOR = 0; const int UMAP_VERSION_MINOR = 0; const int UMAP_VERSION_PATCH = 1; -const unsigned long UMAP_DEFAULT_PBSIZE = 16; -static unsigned long umap_page_bufsize = UMAP_DEFAULT_PBSIZE; + +static const int UMAP_UFFD_MAX_MESSAGES = 256; +static unsigned int uffd_threads; +const uint64_t UMAP_DEFAULT_PAGES_PER_UFFD_HANDLER = 1024; // Separate Page Buffer per Thread + +static const uint64_t UMAP_PAGES_PER_BLOCK = 1024; +static uint64_t umap_pages_per_uffd_handler = UMAP_DEFAULT_PAGES_PER_UFFD_HANDLER; + static long page_size; class umap_page; -class umap_umap; -class umap_stats { - public: - umap_stats(): stat_faults{0}, dirty_evicts{0}, clean_evicts{0}, wp_messages{0}, read_faults{0}, write_faults{0}, sigbus{0}, stuck_wp{0} {}; - - void print_stats(void) { - cerr << stat_faults << " Faults\n" - << read_faults << " READ Faults" << endl - << write_faults << " WRITE Faults" << endl - << wp_messages << " WP Messages" << endl - << dirty_evicts << " Dirty Evictions" << endl - << clean_evicts << " Clean Evictions" << endl - << sigbus << " SIGBUS Errors" << endl - << stuck_wp << " Stuck WP Workarounds" << endl; - } +struct umap_PageBlock; +class umap_page_buffer; +class umap_stats; +class __umap; +class UserFaultHandler; + +// +// |------------------------- umap() provided Region ----------------------------| +// |------------------------- umap() provided backing file(s) -------------------| +// |- Page Block 1 -|- Page Block 2 -|- ... -|- Page Block N-1 -|- Page Block N -| +// +// _umap organizes a region of memory into a set of blocks of pages. The blocks +// of pages are then distributed evenly to a set of UserFaultHandler objects. +// +class _umap { + friend UserFaultHandler; + public: + _umap(void* _region, uint64_t _rsize, int num_backing_file, umap_backing_file* backing_files); + ~_umap(); + + static inline void* UMAP_PAGE_BEGIN(const void* a) { + return (void*)((uint64_t)a & ~(page_size-1)); + } + vector ufault_handlers; + + private: + void* region; + uint64_t region_size; + int backingfile_fd; + vector bk_files; + bool uffd_time_to_stop_working; +}; - uint64_t stat_faults; - uint64_t dirty_evicts; - uint64_t clean_evicts; - uint64_t wp_messages; - uint64_t read_faults; - uint64_t write_faults; - uint64_t sigbus; - uint64_t stuck_wp; +class UserFaultHandler { + friend _umap; + public: + UserFaultHandler(_umap* _um, const vector& _pblks, uint64_t _pbuf_size); + ~UserFaultHandler(void); + void stop_uffd_worker( void ) noexcept { + _u->uffd_time_to_stop_working = true; + uffd_worker->join(); + }; + bool page_is_in_umap(const void* page_begin); + umap_page_buffer* get_pagebuffer() { return pagebuffer; } + + umap_stats* stat; + private: + _umap* _u; + vector PageBlocks; + uint64_t pbuf_size; + umap_page_buffer* pagebuffer; + vector umessages; + + int userfault_fd; + char* tmppagebuf; + thread* uffd_worker; + + void evict_page(umap_page* page); + void uffd_handler(void); + void pagefault_event(const struct uffd_msg& msg); + void enable_wp_on_pages_and_wake(uint64_t, int64_t); + void disable_wp_on_pages(uint64_t, int64_t, bool); }; -class _umap { - friend class umap_page; - public: - _umap(void* _mmap_addr, size_t _mmap_length, int num_backing_file, umap_backing_file* backing_files); - void uffd_finalize(void); +class umap_stats { + public: + umap_stats(): + stat_faults{0}, + dirty_evicts{0}, + clean_evicts{0}, + wp_messages{0}, + read_faults{0}, + write_faults{0}, + sigbus{0}, + stuck_wp{0}, + dropped_dups{0} + {}; + + void print_stats(void); + + uint64_t stat_faults; + uint64_t dirty_evicts; + uint64_t clean_evicts; + uint64_t wp_messages; + uint64_t read_faults; + uint64_t write_faults; + uint64_t sigbus; + uint64_t stuck_wp; + uint64_t dropped_dups; +}; - bool is_in_umap(const void* page_begin) { - return page_begin >= segment_address && page_begin < (void*)((uint64_t)segment_address + segment_length); - } +struct umap_PageBlock { + void* base; + uint64_t length; +}; - inline int get_page_index(void* _p) { - auto it = page_index.find(_p); - return (it == page_index.end()) ? -1 : it->second; - } +class umap_page_buffer { + /* + * TODO: Make the single page buffer threadsafe + */ + public: + umap_page_buffer(uint64_t pbuffersize); + ~umap_page_buffer(); + umap_page* alloc_page_desc(void* page); + void dealloc_page_desc(umap_page* page_desc); + + void add_page_desc_to_inmem(umap_page* page_desc); + umap_page* get_page_desc_to_evict(); + umap_page* find_inmem_page_desc(void* page_addr); // Finds page_desc for page_addr in inmem_page_descriptors + + private: + uint64_t page_buffer_size; + deque free_page_descriptors; + deque inmem_page_descriptors; + unordered_map inmem_page_map; +}; - static inline void* UMAP_PAGE_BEGIN(const void* a) { - return (void*)((uint64_t)a & ~(page_size-1)); - } +class umap_page { + public: + umap_page(): page{nullptr}, dirty{false} {} + bool page_is_dirty() { return dirty; } + void mark_page_dirty() { dirty = true; } + void mark_page_clean() { dirty = false; } + void* get_page(void) { return page; } + + void set_page(void* _p); + private: + void* page; + bool dirty; +}; - umap_stats stat; - - private: - void* segment_address; - size_t segment_length; - int backingfile_fd; - vector bk_files; - unsigned long page_buffer_size; - bool time_to_stop; - int userfault_fd; - int next_page_alloc_index; - thread *listener; - vector pages_in_memory; - char* tmppagebuf; - unordered_map page_index; - - void evict_page(umap_page* page); - void remove_page_index(void* _p) { page_index.erase(_p); } - void uffd_handler(void); - void pagefault_event(const struct uffd_msg& msg); - void logpagefault_event(const struct uffd_msg& msg); - inline void stop_faultlistener( void ) noexcept { - time_to_stop = true; - listener->join(); - } +static unordered_map active_umaps; - inline void add_page_index(int idx, void* page) { - page_index[page] = idx; - } +// +// Library Interface Entry +// +void* umap(void* addr, uint64_t length, int prot, int flags, int fd, off_t offset) +{ + struct stat file; + fstat(fd,&file); + struct umap_backing_file file1={.fd = fd, .data_size = file.st_size, .data_offset = offset}; + return umap_mf(addr, length, prot, flags, 1, &file1); +} - void delete_page_index(void* page) { - int num_erased; - num_erased = page_index.erase(page); - assert(num_erased == 1); - } +void* umap_mf(void* bass_addr, uint64_t region_size, int prot, int flags, int num_backing_file, umap_backing_file* backing_files) +{ + assert((region_size % page_size) == 0); - void enable_wp_on_pages_and_wake(uint64_t, int64_t); - void disable_wp_on_pages(uint64_t, int64_t); -}; + if (!(flags & UMAP_PRIVATE) || flags & ~(UMAP_PRIVATE|UMAP_FIXED)) { + cerr << "umap: Invalid flags: " << hex << flags << endl; + return UMAP_FAILED; + } -class umap_page { - public: - umap_page(_umap* _u): u{_u}, page{nullptr}, dirty{false} {} - bool page_is_dirty() { return dirty; } - void mark_page_dirty() { dirty = true; } - void mark_page_clean() { dirty = false; } - void* get_page(void) { return page; } - - void set_page(void* _p) { - page = _p; - snapshot = u->stat; - } + void* region = mmap(bass_addr, region_size, prot, flags | (MAP_ANONYMOUS | MAP_NORESERVE), -1, 0); - string statstring() { - stringstream ss; + if (region == MAP_FAILED) { + perror("ERROR: mmap failed: "); + return UMAP_FAILED; + } - ss << "ED(" << (u->stat.dirty_evicts - snapshot.dirty_evicts) - << ") EC(" << (u->stat.clean_evicts - snapshot.clean_evicts) - << ") WP(" << (u->stat.wp_messages - snapshot.wp_messages) - << ") RF(" << (u->stat.read_faults - snapshot.read_faults) - << ") WF(" << (u->stat.write_faults - snapshot.write_faults) - << ")"; - return ss.str(); - } + try { + active_umaps[region] = new _umap{region, region_size, num_backing_file, backing_files}; + } catch(const std::exception& e) { + cerr << __FUNCTION__ << " Failed to launch _umap: " << e.what() << endl; + return UMAP_FAILED; + } catch(...) { + cerr << "umap failed to instantiate _umap object\n"; + return UMAP_FAILED; + } + return region; +} - private: - _umap* u; - void* page; - bool dirty; - umap_stats snapshot; -}; +int uunmap(void* addr, uint64_t length) +{ + auto it = active_umaps.find(addr); -static unordered_map active_umaps; + if (it != active_umaps.end()) { + delete it->second; + active_umaps.erase(it); + } + return 0; +} -void* umap(void* addr, size_t length, int prot, int flags, int fd, off_t offset) +uint64_t umap_cfg_get_bufsize( void ) { - struct stat file; - fstat(fd,&file); - struct umap_backing_file file1={.fd = fd, .data_size = file.st_size, .data_offset = offset}; - return umap_mf(addr, length, prot, flags, 1, &file1); + return (umap_pages_per_uffd_handler * uffd_threads); } -//--------------------------for multi-file support---------------------- -void* umap_mf(void* addr, size_t length, int prot, int flags, int num_backing_file, umap_backing_file* backing_files) +void umap_cfg_set_bufsize( uint64_t page_bufsize ) { - if (!(flags & UMAP_PRIVATE) || flags & ~(UMAP_PRIVATE|UMAP_FIXED)) { - cerr << "umap: Invalid flags: " << hex << flags << endl; - return UMAP_FAILED; - } + umap_pages_per_uffd_handler = (page_bufsize / uffd_threads); - flags |= (MAP_ANONYMOUS | MAP_NORESERVE); + if (umap_pages_per_uffd_handler == 0) + umap_pages_per_uffd_handler = 1; +} - void* region = mmap(addr, length, prot, flags, -1, 0); - - if (region == MAP_FAILED) { - perror("ERROR: mmap failed: "); - return UMAP_FAILED; - } +// +// Signal Handlers +// +static struct sigaction saved_sa; + +void sighandler(int signum, siginfo_t *info, void* buf) +{ + if (signum != SIGBUS) { + cerr << "Unexpected signal: " << signum << " received\n"; + exit(1); + } - _umap *p_umap; - try { - p_umap = new _umap{region, length, num_backing_file, backing_files}; - } catch(const std::exception& e) { - cerr << __FUNCTION__ << " Failed to launch _umap: " << e.what() << endl; - return UMAP_FAILED; - } catch(...) { - cerr << "umap failed to instantiate _umap object\n"; - return UMAP_FAILED; + void* page_begin = _umap::UMAP_PAGE_BEGIN(info->si_addr); + + for (auto it : active_umaps) { + for (auto ufh : it.second->ufault_handlers) { + if (ufh->page_is_in_umap(page_begin)) { + ufh->stat->sigbus++; + + if (ufh->get_pagebuffer()->find_inmem_page_desc(page_begin) != nullptr) + umapdbg("SIGBUS %p (page=%p) ALREADY IN UMAP PAGE BUFFER!\n", info->si_addr, page_begin); + else + umapdbg("SIGBUS %p (page=%p) Not currently in umap page buffer\n", info->si_addr, page_begin); + return; + } } + } + umapdbg("SIGBUS %p (page=%p) ADDRESS OUTSIDE OF UMAP RANGE\n", info->si_addr, page_begin); + assert(0); +} - active_umaps[region] = p_umap; - return region; +void __attribute ((constructor)) init_umap_lib( void ) +{ + struct sigaction act; + + umaplog_init(); + + if ((page_size = sysconf(_SC_PAGESIZE)) == -1) { + perror("ERROR: sysconf(_SC_PAGESIZE)"); + throw -1; + } + + unsigned int n = std::thread::hardware_concurrency(); + uffd_threads = (n == 0) ? 16 : n; + + act.sa_handler = NULL; + act.sa_sigaction = sighandler; + if (sigemptyset(&act.sa_mask) == -1) { + perror("ERROR: sigemptyset: "); + exit(1); + } + + act.sa_flags = SA_NODEFER | SA_SIGINFO; + + if (sigaction(SIGBUS, &act, &saved_sa) == -1) { + perror("ERROR: sigaction: "); + exit(1); + } } -int uunmap(void* addr, size_t length) +void __attribute ((destructor)) fine_umap_lib( void ) { - auto it = active_umaps.find(addr); + if (sigaction(SIGBUS, &saved_sa, NULL) == -1) { + perror("ERROR: sigaction restore: "); + exit(1); + } - if (it != active_umaps.end()) { - it->second->uffd_finalize(); - delete it->second; - active_umaps.erase(it); - } - return 0; + for (auto it : active_umaps) { + delete it.second; + } } -unsigned long umap_cfg_get_bufsize( void ) +// +// _umap class implementation +// +_umap::_umap(void* _region, uint64_t _rsize, int num_backing_file, umap_backing_file* backing_files) + : region{_region}, region_size{_rsize}, uffd_time_to_stop_working{false} { - return umap_page_bufsize; + for (int i=0;i segs{ pb }; + + ufault_handlers.push_back( new UserFaultHandler{this, segs, umap_pages_per_uffd_handler} ); + } + } catch(const std::exception& e) { + cerr << __FUNCTION__ << " Failed to launch _umap: " << e.what() << endl; + throw -1; + } catch(...) { + cerr << "umap failed to instantiate _umap object\n"; + throw -1; + } } -void umap_cfg_set_bufsize( unsigned long page_bufsize ) +_umap::~_umap(void) { - umap_page_bufsize = page_bufsize; + umap_stats t; + + for ( auto handler : ufault_handlers ) { + handler->stop_uffd_worker(); + t.stat_faults += handler->stat->stat_faults; + t.dirty_evicts += handler->stat->dirty_evicts; + t.clean_evicts += handler->stat->clean_evicts; + t.wp_messages += handler->stat->wp_messages; + t.read_faults += handler->stat->read_faults; + t.write_faults += handler->stat->write_faults; + t.sigbus += handler->stat->sigbus; + t.stuck_wp += handler->stat->stuck_wp; + t.dropped_dups += handler->stat->dropped_dups; + } + + t.print_stats(); + + for ( auto handler : ufault_handlers ) + delete handler; } -//--------------------------for multi-file support---------------------- -_umap::_umap(void* _mmap_addr, size_t _mmap_length,int num_backing_file,umap_backing_file* backing_files) - : segment_address{_mmap_addr}, segment_length{_mmap_length}, - time_to_stop{false}, next_page_alloc_index{0} +UserFaultHandler::UserFaultHandler(_umap* _um, const vector& _pblks, uint64_t _pbuf_size) + : + stat{ new umap_stats }, + _u{_um}, + PageBlocks{_pblks}, + pbuf_size{_pbuf_size}, + pagebuffer{ new umap_page_buffer{_pbuf_size} } { - for (int i=0;ibackingfile_fd=_u->bk_files[0].fd; + uffd_worker = new thread{&UserFaultHandler::uffd_handler, this}; +} + +UserFaultHandler::~UserFaultHandler(void) +{ + // + // Now that all of our worker threads have stopped, we can flush everything + // + for ( auto seg : PageBlocks ) { + struct uffdio_register uffdio_register; + uffdio_register.range.start = (uint64_t)seg.base; + uffdio_register.range.len = seg.length; + + if (ioctl(userfault_fd, UFFDIO_UNREGISTER, &uffdio_register.range)) { + perror("ERROR: UFFDIO_UNREGISTER"); + exit(1); + } + } + + free(tmppagebuf); + delete pagebuffer; + delete stat; + delete uffd_worker; +} + +#if 0 +static string uffd_pf_reason(const struct uffd_msg& msg) +{ + if ((msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) == (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) + return "UFFD_PAGEFAULT_FLAG_WP UFFD_PAGEFAULT_FLAG_WRITE"; + else if (msg.arg.pagefault.flags & UFFD_PAGEFAULT_FLAG_WP) + return "UFFD_PAGEFAULT_FLAG_WP"; + else if (msg.arg.pagefault.flags & UFFD_PAGEFAULT_FLAG_WRITE) + return "UFFD_PAGEFAULT_FLAG_WRITE"; + else + return "UFFD_PAGEFAULT_READ"; +} +#endif + +struct less_than_key +{ + inline bool operator() (const struct uffd_msg& lhs, const struct uffd_msg& rhs) + { + if (lhs.arg.pagefault.address == rhs.arg.pagefault.address) + return (lhs.arg.pagefault.flags >= rhs.arg.pagefault.address); + else + return (lhs.arg.pagefault.address < rhs.arg.pagefault.address); + } +}; - if (posix_memalign((void**)&tmppagebuf, (size_t)512, page_size)) { - perror("ERROR: posix_memalign:"); - throw -1; +void UserFaultHandler::uffd_handler(void) +{ + prctl(PR_SET_NAME, "UMAP UFFD Hdlr", 0, 0, 0); + for (;;) { + struct pollfd pollfd[1]; + pollfd[0].fd = userfault_fd; + pollfd[0].events = POLLIN; + + if (_u->uffd_time_to_stop_working) { + // + // Flush the in-memory page buffer + // + for (umap_page* ep = pagebuffer->get_page_desc_to_evict(); ep != nullptr; ep = pagebuffer->get_page_desc_to_evict()) { + evict_page(ep); + pagebuffer->dealloc_page_desc(ep); + } + return; + } + + // wait for a userfaultfd event to occur + int pollres = poll(pollfd, 1, 2000); + + switch (pollres) { + case -1: + perror("ERROR: poll/userfaultfd"); + continue; + case 0: + continue; + case 1: + break; + default: + cerr << __FUNCTION__ << " unexpected uffdio poll result\n"; + exit(1); } - if (tmppagebuf == nullptr) { - cerr << "Unable to allocate 512 bytes for temporary buffer\n"; - close(userfault_fd); - throw -1; + if (pollfd[0].revents & POLLERR) { + cerr << __FUNCTION__ << " POLLERR\n"; + exit(1); } - umapdbg("umap: Setting up listener for %lu page buffer\n", page_buffer_size); + if (!pollfd[0].revents & POLLIN) + continue; - pages_in_memory.reserve(page_buffer_size); - for (unsigned long i = 0; i < page_buffer_size; ++i) { - umap_page *ump = new umap_page(this); - pages_in_memory.push_back(ump); + int readres = read(userfault_fd, &umessages[0], UMAP_UFFD_MAX_MESSAGES * sizeof(struct uffd_msg)); + + if (readres == -1) { + if (errno == EAGAIN) + continue; + perror("ERROR: read/userfaultfd"); + exit(1); } - backingfile_fd=bk_files[0].fd; - listener = new thread{&_umap::uffd_handler,this}; -} + assert(readres % sizeof(struct uffd_msg) == 0); -void _umap::uffd_handler(void) -{ - for (;;) { - struct uffd_msg msg; - - struct pollfd pollfd[1]; - pollfd[0].fd = userfault_fd; - pollfd[0].events = POLLIN; - - // wait for a userfaultfd event to occur - int pollres = poll(pollfd, 1, 2000); - - if (time_to_stop) - return; - - switch (pollres) { - case -1: - perror("ERROR: poll/userfaultfd"); - continue; - case 0: - continue; - case 1: - break; - default: - cerr << __FUNCTION__ << " unexpected uffdio poll result\n"; - exit(1); - } + int msgs = readres / sizeof(struct uffd_msg); - if (pollfd[0].revents & POLLERR) { - cerr << __FUNCTION__ << " POLLERR\n"; - exit(1); - } + if (msgs < 1) { + cerr << __FUNCTION__ << "invalid msg size " << readres << " " << msgs; + exit(1); + } - if (!pollfd[0].revents & POLLIN) - continue; + sort(umessages.begin(), umessages.begin()+msgs, less_than_key()); - int readres = read(userfault_fd, &msg, sizeof(msg)); - if (readres == -1) { - if (errno == EAGAIN) - continue; - perror("ERROR: read/userfaultfd"); - exit(1); - } +#if 0 + stringstream ss; + ss << msgs << " Messages:\n"; + for (int i = 0; i < msgs; ++i) { + ss << " " << uffd_pf_reason(umessages[i]) << endl; + } + umapdbg("%s\n", ss.str().c_str()); +#endif - if (readres != sizeof(msg)) { - cerr << __FUNCTION__ << "invalid msg size\n"; - exit(1); - } + uint64_t last_addr = 0; + for (int i = 0; i < msgs; ++i) { + if (umessages[i].event != UFFD_EVENT_PAGEFAULT) { + cerr << __FUNCTION__ << " Unexpected event " << hex << umessages[i].event << endl; + continue; + } - if (msg.event != UFFD_EVENT_PAGEFAULT) { - cerr << __FUNCTION__ << " Unexpected event " << hex << msg.event << endl; - continue; - } - - if (umap_logging) - logpagefault_event(msg); // Debug log what will happen with this event. - pagefault_event(msg); // At this point, we know we have had a page fault. Let's handle it. + if (umessages[i].arg.pagefault.address == last_addr) { + stat->dropped_dups++; + continue; // Skip pages we have already copied in + } + + last_addr = umessages[i].arg.pagefault.address; + stat->stat_faults++; + pagefault_event(umessages[i]); // At this point, we know we have had a page fault. Let's handle it. } + } } -void _umap::pagefault_event(const struct uffd_msg& msg) +void UserFaultHandler::pagefault_event(const struct uffd_msg& msg) { void* page_begin = (void*)msg.arg.pagefault.address; - int bufidx = get_page_index(page_begin); - umap_page* pm; - - stat.stat_faults++; - - assert(page_begin == UMAP_PAGE_BEGIN(page_begin)); - - if (bufidx >= 0) { - pm = pages_in_memory[bufidx]; + umap_page* pm = pagebuffer->find_inmem_page_desc(page_begin); + stringstream ss; + if (pm != nullptr) { if (msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) { if (!pm->page_is_dirty()) { pm->mark_page_dirty(); - disable_wp_on_pages((uint64_t)page_begin, 1); - stat.wp_messages++; + disable_wp_on_pages((uint64_t)page_begin, 1, false); + stat->wp_messages++; } - else { + else if (msg.arg.pagefault.flags & UFFD_PAGEFAULT_FLAG_WP) { struct uffdio_copy copy; copy.src = (uint64_t)tmppagebuf; copy.dst = (uint64_t)page_begin; copy.len = page_size; copy.mode = UFFDIO_COPY_MODE_WP; - stat.stuck_wp++; + stat->stuck_wp++; + umapdbg("EVICT WORKAROUND FOR %p\n", page_begin); pm->mark_page_clean(); @@ -386,16 +620,8 @@ void _umap::pagefault_event(const struct uffd_msg& msg) perror("ERROR12: ioctl(UFFDIO_COPY nowake)"); exit(1); } - } - } - - struct uffdio_range wake; - wake.start = (uint64_t)page_begin; - wake.len = page_size; - if (ioctl(userfault_fd, UFFDIO_WAKE, &wake) == -1) { - perror("ERROR: ioctl(UFFDIO_WAKE)"); - exit(1); + } } return; } @@ -404,24 +630,33 @@ void _umap::pagefault_event(const struct uffd_msg& msg) // Page not in memory, read it in and (potentially) evict someone // int file_id=0; - off_t offset=(uint64_t)page_begin - (uint64_t)segment_address; + off_t offset=(uint64_t)page_begin - (uint64_t)_u->region; - file_id = offset/bk_files[0].data_size; //find the file id and offset number - offset %= bk_files[0].data_size; + file_id = offset/_u->bk_files[0].data_size; //find the file id and offset number + offset %= _u->bk_files[0].data_size; - if (pread(bk_files[file_id].fd, tmppagebuf, page_size, offset+bk_files[file_id].data_offset) == -1) { + if (pread(_u->bk_files[file_id].fd, tmppagebuf, page_size, offset+_u->bk_files[file_id].data_offset) == -1) { perror("ERROR: pread failed"); exit(1); } - pm = pages_in_memory[next_page_alloc_index]; + if (msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) + ss << "PF(" << msg.arg.pagefault.flags << " WRITE) (UFFDIO_COPY) @(" << page_begin << ")"; + else + ss << "PF(" << msg.arg.pagefault.flags << " READ) (UFFDIO_COPY) @(" << page_begin << ")"; - if (pm->get_page()) { - delete_page_index(pm->get_page()); - evict_page(pm); + umapdbg("%s\n", ss.str().c_str()); + for (pm = pagebuffer->alloc_page_desc(page_begin); pm == nullptr; pm = pagebuffer->alloc_page_desc(page_begin)) { + umap_page* ep = pagebuffer->get_page_desc_to_evict(); + assert(ep != nullptr); + + ss << " Evicting " << (ep->page_is_dirty() ? "Dirty" : "Clean") << "Page " << ep->get_page(); + evict_page(ep); + pagebuffer->dealloc_page_desc(ep); } - pm->set_page(page_begin); - add_page_index(next_page_alloc_index, page_begin); + pagebuffer->add_page_desc_to_inmem(pm); + + umapdbg("%s\n", ss.str().c_str()); struct uffdio_copy copy; copy.src = (uint64_t)tmppagebuf; @@ -430,7 +665,7 @@ void _umap::pagefault_event(const struct uffd_msg& msg) copy.mode = 0; if (msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) { - stat.write_faults++; + stat->write_faults++; pm->mark_page_dirty(); if (ioctl(userfault_fd, UFFDIO_COPY, ©) == -1) { @@ -439,7 +674,7 @@ void _umap::pagefault_event(const struct uffd_msg& msg) } } else { - stat.read_faults++; + stat->read_faults++; pm->mark_page_clean(); copy.mode = UFFDIO_COPY_MODE_WP; @@ -450,74 +685,42 @@ void _umap::pagefault_event(const struct uffd_msg& msg) assert(memcmp(tmppagebuf, page_begin, page_size) == 0); } - next_page_alloc_index = (next_page_alloc_index +1) % page_buffer_size; } -void _umap::logpagefault_event(const struct uffd_msg& msg) +bool UserFaultHandler::page_is_in_umap(const void* page_begin) { - stringstream ss; - void* page_begin = (void*)msg.arg.pagefault.address; - umap_page* pm; - - assert(page_begin == UMAP_PAGE_BEGIN(page_begin)); - - int bufidx = get_page_index(page_begin); - - if (bufidx >= 0) { - pm = pages_in_memory[bufidx]; - - assert((msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) == (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)); - ss << "PF(" << msg.arg.pagefault.flags << " WP+WRITE) (In Memory Already) @(" - << page_begin << ") " - << (pm->page_is_dirty() ? "Already Dirty " : "Clean ") - << pm->statstring(); - } - else { - pm = pages_in_memory[next_page_alloc_index]; - if (msg.arg.pagefault.flags & (UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_WRITE)) { - ss << "PF(" << msg.arg.pagefault.flags << " WRITE) (UFFDIO_COPY) @(" << page_begin << ")" - << "ED(0) EC(0) WP(0) RF(0) WF(0)"; - } - else { - ss << "PF(" << msg.arg.pagefault.flags << " READ) (UFFDIO_COPY) @(" << page_begin << ")" - << "ED(0) EC(0) WP(0) RF(0) WF(0)"; - } - - if (pm->get_page()) { - ss << " Evicting " - << (pm->page_is_dirty() ? "Dirty" : "Clean") - << "Page " << pm->get_page(); - } - } - umapdbg("%s\n", ss.str().c_str()); + for ( auto it : PageBlocks ) + if (page_begin >= it.base && page_begin < (void*)((uint64_t)it.base + it.length)) + return true; + return false; } -void _umap::evict_page(umap_page* pb) +void UserFaultHandler::evict_page(umap_page* pb) { - uint64_t* page = (uint64_t*)pb->get_page(); + uint64_t* page = (uint64_t*)pb->get_page(); - if (pb->page_is_dirty()) { - stat.dirty_evicts++; + if (pb->page_is_dirty()) { + stat->dirty_evicts++; - // Prevent further writes. No need to do this if not dirty because WP is already on. + // Prevent further writes. No need to do this if not dirty because WP is already on. - enable_wp_on_pages_and_wake((uint64_t)page, 1); - if (pwrite(backingfile_fd, (void*)page, page_size, (off_t)((uint64_t)page - (uint64_t)segment_address)) == -1) { - perror("ERROR: pwrite failed"); - assert(0); - } - } - else { - stat.clean_evicts++; + enable_wp_on_pages_and_wake((uint64_t)page, 1); + if (pwrite(_u->backingfile_fd, (void*)page, page_size, (off_t)((uint64_t)page - (uint64_t)_u->region)) == -1) { + perror("ERROR: pwrite failed"); + assert(0); } + } + else { + stat->clean_evicts++; + } - if (madvise((void*)page, page_size, MADV_DONTNEED) == -1) { - perror("ERROR: madvise"); - assert(0); - } + if (madvise((void*)page, page_size, MADV_DONTNEED) == -1) { + perror("ERROR: madvise"); + assert(0); + } - disable_wp_on_pages((uint64_t)page, 1); - pb->set_page(nullptr); + disable_wp_on_pages((uint64_t)page, 1, true); + pb->set_page(nullptr); } // @@ -527,124 +730,122 @@ void _umap::evict_page(umap_page* pb) // UFFDIO_WRITEPROTECT_MODE_DONTWAKE when enabling WP with UFFDIO_WRITEPROTECT_MODE_WP. UFFDIO_WRITEPROTECT_MODE_DONTWAKE is only // allowed when disabling WP. // -void _umap::enable_wp_on_pages_and_wake(uint64_t start, int64_t num_pages) +void UserFaultHandler::enable_wp_on_pages_and_wake(uint64_t start, int64_t num_pages) { - struct uffdio_writeprotect wp; - wp.range.start = start; - wp.range.len = num_pages * page_size; - wp.mode = UFFDIO_WRITEPROTECT_MODE_WP; + struct uffdio_writeprotect wp; + wp.range.start = start; + wp.range.len = num_pages * page_size; + wp.mode = UFFDIO_WRITEPROTECT_MODE_WP; - //umapdbg("+WRITEPROTECT (%p -- %p)\n", (void*)start, (void*)(start+((num_pages*page_size)-1))); + //umapdbg("+WRITEPROTECT (%p -- %p)\n", (void*)start, (void*)(start+((num_pages*page_size)-1))); - if (ioctl(userfault_fd, UFFDIO_WRITEPROTECT, &wp) == -1) { - perror("ERROR: ioctl(UFFDIO_WRITEPROTECT Enable)"); - exit(1); - } + if (ioctl(userfault_fd, UFFDIO_WRITEPROTECT, &wp) == -1) { + perror("ERROR: ioctl(UFFDIO_WRITEPROTECT Enable)"); + exit(1); + } } // // We intentionally do not wake up faulting thread when disabling WP. This is to handle the write-fault case when the page needs to be copied in. // -void _umap::disable_wp_on_pages(uint64_t start, int64_t num_pages) +void UserFaultHandler::disable_wp_on_pages(uint64_t start, int64_t num_pages, bool do_not_awaken) { - struct uffdio_writeprotect wp; - wp.range.start = start; - wp.range.len = page_size * num_pages; - wp.mode = UFFDIO_WRITEPROTECT_MODE_DONTWAKE; + struct uffdio_writeprotect wp; + wp.range.start = start; + wp.range.len = page_size * num_pages; + //wp.mode = UFFDIO_WRITEPROTECT_MODE_DONTWAKE; + wp.mode = do_not_awaken ? UFFDIO_WRITEPROTECT_MODE_DONTWAKE : 0; - //umapdbg("-WRITEPROTECT (%p -- %p)\n", (void*)start, (void*)(start+((num_pages*page_size)-1))); + //umapdbg("-WRITEPROTECT (%p -- %p)\n", (void*)start, (void*)(start+((num_pages*page_size)-1))); - if (ioctl(userfault_fd, UFFDIO_WRITEPROTECT, &wp) == -1) { - perror("ERROR: ioctl(UFFDIO_WRITEPROTECT Disable)"); - exit(1); - } + if (ioctl(userfault_fd, UFFDIO_WRITEPROTECT, &wp) == -1) { + perror("ERROR: ioctl(UFFDIO_WRITEPROTECT Disable)"); + exit(1); + } } -void _umap::uffd_finalize() +// +// umap_page_buffer class implementation +// +umap_page_buffer::umap_page_buffer(uint64_t pbuffersize) : page_buffer_size{pbuffersize} { - for (auto it : pages_in_memory) { - if (it->get_page()) { - delete_page_index(it->get_page()); - evict_page(it); - delete (it); - } - } - - stat.print_stats(); - - stop_faultlistener(); - - struct uffdio_register uffdio_register; - uffdio_register.range.start = (uint64_t)segment_address; - uffdio_register.range.len = segment_length; - - if (ioctl(userfault_fd, UFFDIO_UNREGISTER, &uffdio_register.range)) { - perror("ERROR: UFFDIO_UNREGISTER"); - exit(1); - } + for (uint64_t i = 0; i < page_buffer_size; ++i) + free_page_descriptors.push_front(new umap_page()); } -static struct sigaction saved_sa; - -void sighandler(int signum, siginfo_t *info, void* buf) +umap_page_buffer::~umap_page_buffer() { - if (signum != SIGBUS) { - cerr << "Unexpected signal: " << signum << " received\n"; - exit(1); - } + assert(inmem_page_map.size() == 0); + assert(inmem_page_descriptors.size() == 0); + assert(free_page_descriptors.size() == page_buffer_size); - void* page_begin = _umap::UMAP_PAGE_BEGIN(info->si_addr); - - for (auto it : active_umaps) { - if (it.second->is_in_umap(page_begin)) { - it.second->stat.sigbus++; - - if (it.second->get_page_index(page_begin) >= 0) - umapdbg("SIGBUS %p (page=%p) ALREADY IN UMAP PAGE BUFFER!\n", info->si_addr, page_begin); - else - umapdbg("SIGBUS %p (page=%p) Not currently in umap page buffer\n", info->si_addr, page_begin); - return; - } - } - umapdbg("SIGBUS %p (page=%p) ADDRESS OUTSIDE OF UMAP RANGE\n", info->si_addr, page_begin); - assert(0); + for (unsigned long i = 0; i < page_buffer_size; ++i) + delete free_page_descriptors[i]; } -void __attribute ((constructor)) init_umap_lib( void ) +umap_page* umap_page_buffer::alloc_page_desc(void* page) { - struct sigaction act; + umap_page* p = nullptr; + if (!free_page_descriptors.empty()) { + p = free_page_descriptors.back(); + free_page_descriptors.pop_back(); + p->set_page(page); + } + return p; +} - umaplog_init(); +void umap_page_buffer::dealloc_page_desc(umap_page* page_desc) +{ + page_desc->mark_page_clean(); + page_desc->set_page(nullptr); + free_page_descriptors.push_front(page_desc); +} - if ((page_size = sysconf(_SC_PAGESIZE)) == -1) { - perror("ERROR: sysconf(_SC_PAGESIZE)"); - throw -1; - } +void umap_page_buffer::add_page_desc_to_inmem(umap_page* page_desc) +{ + inmem_page_map[page_desc->get_page()] = page_desc; + inmem_page_descriptors.push_front(page_desc); +} - act.sa_handler = NULL; - act.sa_sigaction = sighandler; - if (sigemptyset(&act.sa_mask) == -1) { - perror("ERROR: sigemptyset: "); - exit(1); - } +umap_page* umap_page_buffer::get_page_desc_to_evict() +{ + umap_page* p = nullptr; + if (!inmem_page_descriptors.empty()) { + p = inmem_page_descriptors.back(); + inmem_page_descriptors.pop_back(); + assert(p != nullptr); + assert(p->get_page() != nullptr); + inmem_page_map.erase(p->get_page()); + } + return p; +} - act.sa_flags = SA_NODEFER | SA_SIGINFO; +umap_page* umap_page_buffer::find_inmem_page_desc(void* page_addr) +{ + auto it = inmem_page_map.find(page_addr); + return((it == inmem_page_map.end()) ? nullptr : it->second); +} - if (sigaction(SIGBUS, &act, &saved_sa) == -1) { - perror("ERROR: sigaction: "); - exit(1); - } +// +// umap_page class implementation +// +void umap_page::set_page(void* _p) +{ + page = _p; } -void __attribute ((destructor)) fine_umap_lib( void ) +// +// umap_stats implementation +// +void umap_stats::print_stats(void) { - if (sigaction(SIGBUS, &saved_sa, NULL) == -1) { - perror("ERROR: sigaction restore: "); - exit(1); - } - - for (auto it : active_umaps) { - it.second->uffd_finalize(); - delete it.second; - } + cerr << stat_faults << " Faults\n" + << read_faults << " READ Faults" << endl + << write_faults << " WRITE Faults" << endl + << wp_messages << " WP Messages" << endl + << dirty_evicts << " Dirty Evictions" << endl + << clean_evicts << " Clean Evictions" << endl + << sigbus << " SIGBUS Errors" << endl + << stuck_wp << " Stuck WP Workarounds" << endl + << dropped_dups << " Dropped Duplicates" << endl; } diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 2c011e58..0c6c313c 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -2,14 +2,12 @@ add_subdirectory(libumaptest) add_subdirectory(umapcpu) add_subdirectory(umapsort) add_subdirectory(umaptest) +add_subdirectory(umapmillions) add_subdirectory(median) add_subdirectory(readload) add_subdirectory(uffd_test) add_subdirectory(churn) add_subdirectory(rwseq) if (BUILD_FITS) - message(STATUS "Building FITS") add_subdirectory(FITS) -else() - message(STATUS "Not building FITS") endif() diff --git a/tests/FITS/multiple.cpp b/tests/FITS/multiple.cpp index a39601d4..abd9c4e0 100644 --- a/tests/FITS/multiple.cpp +++ b/tests/FITS/multiple.cpp @@ -262,6 +262,10 @@ static int test_openfiles(const char *fn) } input.close(); } + else { + printf("Unable to find input.txt file\n"); + return -1; + } double start = gets(); median_calc(nlist,list,cube_median,cube); diff --git a/tests/tools/adjust_free_mem b/tests/tools/adjust_free_mem new file mode 100755 index 00000000..37d55959 --- /dev/null +++ b/tests/tools/adjust_free_mem @@ -0,0 +1,82 @@ +#!/bin/bash +function usage { + echo "Usage:" + echo "$0 Size - Size is the number of GB to adjust free memory to." + exit 1 +} + +function amounttowaste { + m=`grep MemFree /proc/meminfo | awk -v N=2 '{print $N}'` + echo $m + fm=$(((${m}/1024)/1024)) + waste=$((${fm}-${memtoleave})) + echo $fm GB Available, Wasting $waste GB +} + +function setuptmpfs { + if [ ! -d /mnt/tmpfs ]; then + sudo mkdir -p /mnt/tmpfs + fi + + # Unmount / Reset of already mounted + fs=`stat -f -c '%T' /mnt/tmpfs` + + if [ "$fs" = "tmpfs" ]; then + echo "Resetting tmpfs" + sudo umount /mnt/tmpfs + fi + + fs=`stat -f -c '%T' /mnt/tmpfs` + if [ "$fs" != "tmpfs" ]; then + if [ ! -d /mnt/tmpfs ]; then + sudo mkdir -p /mnt/tmpfs + fi + sudo chmod go+rwx /mnt/tmpfs + sudo mount -t tmpfs -o size=600g tmpfs /mnt/tmpfs + fs=`stat -f -c '%T' /mnt/tmpfs` + echo "/mnt/tmpfs mounted as: $fs" + else + echo "Unable to reset /mnt/tmpfs, exiting" + exit 1 + fi +} + +function drop_page_cache { + echo "Dropping page cache" + sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches' +} + +function disable_swap { + echo "Disabling swap" + sudo swapoff -a +} + +function turn_off_readahead { + fs=`mount | grep intel | cut -d " " -f 1` + sudo blockdev --setra 0 $fs + ra=`sudo blockdev --getra $fs` + echo "Read ahead set to $ra for $fs" +} + +function waste_memory { + echo "Wasting $waste GB of memory" + + #echo numactl -i 1 dd if=/dev/zero of=/mnt/tmpfs/${waste}GB bs=4096 count=$((${waste}*256*1024)) + #numactl -i 1 dd if=/dev/zero of=/mnt/tmpfs/${waste}GB bs=4096 count=$((${waste}*256*1024)) + echo dd if=/dev/zero of=/mnt/tmpfs/${waste}GB bs=4096 count=$((${waste}*256*1024)) + dd if=/dev/zero of=/mnt/tmpfs/${waste}GB bs=4096 count=$((${waste}*256*1024)) +} + +if [ $# -ne 1 ]; then + echo "Bad argument count: $#" + usage +fi + +memtoleave=$1 + +turn_off_readahead +disable_swap +setuptmpfs +drop_page_cache +amounttowaste +waste_memory diff --git a/tests/tools/flush_cache b/tests/tools/flush_cache new file mode 100755 index 00000000..12e34c44 --- /dev/null +++ b/tests/tools/flush_cache @@ -0,0 +1,29 @@ +#!/bin/bash +function free_mem { + m=`grep MemFree /proc/meminfo | awk -v N=2 '{print $N}'` + fm=$(((${m}/1024)/1024)) + echo $fm GB Free +} + +function drop_page_cache { + echo "Dropping page cache" + sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches' +} + +function disable_swap { + echo "Disabling swap" + sudo swapoff -a +} + +function turn_off_readahead { + fs=`mount | grep intel | cut -d " " -f 1` + sudo blockdev --setra 0 $fs + ra=`sudo blockdev --getra $fs` + echo "Read ahead set to $ra for $fs" +} + +free_mem +disable_swap +turn_off_readahead +drop_page_cache +free_mem diff --git a/tests/tools/freemem b/tests/tools/freemem new file mode 100755 index 00000000..4ac531e3 --- /dev/null +++ b/tests/tools/freemem @@ -0,0 +1,4 @@ +#!/bin/bash +m=`grep MemFree /proc/meminfo | awk -v N=2 '{print $N}'` +fm=$(((${m}/1024)/1024)) +echo $fm GB Free diff --git a/tests/tools/waste_memory b/tests/tools/waste_memory index 9330d9fc..2f99f766 100755 --- a/tests/tools/waste_memory +++ b/tests/tools/waste_memory @@ -5,6 +5,14 @@ function usage { exit 1 } +function free_mem { + m=`grep MemFree /proc/meminfo | awk -v N=2 '{print $N}'` + echo $m + fm=$(((${m}/1024)/1024)) + wm=$((${fm}-20)) + echo $fm GB Available, Wasting $wm GB +} + function setuptmpfs { if [ ! -d /mnt/tmpfs ]; then sudo mkdir -p /mnt/tmpfs diff --git a/tests/umapmillions/CMakeLists.txt b/tests/umapmillions/CMakeLists.txt new file mode 100644 index 00000000..1845d3c9 --- /dev/null +++ b/tests/umapmillions/CMakeLists.txt @@ -0,0 +1,23 @@ +project(umapmillions) + +FIND_PACKAGE( OpenMP REQUIRED ) +if(OPENMP_FOUND) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") + add_executable(umapmillions umapmillions.cpp) + + target_link_libraries(umapmillions libumap_static) + target_link_libraries(umapmillions libumaptest_static) + + include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_BINARY_DIR}/include ) + + install(TARGETS umapmillions + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib/static + RUNTIME DESTINATION bin ) +else() + message("Skpping umapmillions, OpenMP required") +endif() + + diff --git a/tests/umapmillions/umapmillions.cpp b/tests/umapmillions/umapmillions.cpp new file mode 100644 index 00000000..85caabc2 --- /dev/null +++ b/tests/umapmillions/umapmillions.cpp @@ -0,0 +1,97 @@ +/* This file is part of UMAP. For copyright information see the COPYRIGHT file in the top level directory, or at https://github.com/LLNL/umap/blob/master/COPYRIGHT This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License (as published by the Free Software Foundation) version 2.1 dated February 1999. 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 terms and conditions of the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +// uffd sort benchmark + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif // _GNU_SOURCE + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // optind +#include +#include +#include + +#include + +#include "umap.h" +#include "umaptest.h" + +static const uint64_t IndexesSize = 20000000; +static uint64_t* Indexes; + +// We initilize an array with a random set of indexes into our GIANT 600GB array +void initdata( uint64_t totalbytes ) +{ + Indexes = new uint64_t [IndexesSize]; + + std::random_device rd; + std::mt19937 gen(rd()); + std::uniform_int_distribution rnd_int(0, totalbytes-1); +#pragma omp parallel for + for(uint64_t i = 0; i < IndexesSize; ++i) + Indexes[i] = rnd_int(gen); +} + +static inline uint64_t getns(void) +{ + struct timespec ts; + int ret = clock_gettime(CLOCK_MONOTONIC, &ts); + assert(ret == 0); + return (((uint64_t)ts.tv_sec) * 1000000000ULL) + ts.tv_nsec; +} + +int main(int argc, char **argv) +{ + umt_optstruct_t options; + long pagesize; + uint64_t totalbytes; + void* base_addr; + int fd; + + pagesize = umt_getpagesize(); + umt_getoptions(&options, argc, argv); + omp_set_num_threads(options.numthreads); + + totalbytes = options.numpages*pagesize; + fd = umt_openandmap(&options, totalbytes, &base_addr); + + fprintf(stdout, "%lu GB %lu pages, %lu threads\n", totalbytes/1024/1024/1024, options.numpages, options.numthreads); + + char *arr = (char *) base_addr; + + uint64_t start = getns(); + initdata(totalbytes); + fprintf(stdout, "Init took %f us\n", (double)(getns() - start)/1000000.0); + + start = getns(); +#pragma omp parallel for + for(uint64_t i = 0; i < IndexesSize; ++i) + arr[Indexes[i]] += 1; + + uint64_t end = getns(); + fprintf(stdout, "%lu updates took %f seconds, %f updates per second\n", + IndexesSize, + (double)(end - start)/100000000.0, + (double)IndexesSize / (double)((double)(end - start)/100000000.0) + ); + + umt_closeandunmap(&options, totalbytes, base_addr, fd); + + return 0; +} From 35386209b0f681420467aa682a27d40ec8009ea2 Mon Sep 17 00:00:00 2001 From: Marty McFadden Date: Thu, 21 Dec 2017 12:45:00 -0800 Subject: [PATCH 25/32] Allow for umap to compile on systems without UFFD kernel support --- src/CMakeLists.txt | 2 +- src/umap.cpp | 42 +++-- sysincludes/linux/userfaultfd.h | 269 ++++++++++++++++++++++++++++++++ 3 files changed, 300 insertions(+), 13 deletions(-) create mode 100644 sysincludes/linux/userfaultfd.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 24a34261..e245f3c5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -6,7 +6,7 @@ set_target_properties(libumap_static PROPERTIES OUTPUT_NAME libumap) set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") -include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../include ) +include_directories( BEFORE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../include ${CMAKE_CURRENT_SOURCE_DIR}/../sysincludes ) file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/include) diff --git a/src/umap.cpp b/src/umap.cpp index 4b173cfc..963207c5 100644 --- a/src/umap.cpp +++ b/src/umap.cpp @@ -186,9 +186,39 @@ static unordered_map active_umaps; // // Library Interface Entry // +static int check_uffd_compatibility( void ) +{ + int fd; + + if ((fd = syscall(__NR_userfaultfd, O_CLOEXEC | O_NONBLOCK)) < 0) { + perror("UFFD Compatibilty Check - Unable to open userfaultfd: "); + exit(1); + } + + struct uffdio_api uffdio_api = { .api = UFFD_API, .features = UFFD_FEATURE_PAGEFAULT_FLAG_WP }; + + if (ioctl(fd, UFFDIO_API, &uffdio_api) == -1) { + cerr << "UFFD Compatibilty Check - userfaultfd WP Not Available\n"; + exit(1); + } + + if (!(uffdio_api.features & UFFD_FEATURE_PAGEFAULT_FLAG_WP)) { + cerr << "UFFD Compatibilty Check - unsupported userfaultfd WP\n"; + exit(1); + } + + close(fd); + + return 0; +} + void* umap(void* addr, uint64_t length, int prot, int flags, int fd, off_t offset) { struct stat file; + + if (check_uffd_compatibility() < 0) + return NULL; + fstat(fd,&file); struct umap_backing_file file1={.fd = fd, .data_size = file.st_size, .data_offset = offset}; return umap_mf(addr, length, prot, flags, 1, &file1); @@ -412,18 +442,6 @@ UserFaultHandler::UserFaultHandler(_umap* _um, const vector& _pb throw -1; } - struct uffdio_api uffdio_api = { .api = UFFD_API, .features = 0}; - - if (ioctl(userfault_fd, UFFDIO_API, &uffdio_api) == -1) { - perror("ERROR: ioctl(UFFDIO_API)"); - throw -1; - } - - if (uffdio_api.api != UFFD_API) { - cerr << __FUNCTION__ << ": unsupported userfaultfd api\n"; - throw -1; - } - for ( auto seg : PageBlocks ) { struct uffdio_register uffdio_register = { .range = {.start = (uint64_t)seg.base, .len = seg.length}, diff --git a/sysincludes/linux/userfaultfd.h b/sysincludes/linux/userfaultfd.h new file mode 100644 index 00000000..52635919 --- /dev/null +++ b/sysincludes/linux/userfaultfd.h @@ -0,0 +1,269 @@ +/* + * include/linux/userfaultfd.h + * + * Copyright (C) 2007 Davide Libenzi + * Copyright (C) 2015 Red Hat, Inc. + * + */ + +#ifndef _LINUX_USERFAULTFD_H +#define _LINUX_USERFAULTFD_H + +#include + +/* + * If the UFFDIO_API is upgraded someday, the UFFDIO_UNREGISTER and + * UFFDIO_WAKE ioctls should be defined as _IOW and not as _IOR. In + * userfaultfd.h we assumed the kernel was reading (instead _IOC_READ + * means the userland is reading). + */ +#define UFFD_API ((__u64)0xAA) +#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | \ + UFFD_FEATURE_EVENT_FORK | \ + UFFD_FEATURE_EVENT_REMAP | \ + UFFD_FEATURE_EVENT_REMOVE | \ + UFFD_FEATURE_EVENT_UNMAP | \ + UFFD_FEATURE_MISSING_HUGETLBFS | \ + UFFD_FEATURE_MISSING_SHMEM | \ + UFFD_FEATURE_SIGBUS | \ + UFFD_FEATURE_THREAD_ID) +#define UFFD_API_IOCTLS \ + ((__u64)1 << _UFFDIO_REGISTER | \ + (__u64)1 << _UFFDIO_UNREGISTER | \ + (__u64)1 << _UFFDIO_API) +#define UFFD_API_RANGE_IOCTLS \ + ((__u64)1 << _UFFDIO_WAKE | \ + (__u64)1 << _UFFDIO_COPY | \ + (__u64)1 << _UFFDIO_ZEROPAGE | \ + (__u64)1 << _UFFDIO_REMAP | \ + (__u64)1 << _UFFDIO_WRITEPROTECT) +#define UFFD_API_RANGE_IOCTLS_BASIC \ + ((__u64)1 << _UFFDIO_WAKE | \ + (__u64)1 << _UFFDIO_COPY) + +/* + * Valid ioctl command number range with this API is from 0x00 to + * 0x3F. UFFDIO_API is the fixed number, everything else can be + * changed by implementing a different UFFD_API. If sticking to the + * same UFFD_API more ioctl can be added and userland will be aware of + * which ioctl the running kernel implements through the ioctl command + * bitmask written by the UFFDIO_API. + */ +#define _UFFDIO_REGISTER (0x00) +#define _UFFDIO_UNREGISTER (0x01) +#define _UFFDIO_WAKE (0x02) +#define _UFFDIO_COPY (0x03) +#define _UFFDIO_ZEROPAGE (0x04) +#define _UFFDIO_REMAP (0x05) +#define _UFFDIO_WRITEPROTECT (0x06) +#define _UFFDIO_API (0x3F) + +/* userfaultfd ioctl ids */ +#define UFFDIO 0xAA +#define UFFDIO_API _IOWR(UFFDIO, _UFFDIO_API, \ + struct uffdio_api) +#define UFFDIO_REGISTER _IOWR(UFFDIO, _UFFDIO_REGISTER, \ + struct uffdio_register) +#define UFFDIO_UNREGISTER _IOR(UFFDIO, _UFFDIO_UNREGISTER, \ + struct uffdio_range) +#define UFFDIO_WAKE _IOR(UFFDIO, _UFFDIO_WAKE, \ + struct uffdio_range) +#define UFFDIO_COPY _IOWR(UFFDIO, _UFFDIO_COPY, \ + struct uffdio_copy) +#define UFFDIO_ZEROPAGE _IOWR(UFFDIO, _UFFDIO_ZEROPAGE, \ + struct uffdio_zeropage) +#define UFFDIO_REMAP _IOWR(UFFDIO, _UFFDIO_REMAP, \ + struct uffdio_remap) +#define UFFDIO_WRITEPROTECT _IOWR(UFFDIO, _UFFDIO_WRITEPROTECT, \ + struct uffdio_writeprotect) + +/* read() structure */ +struct uffd_msg { + __u8 event; + + __u8 reserved1; + __u16 reserved2; + __u32 reserved3; + + union { + struct { + __u64 flags; + __u64 address; + union { + __u32 ptid; + } feat; + } pagefault; + + struct { + __u32 ufd; + } fork; + + struct { + __u64 from; + __u64 to; + __u64 len; + } remap; + + struct { + __u64 start; + __u64 end; + } remove; + + struct { + /* unused reserved fields */ + __u64 reserved1; + __u64 reserved2; + __u64 reserved3; + } reserved; + } arg; +} __attribute__((packed)); + +/* + * Start at 0x12 and not at 0 to be more strict against bugs. + */ +#define UFFD_EVENT_PAGEFAULT 0x12 +#define UFFD_EVENT_FORK 0x13 +#define UFFD_EVENT_REMAP 0x14 +#define UFFD_EVENT_REMOVE 0x15 +#define UFFD_EVENT_UNMAP 0x16 + +/* flags for UFFD_EVENT_PAGEFAULT */ +#define UFFD_PAGEFAULT_FLAG_WRITE (1<<0) /* If this was a write fault */ +#define UFFD_PAGEFAULT_FLAG_WP (1<<1) /* If reason is VM_UFFD_WP */ + +struct uffdio_api { + /* userland asks for an API number and the features to enable */ + __u64 api; + /* + * Kernel answers below with the all available features for + * the API, this notifies userland of which events and/or + * which flags for each event are enabled in the current + * kernel. + * + * Note: UFFD_EVENT_PAGEFAULT and UFFD_PAGEFAULT_FLAG_WRITE + * are to be considered implicitly always enabled in all kernels as + * long as the uffdio_api.api requested matches UFFD_API. + * + * UFFD_FEATURE_MISSING_HUGETLBFS means an UFFDIO_REGISTER + * with UFFDIO_REGISTER_MODE_MISSING mode will succeed on + * hugetlbfs virtual memory ranges. Adding or not adding + * UFFD_FEATURE_MISSING_HUGETLBFS to uffdio_api.features has + * no real functional effect after UFFDIO_API returns, but + * it's only useful for an initial feature set probe at + * UFFDIO_API time. There are two ways to use it: + * + * 1) by adding UFFD_FEATURE_MISSING_HUGETLBFS to the + * uffdio_api.features before calling UFFDIO_API, an error + * will be returned by UFFDIO_API on a kernel without + * hugetlbfs missing support + * + * 2) the UFFD_FEATURE_MISSING_HUGETLBFS can not be added in + * uffdio_api.features and instead it will be set by the + * kernel in the uffdio_api.features if the kernel supports + * it, so userland can later check if the feature flag is + * present in uffdio_api.features after UFFDIO_API + * succeeded. + * + * UFFD_FEATURE_MISSING_SHMEM works the same as + * UFFD_FEATURE_MISSING_HUGETLBFS, but it applies to shmem + * (i.e. tmpfs and other shmem based APIs). + * + * UFFD_FEATURE_SIGBUS feature means no page-fault + * (UFFD_EVENT_PAGEFAULT) event will be delivered, instead + * a SIGBUS signal will be sent to the faulting process. + * + * UFFD_FEATURE_THREAD_ID pid of the page faulted task_struct will + * be returned, if feature is not requested 0 will be returned. + */ +#define UFFD_FEATURE_PAGEFAULT_FLAG_WP (1<<0) +#define UFFD_FEATURE_EVENT_FORK (1<<1) +#define UFFD_FEATURE_EVENT_REMAP (1<<2) +#define UFFD_FEATURE_EVENT_REMOVE (1<<3) +#define UFFD_FEATURE_MISSING_HUGETLBFS (1<<4) +#define UFFD_FEATURE_MISSING_SHMEM (1<<5) +#define UFFD_FEATURE_EVENT_UNMAP (1<<6) +#define UFFD_FEATURE_SIGBUS (1<<7) +#define UFFD_FEATURE_THREAD_ID (1<<8) + __u64 features; + + __u64 ioctls; +}; + +struct uffdio_range { + __u64 start; + __u64 len; +}; + +struct uffdio_register { + struct uffdio_range range; +#define UFFDIO_REGISTER_MODE_MISSING ((__u64)1<<0) +#define UFFDIO_REGISTER_MODE_WP ((__u64)1<<1) + __u64 mode; + + /* + * kernel answers which ioctl commands are available for the + * range, keep at the end as the last 8 bytes aren't read. + */ + __u64 ioctls; +}; + +struct uffdio_copy { + __u64 dst; + __u64 src; + __u64 len; +#define UFFDIO_COPY_MODE_DONTWAKE ((__u64)1<<0) + /* + * UFFDIO_COPY_MODE_WP will map the page wrprotected on the + * fly. UFFDIO_COPY_MODE_WP is available only if the + * wrprotection ioctl are implemented for the range according + * to the uffdio_register.ioctls. + */ +#define UFFDIO_COPY_MODE_WP ((__u64)1<<1) + __u64 mode; + + /* + * "copy" is written by the ioctl and must be at the end: the + * copy_from_user will not read the last 8 bytes. + */ + __s64 copy; +}; + +struct uffdio_zeropage { + struct uffdio_range range; +#define UFFDIO_ZEROPAGE_MODE_DONTWAKE ((__u64)1<<0) + __u64 mode; + + /* + * "zeropage" is written by the ioctl and must be at the end: + * the copy_from_user will not read the last 8 bytes. + */ + __s64 zeropage; +}; + +struct uffdio_remap { + __u64 dst; + __u64 src; + __u64 len; + /* + * Especially if used to atomically remove memory from the + * address space the wake on the dst range is not needed. + */ +#define UFFDIO_REMAP_MODE_DONTWAKE ((__u64)1<<0) +#define UFFDIO_REMAP_MODE_ALLOW_SRC_HOLES ((__u64)1<<1) + __u64 mode; + + /* + * "remap" is written by the ioctl and must be at the end: the + * copy_from_user will not read the last 8 bytes. + */ + __s64 remap; +}; + +struct uffdio_writeprotect { + struct uffdio_range range; + /* !WP means undo writeprotect. DONTWAKE is valid only with !WP */ +#define UFFDIO_WRITEPROTECT_MODE_WP ((__u64)1<<0) +#define UFFDIO_WRITEPROTECT_MODE_DONTWAKE ((__u64)1<<1) + __u64 mode; +}; +#endif /* _LINUX_USERFAULTFD_H */ From 77a1f69b3c848e1ff52cbb6cbc02b11119c82760 Mon Sep 17 00:00:00 2001 From: Marty McFadden Date: Thu, 21 Dec 2017 12:53:23 -0800 Subject: [PATCH 26/32] Fixed problem with previous commit --- src/umap.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/umap.cpp b/src/umap.cpp index 963207c5..3224fbcf 100644 --- a/src/umap.cpp +++ b/src/umap.cpp @@ -442,6 +442,18 @@ UserFaultHandler::UserFaultHandler(_umap* _um, const vector& _pb throw -1; } + struct uffdio_api uffdio_api = { .api = UFFD_API, .features = UFFD_FEATURE_PAGEFAULT_FLAG_WP }; + + if (ioctl(userfault_fd, UFFDIO_API, &uffdio_api) == -1) { + perror("ERROR: UFFDIO_API Failed: "); + exit(1); + } + + if (!(uffdio_api.features & UFFD_FEATURE_PAGEFAULT_FLAG_WP)) { + perror("ERROR: userfaultfd WP: "); + exit(1); + } + for ( auto seg : PageBlocks ) { struct uffdio_register uffdio_register = { .range = {.start = (uint64_t)seg.base, .len = seg.length}, From 39924d1dba477ce0a12243c87687c9c271ad4934 Mon Sep 17 00:00:00 2001 From: Marty McFadden Date: Tue, 9 Jan 2018 07:18:30 -0800 Subject: [PATCH 27/32] --usemmap support added to FITS testlib Refactored umt_openandmap_mf() and umt_closeandunmap_mf() implementations to C++. Also, removed duplication of implementation in umt_openandmap()/umt_openandmap_mf() and umt_closeandunmap()/umt_closeandunmap_mf() respectively. Added --usemmap cabability to umt_openandmap_mf() and umt_closeandunmap_mf() allowing for FITS files configured as data-only files to be contiguously mapped to a single large virtual region of memory. Removed implementation of umt_openandmap_fits2() and umt_closeandunmap_fits2() respectively since private files are no longer needed now that there is a threaded version of the umap() library. Changed the test library to always use the multi-file data-structures. In the case of a single file, the multi-file structure is still used with num_files set to "1". This enabled us to remove a significant amount of code duplication. Cleanup FITS Added program (exdata_fits) to FITS test project that will create separate data files from the for each fits file. Stopped compiling the 'multiple-private' FITS test programs now that umap() is threaded. Changed num_backing_file to num_backing_files in umap_backing_file structure. Code cleanup to eliminate compilation warnings. testlib Renamed "fnum" to "num_files" in test library options structure. Renamed "fn" to "filename" in test library options structure. Renamed umt_closeandunmap_fits() to umt_closeandunmap_mf() Renamed umt_openandmap_fits() to umt_openandmap_mf() --- include/umap.h | 19 +- tests/FITS/CMakeLists.txt | 8 +- tests/FITS/exdata_fits.c | 89 +++++++ tests/FITS/input.txt | 2 + tests/FITS/multi_private.cpp | 11 +- tests/FITS/multiple.cpp | 21 +- tests/FITS/simple_loader.cpp | 24 +- tests/churn/churn.cpp | 9 +- tests/libumaptest/mmap.cpp | 399 +++++++++++----------------- tests/libumaptest/options.cpp | 9 +- tests/libumaptest/umaptest.h | 14 +- tests/median/median.cpp | 7 +- tests/median/median_cube.cpp | 7 +- tests/readload/readload.cpp | 7 +- tests/rwseq/rwseq.cpp | 10 +- tests/uffd_test/uffd_test2.cpp | 7 +- tests/umapcpu/umapcpu.cpp | 7 +- tests/umapmillions/umapmillions.cpp | 7 +- tests/umapsort/umapsort.cpp | 31 +-- tests/umaptest/test.c | 41 +-- 20 files changed, 341 insertions(+), 388 deletions(-) create mode 100644 tests/FITS/exdata_fits.c create mode 100644 tests/FITS/input.txt diff --git a/include/umap.h b/include/umap.h index b2a71cc1..7253bbca 100644 --- a/include/umap.h +++ b/include/umap.h @@ -13,12 +13,11 @@ #include #include -typedef -struct umap_backing_file { +typedef struct umap_backing_file { int fd; off_t data_size; off_t data_offset; /* Offset of data portion in file */ -}umap_backing_file; +} umap_backing_file; #ifdef __cplusplus extern "C" { @@ -37,13 +36,15 @@ void* umap( void* addr, /* See mmap(2) */ int uunmap( void* addr, /* See mmap(2) */ size_t length /* See mmap(2) */ ); -void* umap_mf(void* addr, - size_t length, - int prot, - int flags, - int num_backing_file, - umap_backing_file* backing_files + +void* umap_mf(void* addr, + size_t length, + int prot, + int flags, + int num_backing_files, + umap_backing_file* backing_files ); + uint64_t umap_cfg_get_bufsize( void ); void umap_cfg_set_bufsize( uint64_t page_bufsize ); #ifdef __cplusplus diff --git a/tests/FITS/CMakeLists.txt b/tests/FITS/CMakeLists.txt index dff4dac5..cfa02269 100644 --- a/tests/FITS/CMakeLists.txt +++ b/tests/FITS/CMakeLists.txt @@ -11,9 +11,9 @@ if(OPENMP_FOUND) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") + add_executable(exdata_fits exdata_fits.c) add_executable(multiple multiple.cpp) add_executable(simple simple_loader.cpp) - add_executable(private multi_private.cpp) target_link_libraries(multiple libumap_static) target_link_libraries(multiple libumaptest_static) @@ -22,13 +22,9 @@ if(OPENMP_FOUND) target_link_libraries(simple libumaptest_static) target_link_libraries(simple qfits) - target_link_libraries(private libumap_static) - target_link_libraries(private libumaptest_static) - target_link_libraries(private qfits) - include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_BINARY_DIR}/include ) - install(TARGETS multiple simple private + install(TARGETS multiple simple exdata_fits LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/static RUNTIME DESTINATION bin ) diff --git a/tests/FITS/exdata_fits.c b/tests/FITS/exdata_fits.c new file mode 100644 index 00000000..4c6e7887 --- /dev/null +++ b/tests/FITS/exdata_fits.c @@ -0,0 +1,89 @@ +#define _GNU_SOURCE +#define _LARGEFILE64_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include + +#define BSIZE (256*1024*1024) + +void mv(char* ifile, char* ofile, int remove_old, char* buffer) +{ + struct stat st; + int ifd, ofd; + + printf("Processing %s\n", ofile); + if (buffer == NULL) { + fprintf(stderr, "Could not allocated %d bytes\n", BSIZE); + _exit(1); + } + + if (stat(ifile, &st)) { + fprintf(stderr, "Could not stat %s: %s\n", ifile, strerror(errno)); + _exit(1); + } + + if ((ifd = open(ifile, (O_RDONLY | O_LARGEFILE))) < 0) { + fprintf(stderr, "Could not open %s: %s\n", ifile, strerror(errno)); + _exit(1); + } + + if ((ofd = open(ofile, (O_RDWR | O_CREAT | O_LARGEFILE | O_TRUNC | O_DIRECT), (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP))) < 0) { + fprintf(stderr, "Could not create %s: %s\n", ofile, strerror(errno)); + _exit(1); + } + + if (lseek(ifd, 2880, SEEK_SET) == (off_t)-1) { + fprintf(stderr, "Could not set initial seek in %s: %s\n", ifile, strerror(errno)); + _exit(1); + } + + ssize_t tsize = 0; + for (ssize_t rv = BSIZE; rv == BSIZE; ) { + if ((rv = read(ifd, buffer, BSIZE)) < 0) { + fprintf(stderr, "Read failed in %s: %s\n", ifile, strerror(errno)); + _exit(1); + } + + if (rv < BSIZE) + break; + + if (write(ofd, buffer, rv) != rv) { + fprintf(stderr, "Read failed in %s: %s\n", ifile, strerror(errno)); + _exit(1); + } + tsize += rv; + } + + close(ifd); + close(ofd); + + if ( remove_old ) { + if (unlink(ifile) < 0) { + fprintf(stderr, "Read failed in %s: %s\n", ifile, strerror(errno)); + _exit(1); + } + } + + printf("Wrote %zu bytes to %s\n", tsize, ofile); +} + +int main(int ac, char** av) +{ + char ifilename[256]; + char ofilename[256]; + char* buffer = (char*)aligned_alloc(4096, BSIZE); + + for (int i = 1; i <= 100; i++) { + sprintf(ifilename, "asteroid_sim_epoch%d.fits", i); + sprintf(ofilename, "asteroid_sim_epoch%d.data", i); + mv(ifilename, ofilename, (i != 1), buffer); + } + + free(buffer); + return 0; +} diff --git a/tests/FITS/input.txt b/tests/FITS/input.txt new file mode 100644 index 00000000..c2d159b1 --- /dev/null +++ b/tests/FITS/input.txt @@ -0,0 +1,2 @@ +1 +0 32768 0 32768 diff --git a/tests/FITS/multi_private.cpp b/tests/FITS/multi_private.cpp index 3cdb246b..3cf2b3fc 100644 --- a/tests/FITS/multi_private.cpp +++ b/tests/FITS/multi_private.cpp @@ -148,7 +148,7 @@ void displaycube(double *cube,struct patch *list,int n) { int i,j,k; uint64_t lx=list[0].ex; - uint64_t ly=list[0].ey; + //uint64_t ly=list[0].ey; for (k=1;k<=n;k++) { for (i=list[k].sy; i0) { diff --git a/tests/FITS/simple_loader.cpp b/tests/FITS/simple_loader.cpp index f8ac00d9..1e16c533 100644 --- a/tests/FITS/simple_loader.cpp +++ b/tests/FITS/simple_loader.cpp @@ -140,14 +140,14 @@ double torben(float **m, int n,int pos) } void displaycube(double *cube,struct patch *list,int n) { - int i,j,k; + //unsigned int i,j,k; uint64_t lx=list[0].ex; - uint64_t ly=list[0].ey; - for (k=1;k<=n;k++) + //uint64_t ly=list[0].ey; + for (int k=1;k<=n;k++) { - for (i=list[k].sy; i0) { fprintf(stderr, "%s: %d error(s) occurred\n", argv[0], err); diff --git a/tests/churn/churn.cpp b/tests/churn/churn.cpp index b9cce67f..7d86a706 100644 --- a/tests/churn/churn.cpp +++ b/tests/churn/churn.cpp @@ -60,9 +60,10 @@ class pageiotest { umt_options.iodirect = options.iodirect; umt_options.usemmap = options.usemmap; umt_options.noinit = 0; - umt_options.fn = options.fn; + umt_options.filename = options.fn; - fd = umt_openandmap(&umt_options, (options.num_churn_pages+2*options.num_load_pages)*pagesize, &base_addr); + maphandle = umt_openandmap(&umt_options, (options.num_churn_pages+2*options.num_load_pages)*pagesize, &base_addr); + assert(maphandle != NULL); read_load_pages = base_addr; write_load_pages = (void*)((uint64_t)base_addr + (options.num_load_pages*pagesize)); @@ -84,7 +85,7 @@ class pageiotest { } ~pageiotest( void ) { - umt_closeandunmap(&umt_options, (options.num_churn_pages+2*options.num_load_pages)*pagesize, base_addr, fd); + umt_closeandunmap(&umt_options, (options.num_churn_pages+2*options.num_load_pages)*pagesize, base_addr, maphandle); } void start( void ) { @@ -142,7 +143,7 @@ class pageiotest { void* churn_pages; vector churn_readers; - int fd; + void* maphandle; void init() { cout << "Initializing\n"; diff --git a/tests/libumaptest/mmap.cpp b/tests/libumaptest/mmap.cpp index 13bdd013..b099ba9a 100644 --- a/tests/libumaptest/mmap.cpp +++ b/tests/libumaptest/mmap.cpp @@ -13,308 +13,217 @@ Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include +#include +#include +#include #include #include #include + #include #include #include #include #include -#include +#include #include "umap.h" #include "umaptest.h" using namespace std; -int umt_openandmap(const umt_optstruct_t* testops, uint64_t numbytes, void** region) -{ - int fd; - int open_options = O_RDWR; - - if (testops->iodirect) - open_options |= O_DIRECT; - - if ( !testops->noinit ) - open_options |= O_CREAT; - -#ifdef O_LARGEFILE - open_options |= O_LARGEFILE; -#endif - - fd = open(testops->fn, open_options, S_IRUSR|S_IWUSR); - if(fd == -1) { - perror("open"); - exit(-1); - } - - if (testops->noinit) { - // If we are not initializing file, make sure that it is big enough - struct stat sbuf; - - if (fstat(fd, &sbuf) == -1) { - perror("fstat"); - exit(-1); - } - - if ((uint64_t)sbuf.st_size < numbytes) { - cerr << testops->fn - << " file is not large enough. " << sbuf.st_size - << " < size requested " << numbytes << endl; - exit(-1); - } - } - - try { - int x; - if((x = posix_fallocate(fd,0, numbytes) != 0)) { - perror("??posix_fallocate"); - - cerr << "posix_fallocate(" << fd << ", 0, " << numbytes << ") returned " << x << endl; - exit(-1); - } - } catch(const std::exception& e) { - cerr << "posix_fallocate: " << e.what() << endl; - exit(-1); - } catch(...) { - cerr << "posix_fallocate failed to instantiate _umap object\n"; - exit(-1); - } - - int prot = PROT_READ|PROT_WRITE; +typedef struct umt_map_handle { + uint64_t total_range_size; + vector files; + vector mf_files; +} umt_map_handle; - if ( testops->usemmap ) { - int flags = MAP_SHARED; - - *region = mmap(NULL, numbytes, prot, flags, fd, 0); - if (*region == MAP_FAILED) { - perror("mmap"); - exit(-1); - } - } - else { - int flags = UMAP_PRIVATE; - - *region = umap(NULL, numbytes, prot, flags, fd, 0); - if (*region == UMAP_FAILED) { - perror("umap"); - exit(-1); - } - } - - return fd; +void* umt_openandmap(const umt_optstruct_t* testops, uint64_t numbytes, void** region) +{ + return umt_openandmap_mf(testops, numbytes, region, (off_t)0, numbytes); } -void umt_closeandunmap(const umt_optstruct_t* testops, uint64_t numbytes, void* region, int fd) +void umt_closeandunmap(const umt_optstruct_t* testops, uint64_t numbytes, void* region, void* p) { - if ( testops->usemmap ) { - if (munmap(region, numbytes) < 0) { - perror("munmap"); - exit(-1); - } - } - else { - if (uunmap(region, numbytes) < 0) { - perror("uunmap"); - exit(-1); - } - } - - close(fd); + umt_closeandunmap_mf(testops, numbytes, region, p); } -//-------support fits files ---------------- -void* umt_openandmap_fits(const umt_optstruct_t* testops, uint64_t numbytes, void** region,off_t offset,off_t data_size) +// +// Usage: +// If testops->num_files is 1, the testops->filname is assumed to point +// to the full name of the file. +// +// Otherwise, if testops->num_files > 1, the testops->filename is +// assumed to be a prefix and the first file is assumed to contain +// the FITS header. The test programs use the header located in the +// first file to determine the data size. The implementation ASSUMES +// that all of the data files are the same size and that the size +// is page-aligned. +// +// For 3 FITS files with "foo" prefix, the implementation will look for +// the following files: +// +// foo1.fits - 1st file containing BOTH FITS Header and Data +// foo1.data - 1st file containing only data (use exdata_fits to generate) +// foo2.data - 2nd file containing only data +// foo3.data - 3rd file containing only data +// +void* umt_openandmap_mf(const umt_optstruct_t* testops, uint64_t numbytes, void** region, off_t offset, off_t data_size) { - char* filename; - char num[5]; - int open_options = O_RDWR; + int open_options = O_RDWR | O_LARGEFILE; // TODO: Handle READONLY case someday + umt_map_handle* handle = new umt_map_handle; + + offset = 0; // Hack for now until we determine how to distinguish files without headers. - umap_backing_file *fits_files; - if (testops->iodirect) + if ( testops->iodirect ) open_options |= O_DIRECT; if ( !testops->noinit ) open_options |= O_CREAT; -#ifdef O_LARGEFILE - open_options |= O_LARGEFILE; -#endif - - if (testops->fnum==-1) - { - perror("number of files not in input"); - exit(-1); - } - fits_files=(umap_backing_file *)calloc(testops->fnum,sizeof(umap_backing_file)); - filename=(char *)std::malloc(sizeof(char)*100); - - for (int i=0;ifnum;i++) - { - strcpy(filename,testops->fn); - sprintf(num,"%d",i+1); - strcat(filename,num); - strcat(filename,".fits"); + handle->total_range_size = 0; - fits_files[i].fd = open(filename, open_options, S_IRUSR|S_IWUSR); - //printf("processing %s, %d\n",filename,fdlist[i]); + for ( int i = 0; i < testops->num_files; ++i ) { + string filename; + umap_backing_file bfile; - if(fits_files[i].fd == -1) - { - perror("open"); - exit(-1); - } - fits_files[i].data_size=data_size; - fits_files[i].data_offset=offset; - } - - if (testops->noinit) { - // If we are not initializing file, make sure that it is big enough - struct stat sbuf; - uint64_t totalsize=0; - for (int i=0;ifnum;i++){ - if (fstat(fits_files[i].fd, &sbuf) == -1){ - perror("fstat"); - exit(-1); + { + ostringstream ss; + if (testops->num_files > 1) // Treat file name as a basename + ss << testops->filename << (i+1) << ".data"; + else + ss << testops->filename; + filename = ss.str(); + } + + if ( ( bfile.fd = open(filename.c_str(), open_options, S_IRUSR | S_IWUSR) ) == -1 ) { + string estr = "Failed to open/create " + filename + ": "; + perror(estr.c_str()); + return NULL; + } + + if ( ! testops->noinit ) { // If we are initializing, attempt to pre-allocate disk space for the file. + try { + int x; + if ( ( x = posix_fallocate(bfile.fd, 0, data_size) != 0 ) ) { + ostringstream ss; + ss << "Failed to pre-allocate " << data_size << " bytes in " << filename << ": "; + perror(ss.str().c_str()); + return NULL; + } + } catch(const std::exception& e) { + cerr << "posix_fallocate: " << e.what() << endl; + return NULL; + } catch(...) { + cerr << "posix_fallocate failed to instantiate _umap object\n"; + return NULL; } - //printf("size:%d\n",sbuf.st_size); - totalsize+=(uint64_t)sbuf.st_size; } - if (totalsize < numbytes) { - cerr << testops->fn - << " file is not large enough. " << sbuf.st_size - << " < size requested " << numbytes << endl; - exit(-1); + struct stat sbuf; + if (fstat(bfile.fd, &sbuf) == -1) { + string estr = "Failed to get status (fstat) for " + filename + ": "; + perror(estr.c_str()); + return NULL; } - } - - int prot = PROT_READ|PROT_WRITE; - int flags = UMAP_PRIVATE; - *region = umap_mf(NULL, numbytes, prot, flags, testops->fnum, fits_files); - if (*region == UMAP_FAILED) { - perror("umap"); - exit(-1); + if ( (off_t)sbuf.st_size != (data_size+offset) ) { + cerr << filename << " size " << sbuf.st_size << " does not match specified data size of " << (data_size+offset) << endl; + return NULL; } - return (void *)fits_files; -} - -void umt_closeandunmap_fits(const umt_optstruct_t* testops, uint64_t numbytes, void* region,void* p) -{ - if ( testops->usemmap ) { - if (munmap(region, numbytes) < 0) { - perror("munmap"); - exit(-1); - } + handle->total_range_size += (uint64_t)data_size; + bfile.data_size = data_size; + bfile.data_offset = offset; + handle->mf_files.push_back(bfile); + handle->files.push_back(filename); } - else { - if (uunmap(region, numbytes) < 0) { - perror("uunmap"); - exit(-1); - } - } - umap_backing_file *fits_files=(umap_backing_file *)p; - for (int i=0;ifnum;i++) - close(fits_files[i].fd); - free(fits_files); -} - -//-------support fits file (private)------------ -void* umt_openandmap_fits2(const umt_optstruct_t* testops, uint64_t numbytes, void** region,off_t offset,off_t data_size) -{ - umap_backing_file* fits_files; - char* filename; - char num[5]; - int open_options = O_RDWR; - - if (testops->iodirect) - open_options |= O_DIRECT; - if ( !testops->noinit ) - open_options |= O_CREAT; + const int prot = PROT_READ|PROT_WRITE; -#ifdef O_LARGEFILE - open_options |= O_LARGEFILE; -#endif - - if (testops->fnum==-1) - { - perror("number of files not in input"); - exit(-1); - } - fits_files=(umap_backing_file *)calloc(testops->fnum,sizeof(umap_backing_file)); - filename=(char *)std::malloc(sizeof(char)*100); + if ( testops->usemmap ) { + void* next_mmap = mmap(NULL, handle->total_range_size, prot, MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE, -1, 0); + if (next_mmap == MAP_FAILED) { + ostringstream ss; + ss << "reservation (mmap) of " << handle->total_range_size << " bytes failed: "; + perror(ss.str().c_str()); + return NULL; + } - for (int i=0;ifnum;i++) - { - strcpy(filename,testops->fn); - sprintf(num,"%d",i+1); - strcat(filename,num); - strcat(filename,".fits"); + *region = next_mmap; - fits_files[i].fd = open(filename, open_options, S_IRUSR|S_IWUSR); - //printf("processing %s, %d\n",filename,fdlist[i]); + if ( munmap(next_mmap, handle->total_range_size) < 0 ) { + ostringstream ss; + ss << "reservation (mumap) of " << handle->total_range_size << " from " << next_mmap << " failed: "; + perror(ss.str().c_str()); + return NULL; + } - if(fits_files[i].fd == -1) - { - perror("open"); - exit(-1); - } - } + //cout << "Starting contiguous mappings at: " << next_mmap << endl; - if (testops->noinit) { - // If we are not initializing file, make sure that it is big enough - struct stat sbuf; - for (int i=0;ifnum;i++){ - if (fstat(fits_files[i].fd, &sbuf) == -1){ - perror("fstat"); - exit(-1); - } - //printf("size:%d\n",sbuf.st_size); - if ((uint64_t)sbuf.st_size < numbytes) { - cerr << testops->fn - << " file is not large enough. " << sbuf.st_size - << " < size requested " << numbytes << endl; - exit(-1); + for ( int i = 0; i < testops->num_files; ++i ) { + void* mmap_region; + mmap_region = mmap(next_mmap, handle->mf_files[i].data_size, prot, MAP_PRIVATE | MAP_FIXED | MAP_NORESERVE, handle->mf_files[i].fd, offset); + if (mmap_region == MAP_FAILED) { + ostringstream ss; + ss << "mmap of " << handle->mf_files[i].data_size << " bytes failed for " << handle->files[i] << ": "; + perror(ss.str().c_str()); + return NULL; } + //cout << handle->files[i] << "\t" << next_mmap << "\t" << mmap_region << endl; + + assert(mmap_region == next_mmap); + next_mmap = static_cast(mmap_region) + handle->mf_files[i].data_size; } } - - int prot = PROT_READ|PROT_WRITE; + else { int flags = UMAP_PRIVATE; - for (int i=0;ifnum;i++) - { - region[i] = umap(NULL, numbytes, prot, flags, fits_files[i].fd, 0); - if (region[i] == UMAP_FAILED) - { - perror("umap"); - exit(-1); - } + *region = umap_mf(NULL, handle->total_range_size, prot, flags, testops->num_files, &handle->mf_files[0]); + if ( *region == UMAP_FAILED ) { + ostringstream ss; + ss << "umap_mf of " << handle->total_range_size << " bytes failed for " << handle->files[0] << ": "; + perror(ss.str().c_str()); + return NULL; } + //cout << handle->files[0] << "\t" << handle->total_range_size << " bytes allocated at " << *region << endl; + } + + //umt_closeandunmap_mf(testops, handle->total_range_size, *region, handle); - return (void *)fits_files; + //exit(0); + return (void *)handle; } -void umt_closeandunmap_fits2(const umt_optstruct_t* testops, uint64_t numbytes, void** region,void* p) +void umt_closeandunmap_mf(const umt_optstruct_t* testops, uint64_t numbytes, void* region, void* p) { + umt_map_handle* handle = static_cast(p); + if ( testops->usemmap ) { - if (munmap(region, numbytes) < 0) { - perror("munmap"); - exit(-1); + int cnt = 0; + for ( auto i : handle->mf_files ) { + //cout << "munmap(region=" << region << ", size=" << i.data_size << ") for file " << handle->files[ cnt ] << endl; + if ( munmap(region, i.data_size) < 0 ) { + ostringstream ss; + ss << "munmap of " << i.data_size << " bytes failed for " << handle->files[0] << "on region " << region << ": "; + perror(ss.str().c_str()); + exit(-1); + } + cnt++; + region = static_cast(region) + i.data_size; } } else { - for (int i=0;ifnum;i++) - if (uunmap(region[i], numbytes) < 0) { - perror("uunmap"); + //cout << "uunmap(region=" << region << ", size=" << numbytes << ") for file " << handle->files[0] << endl; + if (uunmap(region, numbytes) < 0) { + ostringstream ss; + ss << "munmap of " << numbytes << " bytes failed for " << handle->files[0] << "on region " << region << ": "; + perror(ss.str().c_str()); exit(-1); } } - umap_backing_file *fits_files=(umap_backing_file *)p; - for (int i=0;ifnum;i++) - close(fits_files[i].fd); - free(fits_files); + + for ( auto i : handle->mf_files ) + close(i.fd); + + delete handle; } diff --git a/tests/libumaptest/options.cpp b/tests/libumaptest/options.cpp index 9b01a5fc..288eb963 100644 --- a/tests/libumaptest/options.cpp +++ b/tests/libumaptest/options.cpp @@ -13,7 +13,6 @@ char const* FILENAME = "/tmp/abc"; const uint64_t NUMPAGES = 10000000; const uint64_t NUMTHREADS = 2; const uint64_t BUFFERSIZE = 16; -const int SINGLEFILE = -1; using namespace std; @@ -47,8 +46,8 @@ void umt_getoptions(umt_optstruct_t* testops, int argc, char *argv[]) testops->numpages = NUMPAGES; testops->numthreads = NUMTHREADS; testops->bufsize = umap_cfg_get_bufsize(); - testops->fn = FILENAME; - testops->fnum = SINGLEFILE; + testops->filename = FILENAME; + testops->num_files = 1; while (1) { int option_index = 0; @@ -86,11 +85,11 @@ void umt_getoptions(umt_optstruct_t* testops, int argc, char *argv[]) break; else goto R0; case 'n': - if ((testops->fnum = strtoull(optarg, nullptr, 0)) > 0) + if ((testops->num_files = strtoull(optarg, nullptr, 0)) > 0) break; else goto R0; case 'f': - testops->fn = optarg; + testops->filename = optarg; break; default: R0: diff --git a/tests/libumaptest/umaptest.h b/tests/libumaptest/umaptest.h index 4e1d24e6..5e88a663 100644 --- a/tests/libumaptest/umaptest.h +++ b/tests/libumaptest/umaptest.h @@ -25,21 +25,19 @@ typedef struct { uint64_t numpages; uint64_t numthreads; uint64_t bufsize; - char const* fn; - int fnum; + int num_files; + char const* filename; // file prefix if num_files > 1 } umt_optstruct_t; #ifdef __cplusplus extern "C" { #endif void umt_getoptions(umt_optstruct_t*, int, char *argv[]); - int umt_openandmap(const umt_optstruct_t*, uint64_t, void**); - void umt_closeandunmap(const umt_optstruct_t*, uint64_t, void*, int); + void* umt_openandmap(const umt_optstruct_t*, uint64_t, void**); + void umt_closeandunmap(const umt_optstruct_t*, uint64_t, void*, void*); long umt_getpagesize(void); - void* umt_openandmap_fits(const umt_optstruct_t*, uint64_t, void**,off_t,off_t); - void umt_closeandunmap_fits(const umt_optstruct_t*, uint64_t, void*,void*); - void* umt_openandmap_fits2(const umt_optstruct_t*, uint64_t, void**,off_t,off_t); - void umt_closeandunmap_fits2(const umt_optstruct_t*, uint64_t, void**,void*); + void* umt_openandmap_mf(const umt_optstruct_t*, uint64_t, void**,off_t,off_t); + void umt_closeandunmap_mf(const umt_optstruct_t*, uint64_t, void*,void*); #ifdef __cplusplus } #endif diff --git a/tests/median/median.cpp b/tests/median/median.cpp index 47c78002..53e80772 100644 --- a/tests/median/median.cpp +++ b/tests/median/median.cpp @@ -109,14 +109,15 @@ int main(int argc, char **argv) int64_t arraysize; uint64_t median; void* base_addr; - int fd; + void* maphandle; pagesize = umt_getpagesize(); umt_getoptions(&options, argc, argv); totalbytes = options.numpages*pagesize; - fd = umt_openandmap(&options, totalbytes, &base_addr); + maphandle = umt_openandmap(&options, totalbytes, &base_addr); + assert(maphandle != NULL); fprintf(stdout, "%lu pages, %lu threads\n", options.numpages, options.numthreads); @@ -135,7 +136,7 @@ int main(int argc, char **argv) median=torben(arr,arraysize); fprintf(stdout, "Median is %lu, Find median took %f us\n",median,(double)(getns() - start)/1000000.0); - umt_closeandunmap(&options, totalbytes, base_addr, fd); + umt_closeandunmap(&options, totalbytes, base_addr, maphandle); return 0; } diff --git a/tests/median/median_cube.cpp b/tests/median/median_cube.cpp index ca60b615..978fe615 100644 --- a/tests/median/median_cube.cpp +++ b/tests/median/median_cube.cpp @@ -139,14 +139,15 @@ int main(int argc, char **argv) int64_t arraysize; //uint64_t median; void* base_addr; - int fd; + void* maphandle; pagesize = umt_getpagesize(); umt_getoptions(&options, argc, argv); totalbytes = options.numpages*pagesize; - fd = umt_openandmap(&options, totalbytes, &base_addr); + maphandle = umt_openandmap(&options, totalbytes, &base_addr); + assert(maphandle != NULL); fprintf(stdout, "%lu pages, %lu threads\n", options.numpages, options.numthreads); @@ -179,7 +180,7 @@ int main(int argc, char **argv) } free(cube_median); - umt_closeandunmap(&options, totalbytes, base_addr, fd); + umt_closeandunmap(&options, totalbytes, base_addr, maphandle); return 0; } diff --git a/tests/readload/readload.cpp b/tests/readload/readload.cpp index 3735198f..91d0f0b7 100644 --- a/tests/readload/readload.cpp +++ b/tests/readload/readload.cpp @@ -78,14 +78,15 @@ int main(int argc, char **argv) int64_t totalbytes; uint64_t arraysize; void* base_addr; - int fd; + void* maphandle; pagesize = umt_getpagesize(); umt_getoptions(&options, argc, argv); totalbytes = options.numpages*pagesize; - fd = umt_openandmap(&options, totalbytes, &base_addr); + maphandle = umt_openandmap(&options, totalbytes, &base_addr); + assert(maphandle != NULL); fprintf(stdout, "%lu pages, %lu threads\n", options.numpages, options.numthreads); @@ -107,6 +108,6 @@ int main(int argc, char **argv) fprintf(stdout, "Sort took %f us\n", (double)(getns() - start)/1000000.0); } - umt_closeandunmap(&options, totalbytes, base_addr, fd); + umt_closeandunmap(&options, totalbytes, base_addr, maphandle); return 0; } diff --git a/tests/rwseq/rwseq.cpp b/tests/rwseq/rwseq.cpp index b3f17391..0e71a2b9 100644 --- a/tests/rwseq/rwseq.cpp +++ b/tests/rwseq/rwseq.cpp @@ -10,6 +10,7 @@ //#include // sched_getcpu() #include #include +#include #include "umap.h" #include "options.h" @@ -26,13 +27,14 @@ class pageiotest { umt_options.iodirect = 1; umt_options.usemmap = 0; umt_options.noinit = 0; - umt_options.fn = options.fn; + umt_options.filename = options.fn; - fd = umt_openandmap(&umt_options, pagesize, &base_addr); + maphandle = umt_openandmap(&umt_options, pagesize, &base_addr); + assert(maphandle != NULL); } ~pageiotest( void ) { - umt_closeandunmap(&umt_options, pagesize, base_addr, fd); + umt_closeandunmap(&umt_options, pagesize, base_addr, maphandle); } void start( void ) { @@ -54,7 +56,7 @@ class pageiotest { options_t options; long pagesize; void* base_addr; - int fd; + void* maphandle; void read( void ) { if (options.noread) { diff --git a/tests/uffd_test/uffd_test2.cpp b/tests/uffd_test/uffd_test2.cpp index 681b839c..f67d9d14 100644 --- a/tests/uffd_test/uffd_test2.cpp +++ b/tests/uffd_test/uffd_test2.cpp @@ -59,7 +59,7 @@ int main(int argc, char **argv) int64_t totalbytes; void *base_addr; int value=0; - int fd; + void* maphandle; pagesize = umt_getpagesize(); @@ -67,7 +67,8 @@ int main(int argc, char **argv) totalbytes = options.numpages*pagesize; - fd = umt_openandmap(&options, totalbytes, &base_addr); + maphandle = umt_openandmap(&options, totalbytes, &base_addr); + assert(maphandle != NULL); uint64_t* array = (uint64_t*) base_addr; // feed it the mmaped region uint64_t array_length = totalbytes/sizeof(int64_t); // in number of 8-byte integers. @@ -119,7 +120,7 @@ int main(int argc, char **argv) } printf("%d\n", value); - umt_closeandunmap(&options, totalbytes, base_addr, fd); + umt_closeandunmap(&options, totalbytes, base_addr, maphandle); for (long i=0;i rnd_int(0, 39); @@ -93,7 +93,8 @@ int main(int argc, char **argv) omp_set_num_threads(options.numthreads); totalbytes = options.numpages*pagesize; - fd = umt_openandmap(&options, totalbytes, &base_addr); + maphandle = umt_openandmap(&options, totalbytes, &base_addr); + assert(maphandle != NULL); fprintf(stdout, "%lu pages, %lu threads\n", options.numpages, options.numthreads); @@ -136,7 +137,7 @@ int main(int argc, char **argv) fprintf(stdout, "test took %f us\n", (double)(getns() - start)/1000000.0); } - umt_closeandunmap(&options, totalbytes, base_addr, fd); + umt_closeandunmap(&options, totalbytes, base_addr, maphandle); return 0; } diff --git a/tests/umapmillions/umapmillions.cpp b/tests/umapmillions/umapmillions.cpp index 85caabc2..c290b5b0 100644 --- a/tests/umapmillions/umapmillions.cpp +++ b/tests/umapmillions/umapmillions.cpp @@ -62,14 +62,15 @@ int main(int argc, char **argv) long pagesize; uint64_t totalbytes; void* base_addr; - int fd; + void* maphandle; pagesize = umt_getpagesize(); umt_getoptions(&options, argc, argv); omp_set_num_threads(options.numthreads); totalbytes = options.numpages*pagesize; - fd = umt_openandmap(&options, totalbytes, &base_addr); + maphandle = umt_openandmap(&options, totalbytes, &base_addr); + assert(maphandle != NULL); fprintf(stdout, "%lu GB %lu pages, %lu threads\n", totalbytes/1024/1024/1024, options.numpages, options.numthreads); @@ -91,7 +92,7 @@ int main(int argc, char **argv) (double)IndexesSize / (double)((double)(end - start)/100000000.0) ); - umt_closeandunmap(&options, totalbytes, base_addr, fd); + umt_closeandunmap(&options, totalbytes, base_addr, maphandle); return 0; } diff --git a/tests/umapsort/umapsort.cpp b/tests/umapsort/umapsort.cpp index f3730c05..13df5dda 100644 --- a/tests/umapsort/umapsort.cpp +++ b/tests/umapsort/umapsort.cpp @@ -91,40 +91,17 @@ int main(int argc, char **argv) int64_t totalbytes; uint64_t arraysize; void* base_addr; - int fd; + void* umaphandle; pagesize = umt_getpagesize(); umt_getoptions(&options, argc, argv); omp_set_num_threads(options.numthreads); -#ifdef TAKEN_OUT - int s; - cpu_set_t cpuset; - pthread_t thread; - - thread = pthread_self(); - - CPU_ZERO(&cpuset); - CPU_SET(6, &cpuset); - - s = pthread_setaffinity_np(thread, sizeof(cpu_set_t), &cpuset); - if (s != 0) { - perror("ERROR: pthread_setaffinity_np"); - return -1; - } - s = pthread_getaffinity_np(thread, sizeof(cpu_set_t), &cpuset); - if (s != 0) { - perror("ERROR: pthread_getaffinity_np"); - return -1; - } - for (int j = 0; j < CPU_SETSIZE; j++) - if (CPU_ISSET(j, &cpuset)) - std::cerr << __FUNCTION__ << " affinity constrained to CPU " << j << std::endl; -#endif // TAKEN_OUT totalbytes = options.numpages*pagesize; - fd = umt_openandmap(&options, totalbytes, &base_addr); + umaphandle = umt_openandmap(&options, totalbytes, &base_addr); + assert(umaphandle != NULL); fprintf(stdout, "%lu pages, %lu threads\n", options.numpages, options.numthreads); @@ -149,7 +126,7 @@ int main(int argc, char **argv) fprintf(stdout, "Validate took %f us\n", (double)(getns() - start)/1000000.0); } - umt_closeandunmap(&options, totalbytes, base_addr, fd); + umt_closeandunmap(&options, totalbytes, base_addr, umaphandle); return 0; } diff --git a/tests/umaptest/test.c b/tests/umaptest/test.c index afea4033..b37ebe75 100644 --- a/tests/umaptest/test.c +++ b/tests/umaptest/test.c @@ -52,7 +52,7 @@ int main(int argc, char **argv) long num_pages; void *region; umt_optstruct_t options; - int fd; + void* maphandle; pagesize = umt_getpagesize(); @@ -61,10 +61,11 @@ int main(int argc, char **argv) num_pages = options.numpages; omp_set_num_threads(options.numthreads); - fd = umt_openandmap(&options, options.numpages*pagesize, ®ion); + maphandle = umt_openandmap(&options, options.numpages*pagesize, ®ion); + assert(maphandle != NULL); fprintf(stdout, "%ld pages, %lu threads\n", num_pages, options.numthreads); - fprintf(stdout, "USEFILE enabled %s\n", options.fn); + fprintf(stdout, "USEFILE enabled %s\n", options.filename); // storage for the latencies for each page int num_batches = 10; @@ -84,49 +85,19 @@ int main(int argc, char **argv) uint64_t start = getns(); for (long j=0;j Date: Wed, 28 Mar 2018 16:06:07 -0700 Subject: [PATCH 28/32] Added cmake configuration for version and bumped version to 0.0.2 --- CMakeLists.txt | 7 ++++++- config/config.h.in | 7 +++++++ src/CMakeLists.txt | 7 ++++++- src/umap.cpp | 7 ++++--- tests/CMakeLists.txt | 16 ++++++++-------- 5 files changed, 31 insertions(+), 13 deletions(-) create mode 100644 config/config.h.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 1fead3c7..9c76cc80 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,10 @@ cmake_minimum_required (VERSION 3.5.1) -project(umap VERSION 0.0.1) +project(umap VERSION 0.0.2) + +configure_file( + "${PROJECT_SOURCE_DIR}/config/config.h.in" + "${PROJECT_BINARY_DIR}/config/config.h" + ) if (NOT CMAKE_BUILD_TYPE) message(STATUS "No build type selected, default to Debug") diff --git a/config/config.h.in b/config/config.h.in new file mode 100644 index 00000000..415b12ec --- /dev/null +++ b/config/config.h.in @@ -0,0 +1,7 @@ +// the (cmake) configured options and settings for umap +#ifndef _UMAP_UMAPCONFIG_H +#define _UMAP_UMAPCONFIG_H +#define UMAP_VERSION_MAJOR @umap_VERSION_MAJOR@ +#define UMAP_VERSION_MINOR @umap_VERSION_MINOR@ +#define UMAP_VERSION_PATCH @umap_VERSION_PATCH@ +#endif diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e245f3c5..e634ee81 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -6,7 +6,12 @@ set_target_properties(libumap_static PROPERTIES OUTPUT_NAME libumap) set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") -include_directories( BEFORE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../include ${CMAKE_CURRENT_SOURCE_DIR}/../sysincludes ) +include_directories( + BEFORE "${CMAKE_CURRENT_SOURCE_DIR}" + "${PROJECT_BINARY_DIR}/../config" + "${CMAKE_CURRENT_SOURCE_DIR}/../include" + "${CMAKE_CURRENT_SOURCE_DIR}/../sysincludes" + ) file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/include) diff --git a/src/umap.cpp b/src/umap.cpp index 3224fbcf..1df28cfb 100644 --- a/src/umap.cpp +++ b/src/umap.cpp @@ -33,12 +33,13 @@ #include #include "umap.h" // API to library #include "umaplog.h" // umap_log() +#include "config.h" using namespace std; -const int UMAP_VERSION_MAJOR = 0; -const int UMAP_VERSION_MINOR = 0; -const int UMAP_VERSION_PATCH = 1; +const int umap_Version_Major = UMAP_VERSION_MAJOR; +const int umap_Version_Minor = UMAP_VERSION_MINOR; +const int umap_Version_Patch = UMAP_VERSION_PATCH; static const int UMAP_UFFD_MAX_MESSAGES = 256; static unsigned int uffd_threads; diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 0c6c313c..794f4896 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,13 +1,13 @@ add_subdirectory(libumaptest) -add_subdirectory(umapcpu) +# add_subdirectory(umapcpu) add_subdirectory(umapsort) -add_subdirectory(umaptest) -add_subdirectory(umapmillions) -add_subdirectory(median) -add_subdirectory(readload) -add_subdirectory(uffd_test) -add_subdirectory(churn) -add_subdirectory(rwseq) +# add_subdirectory(umaptest) +# add_subdirectory(umapmillions) +# add_subdirectory(median) +# add_subdirectory(readload) +# add_subdirectory(uffd_test) +# add_subdirectory(churn) +# add_subdirectory(rwseq) if (BUILD_FITS) add_subdirectory(FITS) endif() From 6563ffa3fdab62bb8ca6682ea18341955f68032b Mon Sep 17 00:00:00 2001 From: Marty McFadden Date: Thu, 29 Mar 2018 08:32:09 -0700 Subject: [PATCH 29/32] Added performance test scripts for umapsort --- tests/umapsort/perftest_mmap.sh | 96 +++++++++++++++++++++++++++++++++ tests/umapsort/perftest_umap.sh | 85 +++++++++++++++++++++++++++++ 2 files changed, 181 insertions(+) create mode 100755 tests/umapsort/perftest_mmap.sh create mode 100755 tests/umapsort/perftest_umap.sh diff --git a/tests/umapsort/perftest_mmap.sh b/tests/umapsort/perftest_mmap.sh new file mode 100755 index 00000000..cc97d399 --- /dev/null +++ b/tests/umapsort/perftest_mmap.sh @@ -0,0 +1,96 @@ +#!/bin/bash +function free_mem { + m=`grep MemFree /proc/meminfo | awk -v N=2 '{print $N}'` + fm=$(((${m}/1024)/1024)) + echo $fm GB Free +} + +function drop_page_cache { + echo "Dropping page cache" + echo 3 > /proc/sys/vm/drop_caches +} + +function enable_swap { + echo "Enabling swap" + swapon -a +} + +function disable_swap { + echo "Disabling swap" + swapoff -a +} + +function display_readahead { + fs=`mount | grep intel | cut -d " " -f 1` + ra=`blockdev --getra $fs` + echo "Read ahead set to $ra for $fs" +} + +function turn_off_readahead { + fs=`mount | grep intel | cut -d " " -f 1` + blockdev --setra 0 $fs + ra=`blockdev --getra $fs` + echo "Read ahead set to $ra for $fs" +} + +function amounttowaste { + m=`grep MemFree /proc/meminfo | awk -v N=2 '{print $N}'` + echo $m + fm=$(((${m}/1024)/1024)) + waste=$((${fm}-${memtoleave})) + echo $fm GB Available, Wasting $waste GB +} + +function setuptmpfs { + if [ ! -d /mnt/tmpfs ]; then + mkdir -p /mnt/tmpfs + fi + + # Unmount / Reset of already mounted + fs=`stat -f -c '%T' /mnt/tmpfs` + + if [ "$fs" = "tmpfs" ]; then + echo "Resetting tmpfs" + umount /mnt/tmpfs + fi + + fs=`stat -f -c '%T' /mnt/tmpfs` + if [ "$fs" != "tmpfs" ]; then + if [ ! -d /mnt/tmpfs ]; then + mkdir -p /mnt/tmpfs + fi + chmod go+rwx /mnt/tmpfs + mount -t tmpfs -o size=600g tmpfs /mnt/tmpfs + fs=`stat -f -c '%T' /mnt/tmpfs` + echo "/mnt/tmpfs mounted as: $fs" + else + echo "Unable to reset /mnt/tmpfs, exiting" + exit 1 + fi +} + +function waste_memory { + echo "Wasting $waste GB of memory" + echo dd if=/dev/zero of=/mnt/tmpfs/${waste}GB bs=4096 count=$((${waste}*256*1024)) + dd if=/dev/zero of=/mnt/tmpfs/${waste}GB bs=4096 count=$((${waste}*256*1024)) +} + +memtoleave=$((64+6)) + +display_readahead +enable_swap +setuptmpfs +drop_page_cache +amounttowaste +waste_memory + +for t in 128 64 32 16 +do + rm /f /mnt/intel/sort_perf_data + drop_page_cache + free_mem + cmd="./umapsort --usemmap --directio -f /mnt/intel/sort_perf_data -p $(((96*1024*1024*1024)/4096)) -n 1 -b $(((64*1024*1024*1024)/4096)) -t $t" + date + echo $cmd + time sh -c "$cmd" +done diff --git a/tests/umapsort/perftest_umap.sh b/tests/umapsort/perftest_umap.sh new file mode 100755 index 00000000..69d0ef50 --- /dev/null +++ b/tests/umapsort/perftest_umap.sh @@ -0,0 +1,85 @@ +#!/bin/bash +function free_mem { + m=`grep MemFree /proc/meminfo | awk -v N=2 '{print $N}'` + fm=$(((${m}/1024)/1024)) + echo $fm GB Free +} + +function drop_page_cache { + echo "Dropping page cache" + echo 3 > /proc/sys/vm/drop_caches +} + +function disable_swap { + echo "Disabling swap" + swapoff -a +} + +function turn_off_readahead { + fs=`mount | grep intel | cut -d " " -f 1` + blockdev --setra 0 $fs + ra=`blockdev --getra $fs` + echo "Read ahead set to $ra for $fs" +} + +function amounttowaste { + m=`grep MemFree /proc/meminfo | awk -v N=2 '{print $N}'` + echo $m + fm=$(((${m}/1024)/1024)) + waste=$((${fm}-${memtoleave})) + echo $fm GB Available, Wasting $waste GB +} + +function setuptmpfs { + if [ ! -d /mnt/tmpfs ]; then + mkdir -p /mnt/tmpfs + fi + + # Unmount / Reset of already mounted + fs=`stat -f -c '%T' /mnt/tmpfs` + + if [ "$fs" = "tmpfs" ]; then + echo "Resetting tmpfs" + umount /mnt/tmpfs + fi + + fs=`stat -f -c '%T' /mnt/tmpfs` + if [ "$fs" != "tmpfs" ]; then + if [ ! -d /mnt/tmpfs ]; then + mkdir -p /mnt/tmpfs + fi + chmod go+rwx /mnt/tmpfs + mount -t tmpfs -o size=600g tmpfs /mnt/tmpfs + fs=`stat -f -c '%T' /mnt/tmpfs` + echo "/mnt/tmpfs mounted as: $fs" + else + echo "Unable to reset /mnt/tmpfs, exiting" + exit 1 + fi +} + +function waste_memory { + echo "Wasting $waste GB of memory" + echo dd if=/dev/zero of=/mnt/tmpfs/${waste}GB bs=4096 count=$((${waste}*256*1024)) + dd if=/dev/zero of=/mnt/tmpfs/${waste}GB bs=4096 count=$((${waste}*256*1024)) +} + +memtoleave=$((64+6)) + +turn_off_readahead +disable_swap +setuptmpfs +drop_page_cache +amounttowaste +waste_memory + +for t in 128 64 32 16 +do + rm /f /mnt/intel/sort_perf_data + drop_page_cache + free_mem + cmd="./umapsort --directio -f /mnt/intel/sort_perf_data -p $(((96*1024*1024*1024)/4096)) -n 1 -b $(((64*1024*1024*1024)/4096)) -t $t" + date + echo $cmd + time sh -c "$cmd" +done From 51ef60da30ba59c7ef33aa75ae2a8071cc6d7441 Mon Sep 17 00:00:00 2001 From: Marty McFadden Date: Thu, 29 Mar 2018 11:40:52 -0700 Subject: [PATCH 30/32] Use MAP_SHARED when using mmap instead of MAP_PRIVATE to avoid OOM --- tests/libumaptest/mmap.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/libumaptest/mmap.cpp b/tests/libumaptest/mmap.cpp index b099ba9a..df7be2fa 100644 --- a/tests/libumaptest/mmap.cpp +++ b/tests/libumaptest/mmap.cpp @@ -141,7 +141,7 @@ void* umt_openandmap_mf(const umt_optstruct_t* testops, uint64_t numbytes, void* const int prot = PROT_READ|PROT_WRITE; if ( testops->usemmap ) { - void* next_mmap = mmap(NULL, handle->total_range_size, prot, MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE, -1, 0); + void* next_mmap = mmap(NULL, handle->total_range_size, prot, MAP_SHARED | MAP_ANONYMOUS | MAP_NORESERVE, -1, 0); if (next_mmap == MAP_FAILED) { ostringstream ss; ss << "reservation (mmap) of " << handle->total_range_size << " bytes failed: "; @@ -162,7 +162,7 @@ void* umt_openandmap_mf(const umt_optstruct_t* testops, uint64_t numbytes, void* for ( int i = 0; i < testops->num_files; ++i ) { void* mmap_region; - mmap_region = mmap(next_mmap, handle->mf_files[i].data_size, prot, MAP_PRIVATE | MAP_FIXED | MAP_NORESERVE, handle->mf_files[i].fd, offset); + mmap_region = mmap(next_mmap, handle->mf_files[i].data_size, prot, MAP_SHARED | MAP_FIXED | MAP_NORESERVE, handle->mf_files[i].fd, offset); if (mmap_region == MAP_FAILED) { ostringstream ss; ss << "mmap of " << handle->mf_files[i].data_size << " bytes failed for " << handle->files[i] << ": "; From a35c959007672839a1c16f2ed8d5112e754f78a9 Mon Sep 17 00:00:00 2001 From: Marty McFadden Date: Thu, 29 Mar 2018 11:41:40 -0700 Subject: [PATCH 31/32] Update umapsort performance test scripts --- tests/umapsort/CMakeLists.txt | 10 ++++++++++ tests/umapsort/perftest_mmap.sh | 24 +++++++----------------- tests/umapsort/perftest_umap.sh | 11 ++++++----- 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/tests/umapsort/CMakeLists.txt b/tests/umapsort/CMakeLists.txt index 4dbd749e..f7161c72 100644 --- a/tests/umapsort/CMakeLists.txt +++ b/tests/umapsort/CMakeLists.txt @@ -2,6 +2,16 @@ project(umapsort) FIND_PACKAGE( OpenMP REQUIRED ) if(OPENMP_FOUND) + configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/perftest_mmap.sh" + "${CMAKE_CURRENT_BINARY_DIR}/perftest_mmap.sh" + COPYONLY + ) + configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/perftest_umap.sh" + "${CMAKE_CURRENT_BINARY_DIR}/perftest_umap.sh" + COPYONLY + ) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") diff --git a/tests/umapsort/perftest_mmap.sh b/tests/umapsort/perftest_mmap.sh index cc97d399..6cc155f4 100755 --- a/tests/umapsort/perftest_mmap.sh +++ b/tests/umapsort/perftest_mmap.sh @@ -10,25 +10,14 @@ function drop_page_cache { echo 3 > /proc/sys/vm/drop_caches } -function enable_swap { - echo "Enabling swap" - swapon -a -} - function disable_swap { echo "Disabling swap" - swapoff -a -} - -function display_readahead { - fs=`mount | grep intel | cut -d " " -f 1` - ra=`blockdev --getra $fs` - echo "Read ahead set to $ra for $fs" + swapoff -av } -function turn_off_readahead { +function set_readahead { fs=`mount | grep intel | cut -d " " -f 1` - blockdev --setra 0 $fs + blockdev --setra $readahead $fs ra=`blockdev --getra $fs` echo "Read ahead set to $ra for $fs" } @@ -76,9 +65,10 @@ function waste_memory { } memtoleave=$((64+6)) +readahead=256 -display_readahead -enable_swap +set_readahead +disable_swap setuptmpfs drop_page_cache amounttowaste @@ -86,7 +76,7 @@ waste_memory for t in 128 64 32 16 do - rm /f /mnt/intel/sort_perf_data + rm -f /mnt/intel/sort_perf_data drop_page_cache free_mem cmd="./umapsort --usemmap --directio -f /mnt/intel/sort_perf_data -p $(((96*1024*1024*1024)/4096)) -n 1 -b $(((64*1024*1024*1024)/4096)) -t $t" diff --git a/tests/umapsort/perftest_umap.sh b/tests/umapsort/perftest_umap.sh index 69d0ef50..fbcf91ac 100755 --- a/tests/umapsort/perftest_umap.sh +++ b/tests/umapsort/perftest_umap.sh @@ -12,12 +12,12 @@ function drop_page_cache { function disable_swap { echo "Disabling swap" - swapoff -a + swapoff -av } -function turn_off_readahead { +function set_readahead { fs=`mount | grep intel | cut -d " " -f 1` - blockdev --setra 0 $fs + blockdev --setra $readahead $fs ra=`blockdev --getra $fs` echo "Read ahead set to $ra for $fs" } @@ -65,8 +65,9 @@ function waste_memory { } memtoleave=$((64+6)) +readahead=0 -turn_off_readahead +set_readahead disable_swap setuptmpfs drop_page_cache @@ -75,7 +76,7 @@ waste_memory for t in 128 64 32 16 do - rm /f /mnt/intel/sort_perf_data + rm -f /mnt/intel/sort_perf_data drop_page_cache free_mem cmd="./umapsort --directio -f /mnt/intel/sort_perf_data -p $(((96*1024*1024*1024)/4096)) -n 1 -b $(((64*1024*1024*1024)/4096)) -t $t" From 76f815ac543fb30a33dd42558675e2ece47a8b0c Mon Sep 17 00:00:00 2001 From: Marty McFadden Date: Thu, 29 Mar 2018 15:23:14 -0700 Subject: [PATCH 32/32] Updated version to 0.0.2 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2ab59d7e..ff16d1f9 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# UMAP v0.0.1 (alpha) +# UMAP v0.0.2 (alpha) Umap is a library that provides an mmap()-like interface to a simple, user- space page fault handler based on the userfaultfd Linux feature (starting with